Name: series-workflowmcb8q Phase: Succeeded StartedAt: 2026-09-07 10:38:30 +0000 UTC FinishedAt: 2026-09-07 13:03:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmcb8q[0] Phase: Succeeded StartedAt: 2026-09-07 10:38:30 +0000 UTC FinishedAt: 2026-09-07 11:26:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmcb8q[0].run-triage Phase: Succeeded StartedAt: 2026-09-07 10:38:30 +0000 UTC FinishedAt: 2026-09-07 11:26:58 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "USB_CATC", "USB_NET_DRIVERS", "USB", "NET" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "USB_CATC", "USB_NET_DRIVERS", "USB", "NET" ], "series_id": "aec6bc7e-eebf-4623-9f26-04574067334f" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "catc_rx_done" ], "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+CgkJCTx0ZD4yMDI2LzA5LzA3IDExOjI1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTQl9DQVRDJiMzNDssCiAgICAmIzM0O1VTQl9ORVRfRFJJVkVSUyYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OywKICAgICYjMzQ7TkVUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2F0Y19yeF9kb25lJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgb3V0LW9mLWJvdW5kcyByZWFkIHZ1bG5lcmFiaWxpdGllcyBpbiB0aGUgQ0FUQyBVU0IgRXRoZXJuZXQgZHJpdmVyJiMzOTtzIHJlY2VpdmUgcGF0aCAoYGNhdGNfcnhfZG9uZWApLiBTcGVjaWZpY2FsbHksIGl0IGVuc3VyZXMgdGhhdCBgcmVtYWluaW5nYCB0cmFuc2ZlciBidWZmZXIgYnl0ZXMgYXJlIHN1ZmZpY2llbnQgdG8gcmVhZCB0aGUgMi1ieXRlIHBhY2tldCBsZW5ndGggaGVhZGVyIChgcmVtYWluaW5nIFx1MDAzZT0gcGt0X29mZnNldGApLCBhbmQgdGhhdCB0aGUgaW5kaWNhdGVkIHBhY2tldCBsZW5ndGggcGx1cyBvZmZzZXQgZml0cyB3aXRoaW4gdGhlIHJlbWFpbmluZyByZWNlaXZlZCBidWZmZXIgKGBwa3RfbGVuICYjNDM7IHBrdF9vZmZzZXQgXHUwMDNjPSByZW1haW5pbmdgKS5cblxuVGhlc2UgY2hhbmdlcyBwcmV2ZW50IG91dC1vZi1ib3VuZHMgbWVtb3J5IGFjY2Vzc2VzIGZyb20gYHVyYi1cdTAwM2V0cmFuc2Zlcl9idWZmZXJgIGR1cmluZyBwYWNrZXQgcHJvY2Vzc2luZyBhbmQgY29weWluZyB0byB0aGUgU0tCLiBCdWZmZXIgb3Zlci1yZWFkcyBhbmQgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhcmUgbWVtb3J5IHNhZmV0eSB2aW9sYXRpb25zIGRldGVjdGVkIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcywgaW5mby1sZWFrcyB0byB1c2VyIHNwYWNlLCBvciB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgcGFja2V0IHJlY2VwdGlvbiBhbmQgbGVuZ3RoIHZhbGlkYXRpb24gbG9naWMgaW4gY2F0Y19yeF9kb25lIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcyB3aGVuIHByb2Nlc3NpbmcgbWFsZm9ybWVkIFVTQiBSWCBVUkIgZGF0YS4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBhbmQgZnV6emFibGUgdmlhIFVTQiBlbXVsYXRpb24gLyBzeXprYWxsZXIgVVNCIHJhdy1nYWRnZXQgc3VwcG9ydC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAxMToyNTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGEyNmMwODk1YWY2YzE2MmRmMmYxMzZhMTQ5MDMzZmQzOWMyMzgyMDJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIFNlcCA3IDExOjI1OjUzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3VzYi9jYXRjLmMgYi9kcml2ZXJzL25ldC91c2IvY2F0Yy5jXG5pbmRleCA5NmU4MmY5NGVkY2Y4Li5lNGY4YjlhMGNhZjE5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvdXNiL2NhdGMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvdXNiL2NhdGMuY1xuQEAgLTIzNCw4ICYjNDM7MjM0LDE2IEBAIHN0YXRpYyB2b2lkIGNhdGNfcnhfZG9uZShzdHJ1Y3QgdXJiICp1cmIpXG4gXG4gXHRkbyB7XG4gXHRcdGlmKCFjYXRjLVx1MDAzZWlzX2Y1dTAxMSkge1xuJiM0MztcdFx0XHRpbnQgcmVtYWluaW5nID0gdXJiLVx1MDAzZWFjdHVhbF9sZW5ndGggLVxuJiM0MztcdFx0XHRcdFx0KHBrdF9zdGFydCAtICh1OCAqKXVyYi1cdTAwM2V0cmFuc2Zlcl9idWZmZXIpO1xuJiM0MztcbiYjNDM7XHRcdFx0aWYgKHJlbWFpbmluZyBcdTAwM2MgcGt0X29mZnNldCkge1xuJiM0MztcdFx0XHRcdGNhdGMtXHUwMDNlbmV0ZGV2LVx1MDAzZXN0YXRzLnJ4X2xlbmd0aF9lcnJvcnMmIzQzOyYjNDM7O1xuJiM0MztcdFx0XHRcdGNhdGMtXHUwMDNlbmV0ZGV2LVx1MDAzZXN0YXRzLnJ4X2Vycm9ycyYjNDM7JiM0Mzs7XG4mIzQzO1x0XHRcdFx0YnJlYWs7XG4mIzQzO1x0XHRcdH1cbiBcdFx0XHRwa3RfbGVuID0gbGUxNl90b19jcHVwKChfX2xlMTYqKXBrdF9zdGFydCk7XG4tXHRcdFx0aWYgKHBrdF9sZW4gXHUwMDNlIHVyYi1cdTAwM2VhY3R1YWxfbGVuZ3RoKSB7XG4mIzQzO1x0XHRcdGlmIChwa3RfbGVuICYjNDM7IHBrdF9vZmZzZXQgXHUwMDNlIHJlbWFpbmluZykge1xuIFx0XHRcdFx0Y2F0Yy1cdTAwM2VuZXRkZXYtXHUwMDNlc3RhdHMucnhfbGVuZ3RoX2Vycm9ycyYjNDM7JiM0Mzs7XG4gXHRcdFx0XHRjYXRjLVx1MDAzZW5ldGRldi1cdTAwM2VzdGF0cy5yeF9lcnJvcnMmIzQzOyYjNDM7O1xuIFx0XHRcdFx0YnJlYWs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTE6MjU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VVNCX0NBVEMmIzM0OywKICAgICYjMzQ7VVNCX05FVF9EUklWRVJTJiMzNDssCiAgICAmIzM0O1VTQiYjMzQ7LAogICAgJiMzNDtORVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjYXRjX3J4X2RvbmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHBhY2tldCByZWNlcHRpb24gYW5kIGxlbmd0aCB2YWxpZGF0aW9uIGxvZ2ljIGluIGNhdGNfcnhfZG9uZSB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMgd2hlbiBwcm9jZXNzaW5nIG1hbGZvcm1lZCBVU0IgUlggVVJCIGRhdGEuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgYW5kIGZ1enphYmxlIHZpYSBVU0IgZW11bGF0aW9uIC8gc3l6a2FsbGVyIFVTQiByYXctZ2FkZ2V0IHN1cHBvcnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBhMjZjMDg5NWFmNmMxNjJkZjJmMTM2YTE0OTAzM2ZkMzljMjM4MjAyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBTZXAgNyAxMToyNTo1MyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3VzYi9jYXRjLmMgYi9kcml2ZXJzL25ldC91c2IvY2F0Yy5jCmluZGV4IDk2ZTgyZjk0ZWRjZjguLmU0ZjhiOWEwY2FmMTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3VzYi9jYXRjLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvdXNiL2NhdGMuYwpAQCAtMjM0LDggJiM0MzsyMzQsMTYgQEAgc3RhdGljIHZvaWQgY2F0Y19yeF9kb25lKHN0cnVjdCB1cmIgKnVyYikKIAogCWRvIHsKIAkJaWYoIWNhdGMtJmd0O2lzX2Y1dTAxMSkgewomIzQzOwkJCWludCByZW1haW5pbmcgPSB1cmItJmd0O2FjdHVhbF9sZW5ndGggLQomIzQzOwkJCQkJKHBrdF9zdGFydCAtICh1OCAqKXVyYi0mZ3Q7dHJhbnNmZXJfYnVmZmVyKTsKJiM0MzsKJiM0MzsJCQlpZiAocmVtYWluaW5nICZsdDsgcGt0X29mZnNldCkgewomIzQzOwkJCQljYXRjLSZndDtuZXRkZXYtJmd0O3N0YXRzLnJ4X2xlbmd0aF9lcnJvcnMmIzQzOyYjNDM7OwomIzQzOwkJCQljYXRjLSZndDtuZXRkZXYtJmd0O3N0YXRzLnJ4X2Vycm9ycyYjNDM7JiM0Mzs7CiYjNDM7CQkJCWJyZWFrOwomIzQzOwkJCX0KIAkJCXBrdF9sZW4gPSBsZTE2X3RvX2NwdXAoKF9fbGUxNiopcGt0X3N0YXJ0KTsKLQkJCWlmIChwa3RfbGVuICZndDsgdXJiLSZndDthY3R1YWxfbGVuZ3RoKSB7CiYjNDM7CQkJaWYgKHBrdF9sZW4gJiM0MzsgcGt0X29mZnNldCAmZ3Q7IHJlbWFpbmluZykgewogCQkJCWNhdGMtJmd0O25ldGRldi0mZ3Q7c3RhdHMucnhfbGVuZ3RoX2Vycm9ycyYjNDM7JiM0Mzs7CiAJCQkJY2F0Yy0mZ3Q7bmV0ZGV2LSZndDtzdGF0cy5yeF9lcnJvcnMmIzQzOyYjNDM7OwogCQkJCWJyZWFrOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAxMToyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTg0CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXZhbHVhdGluZyBUaGlzIEtlcm5lbCBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgc28gdGhpcyBwYXRjaCBsYW5kZWQgb24gbXkgZGVzaywgYW5kIG15IGZpcnN0IHRob3VnaHQgaXM6IERvZXMgdGhpcyB3YXJyYW50IGEgZGVlcCBkaXZlIHdpdGggc3l6a2FsbGVyPyBMZXQmIzM5O3MgdGFrZSBhIG1ldGhvZGljYWwgYXBwcm9hY2guIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wYWN0IG9mIHRoaXMgY2hhbmdlLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGRpZyBpbnRvIHRoZSBjb2RlIGFuZCBkZXRlcm1pbmUgaWYgdGhlIHBhdGNoIGludHJvZHVjZXMgYW55IG5ldyBrZXJuZWwgZnVuY3Rpb25hbGl0eSwgYWx0ZXJzIGV4aXN0aW5nIGludGVyZmFjZXMsIG9yIHRvdWNoZXMgY29kZSB0aGF0JiMzOTtzIGFscmVhZHkga25vd24gdG8gYmUgYSBzb3VyY2Ugb2YgYnVncy4KCkkmIzM5O20gdGhpbmtpbmcgSSYjMzk7bGwgc3RhcnQgd2l0aCBgZ3JlcHBlcmAg4oCTIHRoYXQmIzM5O3Mgb2Z0ZW4gbXkgZmlyc3Qgc3RvcCBmb3IgYSBicm9hZCBvdmVydmlldyBvZiB0aGUgYWZmZWN0ZWQgYXJlYXMuIEkgd2FudCB0byBzZWUgYSBnZW5lcmFsIHBpY3R1cmUgb2YgdGhlIHNjb3BlLiBJZiB0aGF0JiMzOTtzIG5vdCB5aWVsZGluZyBlbm91Z2gsIG9yIGlmIGl0IGxvb2tzIGxpa2UgdGhlIGNoYW5nZSBpcyBoaWdobHkgbG9jYWxpemVkLCBJJiMzOTtsbCBnbyBkaXJlY3RseSBmb3IgYGNhdGMuY2Agb3IgdGhlIEtjb25maWcgZmlsZXMuIFRoaXMgc2hvdWxkIHF1aWNrbHkgZ2l2ZSBtZSBhIHNlbnNlIG9mIHdoYXQmIzM5O3MgYmVpbmcgZW5hYmxlZCBvciBtb2RpZmllZC4gVW5kZXJzdGFuZGluZyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGlzIGNydWNpYWwg4oCTIGlzIHRoaXMgYSBmZWF0dXJlIHRoYXQmIzM5O3MgZGlzYWJsZWQgYnkgZGVmYXVsdCwgb3IgaXMgaXQgcG90ZW50aWFsbHkgYSBzaWduaWZpY2FudCBjaGFuZ2UgdGhhdCBpbXBhY3RzIGEgd2lkZSByYW5nZSBvZiBzeXN0ZW1zPyBUaGF0JiMzOTtsbCBoZWxwIG1lIHRvIHdlaWdoIGl0cyBpbXBvcnRhbmNlIGZvciBmdXp6aW5nIHB1cnBvc2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDExOjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL2NhdGMuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIyMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjIwOlx0XHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuIDIyMTpcdFx0aW50IHBrdF9sZW4sIHBrdF9vZmZzZXQgPSAwO1xuIDIyMjpcdFx0aW50IHN0YXR1cyA9IHVyYi1cdTAwM2VzdGF0dXM7XG4gMjIzOlx0XG4gMjI0Olx0XHRpZiAoIWNhdGMtXHUwMDNlaXNfZjV1MDExKSB7XG4gMjI1Olx0XHRcdGNsZWFyX2JpdChSWF9SVU5OSU5HLCBcdTAwMjZjYXRjLVx1MDAzZWZsYWdzKTtcbiAyMjY6XHRcdFx0cGt0X29mZnNldCA9IDI7XG4gMjI3Olx0XHR9XG4gMjI4Olx0XG4gMjI5Olx0XHRpZiAoc3RhdHVzKSB7XG4gMjMwOlx0XHRcdGRldl9kYmcoXHUwMDI2dXJiLVx1MDAzZWRldi1cdTAwM2VkZXYsIFwmIzM0O3J4X2RvbmUsIHN0YXR1cyAlZCwgbGVuZ3RoICVkXFxuXCYjMzQ7LFxuIDIzMTpcdFx0XHRcdHN0YXR1cywgdXJiLVx1MDAzZWFjdHVhbF9sZW5ndGgpO1xuIDIzMjpcdFx0XHRyZXR1cm47XG4gMjMzOlx0XHR9XG4gMjM0Olx0XG4gMjM1Olx0XHRkbyB7XG4gMjM2Olx0XHRcdGlmKCFjYXRjLVx1MDAzZWlzX2Y1dTAxMSkge1xuIDIzNzpcdFx0XHRcdGludCByZW1haW5pbmcgPSB1cmItXHUwMDNlYWN0dWFsX2xlbmd0aCAtXG4gMjM4Olx0XHRcdFx0XHRcdChwa3Rfc3RhcnQgLSAodTggKil1cmItXHUwMDNldHJhbnNmZXJfYnVmZmVyKTtcbiAyMzk6XHRcbiAyNDA6XHRcdFx0XHRpZiAocmVtYWluaW5nIFx1MDAzYyBwa3Rfb2Zmc2V0KSB7XG4gMjQxOlx0XHRcdFx0XHRjYXRjLVx1MDAzZW5ldGRldi1cdTAwM2VzdGF0cy5yeF9sZW5ndGhfZXJyb3JzJiM0MzsmIzQzOztcbiAyNDI6XHRcdFx0XHRcdGNhdGMtXHUwMDNlbmV0ZGV2LVx1MDAzZXN0YXRzLnJ4X2Vycm9ycyYjNDM7JiM0Mzs7XG4gMjQzOlx0XHRcdFx0XHRicmVhaztcbiAyNDQ6XHRcdFx0XHR9XG4gMjQ1Olx0XHRcdFx0cGt0X2xlbiA9IGxlMTZfdG9fY3B1cCgoX19sZTE2Kilwa3Rfc3RhcnQpO1xuIDI0NjpcdFx0XHRcdGlmIChwa3RfbGVuICYjNDM7IHBrdF9vZmZzZXQgXHUwMDNlIHJlbWFpbmluZykge1xuIDI0NzpcdFx0XHRcdFx0Y2F0Yy1cdTAwM2VuZXRkZXYtXHUwMDNlc3RhdHMucnhfbGVuZ3RoX2Vycm9ycyYjNDM7JiM0Mzs7XG4gMjQ4Olx0XHRcdFx0XHRjYXRjLVx1MDAzZW5ldGRldi1cdTAwM2VzdGF0cy5yeF9lcnJvcnMmIzQzOyYjNDM7O1xuIDI0OTpcdFx0XHRcdFx0YnJlYWs7XG4gMjUwOlx0XHRcdFx0fVxuIDI1MTpcdFx0XHR9IGVsc2Uge1xuIDI1MjpcdFx0XHRcdHBrdF9sZW4gPSB1cmItXHUwMDNlYWN0dWFsX2xlbmd0aDtcbiAyNTM6XHRcdFx0fVxuIDI1NDpcdFxuIDI1NTpcdFx0XHRpZiAoIShza2IgPSBkZXZfYWxsb2Nfc2tiKHBrdF9sZW4pKSlcbiAyNTY6XHRcdFx0XHRyZXR1cm47XG4gMjU3Olx0XG4gMjU4Olx0XHRcdHNrYl9jb3B5X3RvX2xpbmVhcl9kYXRhKHNrYiwgcGt0X3N0YXJ0ICYjNDM7IHBrdF9vZmZzZXQsIHBrdF9sZW4pO1xuIDI1OTpcdFx0XHRza2JfcHV0KHNrYiwgcGt0X2xlbik7XG4gMjYwOlx0XG4gMjYxOlx0XHRcdHNrYi1cdTAwM2Vwcm90b2NvbCA9IGV0aF90eXBlX3RyYW5zKHNrYiwgY2F0Yy1cdTAwM2VuZXRkZXYpO1xuIDI2MjpcdFx0XHRuZXRpZl9yeChza2IpO1xuIDI2MzpcdFxuIDI2NDpcdFx0XHRjYXRjLVx1MDAzZW5ldGRldi1cdTAwM2VzdGF0cy5yeF9wYWNrZXRzJiM0MzsmIzQzOztcbiAyNjU6XHRcdFx0Y2F0Yy1cdTAwM2VuZXRkZXYtXHUwMDNlc3RhdHMucnhfYnl0ZXMgJiM0Mzs9IHBrdF9sZW47XG4gMjY2Olx0XG4gMjY3Olx0XHRcdC8qIEY1VTAxMSBvbmx5IGRvZXMgb25lIHBhY2tldCBwZXIgUlggKi9cbiAyNjg6XHRcdFx0aWYgKGNhdGMtXHUwMDNlaXNfZjV1MDExKVxuIDI2OTpcdFx0XHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDExOjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwOTEKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRGl2aW5nIERlZXBlciBpbnRvIHRoZSBDQVRDIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGBjYXRjX3J4X2RvbmVgIGZ1bmN0aW9uIGFuZCBpdHMgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gaG93IHRoaXMgQ0FUQyBVU0IgbmV0d29yayBkcml2ZXIgaXMgaGFuZGxpbmcgcmVjZWl2ZSBjb21wbGV0aW9ucy4gSSB3YW50IHRvIHNlZSB0aGUgY29tcGxldGUgcGljdHVyZTsgaG93IGFyZSB0aGVzZSBSWCBldmVudHMgcHJvY2Vzc2VkLCBhbmQgd2hhdCYjMzk7cyB0aGUgd2hvbGUgZmxvdyBvZiBkYXRhPyBTZWVpbmcgdGhlIHJlc3Qgb2YgdGhlIGZ1bmN0aW9uIGlzIGNyaXRpY2FsIHRvIHVuZGVyc3RhbmRpbmcgaXRzIGNvbnRleHQuIFRoZW4sIEkgbmVlZCB0byBjaGVjayB0aGUgY29ycmVzcG9uZGluZyBLY29uZmlnIGZvciB0aGF0IGRyaXZlci4gVGhpcyYjMzk7bGwgdGVsbCBtZSBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGNvbXBpbGUtdGltZSBvcHRpb25zIG9yIGRlcGVuZGVuY2llcyB0aGF0IGFmZmVjdCBpdHMgYmVoYXZpb3IuIFVuZGVyc3RhbmRpbmcgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBpcyBjcnVjaWFsIHRvIHVuZGVyc3RhbmRpbmcgd2hpY2ggZmVhdHVyZXMgYXJlIGVuYWJsZWQgb3IgZGlzYWJsZWQsIGFuZCBob3cgdGhhdCBpbXBhY3RzIHRoZSBkcml2ZXImIzM5O3Mgb3BlcmF0aW9uLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGVzZSB0d28gcGllY2VzIG9mIGluZm9ybWF0aW9uIGZpdCB0b2dldGhlciDigJPCoHRoZSBleGVjdXRpb24gcGF0aCwgYW5kIHRoZSBjb250cm9sIHBhcmFtZXRlcnMuIFRoaXMgd2lsbCBoZWxwIG1lIGRpYWdub3NlIGlzc3Vlcywgb3B0aW1pemUgaXQsIG9yIHNpbXBseSB1bmRlcnN0YW5kIHRoZSBkZXNpZ24gYmV0dGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDExOjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL2NhdGMuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI3MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjcwOlx0XHRcdHBrdF9zdGFydCAmIzQzOz0gKCgocGt0X2xlbiAmIzQzOyAxKSBcdTAwM2VcdTAwM2UgNikgJiM0MzsgMSkgXHUwMDNjXHUwMDNjIDY7XG4gMjcxOlx0XG4gMjcyOlx0XHR9IHdoaWxlIChwa3Rfc3RhcnQgLSAodTggKikgdXJiLVx1MDAzZXRyYW5zZmVyX2J1ZmZlciBcdTAwM2MgdXJiLVx1MDAzZWFjdHVhbF9sZW5ndGgpO1xuIDI3MzpcdFxuIDI3NDpcdFx0aWYgKGNhdGMtXHUwMDNlaXNfZjV1MDExKSB7XG4gMjc1Olx0XHRcdGlmIChhdG9taWNfcmVhZChcdTAwMjZjYXRjLVx1MDAzZXJlY3Ffc3opKSB7XG4gMjc2Olx0XHRcdFx0aW50IHN0YXRlO1xuIDI3NzpcdFx0XHRcdGF0b21pY19kZWMoXHUwMDI2Y2F0Yy1cdTAwM2VyZWNxX3N6KTtcbiAyNzg6XHRcdFx0XHRuZXRkZXZfZGJnKGNhdGMtXHUwMDNlbmV0ZGV2LCBcJiMzNDtnZXR0aW5nIGV4dHJhIHBhY2tldFxcblwmIzM0Oyk7XG4gMjc5Olx0XHRcdFx0dXJiLVx1MDAzZWRldiA9IGNhdGMtXHUwMDNldXNiZGV2O1xuIDI4MDpcdFx0XHRcdGlmICgoc3RhdGUgPSB1c2Jfc3VibWl0X3VyYih1cmIsIEdGUF9BVE9NSUMpKSBcdTAwM2MgMCkge1xuIDI4MTpcdFx0XHRcdFx0bmV0ZGV2X2RiZyhjYXRjLVx1MDAzZW5ldGRldixcbiAyODI6XHRcdFx0XHRcdFx0ICAgXCYjMzQ7c3VibWl0KHJ4X3VyYikgc3RhdHVzICVkXFxuXCYjMzQ7LCBzdGF0ZSk7XG4gMjgzOlx0XHRcdFx0fVxuIDI4NDpcdFx0XHR9IGVsc2Uge1xuIDI4NTpcdFx0XHRcdGNsZWFyX2JpdChSWF9SVU5OSU5HLCBcdTAwMjZjYXRjLVx1MDAzZWZsYWdzKTtcbiAyODY6XHRcdFx0fVxuIDI4NzpcdFx0fVxuIDI4ODpcdH1cbiAyODk6XHRcbiAyOTA6XHRzdGF0aWMgdm9pZCBjYXRjX2lycV9kb25lKHN0cnVjdCB1cmIgKnVyYilcbiAyOTE6XHR7XG4gMjkyOlx0XHRzdHJ1Y3QgY2F0YyAqY2F0YyA9IHVyYi1cdTAwM2Vjb250ZXh0O1xuIDI5MzpcdFx0dTggKmRhdGEgPSB1cmItXHUwMDNldHJhbnNmZXJfYnVmZmVyO1xuIDI5NDpcdFx0aW50IHN0YXR1cyA9IHVyYi1cdTAwM2VzdGF0dXM7XG4gMjk1Olx0XHR1bnNpZ25lZCBpbnQgaGFzZGF0YSwgbGlua3N0cyA9IExpbmtOb0NoYW5nZTtcbiAyOTY6XHRcdGludCByZXM7XG4gMjk3Olx0XG4gMjk4Olx0XHRpZiAoIWNhdGMtXHUwMDNlaXNfZjV1MDExKSB7XG4gMjk5Olx0XHRcdGhhc2RhdGEgPSBkYXRhWzFdIFx1MDAyNiAweDgwO1xuIDMwMDpcdFx0XHRpZiAoZGF0YVsxXSBcdTAwMjYgMHg0MClcbiAzMDE6XHRcdFx0XHRsaW5rc3RzID0gTGlua0dvb2Q7XG4gMzAyOlx0XHRcdGVsc2UgaWYgKGRhdGFbMV0gXHUwMDI2IDB4MjApXG4gMzAzOlx0XHRcdFx0bGlua3N0cyA9IExpbmtCYWQ7XG4gMzA0Olx0XHR9IGVsc2Uge1xuIDMwNTpcdFx0XHRoYXNkYXRhID0gKHVuc2lnbmVkIGludCkoYmUxNl90b19jcHVwKChfX2JlMTYqKWRhdGEpIFx1MDAyNiAweDBmZmYpO1xuIDMwNjpcdFx0XHRpZiAoZGF0YVswXSA9PSAweDkwKVxuIDMwNzpcdFx0XHRcdGxpbmtzdHMgPSBMaW5rR29vZDtcbiAzMDg6XHRcdFx0ZWxzZSBpZiAoZGF0YVswXSA9PSAweEEwKVxuIDMwOTpcdFx0XHRcdGxpbmtzdHMgPSBMaW5rQmFkO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDExOjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwNTIKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgaXNzdWU6CgoqKktjb25maWcgSW5zcGVjdGlvbiBmb3IgYGNhdGMuY2AqKgoKT2theSwgZmlyc3QgdGhpbmdzIGZpcnN0LCBJIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgZmlsZXMuIFRoZSBjb2RlJiMzOTtzIGJlaGF2aW9yIGhpbmdlcyBvbiB0aG9zZSBjb25maWd1cmF0aW9ucywgc28gdW5kZXJzdGFuZGluZyB0aGUgS2NvbmZpZyBzZXR0aW5ncyByZWxhdGVkIHRvIGBjYXRjLmNgIGlzIHBhcmFtb3VudC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBvcHRpb25zIGNvbnRyb2wgaXRzIGluY2x1c2lvbiwgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uLCBhbmQgZGVwZW5kZW5jeSBpbXBsaWNhdGlvbnMuIE15IGluaXRpYWwgZm9jdXMgaXMgb24gbG9jYXRpbmcgdGhlIHJlbGV2YW50IEtjb25maWcgZnJhZ21lbnRzLCBwb3RlbnRpYWxseSB1c2luZyBhIGdsb2JhbCBzZWFyY2ggd2l0aGluIHRoZSBwcm9qZWN0JiMzOTtzIHNvdXJjZSB0cmVlIGlmIEkgZG9uJiMzOTt0IGltbWVkaWF0ZWx5IGtub3cgdGhlIG1vZHVsZSBvciBkaXJlY3Rvcnkgc3RydWN0dXJlLgoKSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgY29uZmlndXJhdGlvbiBzeW1ib2xzIGRpcmVjdGx5IHRpZWQgdG8gYGNhdGMuY2Agb3IsIGFsdGVybmF0aXZlbHksIG1vcmUgZ2VuZXJhbCBmZWF0dXJlcyB0aGF0IG1pZ2h0IGluZGlyZWN0bHkgYWZmZWN0IGl0LiBGb3IgZXhhbXBsZSwgaXMgYENPTkZJR19DQVRDX0VOQUJMRURgIGEgc3ltYm9sPyBPciBwZXJoYXBzIGl0JiMzOTtzIGVuYWJsZWQgYnkgc29tZSBicm9hZGVyIGZlYXR1cmUgbGlrZSBgQ09ORklHX05FVFdPUktfU1VQUE9SVGAgb3IgYSBtb3JlIHNwZWNpZmljIGRyaXZlciBjb25maWd1cmF0aW9uLiBJIGhhdmUgdG8ga2VlcCB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUgb2YgdGhlIHByb2plY3QgaW4gbWluZDsgaXQgY291bGQgYmUgbGF5ZXJlZCwgd2l0aCBkaWZmZXJlbnQgS2NvbmZpZyBmaWxlcyBpbmZsdWVuY2luZyB0aGlzIGZpbGUuCgpOZXh0LCBJIG5lZWQgdG8gYW5hbHl6ZSB0aGUgaW1wbGljYXRpb25zLiBJZiBgY2F0Yy5jYCBpcyBvbmx5IGluY2x1ZGVkIHVuZGVyIGNlcnRhaW4gY29uZmlndXJhdGlvbnMsIEkgbmVlZCB0byBrbm93ICp3aHkqLiBXaGF0IGFyZSB0aGUgYXNzdW1wdGlvbnMgYmFrZWQgaW50byB0aGF0IGNvbmZpZ3VyYXRpb24/IERvZXMgaXQgbWVhbiB0aGUgZmlsZSBpcyBvbmx5IG5lZWRlZCBmb3IgcGFydGljdWxhciBoYXJkd2FyZSwgc3BlY2lmaWMgdXNlIGNhc2VzLCBvciBwYXJ0aWN1bGFyIGJ1aWxkIHRhcmdldHM/IEFyZSB0aGVyZSBvdGhlciBmaWxlcyBvciBtb2R1bGVzIGltcGFjdGVkIGJ5IHRoaXMgc2V0dGluZz8gSG93IGRvZXMgdGhpcyBwb3RlbnRpYWxseSBhZmZlY3QgdGhlIG92ZXJhbGwgYnVpbGQgc3lzdGVtIGFuZCB0aGUgcmVzdWx0aW5nIGJpbmFyeSBzaXplPyBJdCYjMzk7cyByZWFsbHkgdGhlIG1vc3QgY3JpdGljYWwgZmlyc3Qgc3RlcDsgdW5kZXJzdGFuZGluZyB0aGVzZSBzZXR0aW5ncyBpcyBmb3VuZGF0aW9uYWwgZm9yIGFueXRoaW5nIGVsc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTE6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y2F0YyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNjIwIGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz0xNT1jb25maWcgVVNCX0NBVENcbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0zMS1cdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzozMjpcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGNhdGMuXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0zMy1cbi0tXG5kcml2ZXJzL25ldC91c2IvTWFrZWZpbGUtNS1cbmRyaXZlcnMvbmV0L3VzYi9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19VU0JfQ0FUQylcdFx0JiM0Mzs9IGNhdGMub1xuZHJpdmVycy9uZXQvdXNiL01ha2VmaWxlLTctb2JqLSQoQ09ORklHX1VTQl9LQVdFVEgpXHQmIzQzOz0ga2F3ZXRoLm9cbi0tXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jPTQ1PU1PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTFwmIzM0Oyk7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTQ2LVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo0NzpzdGF0aWMgY29uc3QgY2hhciBkcml2ZXJfbmFtZVtdID0gXCYjMzQ7Y2F0Y1wmIzM0OztcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNDgtXG4tLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02NC1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NjU6ZW51bSBjYXRjX3VzYl9lcCB7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTY2LVx0Q0FUQ19VU0JfRVBfQ09OVFJPTFx0PSAwLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM9MTM5PWVudW0gbGlua19zdGF0dXMge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMTQ1LS8qXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjE0NjogKiBUaGUgY2F0YyBzdHJ1Y3QuXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTE0Ny0gKi9cbi0tXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTE1Mi1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MTUzOnN0cnVjdCBjYXRjIHtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMTU0LVx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTE4Mi1cdFx0aW50IGxlbjtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MTgzOlx0XHR2b2lkICgqY2FsbGJhY2spKHN0cnVjdCBjYXRjICpjYXRjLCBzdHJ1Y3QgY3RybF9xdWV1ZSAqcSk7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTE4NC1cdH0gY3RybF9xdWV1ZVtDVFJMX1FVRVVFXTtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTE5Ni1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MTk3OiNkZWZpbmUgY2F0Y19nZXRfbWFjKGNhdGMsIG1hYylcdFx0XHRcdGNhdGNfY3RybF9tc2coY2F0YywgVVNCX0RJUl9JTiwgIEdldE1hYywgMCwgMCwgbWFjLCAgNilcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MTk4OiNkZWZpbmUgY2F0Y19yZXNldChjYXRjKVx0XHRcdFx0Y2F0Y19jdHJsX21zZyhjYXRjLCBVU0JfRElSX09VVCwgUmVzZXQsIDAsIDAsIE5VTEwsIDApXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjE5OTojZGVmaW5lIGNhdGNfc2V0X3JlZyhjYXRjLCByZWcsIHZhbClcdFx0XHRjYXRjX2N0cmxfbXNnKGNhdGMsIFVTQl9ESVJfT1VULCBTZXRSZWcsIHZhbCwgcmVnLCBOVUxMLCAwKVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzoyMDA6I2RlZmluZSBjYXRjX2dldF9yZWcoY2F0YywgcmVnLCBidWYpXHRcdFx0Y2F0Y19jdHJsX21zZyhjYXRjLCBVU0JfRElSX0lOLCAgR2V0UmVnLCAwLCByZWcsIGJ1ZiwgMSlcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MjAxOiNkZWZpbmUgY2F0Y193cml0ZV9tZW0oY2F0YywgYWRkciwgYnVmLCBzaXplKVx0XHRjYXRjX2N0cmxfbXNnKGNhdGMsIFVTQl9ESVJfT1VULCBXcml0ZU1lbSwgMCwgYWRkciwgYnVmLCBzaXplKVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzoyMDI6I2RlZmluZSBjYXRjX3JlYWRfbWVtKGNhdGMsIGFkZHIsIGJ1Ziwgc2l6ZSlcdFx0Y2F0Y19jdHJsX21zZyhjYXRjLCBVU0JfRElSX0lOLCAgUmVhZE1lbSwgMCwgYWRkciwgYnVmLCBzaXplKVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0yMDMtXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjIwNDojZGVmaW5lIGY1dTAxMV9yeG1vZGUoY2F0Yywgcnhtb2RlKVx0XHRcdGNhdGNfY3RybF9tc2coY2F0YywgVVNCX0RJUl9PVVQsIFNldFJ4TW9kZSwgMCwgMSwgcnhtb2RlLCAyKVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzoyMDU6I2RlZmluZSBmNXUwMTFfcnhtb2RlX2FzeW5jKGNhdGMsIHJ4bW9kZSlcdFx0Y2F0Y19jdHJsX2FzeW5jKGNhdGMsIFVTQl9ESVJfT1VULCBTZXRSeE1vZGUsIDAsIDEsIFx1MDAyNnJ4bW9kZSwgMiwgTlVMTClcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MjA2OiNkZWZpbmUgZjV1MDExX21jaGFzaF9hc3luYyhjYXRjLCBoYXNoKVx0XHRcdGNhdGNfY3RybF9hc3luYyhjYXRjLCBVU0JfRElSX09VVCwgU2V0UnhNb2RlLCAwLCAyLCBcdTAwMjZoYXNoLCA4LCBOVUxMKVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0yMDctXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjIwODojZGVmaW5lIGNhdGNfc2V0X3JlZ19hc3luYyhjYXRjLCByZWcsIHZhbClcdFx0Y2F0Y19jdHJsX2FzeW5jKGNhdGMsIFVTQl9ESVJfT1VULCBTZXRSZWcsIHZhbCwgcmVnLCBOVUxMLCAwLCBOVUxMKVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzoyMDk6I2RlZmluZSBjYXRjX2dldF9yZWdfYXN5bmMoY2F0YywgcmVnLCBjYilcdFx0Y2F0Y19jdHJsX2FzeW5jKGNhdGMsIFVTQl9ESVJfSU4sIEdldFJlZywgMCwgcmVnLCBOVUxMLCAxLCBjYilcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MjEwOiNkZWZpbmUgY2F0Y193cml0ZV9tZW1fYXN5bmMoY2F0YywgYWRkciwgYnVmLCBzaXplKVx0Y2F0Y19jdHJsX2FzeW5jKGNhdGMsIFVTQl9ESVJfT1VULCBXcml0ZU1lbSwgMCwgYWRkciwgYnVmLCBzaXplLCBOVUxMKVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0yMTEtXG4tLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0yMTUtXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjIxNjpzdGF0aWMgdm9pZCBjYXRjX3J4X2RvbmUoc3RydWN0IHVyYiAqdXJiKVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0yMTcte1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzoyMTg6XHRzdHJ1Y3QgY2F0YyAqY2F0YyA9IHVyYi1cdTAwM2Vjb250ZXh0O1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0yMTktXHR1OCAqcGt0X3N0YXJ0ID0gdXJiLVx1MDAzZXRyYW5zZmVyX2J1ZmZlcjtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTIyMy1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MjI0Olx0aWYgKCFjYXRjLVx1MDAzZWlzX2Y1dTAxMSkge1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzoyMjU6XHRcdGNsZWFyX2JpdChSWF9SVU5OSU5HLCBcdTAwMjZjYXRjLVx1MDAzZWZsYWdzKTtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMjI2LVx0XHRwa3Rfb2Zmc2V0ID0gMjtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTIzNS1cdGRvIHtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MjM2Olx0XHRpZighY2F0Yy1cdTAwM2Vpc19mNXUwMTEpIHtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMjM3LVx0XHRcdGludCByZW1haW5pbmcgPSB1cmItXHUwMDNlYWN0dWFsX2xlbmd0aCAtXG4tLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0yNDAtXHRcdFx0aWYgKHJlbWFpbmluZyBcdTAwM2MgcGt0X29mZnNldCkge1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzoyNDE6XHRcdFx0XHRjYXRjLVx1MDAzZW5ldGRldi1cdTAwM2VzdGF0cy5yeF9sZW5ndGhfZXJyb3JzJiM0MzsmIzQzOztcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MjQyOlx0XHRcdFx0Y2F0Yy1cdTAwM2VuZXRkZXYtXHUwMDNlc3RhdHMucnhfZXJyb3JzJiM0MzsmIzQzOztcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMjQzLVx0XHRcdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0yNDYtXHRcdFx0aWYgKHBrdF9sZW4gJiM0MzsgcGt0X29mZnNldCBcdTAwM2UgcmVtYWluaW5nKSB7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjI0NzpcdFx0XHRcdGNhdGMtXHUwMDNlbmV0ZGV2LVx1MDAzZXN0YXRzLnJ4X2xlbmd0aF9lcnJvcnMmIzQzOyYjNDM7O1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzoyNDg6XHRcdFx0XHRjYXRjLVx1MDAzZW5ldGRldi1cdTAwM2VzdGF0cy5yeF9lcnJvcnMmIzQzOyYjNDM7O1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0yNDktXHRcdFx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTI2MC1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MjYxOlx0XHRza2ItXHUwMDNlcHJvdG9jb2wgPSBldGhfdHlwZV90cmFucyhza2IsIGNhdGMtXHUwMDNlbmV0ZGV2KTtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMjYyLVx0XHRuZXRpZl9yeChza2IpO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0yNjMtXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjI2NDpcdFx0Y2F0Yy1cdTAwM2VuZXRkZXYtXHUwMDNlc3RhdHMucnhfcGFja2V0cyYjNDM7JiM0Mzs7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjI2NTpcdFx0Y2F0Yy1cdTAwM2VuZXRkZXYtXHUwMDNlc3RhdHMucnhfYnl0ZXMgJiM0Mzs9IHBrdF9sZW47XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTI2Ni1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMjY3LVx0XHQvKiBGNVUwMTEgb25seSBkb2VzIG9uZSBwYWNrZXQgcGVyIFJYICovXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjI2ODpcdFx0aWYgKGNhdGMtXHUwMDNlaXNfZjV1MDExKVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0yNjktXHRcdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0yNzMtXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjI3NDpcdGlmIChjYXRjLVx1MDAzZWlzX2Y1dTAxMSkge1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzoyNzU6XHRcdGlmIChhdG9taWNfcmVhZChcdTAwMjZjYXRjLVx1MDAzZXJlY3Ffc3opKSB7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTI3Ni1cdFx0XHRpbnQgc3RhdGU7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjI3NzpcdFx0XHRhdG9taWNfZGVjKFx1MDAyNmNhdGMtXHUwMDNlcmVjcV9zeik7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjI3ODpcdFx0XHRuZXRkZXZfZGJnKGNhdGMtXHUwMDNlbmV0ZGV2LCBcJiMzNDtnZXR0aW5nIGV4dHJhIHBhY2tldFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjI3OTpcdFx0XHR1cmItXHUwMDNlZGV2ID0gY2F0Yy1cdTAwM2V1c2JkZXY7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTI4MC1cdFx0XHRpZiAoKHN0YXRlID0gdXNiX3N1Ym1pdF91cmIodXJiLCBHRlBfQVRPTUlDKSkgXHUwMDNjIDApIHtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MjgxOlx0XHRcdFx0bmV0ZGV2X2RiZyhjYXRjLVx1MDAzZW5ldGRldixcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMjgyLVx0XHRcdFx0XHQgICBcJiMzNDtzdWJtaXQocnhfdXJiKSBzdGF0dXMgJWRcXG5cJiMzNDssIHN0YXRlKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTI4NC1cdFx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6Mjg1Olx0XHRcdGNsZWFyX2JpdChSWF9SVU5OSU5HLCBcdTAwMjZjYXRjLVx1MDAzZWZsYWdzKTtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMjg2LVx0XHR9XG4tLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0yODktXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjI5MDpzdGF0aWMgdm9pZCBjYXRjX2lycV9kb25lKHN0cnVjdCB1cmIgKnVyYilcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMjkxLXtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MjkyOlx0c3RydWN0IGNhdGMgKmNhdGMgPSB1cmItXHUwMDNlY29udGV4dDtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMjkzLVx0dTggKmRhdGEgPSB1cmItXHUwMDNldHJhbnNmZXJfYnVmZmVyO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMjk3LVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzoyOTg6XHRpZiAoIWNhdGMtXHUwMDNlaXNfZjV1MDExKSB7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTI5OS1cdFx0aGFzZGF0YSA9IGRhdGFbMV0gXHUwMDI2IDB4ODA7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0zMjctXHRpZiAobGlua3N0cyA9PSBMaW5rR29vZCkge1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzozMjg6XHRcdG5ldGlmX2NhcnJpZXJfb24oY2F0Yy1cdTAwM2VuZXRkZXYpO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzozMjk6XHRcdG5ldGRldl9kYmcoY2F0Yy1cdTAwM2VuZXRkZXYsIFwmIzM0O2xpbmsgb2tcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0zMzAtXHR9XG4tLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0zMzItXHRpZiAobGlua3N0cyA9PSBMaW5rQmFkKSB7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjMzMzpcdFx0bmV0aWZfY2Fycmllcl9vZmYoY2F0Yy1cdTAwM2VuZXRkZXYpO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzozMzQ6XHRcdG5ldGRldl9kYmcoY2F0Yy1cdTAwM2VuZXRkZXYsIFwmIzM0O2xpbmsgYmFkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMzM1LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMzM3LVx0aWYgKGhhc2RhdGEpIHtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MzM4Olx0XHRpZiAodGVzdF9hbmRfc2V0X2JpdChSWF9SVU5OSU5HLCBcdTAwMjZjYXRjLVx1MDAzZWZsYWdzKSkge1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzozMzk6XHRcdFx0aWYgKGNhdGMtXHUwMDNlaXNfZjV1MDExKVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzozNDA6XHRcdFx0XHRhdG9taWNfaW5jKFx1MDAyNmNhdGMtXHUwMDNlcmVjcV9zeik7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTM0MS1cdFx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MzQyOlx0XHRcdGNhdGMtXHUwMDNlcnhfdXJiLVx1MDAzZWRldiA9IGNhdGMtXHUwMDNldXNiZGV2O1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzozNDM6XHRcdFx0aWYgKChyZXMgPSB1c2Jfc3VibWl0X3VyYihjYXRjLVx1MDAzZXJ4X3VyYiwgR0ZQX0FUT01JQykpIFx1MDAzYyAwKSB7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjM0NDpcdFx0XHRcdGRldl9lcnIoXHUwMDI2Y2F0Yy1cdTAwM2V1c2JkZXYtXHUwMDNlZGV2LFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0zNDUtXHRcdFx0XHRcdFwmIzM0O3N1Ym1pdChyeF91cmIpIHN0YXR1cyAlZFxcblwmIzM0OywgcmVzKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTM1MS1cdGlmIChyZXMpXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjM1MjpcdFx0ZGV2X2VycihcdTAwMjZjYXRjLVx1MDAzZXVzYmRldi1cdTAwM2VkZXYsXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTM1My1cdFx0XHRcJiMzNDtjYW4mIzM5O3QgcmVzdWJtaXQgaW50ciwgJXMtJXMsIHN0YXR1cyAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MzU0Olx0XHRcdGNhdGMtXHUwMDNldXNiZGV2LVx1MDAzZWJ1cy1cdTAwM2VidXNfbmFtZSxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MzU1Olx0XHRcdGNhdGMtXHUwMDNldXNiZGV2LVx1MDAzZWRldnBhdGgsIHJlcyk7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTM1Ni19XG4tLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0zNjEtXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjM2MjpzdGF0aWMgaW50IGNhdGNfdHhfcnVuKHN0cnVjdCBjYXRjICpjYXRjKVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0zNjMte1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMzY1LVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzozNjY6XHRpZiAoY2F0Yy1cdTAwM2Vpc19mNXUwMTEpXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjM2NzpcdFx0Y2F0Yy1cdTAwM2V0eF9wdHIgPSAoY2F0Yy1cdTAwM2V0eF9wdHIgJiM0MzsgNjMpIFx1MDAyNiB+NjM7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTM2OC1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MzY5Olx0Y2F0Yy1cdTAwM2V0eF91cmItXHUwMDNldHJhbnNmZXJfYnVmZmVyX2xlbmd0aCA9IGNhdGMtXHUwMDNldHhfcHRyO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzozNzA6XHRjYXRjLVx1MDAzZXR4X3VyYi1cdTAwM2V0cmFuc2Zlcl9idWZmZXIgPSBjYXRjLVx1MDAzZXR4X2J1ZltjYXRjLVx1MDAzZXR4X2lkeF07XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjM3MTpcdGNhdGMtXHUwMDNldHhfdXJiLVx1MDAzZWRldiA9IGNhdGMtXHUwMDNldXNiZGV2O1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0zNzItXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjM3MzpcdGlmICgoc3RhdHVzID0gdXNiX3N1Ym1pdF91cmIoY2F0Yy1cdTAwM2V0eF91cmIsIEdGUF9BVE9NSUMpKSBcdTAwM2MgMClcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6Mzc0Olx0XHRkZXZfZXJyKFx1MDAyNmNhdGMtXHUwMDNldXNiZGV2LVx1MDAzZWRldiwgXCYjMzQ7c3VibWl0KHR4X3VyYiksIHN0YXR1cyAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMzc1LVx0XHRcdHN0YXR1cyk7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTM3Ni1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6Mzc3Olx0Y2F0Yy1cdTAwM2V0eF9pZHggPSAhY2F0Yy1cdTAwM2V0eF9pZHg7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjM3ODpcdGNhdGMtXHUwMDNldHhfcHRyID0gMDtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMzc5LVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzozODA6XHRuZXRpZl90cmFuc191cGRhdGUoY2F0Yy1cdTAwM2VuZXRkZXYpO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0zODEtXHRyZXR1cm4gc3RhdHVzO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMzgzLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzozODQ6c3RhdGljIHZvaWQgY2F0Y190eF9kb25lKHN0cnVjdCB1cmIgKnVyYilcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMzg1LXtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6Mzg2Olx0c3RydWN0IGNhdGMgKmNhdGMgPSB1cmItXHUwMDNlY29udGV4dDtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMzg3LVx0dW5zaWduZWQgbG9uZyBmbGFncztcbi0tXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTM5Mi1cdFx0dXJiLVx1MDAzZXN0YXR1cyA9IDA7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjM5MzpcdFx0bmV0aWZfdHJhbnNfdXBkYXRlKGNhdGMtXHUwMDNlbmV0ZGV2KTtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6Mzk0Olx0XHRjYXRjLVx1MDAzZW5ldGRldi1cdTAwM2VzdGF0cy50eF9lcnJvcnMmIzQzOyYjNDM7O1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzozOTU6XHRcdGNsZWFyX2JpdChUWF9SVU5OSU5HLCBcdTAwMjZjYXRjLVx1MDAzZWZsYWdzKTtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6Mzk2Olx0XHRuZXRpZl93YWtlX3F1ZXVlKGNhdGMtXHUwMDNlbmV0ZGV2KTtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMzk3LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy00MDUtXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjQwNjpcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmNhdGMtXHUwMDNldHhfbG9jaywgZmxhZ3MpO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy00MDctXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjQwODpcdGlmIChjYXRjLVx1MDAzZXR4X3B0cikge1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo0MDk6XHRcdHIgPSBjYXRjX3R4X3J1bihjYXRjKTtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNDEwLVx0XHRpZiAodW5saWtlbHkociBcdTAwM2MgMCkpXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjQxMTpcdFx0XHRjbGVhcl9iaXQoVFhfUlVOTklORywgXHUwMDI2Y2F0Yy1cdTAwM2VmbGFncyk7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTQxMi1cdH0gZWxzZSB7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjQxMzpcdFx0Y2xlYXJfYml0KFRYX1JVTk5JTkcsIFx1MDAyNmNhdGMtXHUwMDNlZmxhZ3MpO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy00MTQtXHR9XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTQxNS1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NDE2Olx0bmV0aWZfd2FrZV9xdWV1ZShjYXRjLVx1MDAzZW5ldGRldik7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTQxNy1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NDE4Olx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZjYXRjLVx1MDAzZXR4X2xvY2ssIGZsYWdzKTtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNDE5LX1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNDIwLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo0MjE6c3RhdGljIG5ldGRldl90eF90IGNhdGNfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy00MjItXHRcdFx0XHRcdCBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy00MjMte1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo0MjQ6XHRzdHJ1Y3QgY2F0YyAqY2F0YyA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTQyNS1cdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy00MjgtXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjQyOTpcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmNhdGMtXHUwMDNldHhfbG9jaywgZmxhZ3MpO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy00MzAtXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjQzMTpcdGNhdGMtXHUwMDNldHhfcHRyID0gKCgoY2F0Yy1cdTAwM2V0eF9wdHIgLSAxKSBcdTAwM2VcdTAwM2UgNikgJiM0MzsgMSkgXHUwMDNjXHUwMDNjIDY7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjQzMjpcdHR4X2J1ZiA9IGNhdGMtXHUwMDNldHhfYnVmW2NhdGMtXHUwMDNldHhfaWR4XSAmIzQzOyBjYXRjLVx1MDAzZXR4X3B0cjtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NDMzOlx0aWYgKGNhdGMtXHUwMDNlaXNfZjV1MDExKVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy00MzQtXHRcdCooX19iZTE2ICopdHhfYnVmID0gY3B1X3RvX2JlMTYoc2tiLVx1MDAzZWxlbik7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy00MzctXHRza2JfY29weV9mcm9tX2xpbmVhcl9kYXRhKHNrYiwgdHhfYnVmICYjNDM7IDIsIHNrYi1cdTAwM2VsZW4pO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo0Mzg6XHRjYXRjLVx1MDAzZXR4X3B0ciAmIzQzOz0gc2tiLVx1MDAzZWxlbiAmIzQzOyAyO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy00MzktXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjQ0MDpcdGlmICghdGVzdF9hbmRfc2V0X2JpdChUWF9SVU5OSU5HLCBcdTAwMjZjYXRjLVx1MDAzZWZsYWdzKSkge1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo0NDE6XHRcdHIgPSBjYXRjX3R4X3J1bihjYXRjKTtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNDQyLVx0XHRpZiAociBcdTAwM2MgMClcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NDQzOlx0XHRcdGNsZWFyX2JpdChUWF9SVU5OSU5HLCBcdTAwMjZjYXRjLVx1MDAzZWZsYWdzKTtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNDQ0LVx0fVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy00NDUtXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjQ0NjpcdGlmICgoY2F0Yy1cdTAwM2Vpc19mNXUwMTEgXHUwMDI2XHUwMDI2IGNhdGMtXHUwMDNldHhfcHRyKSB8fFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo0NDc6XHQgICAgKGNhdGMtXHUwMDNldHhfcHRyIFx1MDAzZT0gKChUWF9NQVhfQlVSU1QgLSAxKSAqIChQS1RfU1ogJiM0MzsgMikpKSlcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNDQ4LVx0XHRuZXRpZl9zdG9wX3F1ZXVlKG5ldGRldik7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTQ0OS1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NDUwOlx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZjYXRjLVx1MDAzZXR4X2xvY2ssIGZsYWdzKTtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNDUxLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy00NTItXHRpZiAociBcdTAwM2U9IDApIHtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NDUzOlx0XHRjYXRjLVx1MDAzZW5ldGRldi1cdTAwM2VzdGF0cy50eF9ieXRlcyAmIzQzOz0gc2tiLVx1MDAzZWxlbjtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NDU0Olx0XHRjYXRjLVx1MDAzZW5ldGRldi1cdTAwM2VzdGF0cy50eF9wYWNrZXRzJiM0MzsmIzQzOztcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNDU1LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNDYxLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo0NjI6c3RhdGljIHZvaWQgY2F0Y190eF90aW1lb3V0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHVuc2lnbmVkIGludCB0eHF1ZXVlKVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy00NjMte1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo0NjQ6XHRzdHJ1Y3QgY2F0YyAqY2F0YyA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTQ2NS1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNDY2LVx0ZGV2X3dhcm4oXHUwMDI2bmV0ZGV2LVx1MDAzZWRldiwgXCYjMzQ7VHJhbnNtaXQgdGltZWQgb3V0LlxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjQ2NzpcdHVzYl91bmxpbmtfdXJiKGNhdGMtXHUwMDNldHhfdXJiKTtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNDY4LX1cbi0tXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTQ3My1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NDc0OnN0YXRpYyBpbnQgY2F0Y19jdHJsX21zZyhzdHJ1Y3QgY2F0YyAqY2F0YywgdTggZGlyLCB1OCByZXF1ZXN0LCB1MTYgdmFsdWUsIHUxNiBpbmRleCwgdm9pZCAqYnVmLCBpbnQgbGVuKVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy00NzUte1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo0NzY6ICAgICAgICBpbnQgcmV0dmFsID0gdXNiX2NvbnRyb2xfbXNnKGNhdGMtXHUwMDNldXNiZGV2LFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo0Nzc6XHRcdGRpciA/IHVzYl9yY3ZjdHJscGlwZShjYXRjLVx1MDAzZXVzYmRldiwgMCkgOiB1c2Jfc25kY3RybHBpcGUoY2F0Yy1cdTAwM2V1c2JkZXYsIDApLFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy00NzgtXHRcdCByZXF1ZXN0LCAweDQwIHwgZGlyLCB2YWx1ZSwgaW5kZXgsIGJ1ZiwgbGVuLCAxMDAwKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTQ4MS1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NDgyOnN0YXRpYyB2b2lkIGNhdGNfY3RybF9ydW4oc3RydWN0IGNhdGMgKmNhdGMpXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTQ4My17XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjQ4NDpcdHN0cnVjdCBjdHJsX3F1ZXVlICpxID0gY2F0Yy1cdTAwM2VjdHJsX3F1ZXVlICYjNDM7IGNhdGMtXHUwMDNlY3RybF90YWlsO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo0ODU6XHRzdHJ1Y3QgdXNiX2RldmljZSAqdXNiZGV2ID0gY2F0Yy1cdTAwM2V1c2JkZXY7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjQ4NjpcdHN0cnVjdCB1cmIgKnVyYiA9IGNhdGMtXHUwMDNlY3RybF91cmI7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjQ4NzpcdHN0cnVjdCB1c2JfY3RybHJlcXVlc3QgKmRyID0gXHUwMDI2Y2F0Yy1cdTAwM2VjdHJsX2RyO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy00ODgtXHRpbnQgc3RhdHVzO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNDk3LVx0dXJiLVx1MDAzZXRyYW5zZmVyX2J1ZmZlcl9sZW5ndGggPSBxLVx1MDAzZWxlbjtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NDk4Olx0dXJiLVx1MDAzZXRyYW5zZmVyX2J1ZmZlciA9IGNhdGMtXHUwMDNlY3RybF9idWY7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTQ5OS1cdHVyYi1cdTAwM2VzZXR1cF9wYWNrZXQgPSAodm9pZCAqKSBkcjtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTUwMi1cdGlmICghcS1cdTAwM2VkaXIgXHUwMDI2XHUwMDI2IHEtXHUwMDNlYnVmIFx1MDAyNlx1MDAyNiBxLVx1MDAzZWxlbilcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NTAzOlx0XHRtZW1jcHkoY2F0Yy1cdTAwM2VjdHJsX2J1ZiwgcS1cdTAwM2VidWYsIHEtXHUwMDNlbGVuKTtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNTA0LVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo1MDU6XHRpZiAoKHN0YXR1cyA9IHVzYl9zdWJtaXRfdXJiKGNhdGMtXHUwMDNlY3RybF91cmIsIEdGUF9BVE9NSUMpKSlcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NTA2Olx0XHRkZXZfZXJyKFx1MDAyNmNhdGMtXHUwMDNldXNiZGV2LVx1MDAzZWRldiwgXCYjMzQ7c3VibWl0KGN0cmxfdXJiKSBzdGF0dXMgJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTUwNy1cdFx0XHRzdGF0dXMpO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNTA5LVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo1MTA6c3RhdGljIHZvaWQgY2F0Y19jdHJsX2RvbmUoc3RydWN0IHVyYiAqdXJiKVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy01MTEte1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo1MTI6XHRzdHJ1Y3QgY2F0YyAqY2F0YyA9IHVyYi1cdTAwM2Vjb250ZXh0O1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy01MTMtXHRzdHJ1Y3QgY3RybF9xdWV1ZSAqcTtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTUyMC1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NTIxOlx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2Y2F0Yy1cdTAwM2VjdHJsX2xvY2ssIGZsYWdzKTtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNTIyLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo1MjM6XHRxID0gY2F0Yy1cdTAwM2VjdHJsX3F1ZXVlICYjNDM7IGNhdGMtXHUwMDNlY3RybF90YWlsO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy01MjQtXG4tLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy01MjYtXHRcdGlmIChxLVx1MDAzZWJ1ZiBcdTAwMjZcdTAwMjYgcS1cdTAwM2VsZW4pXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjUyNzpcdFx0XHRtZW1jcHkocS1cdTAwM2VidWYsIGNhdGMtXHUwMDNlY3RybF9idWYsIHEtXHUwMDNlbGVuKTtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNTI4LVx0XHRlbHNlXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjUyOTpcdFx0XHRxLVx1MDAzZWJ1ZiA9IGNhdGMtXHUwMDNlY3RybF9idWY7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTUzMC1cdH1cbi0tXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTUzMi1cdGlmIChxLVx1MDAzZWNhbGxiYWNrKVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo1MzM6XHRcdHEtXHUwMDNlY2FsbGJhY2soY2F0YywgcSk7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTUzNC1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NTM1Olx0Y2F0Yy1cdTAwM2VjdHJsX3RhaWwgPSAoY2F0Yy1cdTAwM2VjdHJsX3RhaWwgJiM0MzsgMSkgXHUwMDI2IChDVFJMX1FVRVVFIC0gMSk7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTUzNi1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NTM3Olx0aWYgKGNhdGMtXHUwMDNlY3RybF9oZWFkICE9IGNhdGMtXHUwMDNlY3RybF90YWlsKVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo1Mzg6XHRcdGNhdGNfY3RybF9ydW4oY2F0Yyk7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTUzOS1cdGVsc2VcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NTQwOlx0XHRjbGVhcl9iaXQoQ1RSTF9SVU5OSU5HLCBcdTAwMjZjYXRjLVx1MDAzZWZsYWdzKTtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNTQxLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo1NDI6XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmNhdGMtXHUwMDNlY3RybF9sb2NrLCBmbGFncyk7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTU0My19XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTU0NC1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NTQ1OnN0YXRpYyBpbnQgY2F0Y19jdHJsX2FzeW5jKHN0cnVjdCBjYXRjICpjYXRjLCB1OCBkaXIsIHU4IHJlcXVlc3QsIHUxNiB2YWx1ZSxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NTQ2Olx0dTE2IGluZGV4LCB2b2lkICpidWYsIGludCBsZW4sIHZvaWQgKCpjYWxsYmFjaykoc3RydWN0IGNhdGMgKmNhdGMsIHN0cnVjdCBjdHJsX3F1ZXVlICpxKSlcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNTQ3LXtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTU1MS1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NTUyOlx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2Y2F0Yy1cdTAwM2VjdHJsX2xvY2ssIGZsYWdzKTtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNTUzLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo1NTQ6XHRxID0gY2F0Yy1cdTAwM2VjdHJsX3F1ZXVlICYjNDM7IGNhdGMtXHUwMDNlY3RybF9oZWFkO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy01NTUtXG4tLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy01NjMtXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjU2NDpcdGNhdGMtXHUwMDNlY3RybF9oZWFkID0gKGNhdGMtXHUwMDNlY3RybF9oZWFkICYjNDM7IDEpIFx1MDAyNiAoQ1RSTF9RVUVVRSAtIDEpO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy01NjUtXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjU2NjpcdGlmIChjYXRjLVx1MDAzZWN0cmxfaGVhZCA9PSBjYXRjLVx1MDAzZWN0cmxfdGFpbCkge1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo1Njc6XHRcdGRldl9lcnIoXHUwMDI2Y2F0Yy1cdTAwM2V1c2JkZXYtXHUwMDNlZGV2LCBcJiMzNDtjdHJsIHF1ZXVlIGZ1bGxcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo1Njg6XHRcdGNhdGMtXHUwMDNlY3RybF90YWlsID0gKGNhdGMtXHUwMDNlY3RybF90YWlsICYjNDM7IDEpIFx1MDAyNiAoQ1RSTF9RVUVVRSAtIDEpO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy01NjktXHRcdHJldHZhbCA9IC0xO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNTcxLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo1NzI6XHRpZiAoIXRlc3RfYW5kX3NldF9iaXQoQ1RSTF9SVU5OSU5HLCBcdTAwMjZjYXRjLVx1MDAzZWZsYWdzKSlcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NTczOlx0XHRjYXRjX2N0cmxfcnVuKGNhdGMpO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy01NzQtXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjU3NTpcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2Y2F0Yy1cdTAwM2VjdHJsX2xvY2ssIGZsYWdzKTtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNTc2LVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNTgzLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo1ODQ6c3RhdGljIHZvaWQgY2F0Y19zdGF0c19kb25lKHN0cnVjdCBjYXRjICpjYXRjLCBzdHJ1Y3QgY3RybF9xdWV1ZSAqcSlcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNTg1LXtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTU4OC1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NTg5Olx0Y2F0Yy1cdTAwM2VzdGF0c19idWZbaW5kZXhdID0gKigoY2hhciAqKXEtXHUwMDNlYnVmKTtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNTkwLVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNTkzLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo1OTQ6XHRkYXRhID0gKCh1MTYpY2F0Yy1cdTAwM2VzdGF0c19idWZbaW5kZXhdIFx1MDAzY1x1MDAzYyA4KSB8IGNhdGMtXHUwMDNlc3RhdHNfYnVmW2luZGV4ICYjNDM7IDFdO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo1OTU6XHRsYXN0ID0gY2F0Yy1cdTAwM2VzdGF0c192YWxzW2luZGV4IFx1MDAzZVx1MDAzZSAxXTtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNTk2LVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNTk5LVx0XHRjYXNlIFR4TXVsdGlDb2xsOlxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo2MDA6XHRcdFx0Y2F0Yy1cdTAwM2VuZXRkZXYtXHUwMDNlc3RhdHMuY29sbGlzaW9ucyAmIzQzOz0gZGF0YSAtIGxhc3Q7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTYwMS1cdFx0XHRicmVhaztcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNjAyLVx0XHRjYXNlIFR4RXhjZXNzQ29sbDpcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NjAzOlx0XHRcdGNhdGMtXHUwMDNlbmV0ZGV2LVx1MDAzZXN0YXRzLnR4X2Fib3J0ZWRfZXJyb3JzICYjNDM7PSBkYXRhIC0gbGFzdDtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NjA0Olx0XHRcdGNhdGMtXHUwMDNlbmV0ZGV2LVx1MDAzZXN0YXRzLnR4X2Vycm9ycyAmIzQzOz0gZGF0YSAtIGxhc3Q7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTYwNS1cdFx0XHRicmVhaztcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNjA2LVx0XHRjYXNlIFJ4RnJhbUVycjpcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NjA3Olx0XHRcdGNhdGMtXHUwMDNlbmV0ZGV2LVx1MDAzZXN0YXRzLnJ4X2ZyYW1lX2Vycm9ycyAmIzQzOz0gZGF0YSAtIGxhc3Q7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjYwODpcdFx0XHRjYXRjLVx1MDAzZW5ldGRldi1cdTAwM2VzdGF0cy5yeF9lcnJvcnMgJiM0Mzs9IGRhdGEgLSBsYXN0O1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02MDktXHRcdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02MTEtXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjYxMjpcdGNhdGMtXHUwMDNlc3RhdHNfdmFsc1tpbmRleCBcdTAwM2VcdTAwM2UgMV0gPSBkYXRhO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02MTMtfVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02MTQtXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjYxNTpzdGF0aWMgdm9pZCBjYXRjX3N0YXRzX3RpbWVyKHN0cnVjdCB0aW1lcl9saXN0ICp0KVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02MTYte1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo2MTc6XHRzdHJ1Y3QgY2F0YyAqY2F0YyA9IHRpbWVyX2NvbnRhaW5lcl9vZihjYXRjLCB0LCB0aW1lcik7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTYxOC1cdGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNjIwLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgODsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjYyMTpcdFx0Y2F0Y19nZXRfcmVnX2FzeW5jKGNhdGMsIEV0aFN0YXRzICYjNDM7IDcgLSBpLCBjYXRjX3N0YXRzX2RvbmUpO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02MjItXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjYyMzpcdG1vZF90aW1lcihcdTAwMjZjYXRjLVx1MDAzZXRpbWVyLCBqaWZmaWVzICYjNDM7IFNUQVRTX1VQREFURSk7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTYyNC19XG4tLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02MjktXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjYzMDpzdGF0aWMgdm9pZCBjYXRjX211bHRpY2FzdChjb25zdCB1bnNpZ25lZCBjaGFyICphZGRyLCB1OCAqbXVsdGljYXN0KVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02MzEte1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNjM3LVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo2Mzg6c3RhdGljIHZvaWQgY2F0Y19zZXRfbXVsdGljYXN0X2xpc3Qoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNjM5LXtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NjQwOlx0c3RydWN0IGNhdGMgKmNhdGMgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02NDEtXHRzdHJ1Y3QgbmV0ZGV2X2h3X2FkZHIgKmhhO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNjQ1LVx0ZXRoX2Jyb2FkY2FzdF9hZGRyKGJyb2FkY2FzdCk7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjY0NjpcdG1lbXNldChjYXRjLVx1MDAzZW11bHRpY2FzdCwgMCwgNjQpO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02NDctXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjY0ODpcdGNhdGNfbXVsdGljYXN0KGJyb2FkY2FzdCwgY2F0Yy1cdTAwM2VtdWx0aWNhc3QpO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo2NDk6XHRjYXRjX211bHRpY2FzdChuZXRkZXYtXHUwMDNlZGV2X2FkZHIsIGNhdGMtXHUwMDNlbXVsdGljYXN0KTtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNjUwLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02NTEtXHRpZiAobmV0ZGV2LVx1MDAzZWZsYWdzIFx1MDAyNiBJRkZfUFJPTUlTQykge1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo2NTI6XHRcdG1lbXNldChjYXRjLVx1MDAzZW11bHRpY2FzdCwgMHhmZiwgNjQpO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo2NTM6XHRcdHJ4IHw9ICghY2F0Yy1cdTAwM2Vpc19mNXUwMTEpID8gUnhQcm9taXNjIDogQWx0UnhQcm9taXNjO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02NTQtXHR9XG4tLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02NTYtXHRpZiAobmV0ZGV2LVx1MDAzZWZsYWdzIFx1MDAyNiBJRkZfQUxMTVVMVEkpIHtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NjU3Olx0XHRtZW1zZXQoY2F0Yy1cdTAwM2VtdWx0aWNhc3QsIDB4ZmYsIDY0KTtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNjU4LVx0fSBlbHNlIHtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTY2MC1cdFx0XHR1MzIgY3JjID0gZXRoZXJfY3JjX2xlKDYsIGhhLVx1MDAzZWFkZHIpO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo2NjE6XHRcdFx0aWYgKCFjYXRjLVx1MDAzZWlzX2Y1dTAxMSkge1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo2NjI6XHRcdFx0XHRjYXRjLVx1MDAzZW11bHRpY2FzdFsoY3JjIFx1MDAzZVx1MDAzZSAzKSBcdTAwMjYgMHgzZl0gfD0gMSBcdTAwM2NcdTAwM2MgKGNyYyBcdTAwMjYgNyk7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTY2My1cdFx0XHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo2NjQ6XHRcdFx0XHRjYXRjLVx1MDAzZW11bHRpY2FzdFs3LShjcmMgXHUwMDNlXHUwMDNlIDI5KV0gfD0gMSBcdTAwM2NcdTAwM2MgKChjcmMgXHUwMDNlXHUwMDNlIDI2KSBcdTAwMjYgNyk7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTY2NS1cdFx0XHR9XG4tLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02NjctXHR9XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjY2ODpcdGlmICghY2F0Yy1cdTAwM2Vpc19mNXUwMTEpIHtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NjY5Olx0XHRjYXRjX3NldF9yZWdfYXN5bmMoY2F0YywgUnhVbml0LCByeCk7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjY3MDpcdFx0Y2F0Y193cml0ZV9tZW1fYXN5bmMoY2F0YywgMHhmYTgwLCBjYXRjLVx1MDAzZW11bHRpY2FzdCwgNjQpO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02NzEtXHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo2NzI6XHRcdGY1dTAxMV9tY2hhc2hfYXN5bmMoY2F0YywgY2F0Yy1cdTAwM2VtdWx0aWNhc3QpO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo2NzM6XHRcdGlmIChjYXRjLVx1MDAzZXJ4bW9kZVswXSAhPSByeCkge1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo2NzQ6XHRcdFx0Y2F0Yy1cdTAwM2VyeG1vZGVbMF0gPSByeDtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6Njc1Olx0XHRcdG5ldGRldl9kYmcoY2F0Yy1cdTAwM2VuZXRkZXYsXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTY3Ni1cdFx0XHRcdCAgIFwmIzM0O1NldHRpbmcgUlggbW9kZSB0byAlMi4yWCAlMi4yWFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6Njc3Olx0XHRcdFx0ICAgY2F0Yy1cdTAwM2VyeG1vZGVbMF0sIGNhdGMtXHUwMDNlcnhtb2RlWzFdKTtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6Njc4Olx0XHRcdGY1dTAxMV9yeG1vZGVfYXN5bmMoY2F0YywgY2F0Yy1cdTAwM2VyeG1vZGUpO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02NzktXHRcdH1cbi0tXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTY4Mi1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NjgzOnN0YXRpYyB2b2lkIGNhdGNfZ2V0X2RydmluZm8oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNjg0LVx0XHRcdCAgICAgc3RydWN0IGV0aHRvb2xfZHJ2aW5mbyAqaW5mbylcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNjg1LXtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6Njg2Olx0c3RydWN0IGNhdGMgKmNhdGMgPSBuZXRkZXZfcHJpdihkZXYpO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02ODctXHRzdHJzY3B5KGluZm8tXHUwMDNlZHJpdmVyLCBkcml2ZXJfbmFtZSwgc2l6ZW9mKGluZm8tXHUwMDNlZHJpdmVyKSk7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjY4ODpcdHVzYl9tYWtlX3BhdGgoY2F0Yy1cdTAwM2V1c2JkZXYsIGluZm8tXHUwMDNlYnVzX2luZm8sIHNpemVvZihpbmZvLVx1MDAzZWJ1c19pbmZvKSk7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTY4OS19XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTY5MC1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NjkxOnN0YXRpYyBpbnQgY2F0Y19nZXRfbGlua19rc2V0dGluZ3Moc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNjkyLVx0XHRcdFx0ICAgc3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgKmNtZClcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNjkzLXtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6Njk0Olx0c3RydWN0IGNhdGMgKmNhdGMgPSBuZXRkZXZfcHJpdihkZXYpO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo2OTU6XHRpZiAoIWNhdGMtXHUwMDNlaXNfZjV1MDExKVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02OTYtXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jPTcxNT1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIG9wcyA9IHtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NzE2Olx0LmdldF9kcnZpbmZvID0gY2F0Y19nZXRfZHJ2aW5mbyxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNzE3LVx0LmdldF9saW5rID0gZXRodG9vbF9vcF9nZXRfbGluayxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NzE4Olx0LmdldF9saW5rX2tzZXR0aW5ncyA9IGNhdGNfZ2V0X2xpbmtfa3NldHRpbmdzLFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy03MTktfTtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTcyNC1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NzI1OnN0YXRpYyBpbnQgY2F0Y19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTcyNi17XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjcyNzpcdHN0cnVjdCBjYXRjICpjYXRjID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNzI4LVx0aW50IHN0YXR1cztcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNzI5LVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo3MzA6XHRjYXRjLVx1MDAzZWlycV91cmItXHUwMDNlZGV2ID0gY2F0Yy1cdTAwM2V1c2JkZXY7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjczMTpcdGlmICgoc3RhdHVzID0gdXNiX3N1Ym1pdF91cmIoY2F0Yy1cdTAwM2VpcnFfdXJiLCBHRlBfS0VSTkVMKSkgXHUwMDNjIDApIHtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NzMyOlx0XHRkZXZfZXJyKFx1MDAyNmNhdGMtXHUwMDNldXNiZGV2LVx1MDAzZWRldiwgXCYjMzQ7c3VibWl0KGlycV91cmIpIHN0YXR1cyAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNzMzLVx0XHRcdHN0YXR1cyk7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy03MzgtXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjczOTpcdGlmICghY2F0Yy1cdTAwM2Vpc19mNXUwMTEpXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjc0MDpcdFx0bW9kX3RpbWVyKFx1MDAyNmNhdGMtXHUwMDNldGltZXIsIGppZmZpZXMgJiM0MzsgU1RBVFNfVVBEQVRFKTtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNzQxLVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNzQ0LVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo3NDU6c3RhdGljIGludCBjYXRjX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNzQ2LXtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NzQ3Olx0c3RydWN0IGNhdGMgKmNhdGMgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy03NDgtXG4tLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy03NTAtXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjc1MTpcdGlmICghY2F0Yy1cdTAwM2Vpc19mNXUwMTEpXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjc1MjpcdFx0dGltZXJfZGVsZXRlX3N5bmMoXHUwMDI2Y2F0Yy1cdTAwM2V0aW1lcik7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTc1My1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NzU0Olx0dXNiX2tpbGxfdXJiKGNhdGMtXHUwMDNlcnhfdXJiKTtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NzU1Olx0dXNiX2tpbGxfdXJiKGNhdGMtXHUwMDNldHhfdXJiKTtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NzU2Olx0dXNiX2tpbGxfdXJiKGNhdGMtXHUwMDNlaXJxX3VyYik7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjc1NzpcdHVzYl9raWxsX3VyYihjYXRjLVx1MDAzZWN0cmxfdXJiKTtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNzU4LVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNzYxLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo3NjI6c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBjYXRjX25ldGRldl9vcHMgPSB7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjc2MzpcdC5uZG9fb3Blblx0XHQ9IGNhdGNfb3BlbixcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NzY0Olx0Lm5kb19zdG9wXHRcdD0gY2F0Y19zdG9wLFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo3NjU6XHQubmRvX3N0YXJ0X3htaXRcdFx0PSBjYXRjX3N0YXJ0X3htaXQsXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTc2Ni1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NzY3Olx0Lm5kb190eF90aW1lb3V0XHRcdD0gY2F0Y190eF90aW1lb3V0LFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo3Njg6XHQubmRvX3NldF9yeF9tb2RlXHQ9IGNhdGNfc2V0X211bHRpY2FzdF9saXN0LFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy03NjktXHQubmRvX3NldF9tYWNfYWRkcmVzcyBcdD0gZXRoX21hY19hZGRyLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNzc2LVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo3Nzc6c3RhdGljIGludCBjYXRjX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLCBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTc3OC17XG4tLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy03ODEtXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2O1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo3ODI6XHRzdHJ1Y3QgY2F0YyAqY2F0YztcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNzgzLVx0dTggYnJvYWRjYXN0W0VUSF9BTEVOXTtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTgxMi1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6ODEzOlx0bmV0ZGV2ID0gYWxsb2NfZXRoZXJkZXYoc2l6ZW9mKHN0cnVjdCBjYXRjKSk7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTgxNC1cdGlmICghbmV0ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtODE2LVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo4MTc6XHRjYXRjID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtODE4LVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo4MTk6XHRuZXRkZXYtXHUwMDNlbmV0ZGV2X29wcyA9IFx1MDAyNmNhdGNfbmV0ZGV2X29wcztcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtODIwLVx0bmV0ZGV2LVx1MDAzZXdhdGNoZG9nX3RpbWVvID0gVFhfVElNRU9VVDtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTgyMi1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6ODIzOlx0Y2F0Yy1cdTAwM2V1c2JkZXYgPSB1c2JkZXY7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjgyNDpcdGNhdGMtXHUwMDNlbmV0ZGV2ID0gbmV0ZGV2O1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy04MjUtXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjgyNjpcdHNwaW5fbG9ja19pbml0KFx1MDAyNmNhdGMtXHUwMDNldHhfbG9jayk7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjgyNzpcdHNwaW5fbG9ja19pbml0KFx1MDAyNmNhdGMtXHUwMDNlY3RybF9sb2NrKTtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtODI4LVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo4Mjk6XHR0aW1lcl9zZXR1cChcdTAwMjZjYXRjLVx1MDAzZXRpbWVyLCBjYXRjX3N0YXRzX3RpbWVyLCAwKTtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtODMwLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo4MzE6XHRjYXRjLVx1MDAzZWN0cmxfdXJiID0gdXNiX2FsbG9jX3VyYigwLCBHRlBfS0VSTkVMKTtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6ODMyOlx0Y2F0Yy1cdTAwM2V0eF91cmIgPSB1c2JfYWxsb2NfdXJiKDAsIEdGUF9LRVJORUwpO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo4MzM6XHRjYXRjLVx1MDAzZXJ4X3VyYiA9IHVzYl9hbGxvY191cmIoMCwgR0ZQX0tFUk5FTCk7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjgzNDpcdGNhdGMtXHUwMDNlaXJxX3VyYiA9IHVzYl9hbGxvY191cmIoMCwgR0ZQX0tFUk5FTCk7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjgzNTpcdGlmICgoIWNhdGMtXHUwMDNlY3RybF91cmIpIHx8ICghY2F0Yy1cdTAwM2V0eF91cmIpIHx8XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjgzNjpcdCAgICAoIWNhdGMtXHUwMDNlcnhfdXJiKSB8fCAoIWNhdGMtXHUwMDNlaXJxX3VyYikpIHtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtODM3LVx0XHRkZXZfZXJyKFx1MDAyNmludGYtXHUwMDNlZGV2LCBcJiMzNDtObyBmcmVlIHVyYnMgYXZhaWxhYmxlLlxcblwmIzM0Oyk7XG4tLVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTE6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc0OTgKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgaW1tZWRpYXRlIHRob3VnaHQgcHJvY2VzcywgZm9jdXNpbmcgb24gd2hhdCBJJiMzOTtkIGJlIGRvaW5nIGFuZCB3aHksIGdpdmVuIHRoZSBjb250ZXh0OgoKKipJbnZlc3RpZ2F0aW5nIFVTQl9DQVRDIGluIHRoZSBLZXJuZWwgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCBzb21ldGhpbmcgcmVsYXRlZCB0byBgVVNCX0NBVENgLiBNeSBpbml0aWFsIHJlYWN0aW9uIGlzIHRvIGhlYWQgc3RyYWlnaHQgdG8gdGhlIHNvdXJjZSwgdGhlIGBLY29uZmlnYCBmaWxlIGZvciBVU0IgbmV0d29ya2luZyBkcml2ZXJzLCBzcGVjaWZpY2FsbHkgYGRyaXZlcnMvbmV0L3VzYi9LY29uZmlnYC4gVGhpcyBpcyB3aGVyZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGF0IGFyZWEgb2YgdGhlIGtlcm5lbCB3b3VsZCBiZSBkZWZpbmVkLiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgZm9yIHRoZSBkZWZpbml0aW9uIG9mIGBVU0JfQ0FUQ2AgaXRzZWxmLCB3aGljaCBsaWtlbHkgbWVhbnMgY2hlY2tpbmcgdGhlIHN5bWJvbCBuYW1lLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBpdHMgZGVwZW5kZW5jaWVzLCB0aGUgaGVscCB0ZXh0IGFzc29jaWF0ZWQgd2l0aCBpdCwgYW5kIHBvc3NpYmx5IGFueSBhc3NvY2lhdGVkIGRlZmF1bHQgc2V0dGluZ3MuIFRoZSBgS2NvbmZpZ2AgZmlsZSBpcyB0aGUgZ28tdG8gcGxhY2UgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoYXQgb3B0aW9uIGZpdHMgaW50byB0aGUgbGFyZ2VyIHBpY3R1cmUgb2YgVVNCIG5ldHdvcmtpbmcgc3VwcG9ydCBpbiB0aGUga2VybmVsLiBJIGV4cGVjdCBpdCB0byBnaXZlIG1lIGNsdWVzIGFib3V0IHdoYXQgQ0FUQyBpcywgd2hhdCBpdHMgcG90ZW50aWFsIGhhcmR3YXJlIHJlcXVpcmVtZW50cyBtaWdodCBiZSwgaG93IGl0IGludGVyYWN0cyB3aXRoIG90aGVyIFVTQiBuZXR3b3JraW5nIGZlYXR1cmVzLCBhbmQgd2hhdCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBpbXBsaWNhdGlvbnMgb2YgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIGl0IG1pZ2h0IGJlLiBUaGlzIGluZm9ybWF0aW9uIGlzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIHJvbGUgYW5kIHJlbGV2YW5jZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTE6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIFVTQiBOZXR3b3JrIGRldmljZXMgY29uZmlndXJhdGlvblxuICAgNDpcdCNcbiAgIDU6XHRjb21tZW50IFwmIzM0O0hvc3Qtc2lkZSBVU0Igc3VwcG9ydCBpcyBuZWVkZWQgZm9yIFVTQiBOZXR3b3JrIEFkYXB0ZXIgc3VwcG9ydFwmIzM0O1xuICAgNjpcdFx0ZGVwZW5kcyBvbiAhVVNCIFx1MDAyNlx1MDAyNiBORVRcbiAgIDc6XHRcbiAgIDg6XHRtZW51Y29uZmlnIFVTQl9ORVRfRFJJVkVSU1xuICAgOTpcdFx0dHJpc3RhdGUgXCYjMzQ7VVNCIE5ldHdvcmsgQWRhcHRlcnNcJiMzNDtcbiAgMTA6XHRcdGRlZmF1bHQgVVNCIGlmIFVTQlxuICAxMTpcdFx0ZGVwZW5kcyBvbiBVU0IgXHUwMDI2XHUwMDI2IE5FVFxuICAxMjpcdFxuICAxMzpcdGlmIFVTQl9ORVRfRFJJVkVSU1xuICAxNDpcdFxuICAxNTpcdGNvbmZpZyBVU0JfQ0FUQ1xuICAxNjpcdFx0dHJpc3RhdGUgXCYjMzQ7VVNCIENBVEMgTmV0TWF0ZS1iYXNlZCBFdGhlcm5ldCBkZXZpY2Ugc3VwcG9ydFwmIzM0O1xuICAxNzpcdFx0c2VsZWN0IENSQzMyXG4gIDE4Olx0XHRoZWxwXG4gIDE5Olx0XHQgIFNheSBZIGlmIHlvdSB3YW50IHRvIHVzZSBvbmUgb2YgdGhlIGZvbGxvd2luZyAxME1icHMgVVNCIEV0aGVybmV0XG4gIDIwOlx0XHQgIGRldmljZSBiYXNlZCBvbiB0aGUgRUwxMjEwQSBjaGlwLiBTdXBwb3J0ZWQgZGV2aWNlcyBhcmU6XG4gIDIxOlx0XHQgIEJlbGtpbiBGNVUwMTFcbiAgMjI6XHRcdCAgQmVsa2luIEY1VTExMVxuICAyMzpcdFx0ICBDQVRDIE5ldE1hdGVcbiAgMjQ6XHRcdCAgQ0FUQyBOZXRNYXRlIElJXG4gIDI1Olx0XHQgIHNtYXJ0QnJpZGdlcyBzbWFydE5JQ1xuICAyNjpcdFxuICAyNzpcdFx0ICBUaGlzIGRyaXZlciBtYWtlcyB0aGUgYWRhcHRlciBhcHBlYXIgYXMgYSBub3JtYWwgRXRoZXJuZXQgaW50ZXJmYWNlLFxuICAyODpcdFx0ICB0eXBpY2FsbHkgb24gZXRoMCwgaWYgaXQgaXMgdGhlIG9ubHkgZXRoZXJuZXQgZGV2aWNlLCBvciBwZXJoYXBzIG9uXG4gIDI5Olx0XHQgIGV0aDEsIGlmIHlvdSBoYXZlIGEgUENJIG9yIElTQSBldGhlcm5ldCBjYXJkIGluc3RhbGxlZC5cbiAgMzA6XHRcbiAgMzE6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXG4gIDMyOlx0XHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBjYXRjLlxuICAzMzpcdFxuICAzNDpcdGNvbmZpZyBVU0JfS0FXRVRIXG4gIDM1Olx0XHR0cmlzdGF0ZSBcJiMzNDtVU0IgS0xTSSBLTDVVU0IxMDEtYmFzZWQgZXRoZXJuZXQgZGV2aWNlIHN1cHBvcnRcJiMzNDtcbiAgMzY6XHRcdGhlbHBcbiAgMzc6XHRcdCAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byB1c2Ugb25lIG9mIHRoZSBmb2xsb3dpbmcgMTBNYnBzIG9ubHlcbiAgMzg6XHRcdCAgVVNCIEV0aGVybmV0IGFkYXB0ZXJzIGJhc2VkIG9uIHRoZSBLTFNJIEtMNUtVU0IxMDFCIGNoaXBzZXQ6XG4gIDM5Olx0XHQgIDNDb20gM0MxOTI1MFxuICA0MDpcdFx0ICBBRFMgVVNCLTEwQlRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTE6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgzNTYKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA1MTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUmVjZW50IFBhdGNoIGluIHRoZSBDQVRDIFVTQiBEcml2ZXIqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCYjMzk7cyBiZWVuIGFwcGxpZWQgdG8gYGRyaXZlcnMvbmV0L3VzYi9jYXRjLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBjYXRjX3J4X2RvbmVgIGZ1bmN0aW9uLiBJIHNlZSB0aGV5JiMzOTt2ZSBhZGRlZCBhIGNoZWNrIHRvIGhhbmRsZSBwb3RlbnRpYWwgaXNzdWVzIHdpdGggcGFja2V0IGxlbmd0aHMgd2hlbiBkZWFsaW5nIHdpdGggdGhpcyBVU0IgbmV0d29yayBpbnRlcmZhY2UuCgpFc3NlbnRpYWxseSwgdGhleSYjMzk7cmUgbm93IGNhbGN1bGF0aW5nIHRoZSBgcmVtYWluaW5nYCBieXRlcyBpbiB0aGUgdHJhbnNmZXIgYnVmZmVyIGFmdGVyIGNvbnNpZGVyaW5nIHRoZSBgcGt0X29mZnNldGAuICBUaGUgb3JpZ2luYWwgY2hlY2ssIGBpZiAocGt0X2xlbiAmZ3Q7IHVyYi0mZ3Q7YWN0dWFsX2xlbmd0aClgLCBoYWQgYSBwb3RlbnRpYWwgZmxhdy4gIFRoaXMgbmV3IGNvZGUgYWRkcmVzc2VzIGEgbW9yZSBwcmVjaXNlIHZhbGlkYXRpb246IGBpZiAocGt0X2xlbiAmIzQzOyBwa3Rfb2Zmc2V0ICZndDsgcmVtYWluaW5nKWAuIElmIHRoZSByZXBvcnRlZCBwYWNrZXQgbGVuZ3RoLCBwbHVzIHRoZSBvZmZzZXQgd2l0aGluIHRoZSBidWZmZXIsIGV4Y2VlZHMgdGhlIGF2YWlsYWJsZSBkYXRhLCB0aGV5JiMzOTtyZSBpbmNyZW1lbnRpbmcgdGhlIGByeF9sZW5ndGhfZXJyb3JzYCBhbmQgYHJ4X2Vycm9yc2AgY291bnRlcnMsIGFuZCBicmVha2luZyBvdXQgb2YgdGhlIHByb2Nlc3NpbmcgbG9vcC4gVGhpcyBpcyBzbWFydDsgaXQgYXZvaWRzIHBvdGVudGlhbGx5IHJlYWRpbmcgcGFzdCB0aGUgZW5kIG9mIHRoZSBidWZmZXIsIHdoaWNoIGNvdWxkIGxlYWQgdG8gYWxsIHNvcnRzIG9mIG5hc3R5IGNvbnNlcXVlbmNlcy4KCk15IG5leHQgbGluZSBvZiB0aG91Z2h0IGlzIGFsd2F5cyBhYm91dCByZWFjaGFiaWxpdHkgYW5kIGZ1enppbmcuICBDYW4gd2UgdHJpZ2dlciB0aGlzIGNvZGUgd2l0aCBmdXp6aW5nPyBEZWZpbml0ZWx5LiAgVVNCIGRyaXZlcnMsIGxpa2UgdGhpcyBvbmUsIGFyZSBwcmltZSB0YXJnZXRzIGZvciBVU0IgZnV6emluZywgYW5kIEkga25vdyBTeXprYWxsZXIgaXMgYSBmYW50YXN0aWMgdG9vbCBmb3IgdGhpcy4gIEl0IGNhbiBlbXVsYXRlIFVTQiBkZXZpY2VzLCBhbmQgYmFzZWQgb24gdGhlIGRldmljZSBJRHMgZGVmaW5lZCB3aXRoaW4gdGhlIGBjYXRjX2lkX3RhYmxlYCwgaXQgY2FuIGJpbmQgdGhlIGBjYXRjYCBkcml2ZXIgYW5kIHNlbmQgdGhlIG5lY2Vzc2FyeSBwYWNrZXRzLiAgVGhpcyB3b3VsZCBpbnZva2UgYGNhdGNfcnhfZG9uZWAsIG1ha2luZyB0aGUgcGF0Y2hlZCBjb2RlIHBhdGggZGlyZWN0bHkgYWNjZXNzaWJsZS4KClNvLCBpbiB0ZXJtcyBvZiBjb25maWd1cmF0aW9uLCB3ZSYjMzk7cmUgbG9va2luZyBhdCBgVVNCX0NBVENgLCBgVVNCX05FVF9EUklWRVJTYCwgYFVTQmAsIGFuZCBgTkVUYC4gVGhvc2UgYXJlIHRoZSBjb3JlIGNvbXBvbmVudHMgbmVlZGVkIHRvIGJ1aWxkIHRoaXMgZHJpdmVyIGFuZCBtYWtlIGl0IGZ1bmN0aW9uYWwuIEkmIzM5O20gZm9jdXNpbmcgb24gYGNhdGNfcnhfZG9uZWAgYXMgdGhlIGtleSBzeW1ib2wuIFRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgbG9naWMgb2YgdGhlIHBhdGNoIGxpdmVzLgoKSSBuZWVkIHRvIGNvbmZpcm0gaWYgdGhlcmUgYXJlIG90aGVyIGZ1bmN0aW9ucyBpbiBgY2F0Yy5jYCB0aGF0IGNhbGwgYGNhdGNfcnhfZG9uZWAgb3IgYXJlIHByb2JlZCBhbmQgYWxzbyB3b3J0aCByZXZpZXdpbmcuIEkmIzM5O2xsIG5lZWQgdG8gZG8gYSB0aG9yb3VnaCBpbnNwZWN0aW9uIG9mIHRoZSBgY2F0Yy5jYCBzb3VyY2UgY29kZSwgbG9va2luZyBmb3Igb3RoZXIgZnVuY3Rpb25zIGFuZCBzeW1ib2xzLiBHb3R0YSBtYWtlIHN1cmUgd2UmIzM5O3ZlIGdvdCB0aGUgZnVsbCBwaWN0dXJlIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDExOjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NhdGNfcnhfZG9uZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9jYXRjLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL2NhdGMuYz0xNTM9c3RydWN0IGNhdGMge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMjE1LVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzoyMTY6c3RhdGljIHZvaWQgY2F0Y19yeF9kb25lKHN0cnVjdCB1cmIgKnVyYilcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMjE3LXtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jPTc3Nz1zdGF0aWMgaW50IGNhdGNfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTg2MC1cdHVzYl9maWxsX2J1bGtfdXJiKGNhdGMtXHUwMDNlcnhfdXJiLCB1c2JkZXYsIHVzYl9yY3ZidWxrcGlwZSh1c2JkZXYsIENBVENfVVNCX0VQX0JVTEspLFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo4NjE6XHRcdFx0ICBjYXRjLVx1MDAzZXJ4X2J1ZiwgcGt0c3osIGNhdGNfcnhfZG9uZSwgY2F0Yyk7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTg2Mi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTE6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk2NDkKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAzMDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIGBjYXRjX3J4X2RvbmVgIEZ1bmN0aW9uIGFuZCBEZXBlbmRlbmNpZXMqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBGaXJzdCwgSSBuZWVkIHRvIGNvbmZpcm0gc29tZXRoaW5nIGZ1bmRhbWVudGFsOiBpcyBgY2F0Y19yeF9kb25lYCBqdXN0IGEgc3RhdGljIGZ1bmN0aW9uLCBvciBkb2VzIGl0IGhhdmUgYSBzeW1ib2wgSSBjYW4gbGV2ZXJhZ2U/IE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCwgd2hpbGUgc3RhdGljIGZ1bmN0aW9ucyAqd2l0aGluKiBhIEMgZmlsZSBkbyBoYXZlIHN5bWJvbHMgaW4gYHZtbGludXhgLCB1bmxpa2Ugc3RhdGljIGlubGluZXMgd2l0aGluIGhlYWRlcnMsIEkgbmVlZCB0byBiZSBjZXJ0YWluLiBTcGVjaWZpY2FsbHksIHRoaXMgYGNhdGNfcnhfZG9uZWAgZnVuY3Rpb24gaXMgdGhhdCBVUkIgY29tcGxldGlvbiBoYW5kbGVyIGZvciB0aGUgUlggYnVsayBVUkIsIHNvIGl0JiMzOTtzIGNyaXRpY2FsIHRvIHVuZGVyc3RhbmQgaXRzIHZpc2liaWxpdHkgYW5kIGFueSBwb3RlbnRpYWwgc2NvcGUgZm9yIGludGVyYWN0aW9uLgoKQWxyaWdodCwgc28gYGNhdGNfcnhfZG9uZWAgaXMgdGhlIHByaW1hcnkgZm9jdXMsIHRoZSBvbmUgdGhhdCYjMzk7cyBiZWVuIHBhdGNoZWQuIEhvd2V2ZXIsIHdoaWxlIEkmIzM5O20gaGVyZSwgSSB3YW50IHRvIHRha2UgYSBxdWljayBsb29rIGF0IG90aGVyIHBvdGVudGlhbGx5IHJlbGV2YW50IGZ1bmN0aW9ucyBpbiBgY2F0Yy5jYC4gSSBleHBlY3QgdG8gc2VlIHRoZSB1c3VhbCBzdXNwZWN0cyBsaWtlIGBjYXRjX3Byb2JlYCBhbG9uZ3NpZGUgYGNhdGNfcnhfZG9uZWAuIEJ1dCwgYWdhaW4sIG15IHBhdGNoLWFuYWx5c2lzIGxlbnMgaXMgZml4ZWQgb24gYGNhdGNfcnhfZG9uZWAuCgpOb3csIHRoZSBjcnVjaWFsIHBhcnQ6IEtjb25maWcgZGVwZW5kZW5jaWVzLiBXaGF0IGNvbmZpZ3VyYXRpb25zIGFyZSAqcmVxdWlyZWQqIGZvciB0aGlzIHRvIGV2ZW4gY29tcGlsZSwgbXVjaCBsZXNzIGZ1bmN0aW9uIGNvcnJlY3RseT8gSW4gYGRyaXZlcnMvbmV0L3VzYi9LY29uZmlnYCwgSSBjYW4gc2VlIGEgY291cGxlIG9mIHRoaW5ncywgYW5kIEkgaGF2ZSB0byBtYWtlIHN1cmUgdGhleSBhcmUgaW5jbHVkZWQuCgpJIGNhbiBzZWUgdGhhdCBgVVNCX05FVF9EUklWRVJTYCBkZXBlbmRzIG9uIGBVU0IgJmFtcDsmYW1wOyBORVRgLiBNYWtlcyBzZW5zZS4gVGhlbiBgVVNCX0NBVENgIGlzIGRlZmluZWQgYXMgYSB0cmlzdGF0ZSBvcHRpb24sIGVzc2VudGlhbGx5ICYjMzQ7VVNCIENBVEMgTmV0TWF0ZS1iYXNlZCBFdGhlcm5ldCBkZXZpY2Ugc3VwcG9ydCYjMzQ7LiBUaGUgYENSQzMyYCBrY29uZmlnIGFsc28gcmVxdWlyZXMgdG8gYmUgc2VsZWN0ZWQuIEltcG9ydGFudGx5LCBgVVNCX0NBVENgIGRlcGVuZHMgb24gYFVTQl9ORVRfRFJJVkVSU2AuCgpTbywgdG8gc3VtbWFyaXplLCB0aGUgY29uZmlncyBuZWVkZWQgYXJlOiBgVVNCX0NBVENgLCBgVVNCX05FVF9EUklWRVJTYCwgYFVTQmAsIGFuZCBgTkVUYC4gSSYjMzk7bGwgZG91YmxlLWNoZWNrIHRoYXQgSSYjMzk7dmUgYWNjb3VudGVkIGZvciB0aGVzZSBkZXBlbmRlbmNpZXMgY29ycmVjdGx5LgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHRob3JvdWdoLCBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgc2NhbiB0aGUgd2lkZXIgYEtjb25maWdgIGFuZCBgTWFrZWZpbGVgIHN0cnVjdHVyZSwgcGFydGljdWxhcmx5IGluIHRoZSBgZHJpdmVycy9uZXRgIGRpcmVjdG9yeSwgdG8gYmUgY2VydGFpbiBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnkgaW5kaXJlY3QgZGVwZW5kZW5jaWVzIG9yIGJ1aWxkLXRpbWUgY29uc2lkZXJhdGlvbnMuIE5vIHN0b25lIGxlZnQgdW50dXJuZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDExOjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1VTQl9DQVRDJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MTM9aWYgVVNCX05FVF9EUklWRVJTXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xNC1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjE1OmNvbmZpZyBVU0JfQ0FUQ1xuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTYtXHR0cmlzdGF0ZSBcJiMzNDtVU0IgQ0FUQyBOZXRNYXRlLWJhc2VkIEV0aGVybmV0IGRldmljZSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvdXNiL01ha2VmaWxlLTUtXG5kcml2ZXJzL25ldC91c2IvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfVVNCX0NBVEMpXHRcdCYjNDM7PSBjYXRjLm9cbmRyaXZlcnMvbmV0L3VzYi9NYWtlZmlsZS03LW9iai0kKENPTkZJR19VU0JfS0FXRVRIKVx0JiM0Mzs9IGthd2V0aC5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDExOjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNjIxCgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIE5ldHdvcmsgRHJpdmVyIE1ha2VmaWxlKioKCk9rYXksIHNvIHRoZSBpbml0aWFsIHRob3VnaHQgaXMsICYjMzQ7TGV0JiMzOTtzIGNyYWNrIG9wZW4gdGhlIGBkcml2ZXJzL25ldC9NYWtlZmlsZWAuJiMzNDsgVGhhdCYjMzk7cyBhIG5hdHVyYWwgc3RhcnRpbmcgcG9pbnQgd2hlbiBJJiMzOTttIGRlYWxpbmcgd2l0aCBuZXR3b3JrIGRyaXZlciBjb2RlLiBNeSBpbnN0aW5jdCBpcyBhbHdheXMgdG8gY2hlY2sgdGhlIGJ1aWxkIHN5c3RlbSBmaXJzdC4gSSYjMzk7bSBwcm9iYWJseSBsb29raW5nIGZvciBhIGZldyBzcGVjaWZpYyB0aGluZ3MgcmlnaHQgb2ZmIHRoZSBiYXQuIEkmIzM5O20gd29uZGVyaW5nIGFib3V0IGJ1aWxkIGRlcGVuZGVuY2llcywgb2J2aW91c2x5LiBXaGF0IG90aGVyIGtlcm5lbCBjb21wb25lbnRzIG9yIGxpYnJhcmllcyBkb2VzIHRoaXMgcGFydGljdWxhciBkcml2ZXIgbmVlZD8gQXJlIHRoZXJlIGFueSBtb2R1bGUtc3BlY2lmaWMgZmxhZ3Mgb3IgY29tcGlsYXRpb24gdGFyZ2V0cyBkZWZpbmVkPyBJJiMzOTttIGhvcGluZyBJIGNhbiBnZXQgYSBkZWNlbnQgb3ZlcnZpZXcgb2YgdGhlIGRyaXZlciYjMzk7cyBhcmNoaXRlY3R1cmUgYW5kIGhvdyBpdCBpbnRlZ3JhdGVzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIG5ldHdvcmtpbmcgc3RhY2sganVzdCBieSB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgYnVpbGQgcHJvY2VzcyBoYW5kbGVzIGl0LiBBcmUgdGhlcmUgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGVzIGJhc2VkIG9uIGtlcm5lbCB2ZXJzaW9ucywgaGFyZHdhcmUgY29uZmlndXJhdGlvbnMsIG9yIGZlYXR1cmVzPyBUaGF0JiMzOTtzIGdvaW5nIHRvIGJlIGtleSB0byBkZWJ1Z2dpbmcgYW55IHBvcnRhYmlsaXR5IGlzc3VlcyBkb3duIHRoZSBsaW5lLiBJJiMzOTttIGFsc28ga2VlcGluZyBhbiBleWUgb3V0IGZvciBhbnkgY3VzdG9tIGJ1aWxkIHJ1bGVzIG9yIG1hY3JvcyB0aGF0IG1pZ2h0IGJlIHNwZWNpZmljIHRvIHRoaXMgZHJpdmVyIG9yIGl0cyBmYW1pbHkuIEtub3dpbmcgdGhlIGJ1aWxkIHN5c3RlbSBpcyBtb3JlIHRoYW4gaGFsZiB0aGUgYmF0dGxlLCByZWFsbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDExOjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3VzYiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L01ha2VmaWxlPTc4PW9iai0kKENPTkZJR19YRU5fTkVUREVWX0JBQ0tFTkQpICYjNDM7PSB4ZW4tbmV0YmFjay9cbmRyaXZlcnMvbmV0L01ha2VmaWxlLTc5LVxuZHJpdmVycy9uZXQvTWFrZWZpbGU6ODA6b2JqLSQoQ09ORklHX1VTQl9ORVRfRFJJVkVSUykgJiM0Mzs9IHVzYi9cbmRyaXZlcnMvbmV0L01ha2VmaWxlLTgxLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAxMToyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDk4MAoJCQkJCQkJb3V0cHV0OiAxMTgKCQkJCQkJCXRob3VnaHRzOiAxNjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUYXJnZXQgQXNzZXNzbWVudCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgbG9va2luZyBwcm9taXNpbmcuIFdlJiMzOTt2ZSBnb3QgYSB0YXJnZXQgcGF0Y2ggdGhhdCYjMzk7cyBmbGFnZ2VkIGFzIGBXb3J0aEZ1enppbmc6IHRydWVgLCB3aGljaCBpcyBhbHdheXMgYSBnb29kIHN0YXJ0LiBJdCBtb2RpZmllcyBwYWNrZXQgcGFyc2luZyBhbmQgYm91bmRhcnkgY2hlY2tzIHdpdGhpbiB0aGUgYGNhdGNfcnhfZG9uZWAgZnVuY3Rpb24uIENydWNpYWxseSwgdGhpcyByZXNpZGVzIGluIGEgVVNCIG5ldHdvcmsgZHJpdmVyIChgVVNCX0NBVENgIGFuZCBgVVNCX05FVF9EUklWRVJTYCksIG1ha2luZyBpdCByZWFjaGFibGUgZm9yIGZ1enppbmcgdGhyb3VnaCBlc3RhYmxpc2hlZCBtZXRob2RzIOKAkyBVU0IgZW11bGF0aW9uLCByYXcgZ2FkZ2V0IHNjZW5hcmlvcywgb3IgZXZlbiBzeXprYWxsZXImIzM5O3MgVVNCIGZ1enppbmcgY2FwYWJpbGl0aWVzLiBJIHNlZSB0aGF0IHRoZSBgRm9jdXNTeW1ib2xzYCBhcmUgc3BlY2lmaWNhbGx5IHplcm9pbmcgaW4gb24gYFsmIzM0O2NhdGNfcnhfZG9uZSYjMzQ7XWAsIHdoaWNoIGNvbmZpcm1zIG15IGluaXRpYWwgaW50dWl0aW9uOiB0aGlzIGlzIHRoZSBrZXkgYXJlYSBmb3IgZGVlcGVyIGFuYWx5c2lzLiBUaGUgYEVuYWJsZUNvbmZpZ3NgIGxpc3QsIG5hbWVseSBgWyYjMzQ7VVNCX0NBVEMmIzM0OywgJiMzNDtVU0JfTkVUX0RSSVZFUlMmIzM0OywgJiMzNDtVU0ImIzM0OywgJiMzNDtORVQmIzM0O11gLCBwcm92aWRlcyB0aGUgbmVjZXNzYXJ5IGJ1aWxkIGNvbmZpZ3VyYXRpb25zIHRvIHJlcHJvZHVjZSBhbmQgbGV2ZXJhZ2UgdGhlIHRhcmdldCBjb2RlLiBUaGUgcmVhc29uaW5nIGNvbmNpc2VseSBjbGFyaWZpZXMgdGhlIHdvcnRoaW5lc3MgYW5kIG1ldGhvZCBvZiBhcHByb2FjaC4gSXQgbG9va3MgbGlrZSB3ZSYjMzk7dmUgZ290IGEgc29saWQgY2FuZGlkYXRlIGhlcmUuIFRpbWUgdG8gbWFrZSBpdCBvZmZpY2lhbCBhbmQgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTE6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTQl9DQVRDJiMzNDssCiAgICAmIzM0O1VTQl9ORVRfRFJJVkVSUyYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OywKICAgICYjMzQ7TkVUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2F0Y19yeF9kb25lJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBwYWNrZXQgcmVjZXB0aW9uIGFuZCBsZW5ndGggdmFsaWRhdGlvbiBsb2dpYyBpbiBjYXRjX3J4X2RvbmUgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzIHdoZW4gcHJvY2Vzc2luZyBtYWxmb3JtZWQgVVNCIFJYIFVSQiBkYXRhLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGFuZCBmdXp6YWJsZSB2aWEgVVNCIGVtdWxhdGlvbiAvIHN5emthbGxlciBVU0IgcmF3LWdhZGdldCBzdXBwb3J0LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtVU0JfQ0FUQyYjMzQ7LAogICAgJiMzNDtVU0JfTkVUX0RSSVZFUlMmIzM0OywKICAgICYjMzQ7VVNCJiMzNDssCiAgICAmIzM0O05FVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2NhdGNfcnhfZG9uZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgcGFja2V0IHJlY2VwdGlvbiBhbmQgbGVuZ3RoIHZhbGlkYXRpb24gbG9naWMgaW4gY2F0Y19yeF9kb25lIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcyB3aGVuIHByb2Nlc3NpbmcgbWFsZm9ybWVkIFVTQiBSWCBVUkIgZGF0YS4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBhbmQgZnV6emFibGUgdmlhIFVTQiBlbXVsYXRpb24gLyBzeXprYWxsZXIgVVNCIHJhdy1nYWRnZXQgc3VwcG9ydC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTE6MjY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAxMToyNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIG91dC1vZi1ib3VuZHMgcmVhZCB2dWxuZXJhYmlsaXRpZXMgaW4gdGhlIENBVEMgVVNCIEV0aGVybmV0IGRyaXZlciYjMzk7cyByZWNlaXZlIHBhdGggKGBjYXRjX3J4X2RvbmVgKS4gU3BlY2lmaWNhbGx5LCBpdCBlbnN1cmVzIHRoYXQgYHJlbWFpbmluZ2AgdHJhbnNmZXIgYnVmZmVyIGJ5dGVzIGFyZSBzdWZmaWNpZW50IHRvIHJlYWQgdGhlIDItYnl0ZSBwYWNrZXQgbGVuZ3RoIGhlYWRlciAoYHJlbWFpbmluZyBcdTAwM2U9IHBrdF9vZmZzZXRgKSwgYW5kIHRoYXQgdGhlIGluZGljYXRlZCBwYWNrZXQgbGVuZ3RoIHBsdXMgb2Zmc2V0IGZpdHMgd2l0aGluIHRoZSByZW1haW5pbmcgcmVjZWl2ZWQgYnVmZmVyIChgcGt0X2xlbiAmIzQzOyBwa3Rfb2Zmc2V0IFx1MDAzYz0gcmVtYWluaW5nYCkuXG5cblRoZXNlIGNoYW5nZXMgcHJldmVudCBvdXQtb2YtYm91bmRzIG1lbW9yeSBhY2Nlc3NlcyBmcm9tIGB1cmItXHUwMDNldHJhbnNmZXJfYnVmZmVyYCBkdXJpbmcgcGFja2V0IHByb2Nlc3NpbmcgYW5kIGNvcHlpbmcgdG8gdGhlIFNLQi4gQnVmZmVyIG92ZXItcmVhZHMgYW5kIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgYXJlIG1lbW9yeSBzYWZldHkgdmlvbGF0aW9ucyBkZXRlY3RlZCBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIGluZm8tbGVha3MgdG8gdXNlciBzcGFjZSwgb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGEyNmMwODk1YWY2YzE2MmRmMmYxMzZhMTQ5MDMzZmQzOWMyMzgyMDIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIFNlcCA3IDExOjI1OjUzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdXNiL2NhdGMuYyBiL2RyaXZlcnMvbmV0L3VzYi9jYXRjLmMKaW5kZXggOTZlODJmOTRlZGNmOC4uZTRmOGI5YTBjYWYxOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdXNiL2NhdGMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC91c2IvY2F0Yy5jCkBAIC0yMzQsOCAmIzQzOzIzNCwxNiBAQCBzdGF0aWMgdm9pZCBjYXRjX3J4X2RvbmUoc3RydWN0IHVyYiAqdXJiKQogCiAJZG8gewogCQlpZighY2F0Yy0mZ3Q7aXNfZjV1MDExKSB7CiYjNDM7CQkJaW50IHJlbWFpbmluZyA9IHVyYi0mZ3Q7YWN0dWFsX2xlbmd0aCAtCiYjNDM7CQkJCQkocGt0X3N0YXJ0IC0gKHU4ICopdXJiLSZndDt0cmFuc2Zlcl9idWZmZXIpOwomIzQzOwomIzQzOwkJCWlmIChyZW1haW5pbmcgJmx0OyBwa3Rfb2Zmc2V0KSB7CiYjNDM7CQkJCWNhdGMtJmd0O25ldGRldi0mZ3Q7c3RhdHMucnhfbGVuZ3RoX2Vycm9ycyYjNDM7JiM0Mzs7CiYjNDM7CQkJCWNhdGMtJmd0O25ldGRldi0mZ3Q7c3RhdHMucnhfZXJyb3JzJiM0MzsmIzQzOzsKJiM0MzsJCQkJYnJlYWs7CiYjNDM7CQkJfQogCQkJcGt0X2xlbiA9IGxlMTZfdG9fY3B1cCgoX19sZTE2Kilwa3Rfc3RhcnQpOwotCQkJaWYgKHBrdF9sZW4gJmd0OyB1cmItJmd0O2FjdHVhbF9sZW5ndGgpIHsKJiM0MzsJCQlpZiAocGt0X2xlbiAmIzQzOyBwa3Rfb2Zmc2V0ICZndDsgcmVtYWluaW5nKSB7CiAJCQkJY2F0Yy0mZ3Q7bmV0ZGV2LSZndDtzdGF0cy5yeF9sZW5ndGhfZXJyb3JzJiM0MzsmIzQzOzsKIAkJCQljYXRjLSZndDtuZXRkZXYtJmd0O3N0YXRzLnJ4X2Vycm9ycyYjNDM7JiM0Mzs7CiAJCQkJYnJlYWs7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAxMToyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTk2CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIGNhdGMuYyBEcml2ZXIqKgoKQWxyaWdodCwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkgd2l0aCB0aGlzIGBjYXRjLmNgIGRyaXZlciBpbiB0aGUgYGRyaXZlcnMvbmV0L3VzYmAgZGlyZWN0b3J5LiBUaGUgZmlyc3QgdGhpbmcgSSBuZWVkIHRvIGRvIGlzIHJlYWxseSB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBwYXRjaC4gSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byB0aGUgc3Vycm91bmRpbmcgY29kZSB0byBncmFzcCB0aGUgY29udGV4dCBvZiB0aGUgY2hhbmdlLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gZ29pbmcgdG8gZm9jdXMgbXkgYXR0ZW50aW9uIGFyb3VuZCBsaW5lIDIzNCBpbiBgY2F0Yy5jYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgYW5jaG9yIEkgbmVlZCB0byBzdGFydCBteSBhbmFseXNpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTE6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvY2F0Yy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjEwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDYwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyMTA6XHQjZGVmaW5lIGNhdGNfd3JpdGVfbWVtX2FzeW5jKGNhdGMsIGFkZHIsIGJ1Ziwgc2l6ZSlcdGNhdGNfY3RybF9hc3luYyhjYXRjLCBVU0JfRElSX09VVCwgV3JpdGVNZW0sIDAsIGFkZHIsIGJ1Ziwgc2l6ZSwgTlVMTClcbiAyMTE6XHRcbiAyMTI6XHQvKlxuIDIxMzpcdCAqIFJlY2VpdmUgcm91dGluZXMuXG4gMjE0Olx0ICovXG4gMjE1Olx0XG4gMjE2Olx0c3RhdGljIHZvaWQgY2F0Y19yeF9kb25lKHN0cnVjdCB1cmIgKnVyYilcbiAyMTc6XHR7XG4gMjE4Olx0XHRzdHJ1Y3QgY2F0YyAqY2F0YyA9IHVyYi1cdTAwM2Vjb250ZXh0O1xuIDIxOTpcdFx0dTggKnBrdF9zdGFydCA9IHVyYi1cdTAwM2V0cmFuc2Zlcl9idWZmZXI7XG4gMjIwOlx0XHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuIDIyMTpcdFx0aW50IHBrdF9sZW4sIHBrdF9vZmZzZXQgPSAwO1xuIDIyMjpcdFx0aW50IHN0YXR1cyA9IHVyYi1cdTAwM2VzdGF0dXM7XG4gMjIzOlx0XG4gMjI0Olx0XHRpZiAoIWNhdGMtXHUwMDNlaXNfZjV1MDExKSB7XG4gMjI1Olx0XHRcdGNsZWFyX2JpdChSWF9SVU5OSU5HLCBcdTAwMjZjYXRjLVx1MDAzZWZsYWdzKTtcbiAyMjY6XHRcdFx0cGt0X29mZnNldCA9IDI7XG4gMjI3Olx0XHR9XG4gMjI4Olx0XG4gMjI5Olx0XHRpZiAoc3RhdHVzKSB7XG4gMjMwOlx0XHRcdGRldl9kYmcoXHUwMDI2dXJiLVx1MDAzZWRldi1cdTAwM2VkZXYsIFwmIzM0O3J4X2RvbmUsIHN0YXR1cyAlZCwgbGVuZ3RoICVkXFxuXCYjMzQ7LFxuIDIzMTpcdFx0XHRcdHN0YXR1cywgdXJiLVx1MDAzZWFjdHVhbF9sZW5ndGgpO1xuIDIzMjpcdFx0XHRyZXR1cm47XG4gMjMzOlx0XHR9XG4gMjM0Olx0XG4gMjM1Olx0XHRkbyB7XG4gMjM2Olx0XHRcdGlmKCFjYXRjLVx1MDAzZWlzX2Y1dTAxMSkge1xuIDIzNzpcdFx0XHRcdGludCByZW1haW5pbmcgPSB1cmItXHUwMDNlYWN0dWFsX2xlbmd0aCAtXG4gMjM4Olx0XHRcdFx0XHRcdChwa3Rfc3RhcnQgLSAodTggKil1cmItXHUwMDNldHJhbnNmZXJfYnVmZmVyKTtcbiAyMzk6XHRcbiAyNDA6XHRcdFx0XHRpZiAocmVtYWluaW5nIFx1MDAzYyBwa3Rfb2Zmc2V0KSB7XG4gMjQxOlx0XHRcdFx0XHRjYXRjLVx1MDAzZW5ldGRldi1cdTAwM2VzdGF0cy5yeF9sZW5ndGhfZXJyb3JzJiM0MzsmIzQzOztcbiAyNDI6XHRcdFx0XHRcdGNhdGMtXHUwMDNlbmV0ZGV2LVx1MDAzZXN0YXRzLnJ4X2Vycm9ycyYjNDM7JiM0Mzs7XG4gMjQzOlx0XHRcdFx0XHRicmVhaztcbiAyNDQ6XHRcdFx0XHR9XG4gMjQ1Olx0XHRcdFx0cGt0X2xlbiA9IGxlMTZfdG9fY3B1cCgoX19sZTE2Kilwa3Rfc3RhcnQpO1xuIDI0NjpcdFx0XHRcdGlmIChwa3RfbGVuICYjNDM7IHBrdF9vZmZzZXQgXHUwMDNlIHJlbWFpbmluZykge1xuIDI0NzpcdFx0XHRcdFx0Y2F0Yy1cdTAwM2VuZXRkZXYtXHUwMDNlc3RhdHMucnhfbGVuZ3RoX2Vycm9ycyYjNDM7JiM0Mzs7XG4gMjQ4Olx0XHRcdFx0XHRjYXRjLVx1MDAzZW5ldGRldi1cdTAwM2VzdGF0cy5yeF9lcnJvcnMmIzQzOyYjNDM7O1xuIDI0OTpcdFx0XHRcdFx0YnJlYWs7XG4gMjUwOlx0XHRcdFx0fVxuIDI1MTpcdFx0XHR9IGVsc2Uge1xuIDI1MjpcdFx0XHRcdHBrdF9sZW4gPSB1cmItXHUwMDNlYWN0dWFsX2xlbmd0aDtcbiAyNTM6XHRcdFx0fVxuIDI1NDpcdFxuIDI1NTpcdFx0XHRpZiAoIShza2IgPSBkZXZfYWxsb2Nfc2tiKHBrdF9sZW4pKSlcbiAyNTY6XHRcdFx0XHRyZXR1cm47XG4gMjU3Olx0XG4gMjU4Olx0XHRcdHNrYl9jb3B5X3RvX2xpbmVhcl9kYXRhKHNrYiwgcGt0X3N0YXJ0ICYjNDM7IHBrdF9vZmZzZXQsIHBrdF9sZW4pO1xuIDI1OTpcdFx0XHRza2JfcHV0KHNrYiwgcGt0X2xlbik7XG4gMjYwOlx0XG4gMjYxOlx0XHRcdHNrYi1cdTAwM2Vwcm90b2NvbCA9IGV0aF90eXBlX3RyYW5zKHNrYiwgY2F0Yy1cdTAwM2VuZXRkZXYpO1xuIDI2MjpcdFx0XHRuZXRpZl9yeChza2IpO1xuIDI2MzpcdFxuIDI2NDpcdFx0XHRjYXRjLVx1MDAzZW5ldGRldi1cdTAwM2VzdGF0cy5yeF9wYWNrZXRzJiM0MzsmIzQzOztcbiAyNjU6XHRcdFx0Y2F0Yy1cdTAwM2VuZXRkZXYtXHUwMDNlc3RhdHMucnhfYnl0ZXMgJiM0Mzs9IHBrdF9sZW47XG4gMjY2Olx0XG4gMjY3Olx0XHRcdC8qIEY1VTAxMSBvbmx5IGRvZXMgb25lIHBhY2tldCBwZXIgUlggKi9cbiAyNjg6XHRcdFx0aWYgKGNhdGMtXHUwMDNlaXNfZjV1MDExKVxuIDI2OTpcdFx0XHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAxMToyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzQ1CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkFuYWx5emluZyB0aGUgRnVuY3Rpb24mIzM5O3MgU3Vic2VxdWVudCBPcGVyYXRpb25zKioKClJpZ2h0LCBzbyBJJiMzOTt2ZSByZWFjaGVkIGEgcG9pbnQgaW4gbXkgYW5hbHlzaXMgd2hlcmUgSSBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgZnVuY3Rpb25hbGl0eSBvZiBgY2F0Y19yeF9kb25lYC4gSSBrbm93IHRoZSBpbml0aWFsIHBpZWNlcywgYnV0IHRvIGdyYXNwIGl0cyBmdWxsIGltcGFjdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBoYXBwZW5zICphZnRlciogdGhlIGluaXRpYWwgaGFuZGxpbmcuIFdoYXQgYXJlIHRoZSBzdWJzZXF1ZW50IG9wZXJhdGlvbnMgdHJpZ2dlcmVkIG9yIGluZmx1ZW5jZWQgYnkgdGhpcyBmdW5jdGlvbj8gQXJlIHRoZXJlIGFueSBkYXRhIHN0cnVjdHVyZXMgYmVpbmcgbW9kaWZpZWQsIG90aGVyIGZ1bmN0aW9ucyBiZWluZyBjYWxsZWQsIG9yIHN0YXRlIHRyYW5zaXRpb25zIG9jY3VycmluZyBhcyBhIHJlc3VsdD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bmN0aW9uJiMzOTtzIHNpZGUgZWZmZWN0cyBhbmQgaG93IGl0IGZpdHMgaW50byB0aGUgYnJvYWRlciBwaWN0dXJlIG9mIHRoZSBkYXRhIHJlY2VwdGlvbiBhbmQgcHJvY2Vzc2luZyBwaXBlbGluZS4gSSYjMzk7bGwgbmVlZCB0byBjYXJlZnVsbHkgZXhhbWluZSB0aGUgY29kZSBmb2xsb3dpbmcgYGNhdGNfcnhfZG9uZWAgdG8gcGFpbnQgYSBtb3JlIGNvbXBsZXRlIHBpY3R1cmUuIEl0JiMzOTtzIHRpbWUgdG8gZm9sbG93IHRoZSB0cmFpbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTE6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvY2F0Yy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjcwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyNzA6XHRcdFx0cGt0X3N0YXJ0ICYjNDM7PSAoKChwa3RfbGVuICYjNDM7IDEpIFx1MDAzZVx1MDAzZSA2KSAmIzQzOyAxKSBcdTAwM2NcdTAwM2MgNjtcbiAyNzE6XHRcbiAyNzI6XHRcdH0gd2hpbGUgKHBrdF9zdGFydCAtICh1OCAqKSB1cmItXHUwMDNldHJhbnNmZXJfYnVmZmVyIFx1MDAzYyB1cmItXHUwMDNlYWN0dWFsX2xlbmd0aCk7XG4gMjczOlx0XG4gMjc0Olx0XHRpZiAoY2F0Yy1cdTAwM2Vpc19mNXUwMTEpIHtcbiAyNzU6XHRcdFx0aWYgKGF0b21pY19yZWFkKFx1MDAyNmNhdGMtXHUwMDNlcmVjcV9zeikpIHtcbiAyNzY6XHRcdFx0XHRpbnQgc3RhdGU7XG4gMjc3Olx0XHRcdFx0YXRvbWljX2RlYyhcdTAwMjZjYXRjLVx1MDAzZXJlY3Ffc3opO1xuIDI3ODpcdFx0XHRcdG5ldGRldl9kYmcoY2F0Yy1cdTAwM2VuZXRkZXYsIFwmIzM0O2dldHRpbmcgZXh0cmEgcGFja2V0XFxuXCYjMzQ7KTtcbiAyNzk6XHRcdFx0XHR1cmItXHUwMDNlZGV2ID0gY2F0Yy1cdTAwM2V1c2JkZXY7XG4gMjgwOlx0XHRcdFx0aWYgKChzdGF0ZSA9IHVzYl9zdWJtaXRfdXJiKHVyYiwgR0ZQX0FUT01JQykpIFx1MDAzYyAwKSB7XG4gMjgxOlx0XHRcdFx0XHRuZXRkZXZfZGJnKGNhdGMtXHUwMDNlbmV0ZGV2LFxuIDI4MjpcdFx0XHRcdFx0XHQgICBcJiMzNDtzdWJtaXQocnhfdXJiKSBzdGF0dXMgJWRcXG5cJiMzNDssIHN0YXRlKTtcbiAyODM6XHRcdFx0XHR9XG4gMjg0Olx0XHRcdH0gZWxzZSB7XG4gMjg1Olx0XHRcdFx0Y2xlYXJfYml0KFJYX1JVTk5JTkcsIFx1MDAyNmNhdGMtXHUwMDNlZmxhZ3MpO1xuIDI4NjpcdFx0XHR9XG4gMjg3Olx0XHR9XG4gMjg4Olx0fVxuIDI4OTpcdFxuIDI5MDpcdHN0YXRpYyB2b2lkIGNhdGNfaXJxX2RvbmUoc3RydWN0IHVyYiAqdXJiKVxuIDI5MTpcdHtcbiAyOTI6XHRcdHN0cnVjdCBjYXRjICpjYXRjID0gdXJiLVx1MDAzZWNvbnRleHQ7XG4gMjkzOlx0XHR1OCAqZGF0YSA9IHVyYi1cdTAwM2V0cmFuc2Zlcl9idWZmZXI7XG4gMjk0Olx0XHRpbnQgc3RhdHVzID0gdXJiLVx1MDAzZXN0YXR1cztcbiAyOTU6XHRcdHVuc2lnbmVkIGludCBoYXNkYXRhLCBsaW5rc3RzID0gTGlua05vQ2hhbmdlO1xuIDI5NjpcdFx0aW50IHJlcztcbiAyOTc6XHRcbiAyOTg6XHRcdGlmICghY2F0Yy1cdTAwM2Vpc19mNXUwMTEpIHtcbiAyOTk6XHRcdFx0aGFzZGF0YSA9IGRhdGFbMV0gXHUwMDI2IDB4ODA7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDExOjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwODcKCQkJCQkJCW91dHB1dDogMTk3CgkJCQkJCQl0aG91Z2h0czogNzM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFVTQiBOZXR3b3JrIERyaXZlciBSZWNlaXZlIEhhbmRsZXIgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gVGhpcyBwYXRjaCBpcyB0YXJnZXRpbmcgYGNhdGNfcnhfZG9uZSgpYCwgdGhlIHJlY2VpdmUgaGFuZGxlciBmb3IgYSBVU0IgbmV0d29yayBkcml2ZXIuIEl0JiMzOTtzIGNsZWFybHkgYSBjcml0aWNhbCBhcmVhLCB3aGVyZSBwZXJmb3JtYW5jZSBpcyBwYXJhbW91bnQuIExvb2tpbmcgYXQgdGhlICYjMzQ7YmVmb3JlJiMzNDsgY29kZSwgdGhlIG9yaWdpbmFsIGxvZ2ljIGhhZCBzb21lIHNlcmlvdXMgZmxhd3MuIEl0IGFwcGVhcnMgd2Ugd2VyZSByZWx5aW5nIG9uIGB1cmItJmd0O2FjdHVhbF9sZW5ndGhgIGZvciBidWZmZXIgYm91bmRzLCBidXQgdGhlcmUgd2FzIGEgcG90ZW50aWFsIGZvciBvdXQtb2YtYm91bmRzIHJlYWRzLiBTcGVjaWZpY2FsbHksIGlmIHRoZSByZW1haW5pbmcgZGF0YSBpbiB0aGUgVVNCIHRyYW5zZmVyIGJ1ZmZlciAoYHVyYi0mZ3Q7dHJhbnNmZXJfYnVmZmVyYCkgd2FzIGxlc3MgdGhhbiBhIHBhY2tldCBvZmZzZXQgKGBwa3Rfb2Zmc2V0YCksIHdlJiMzOTtkIGJlIHJlYWRpbmcgcGFzdCB0aGUgZW5kIG9mIHRoZSBidWZmZXIgd2hlbiBjYWxsaW5nIGBsZTE2X3RvX2NwdXBgLiBTaW1pbGFybHksIGlmIHRoZSBwYWNrZXQgbGVuZ3RoIChgcGt0X2xlbmApIHBsdXMgdGhlIG9mZnNldCBleGNlZWRlZCB0aGUgcmVtYWluaW5nIGJ1ZmZlciBzaXplLCB3ZSB3b3VsZCBhbHNvIGJlIHJlYWRpbmcgT09CLiBUaGlzIGlzIGEgY2xhc3NpYyB2dWxuZXJhYmlsaXR5IQoKVGhlIGZpeCBpcyBzdHJhaWdodGZvcndhcmQsIHRoYW5rZnVsbHkuIFRoZXkmIzM5O3ZlIGFkZGVkIGV4cGxpY2l0IGJvdW5kcyBjaGVja2luZy4gTm93LCBiZWZvcmUgYW55IGF0dGVtcHQgdG8gYWNjZXNzIHRoZSBwYWNrZXQgZGF0YSwgd2UgY2FsY3VsYXRlIGByZW1haW5pbmdgIOKAkyB0aGUgYW1vdW50IG9mIGRhdGEgbGVmdCBpbiB0aGUgVVNCIGJ1ZmZlciDigJMgYW5kIHRoZW4gY29tcGFyZSB0aGF0IGFnYWluc3QgYm90aCB0aGUgb2Zmc2V0IGFuZCB0aGUgYW50aWNpcGF0ZWQgcGFja2V0IGxlbmd0aC4gSWYgZWl0aGVyIGNoZWNrIGZhaWxzLCB0aGUgcGFja2V0IGlzIGRpc2NhcmRlZCwgYW5kIHRoZSByZWxldmFudCBlcnJvciBjb3VudGVycyBhcmUgaW5jcmVtZW50ZWQuIFBlcmZlY3QuIE11Y2ggbW9yZSByb2J1c3QuCgpUaGUgaW1wb3J0YW50IG5leHQgc3RlcCBpcyB0byBhc3Nlc3MgZm9yIHBvdGVudGlhbCBLTVNBTiAoS2VybmVsIE1lbW9yeSBTYW5pdGl6ZXIpIGlzc3Vlcy4gSXMgdGhpcyBwYXRjaCBpbnRyb2R1Y2luZyBvciBleHBvc2luZyB1bmluaXRpYWxpemVkIG1lbW9yeT8gTm8sIG5vdCB0aGF0IEkgY2FuIHNlZS4gV2UgYXJlbiYjMzk7dCBjb3B5aW5nIGFueSBrZXJuZWwgc3RydWN0dXJlcyB0byB1c2Vyc3BhY2UsIGFuZCBubyBzdHJ1Y3R1cmVzIHdpdGggcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCBwYWRkaW5nLiBXZSBhcmVuJiMzOTt0IG1ha2luZyBkZWNpc2lvbnMgYmFzZWQgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIGFsbCBvZiB0aGUgdmFyaWFibGVzIHVzZWQgaW4gdGhlIGNhbGN1bGF0aW9ucyBhcmUgaW5pdGlhbGl6ZWQgZnJvbSB0aGUgVVNCIGNvcmUgYW5kIHRoZSBwYWNrZXQgaGVhZGVyLiBUaGVyZSYjMzk7cyBubyBhbGxvY2F0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIGVpdGhlci4gQ3J1Y2lhbGx5LCB0aGUgKnB1cnBvc2UqIG9mIHRoZSBwYXRjaCBpcyB0byAqcHJldmVudCogb3V0LW9mLWJvdW5kcyByZWFkcyEgU28sIGl0JiMzOTtzIHRpZ2h0ZW5pbmcgdXAgdGhlIGJ1ZmZlciBhY2Nlc3MsIG5vdCBsb29zZW5pbmcgaXQuIEtBU0FOIGlzIHRoZSB0b29sIHRoYXQgaXMgcmVhbGx5IGRlc2lnbmVkIGZvciBjYXRjaGluZyBPT0IgcmVhZHMvd3JpdGVzLiBUaGlzIHBhdGNoIGxvb2tzIGNsZWFuIGZyb20gYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgcGVyc3BlY3RpdmUuCgpMZXQmIzM5O3MgZG91YmxlLWNoZWNrIGFsbCB0aGUgcmVxdWlyZW1lbnRzOiAxLiBObyBrZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXJzcGFjZS4gMi4gTm8gY29uZGl0aW9uYWwgbG9naWMgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMuIDMuIE5vIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIGFsbG9jYXRpb24uIDQuIFRpZ2h0IGJvdW5kcyBjaGVja3MgdGhhdCBwcmV2ZW50IGFueSBhY2Nlc3MgdG8gdW5pbml0aWFsaXplZCBieXRlcy4gWXVwLCBhbGwgdGhlIGJveGVzIGFyZSB0aWNrZWQuIFRoaXMgbG9va3MgbGlrZSBhIHNvbGlkLCBzYWZlIGZpeC4gSSBjYW4gY29uZmlkZW50bHkgdGFnIHRoaXMgYXMgYE5lZWRzS01TQU4gPSBmYWxzZWAuIFRpbWUgdG8gY2FsbCB0aGF0IGBzZXQtcmVzdWx0c2AgdG9vbCBhbmQgbW92ZSBvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTE6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgb3V0LW9mLWJvdW5kcyByZWFkIHZ1bG5lcmFiaWxpdGllcyBpbiB0aGUgQ0FUQyBVU0IgRXRoZXJuZXQgZHJpdmVyJiMzOTtzIHJlY2VpdmUgcGF0aCAoYGNhdGNfcnhfZG9uZWApLiBTcGVjaWZpY2FsbHksIGl0IGVuc3VyZXMgdGhhdCBgcmVtYWluaW5nYCB0cmFuc2ZlciBidWZmZXIgYnl0ZXMgYXJlIHN1ZmZpY2llbnQgdG8gcmVhZCB0aGUgMi1ieXRlIHBhY2tldCBsZW5ndGggaGVhZGVyIChgcmVtYWluaW5nIFx1MDAzZT0gcGt0X29mZnNldGApLCBhbmQgdGhhdCB0aGUgaW5kaWNhdGVkIHBhY2tldCBsZW5ndGggcGx1cyBvZmZzZXQgZml0cyB3aXRoaW4gdGhlIHJlbWFpbmluZyByZWNlaXZlZCBidWZmZXIgKGBwa3RfbGVuICYjNDM7IHBrdF9vZmZzZXQgXHUwMDNjPSByZW1haW5pbmdgKS5cblxuVGhlc2UgY2hhbmdlcyBwcmV2ZW50IG91dC1vZi1ib3VuZHMgbWVtb3J5IGFjY2Vzc2VzIGZyb20gYHVyYi1cdTAwM2V0cmFuc2Zlcl9idWZmZXJgIGR1cmluZyBwYWNrZXQgcHJvY2Vzc2luZyBhbmQgY29weWluZyB0byB0aGUgU0tCLiBCdWZmZXIgb3Zlci1yZWFkcyBhbmQgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhcmUgbWVtb3J5IHNhZmV0eSB2aW9sYXRpb25zIGRldGVjdGVkIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcywgaW5mby1sZWFrcyB0byB1c2VyIHNwYWNlLCBvciB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgb3V0LW9mLWJvdW5kcyByZWFkIHZ1bG5lcmFiaWxpdGllcyBpbiB0aGUgQ0FUQyBVU0IgRXRoZXJuZXQgZHJpdmVyJiMzOTtzIHJlY2VpdmUgcGF0aCAoYGNhdGNfcnhfZG9uZWApLiBTcGVjaWZpY2FsbHksIGl0IGVuc3VyZXMgdGhhdCBgcmVtYWluaW5nYCB0cmFuc2ZlciBidWZmZXIgYnl0ZXMgYXJlIHN1ZmZpY2llbnQgdG8gcmVhZCB0aGUgMi1ieXRlIHBhY2tldCBsZW5ndGggaGVhZGVyIChgcmVtYWluaW5nIFx1MDAzZT0gcGt0X29mZnNldGApLCBhbmQgdGhhdCB0aGUgaW5kaWNhdGVkIHBhY2tldCBsZW5ndGggcGx1cyBvZmZzZXQgZml0cyB3aXRoaW4gdGhlIHJlbWFpbmluZyByZWNlaXZlZCBidWZmZXIgKGBwa3RfbGVuICYjNDM7IHBrdF9vZmZzZXQgXHUwMDNjPSByZW1haW5pbmdgKS5cblxuVGhlc2UgY2hhbmdlcyBwcmV2ZW50IG91dC1vZi1ib3VuZHMgbWVtb3J5IGFjY2Vzc2VzIGZyb20gYHVyYi1cdTAwM2V0cmFuc2Zlcl9idWZmZXJgIGR1cmluZyBwYWNrZXQgcHJvY2Vzc2luZyBhbmQgY29weWluZyB0byB0aGUgU0tCLiBCdWZmZXIgb3Zlci1yZWFkcyBhbmQgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhcmUgbWVtb3J5IHNhZmV0eSB2aW9sYXRpb25zIGRldGVjdGVkIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcywgaW5mby1sZWFrcyB0byB1c2VyIHNwYWNlLCBvciB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wN1QxMToyNTo1NC42NzIwNDQ3NjFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTg1Nzc3NzU5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJVU0JfQ0FUQ1wiLFxuICAgIFwiVVNCX05FVF9EUklWRVJTXCIsXG4gICAgXCJVU0JcIixcbiAgICBcIk5FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNhdGNfcnhfZG9uZVwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgb3V0LW9mLWJvdW5kcyByZWFkIHZ1bG5lcmFiaWxpdGllcyBpbiB0aGUgQ0FUQyBVU0IgRXRoZXJuZXQgZHJpdmVyJ3MgcmVjZWl2ZSBwYXRoIChgY2F0Y19yeF9kb25lYCkuIFNwZWNpZmljYWxseSwgaXQgZW5zdXJlcyB0aGF0IGByZW1haW5pbmdgIHRyYW5zZmVyIGJ1ZmZlciBieXRlcyBhcmUgc3VmZmljaWVudCB0byByZWFkIHRoZSAyLWJ5dGUgcGFja2V0IGxlbmd0aCBoZWFkZXIgKGByZW1haW5pbmcgXFx1MDAzZT0gcGt0X29mZnNldGApLCBhbmQgdGhhdCB0aGUgaW5kaWNhdGVkIHBhY2tldCBsZW5ndGggcGx1cyBvZmZzZXQgZml0cyB3aXRoaW4gdGhlIHJlbWFpbmluZyByZWNlaXZlZCBidWZmZXIgKGBwa3RfbGVuICsgcGt0X29mZnNldCBcXHUwMDNjPSByZW1haW5pbmdgKS5cXG5cXG5UaGVzZSBjaGFuZ2VzIHByZXZlbnQgb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzZXMgZnJvbSBgdXJiLVxcdTAwM2V0cmFuc2Zlcl9idWZmZXJgIGR1cmluZyBwYWNrZXQgcHJvY2Vzc2luZyBhbmQgY29weWluZyB0byB0aGUgU0tCLiBCdWZmZXIgb3Zlci1yZWFkcyBhbmQgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhcmUgbWVtb3J5IHNhZmV0eSB2aW9sYXRpb25zIGRldGVjdGVkIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcywgaW5mby1sZWFrcyB0byB1c2VyIHNwYWNlLCBvciB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBwYWNrZXQgcmVjZXB0aW9uIGFuZCBsZW5ndGggdmFsaWRhdGlvbiBsb2dpYyBpbiBjYXRjX3J4X2RvbmUgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzIHdoZW4gcHJvY2Vzc2luZyBtYWxmb3JtZWQgVVNCIFJYIFVSQiBkYXRhLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGFuZCBmdXp6YWJsZSB2aWEgVVNCIGVtdWxhdGlvbiAvIHN5emthbGxlciBVU0IgcmF3LWdhZGdldCBzdXBwb3J0LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QxMToyNTo1NC42NzIwNDk2OTFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0MTc0NDIwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGEyNmMwODk1YWY2YzE2MmRmMmYxMzZhMTQ5MDMzZmQzOWMyMzgyMDJcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBTZXAgNyAxMToyNTo1MyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC91c2IvY2F0Yy5jIGIvZHJpdmVycy9uZXQvdXNiL2NhdGMuY1xcbmluZGV4IDk2ZTgyZjk0ZWRjZjguLmU0ZjhiOWEwY2FmMTkgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvdXNiL2NhdGMuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3VzYi9jYXRjLmNcXG5AQCAtMjM0LDggKzIzNCwxNiBAQCBzdGF0aWMgdm9pZCBjYXRjX3J4X2RvbmUoc3RydWN0IHVyYiAqdXJiKVxcbiBcXG4gXFx0ZG8ge1xcbiBcXHRcXHRpZighY2F0Yy1cXHUwMDNlaXNfZjV1MDExKSB7XFxuK1xcdFxcdFxcdGludCByZW1haW5pbmcgPSB1cmItXFx1MDAzZWFjdHVhbF9sZW5ndGggLVxcbitcXHRcXHRcXHRcXHRcXHQocGt0X3N0YXJ0IC0gKHU4ICopdXJiLVxcdTAwM2V0cmFuc2Zlcl9idWZmZXIpO1xcbitcXG4rXFx0XFx0XFx0aWYgKHJlbWFpbmluZyBcXHUwMDNjIHBrdF9vZmZzZXQpIHtcXG4rXFx0XFx0XFx0XFx0Y2F0Yy1cXHUwMDNlbmV0ZGV2LVxcdTAwM2VzdGF0cy5yeF9sZW5ndGhfZXJyb3JzKys7XFxuK1xcdFxcdFxcdFxcdGNhdGMtXFx1MDAzZW5ldGRldi1cXHUwMDNlc3RhdHMucnhfZXJyb3JzKys7XFxuK1xcdFxcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHRcXHR9XFxuIFxcdFxcdFxcdHBrdF9sZW4gPSBsZTE2X3RvX2NwdXAoKF9fbGUxNiopcGt0X3N0YXJ0KTtcXG4tXFx0XFx0XFx0aWYgKHBrdF9sZW4gXFx1MDAzZSB1cmItXFx1MDAzZWFjdHVhbF9sZW5ndGgpIHtcXG4rXFx0XFx0XFx0aWYgKHBrdF9sZW4gKyBwa3Rfb2Zmc2V0IFxcdTAwM2UgcmVtYWluaW5nKSB7XFxuIFxcdFxcdFxcdFxcdGNhdGMtXFx1MDAzZW5ldGRldi1cXHUwMDNlc3RhdHMucnhfbGVuZ3RoX2Vycm9ycysrO1xcbiBcXHRcXHRcXHRcXHRjYXRjLVxcdTAwM2VuZXRkZXYtXFx1MDAzZXN0YXRzLnJ4X2Vycm9ycysrO1xcbiBcXHRcXHRcXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTE6MjU6NTUuMzE2OTE4NzI4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjozNzU2MDE4NTU2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJVU0JfQ0FUQ1wiLFxuICAgIFwiVVNCX05FVF9EUklWRVJTXCIsXG4gICAgXCJVU0JcIixcbiAgICBcIk5FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNhdGNfcnhfZG9uZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBwYWNrZXQgcmVjZXB0aW9uIGFuZCBsZW5ndGggdmFsaWRhdGlvbiBsb2dpYyBpbiBjYXRjX3J4X2RvbmUgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzIHdoZW4gcHJvY2Vzc2luZyBtYWxmb3JtZWQgVVNCIFJYIFVSQiBkYXRhLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGFuZCBmdXp6YWJsZSB2aWEgVVNCIGVtdWxhdGlvbiAvIHN5emthbGxlciBVU0IgcmF3LWdhZGdldCBzdXBwb3J0LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGEyNmMwODk1YWY2YzE2MmRmMmYxMzZhMTQ5MDMzZmQzOWMyMzgyMDJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIFNlcCA3IDExOjI1OjUzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdXNiL2NhdGMuYyBiL2RyaXZlcnMvbmV0L3VzYi9jYXRjLmNcbmluZGV4IDk2ZTgyZjk0ZWRjZjguLmU0ZjhiOWEwY2FmMTkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC91c2IvY2F0Yy5jXG4rKysgYi9kcml2ZXJzL25ldC91c2IvY2F0Yy5jXG5AQCAtMjM0LDggKzIzNCwxNiBAQCBzdGF0aWMgdm9pZCBjYXRjX3J4X2RvbmUoc3RydWN0IHVyYiAqdXJiKVxuIFxuIFx0ZG8ge1xuIFx0XHRpZighY2F0Yy1cdTAwM2Vpc19mNXUwMTEpIHtcbitcdFx0XHRpbnQgcmVtYWluaW5nID0gdXJiLVx1MDAzZWFjdHVhbF9sZW5ndGggLVxuK1x0XHRcdFx0XHQocGt0X3N0YXJ0IC0gKHU4ICopdXJiLVx1MDAzZXRyYW5zZmVyX2J1ZmZlcik7XG4rXG4rXHRcdFx0aWYgKHJlbWFpbmluZyBcdTAwM2MgcGt0X29mZnNldCkge1xuK1x0XHRcdFx0Y2F0Yy1cdTAwM2VuZXRkZXYtXHUwMDNlc3RhdHMucnhfbGVuZ3RoX2Vycm9ycysrO1xuK1x0XHRcdFx0Y2F0Yy1cdTAwM2VuZXRkZXYtXHUwMDNlc3RhdHMucnhfZXJyb3JzKys7XG4rXHRcdFx0XHRicmVhaztcbitcdFx0XHR9XG4gXHRcdFx0cGt0X2xlbiA9IGxlMTZfdG9fY3B1cCgoX19sZTE2Kilwa3Rfc3RhcnQpO1xuLVx0XHRcdGlmIChwa3RfbGVuIFx1MDAzZSB1cmItXHUwMDNlYWN0dWFsX2xlbmd0aCkge1xuK1x0XHRcdGlmIChwa3RfbGVuICsgcGt0X29mZnNldCBcdTAwM2UgcmVtYWluaW5nKSB7XG4gXHRcdFx0XHRjYXRjLVx1MDAzZW5ldGRldi1cdTAwM2VzdGF0cy5yeF9sZW5ndGhfZXJyb3JzKys7XG4gXHRcdFx0XHRjYXRjLVx1MDAzZW5ldGRldi1cdTAwM2VzdGF0cy5yeF9lcnJvcnMrKztcbiBcdFx0XHRcdGJyZWFrO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTE6MjU6NTUuMzE2OTIxNDE4WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTIxMjQyOTMzNjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXZhbHVhdGluZyBUaGlzIEtlcm5lbCBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGxhbmRlZCBvbiBteSBkZXNrLCBhbmQgbXkgZmlyc3QgdGhvdWdodCBpczogRG9lcyB0aGlzIHdhcnJhbnQgYSBkZWVwIGRpdmUgd2l0aCBzeXprYWxsZXI/IExldCdzIHRha2UgYSBtZXRob2RpY2FsIGFwcHJvYWNoLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wYWN0IG9mIHRoaXMgY2hhbmdlLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGRpZyBpbnRvIHRoZSBjb2RlIGFuZCBkZXRlcm1pbmUgaWYgdGhlIHBhdGNoIGludHJvZHVjZXMgYW55IG5ldyBrZXJuZWwgZnVuY3Rpb25hbGl0eSwgYWx0ZXJzIGV4aXN0aW5nIGludGVyZmFjZXMsIG9yIHRvdWNoZXMgY29kZSB0aGF0J3MgYWxyZWFkeSBrbm93biB0byBiZSBhIHNvdXJjZSBvZiBidWdzLlxuXG5JJ20gdGhpbmtpbmcgSSdsbCBzdGFydCB3aXRoIGBncmVwcGVyYCDigJMgdGhhdCdzIG9mdGVuIG15IGZpcnN0IHN0b3AgZm9yIGEgYnJvYWQgb3ZlcnZpZXcgb2YgdGhlIGFmZmVjdGVkIGFyZWFzLiBJIHdhbnQgdG8gc2VlIGEgZ2VuZXJhbCBwaWN0dXJlIG9mIHRoZSBzY29wZS4gSWYgdGhhdCdzIG5vdCB5aWVsZGluZyBlbm91Z2gsIG9yIGlmIGl0IGxvb2tzIGxpa2UgdGhlIGNoYW5nZSBpcyBoaWdobHkgbG9jYWxpemVkLCBJJ2xsIGdvIGRpcmVjdGx5IGZvciBgY2F0Yy5jYCBvciB0aGUgS2NvbmZpZyBmaWxlcy4gVGhpcyBzaG91bGQgcXVpY2tseSBnaXZlIG1lIGEgc2Vuc2Ugb2Ygd2hhdCdzIGJlaW5nIGVuYWJsZWQgb3IgbW9kaWZpZWQuIFVuZGVyc3RhbmRpbmcgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBpcyBjcnVjaWFsIOKAkyBpcyB0aGlzIGEgZmVhdHVyZSB0aGF0J3MgZGlzYWJsZWQgYnkgZGVmYXVsdCwgb3IgaXMgaXQgcG90ZW50aWFsbHkgYSBzaWduaWZpY2FudCBjaGFuZ2UgdGhhdCBpbXBhY3RzIGEgd2lkZSByYW5nZSBvZiBzeXN0ZW1zPyBUaGF0J2xsIGhlbHAgbWUgdG8gd2VpZ2ggaXRzIGltcG9ydGFuY2UgZm9yIGZ1enppbmcgcHVycG9zZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5ODQsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDExOjI2OjA3LjQ0MTIyNjc2MVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NzYzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC91c2IvY2F0Yy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIyMCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDIyMDpcXHRcXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xcbiAyMjE6XFx0XFx0aW50IHBrdF9sZW4sIHBrdF9vZmZzZXQgPSAwO1xcbiAyMjI6XFx0XFx0aW50IHN0YXR1cyA9IHVyYi1cXHUwMDNlc3RhdHVzO1xcbiAyMjM6XFx0XFxuIDIyNDpcXHRcXHRpZiAoIWNhdGMtXFx1MDAzZWlzX2Y1dTAxMSkge1xcbiAyMjU6XFx0XFx0XFx0Y2xlYXJfYml0KFJYX1JVTk5JTkcsIFxcdTAwMjZjYXRjLVxcdTAwM2VmbGFncyk7XFxuIDIyNjpcXHRcXHRcXHRwa3Rfb2Zmc2V0ID0gMjtcXG4gMjI3OlxcdFxcdH1cXG4gMjI4OlxcdFxcbiAyMjk6XFx0XFx0aWYgKHN0YXR1cykge1xcbiAyMzA6XFx0XFx0XFx0ZGV2X2RiZyhcXHUwMDI2dXJiLVxcdTAwM2VkZXYtXFx1MDAzZWRldiwgXFxcInJ4X2RvbmUsIHN0YXR1cyAlZCwgbGVuZ3RoICVkXFxcXG5cXFwiLFxcbiAyMzE6XFx0XFx0XFx0XFx0c3RhdHVzLCB1cmItXFx1MDAzZWFjdHVhbF9sZW5ndGgpO1xcbiAyMzI6XFx0XFx0XFx0cmV0dXJuO1xcbiAyMzM6XFx0XFx0fVxcbiAyMzQ6XFx0XFxuIDIzNTpcXHRcXHRkbyB7XFxuIDIzNjpcXHRcXHRcXHRpZighY2F0Yy1cXHUwMDNlaXNfZjV1MDExKSB7XFxuIDIzNzpcXHRcXHRcXHRcXHRpbnQgcmVtYWluaW5nID0gdXJiLVxcdTAwM2VhY3R1YWxfbGVuZ3RoIC1cXG4gMjM4OlxcdFxcdFxcdFxcdFxcdFxcdChwa3Rfc3RhcnQgLSAodTggKil1cmItXFx1MDAzZXRyYW5zZmVyX2J1ZmZlcik7XFxuIDIzOTpcXHRcXG4gMjQwOlxcdFxcdFxcdFxcdGlmIChyZW1haW5pbmcgXFx1MDAzYyBwa3Rfb2Zmc2V0KSB7XFxuIDI0MTpcXHRcXHRcXHRcXHRcXHRjYXRjLVxcdTAwM2VuZXRkZXYtXFx1MDAzZXN0YXRzLnJ4X2xlbmd0aF9lcnJvcnMrKztcXG4gMjQyOlxcdFxcdFxcdFxcdFxcdGNhdGMtXFx1MDAzZW5ldGRldi1cXHUwMDNlc3RhdHMucnhfZXJyb3JzKys7XFxuIDI0MzpcXHRcXHRcXHRcXHRcXHRicmVhaztcXG4gMjQ0OlxcdFxcdFxcdFxcdH1cXG4gMjQ1OlxcdFxcdFxcdFxcdHBrdF9sZW4gPSBsZTE2X3RvX2NwdXAoKF9fbGUxNiopcGt0X3N0YXJ0KTtcXG4gMjQ2OlxcdFxcdFxcdFxcdGlmIChwa3RfbGVuICsgcGt0X29mZnNldCBcXHUwMDNlIHJlbWFpbmluZykge1xcbiAyNDc6XFx0XFx0XFx0XFx0XFx0Y2F0Yy1cXHUwMDNlbmV0ZGV2LVxcdTAwM2VzdGF0cy5yeF9sZW5ndGhfZXJyb3JzKys7XFxuIDI0ODpcXHRcXHRcXHRcXHRcXHRjYXRjLVxcdTAwM2VuZXRkZXYtXFx1MDAzZXN0YXRzLnJ4X2Vycm9ycysrO1xcbiAyNDk6XFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuIDI1MDpcXHRcXHRcXHRcXHR9XFxuIDI1MTpcXHRcXHRcXHR9IGVsc2Uge1xcbiAyNTI6XFx0XFx0XFx0XFx0cGt0X2xlbiA9IHVyYi1cXHUwMDNlYWN0dWFsX2xlbmd0aDtcXG4gMjUzOlxcdFxcdFxcdH1cXG4gMjU0OlxcdFxcbiAyNTU6XFx0XFx0XFx0aWYgKCEoc2tiID0gZGV2X2FsbG9jX3NrYihwa3RfbGVuKSkpXFxuIDI1NjpcXHRcXHRcXHRcXHRyZXR1cm47XFxuIDI1NzpcXHRcXG4gMjU4OlxcdFxcdFxcdHNrYl9jb3B5X3RvX2xpbmVhcl9kYXRhKHNrYiwgcGt0X3N0YXJ0ICsgcGt0X29mZnNldCwgcGt0X2xlbik7XFxuIDI1OTpcXHRcXHRcXHRza2JfcHV0KHNrYiwgcGt0X2xlbik7XFxuIDI2MDpcXHRcXG4gMjYxOlxcdFxcdFxcdHNrYi1cXHUwMDNlcHJvdG9jb2wgPSBldGhfdHlwZV90cmFucyhza2IsIGNhdGMtXFx1MDAzZW5ldGRldik7XFxuIDI2MjpcXHRcXHRcXHRuZXRpZl9yeChza2IpO1xcbiAyNjM6XFx0XFxuIDI2NDpcXHRcXHRcXHRjYXRjLVxcdTAwM2VuZXRkZXYtXFx1MDAzZXN0YXRzLnJ4X3BhY2tldHMrKztcXG4gMjY1OlxcdFxcdFxcdGNhdGMtXFx1MDAzZW5ldGRldi1cXHUwMDNlc3RhdHMucnhfYnl0ZXMgKz0gcGt0X2xlbjtcXG4gMjY2OlxcdFxcbiAyNjc6XFx0XFx0XFx0LyogRjVVMDExIG9ubHkgZG9lcyBvbmUgcGFja2V0IHBlciBSWCAqL1xcbiAyNjg6XFx0XFx0XFx0aWYgKGNhdGMtXFx1MDAzZWlzX2Y1dTAxMSlcXG4gMjY5OlxcdFxcdFxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QxMToyNjowNy40NDE0MjgwOTFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMjgzNDc4MTU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGl2aW5nIERlZXBlciBpbnRvIHRoZSBDQVRDIERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBgY2F0Y19yeF9kb25lYCBmdW5jdGlvbiBhbmQgaXRzIGNvbmZpZ3VyYXRpb24uIEkgbmVlZCB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIGhvdyB0aGlzIENBVEMgVVNCIG5ldHdvcmsgZHJpdmVyIGlzIGhhbmRsaW5nIHJlY2VpdmUgY29tcGxldGlvbnMuIEkgd2FudCB0byBzZWUgdGhlIGNvbXBsZXRlIHBpY3R1cmU7IGhvdyBhcmUgdGhlc2UgUlggZXZlbnRzIHByb2Nlc3NlZCwgYW5kIHdoYXQncyB0aGUgd2hvbGUgZmxvdyBvZiBkYXRhPyBTZWVpbmcgdGhlIHJlc3Qgb2YgdGhlIGZ1bmN0aW9uIGlzIGNyaXRpY2FsIHRvIHVuZGVyc3RhbmRpbmcgaXRzIGNvbnRleHQuIFRoZW4sIEkgbmVlZCB0byBjaGVjayB0aGUgY29ycmVzcG9uZGluZyBLY29uZmlnIGZvciB0aGF0IGRyaXZlci4gVGhpcydsbCB0ZWxsIG1lIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgY29tcGlsZS10aW1lIG9wdGlvbnMgb3IgZGVwZW5kZW5jaWVzIHRoYXQgYWZmZWN0IGl0cyBiZWhhdmlvci4gVW5kZXJzdGFuZGluZyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGlzIGNydWNpYWwgdG8gdW5kZXJzdGFuZGluZyB3aGljaCBmZWF0dXJlcyBhcmUgZW5hYmxlZCBvciBkaXNhYmxlZCwgYW5kIGhvdyB0aGF0IGltcGFjdHMgdGhlIGRyaXZlcidzIG9wZXJhdGlvbi4gSSB3YW50IHRvIHNlZSBob3cgdGhlc2UgdHdvIHBpZWNlcyBvZiBpbmZvcm1hdGlvbiBmaXQgdG9nZXRoZXIg4oCTwqB0aGUgZXhlY3V0aW9uIHBhdGgsIGFuZCB0aGUgY29udHJvbCBwYXJhbWV0ZXJzLiBUaGlzIHdpbGwgaGVscCBtZSBkaWFnbm9zZSBpc3N1ZXMsIG9wdGltaXplIGl0LCBvciBzaW1wbHkgdW5kZXJzdGFuZCB0aGUgZGVzaWduIGJldHRlci5cblxuXG4iLCJJbnB1dFRva2VucyI6NDA5MSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTE6MjY6MDkuNzI0OTA4ODc2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA1ODkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3VzYi9jYXRjLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjcwLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjcwOlxcdFxcdFxcdHBrdF9zdGFydCArPSAoKChwa3RfbGVuICsgMSkgXFx1MDAzZVxcdTAwM2UgNikgKyAxKSBcXHUwMDNjXFx1MDAzYyA2O1xcbiAyNzE6XFx0XFxuIDI3MjpcXHRcXHR9IHdoaWxlIChwa3Rfc3RhcnQgLSAodTggKikgdXJiLVxcdTAwM2V0cmFuc2Zlcl9idWZmZXIgXFx1MDAzYyB1cmItXFx1MDAzZWFjdHVhbF9sZW5ndGgpO1xcbiAyNzM6XFx0XFxuIDI3NDpcXHRcXHRpZiAoY2F0Yy1cXHUwMDNlaXNfZjV1MDExKSB7XFxuIDI3NTpcXHRcXHRcXHRpZiAoYXRvbWljX3JlYWQoXFx1MDAyNmNhdGMtXFx1MDAzZXJlY3Ffc3opKSB7XFxuIDI3NjpcXHRcXHRcXHRcXHRpbnQgc3RhdGU7XFxuIDI3NzpcXHRcXHRcXHRcXHRhdG9taWNfZGVjKFxcdTAwMjZjYXRjLVxcdTAwM2VyZWNxX3N6KTtcXG4gMjc4OlxcdFxcdFxcdFxcdG5ldGRldl9kYmcoY2F0Yy1cXHUwMDNlbmV0ZGV2LCBcXFwiZ2V0dGluZyBleHRyYSBwYWNrZXRcXFxcblxcXCIpO1xcbiAyNzk6XFx0XFx0XFx0XFx0dXJiLVxcdTAwM2VkZXYgPSBjYXRjLVxcdTAwM2V1c2JkZXY7XFxuIDI4MDpcXHRcXHRcXHRcXHRpZiAoKHN0YXRlID0gdXNiX3N1Ym1pdF91cmIodXJiLCBHRlBfQVRPTUlDKSkgXFx1MDAzYyAwKSB7XFxuIDI4MTpcXHRcXHRcXHRcXHRcXHRuZXRkZXZfZGJnKGNhdGMtXFx1MDAzZW5ldGRldixcXG4gMjgyOlxcdFxcdFxcdFxcdFxcdFxcdCAgIFxcXCJzdWJtaXQocnhfdXJiKSBzdGF0dXMgJWRcXFxcblxcXCIsIHN0YXRlKTtcXG4gMjgzOlxcdFxcdFxcdFxcdH1cXG4gMjg0OlxcdFxcdFxcdH0gZWxzZSB7XFxuIDI4NTpcXHRcXHRcXHRcXHRjbGVhcl9iaXQoUlhfUlVOTklORywgXFx1MDAyNmNhdGMtXFx1MDAzZWZsYWdzKTtcXG4gMjg2OlxcdFxcdFxcdH1cXG4gMjg3OlxcdFxcdH1cXG4gMjg4OlxcdH1cXG4gMjg5OlxcdFxcbiAyOTA6XFx0c3RhdGljIHZvaWQgY2F0Y19pcnFfZG9uZShzdHJ1Y3QgdXJiICp1cmIpXFxuIDI5MTpcXHR7XFxuIDI5MjpcXHRcXHRzdHJ1Y3QgY2F0YyAqY2F0YyA9IHVyYi1cXHUwMDNlY29udGV4dDtcXG4gMjkzOlxcdFxcdHU4ICpkYXRhID0gdXJiLVxcdTAwM2V0cmFuc2Zlcl9idWZmZXI7XFxuIDI5NDpcXHRcXHRpbnQgc3RhdHVzID0gdXJiLVxcdTAwM2VzdGF0dXM7XFxuIDI5NTpcXHRcXHR1bnNpZ25lZCBpbnQgaGFzZGF0YSwgbGlua3N0cyA9IExpbmtOb0NoYW5nZTtcXG4gMjk2OlxcdFxcdGludCByZXM7XFxuIDI5NzpcXHRcXG4gMjk4OlxcdFxcdGlmICghY2F0Yy1cXHUwMDNlaXNfZjV1MDExKSB7XFxuIDI5OTpcXHRcXHRcXHRoYXNkYXRhID0gZGF0YVsxXSBcXHUwMDI2IDB4ODA7XFxuIDMwMDpcXHRcXHRcXHRpZiAoZGF0YVsxXSBcXHUwMDI2IDB4NDApXFxuIDMwMTpcXHRcXHRcXHRcXHRsaW5rc3RzID0gTGlua0dvb2Q7XFxuIDMwMjpcXHRcXHRcXHRlbHNlIGlmIChkYXRhWzFdIFxcdTAwMjYgMHgyMClcXG4gMzAzOlxcdFxcdFxcdFxcdGxpbmtzdHMgPSBMaW5rQmFkO1xcbiAzMDQ6XFx0XFx0fSBlbHNlIHtcXG4gMzA1OlxcdFxcdFxcdGhhc2RhdGEgPSAodW5zaWduZWQgaW50KShiZTE2X3RvX2NwdXAoKF9fYmUxNiopZGF0YSkgXFx1MDAyNiAweDBmZmYpO1xcbiAzMDY6XFx0XFx0XFx0aWYgKGRhdGFbMF0gPT0gMHg5MClcXG4gMzA3OlxcdFxcdFxcdFxcdGxpbmtzdHMgPSBMaW5rR29vZDtcXG4gMzA4OlxcdFxcdFxcdGVsc2UgaWYgKGRhdGFbMF0gPT0gMHhBMClcXG4gMzA5OlxcdFxcdFxcdFxcdGxpbmtzdHMgPSBMaW5rQmFkO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QxMToyNjowOS43MjUxMjUzMDZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNjgyMzE2OTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIGlzc3VlOlxuXG4qKktjb25maWcgSW5zcGVjdGlvbiBmb3IgYGNhdGMuY2AqKlxuXG5Pa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZyBmaWxlcy4gVGhlIGNvZGUncyBiZWhhdmlvciBoaW5nZXMgb24gdGhvc2UgY29uZmlndXJhdGlvbnMsIHNvIHVuZGVyc3RhbmRpbmcgdGhlIEtjb25maWcgc2V0dGluZ3MgcmVsYXRlZCB0byBgY2F0Yy5jYCBpcyBwYXJhbW91bnQuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgb3B0aW9ucyBjb250cm9sIGl0cyBpbmNsdXNpb24sIGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiwgYW5kIGRlcGVuZGVuY3kgaW1wbGljYXRpb25zLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIGxvY2F0aW5nIHRoZSByZWxldmFudCBLY29uZmlnIGZyYWdtZW50cywgcG90ZW50aWFsbHkgdXNpbmcgYSBnbG9iYWwgc2VhcmNoIHdpdGhpbiB0aGUgcHJvamVjdCdzIHNvdXJjZSB0cmVlIGlmIEkgZG9uJ3QgaW1tZWRpYXRlbHkga25vdyB0aGUgbW9kdWxlIG9yIGRpcmVjdG9yeSBzdHJ1Y3R1cmUuXG5cbkknbGwgYmUgbG9va2luZyBmb3IgY29uZmlndXJhdGlvbiBzeW1ib2xzIGRpcmVjdGx5IHRpZWQgdG8gYGNhdGMuY2Agb3IsIGFsdGVybmF0aXZlbHksIG1vcmUgZ2VuZXJhbCBmZWF0dXJlcyB0aGF0IG1pZ2h0IGluZGlyZWN0bHkgYWZmZWN0IGl0LiBGb3IgZXhhbXBsZSwgaXMgYENPTkZJR19DQVRDX0VOQUJMRURgIGEgc3ltYm9sPyBPciBwZXJoYXBzIGl0J3MgZW5hYmxlZCBieSBzb21lIGJyb2FkZXIgZmVhdHVyZSBsaWtlIGBDT05GSUdfTkVUV09SS19TVVBQT1JUYCBvciBhIG1vcmUgc3BlY2lmaWMgZHJpdmVyIGNvbmZpZ3VyYXRpb24uIEkgaGF2ZSB0byBrZWVwIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZSBvZiB0aGUgcHJvamVjdCBpbiBtaW5kOyBpdCBjb3VsZCBiZSBsYXllcmVkLCB3aXRoIGRpZmZlcmVudCBLY29uZmlnIGZpbGVzIGluZmx1ZW5jaW5nIHRoaXMgZmlsZS5cblxuTmV4dCwgSSBuZWVkIHRvIGFuYWx5emUgdGhlIGltcGxpY2F0aW9ucy4gSWYgYGNhdGMuY2AgaXMgb25seSBpbmNsdWRlZCB1bmRlciBjZXJ0YWluIGNvbmZpZ3VyYXRpb25zLCBJIG5lZWQgdG8ga25vdyAqd2h5Ki4gV2hhdCBhcmUgdGhlIGFzc3VtcHRpb25zIGJha2VkIGludG8gdGhhdCBjb25maWd1cmF0aW9uPyBEb2VzIGl0IG1lYW4gdGhlIGZpbGUgaXMgb25seSBuZWVkZWQgZm9yIHBhcnRpY3VsYXIgaGFyZHdhcmUsIHNwZWNpZmljIHVzZSBjYXNlcywgb3IgcGFydGljdWxhciBidWlsZCB0YXJnZXRzPyBBcmUgdGhlcmUgb3RoZXIgZmlsZXMgb3IgbW9kdWxlcyBpbXBhY3RlZCBieSB0aGlzIHNldHRpbmc/IEhvdyBkb2VzIHRoaXMgcG90ZW50aWFsbHkgYWZmZWN0IHRoZSBvdmVyYWxsIGJ1aWxkIHN5c3RlbSBhbmQgdGhlIHJlc3VsdGluZyBiaW5hcnkgc2l6ZT8gSXQncyByZWFsbHkgdGhlIG1vc3QgY3JpdGljYWwgZmlyc3Qgc3RlcDsgdW5kZXJzdGFuZGluZyB0aGVzZSBzZXR0aW5ncyBpcyBmb3VuZGF0aW9uYWwgZm9yIGFueXRoaW5nIGVsc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwNTIsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDExOjI2OjEyLjQwNzQ1MjQxNFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NDg0MzAyOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjYXRjXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3VzYlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDYyMCBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MTU9Y29uZmlnIFVTQl9DQVRDXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0zMS1cXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjMyOlxcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGNhdGMuXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMzMtXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvTWFrZWZpbGUtNS1cXG5kcml2ZXJzL25ldC91c2IvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfVVNCX0NBVEMpXFx0XFx0Kz0gY2F0Yy5vXFxuZHJpdmVycy9uZXQvdXNiL01ha2VmaWxlLTctb2JqLSQoQ09ORklHX1VTQl9LQVdFVEgpXFx0Kz0ga2F3ZXRoLm9cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM9NDU9TU9EVUxFX0xJQ0VOU0UoXFxcIkdQTFxcXCIpO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNDYtXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo0NzpzdGF0aWMgY29uc3QgY2hhciBkcml2ZXJfbmFtZVtdID0gXFxcImNhdGNcXFwiO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNDgtXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTY0LVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NjU6ZW51bSBjYXRjX3VzYl9lcCB7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02Ni1cXHRDQVRDX1VTQl9FUF9DT05UUk9MXFx0PSAwLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYz0xMzk9ZW51bSBsaW5rX3N0YXR1cyB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTE0NS0vKlxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MTQ2OiAqIFRoZSBjYXRjIHN0cnVjdC5cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTE0Ny0gKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMTUyLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MTUzOnN0cnVjdCBjYXRjIHtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTE1NC1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0xODItXFx0XFx0aW50IGxlbjtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjE4MzpcXHRcXHR2b2lkICgqY2FsbGJhY2spKHN0cnVjdCBjYXRjICpjYXRjLCBzdHJ1Y3QgY3RybF9xdWV1ZSAqcSk7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0xODQtXFx0fSBjdHJsX3F1ZXVlW0NUUkxfUVVFVUVdO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0xOTYtXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzoxOTc6I2RlZmluZSBjYXRjX2dldF9tYWMoY2F0YywgbWFjKVxcdFxcdFxcdFxcdGNhdGNfY3RybF9tc2coY2F0YywgVVNCX0RJUl9JTiwgIEdldE1hYywgMCwgMCwgbWFjLCAgNilcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjE5ODojZGVmaW5lIGNhdGNfcmVzZXQoY2F0YylcXHRcXHRcXHRcXHRjYXRjX2N0cmxfbXNnKGNhdGMsIFVTQl9ESVJfT1VULCBSZXNldCwgMCwgMCwgTlVMTCwgMClcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjE5OTojZGVmaW5lIGNhdGNfc2V0X3JlZyhjYXRjLCByZWcsIHZhbClcXHRcXHRcXHRjYXRjX2N0cmxfbXNnKGNhdGMsIFVTQl9ESVJfT1VULCBTZXRSZWcsIHZhbCwgcmVnLCBOVUxMLCAwKVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MjAwOiNkZWZpbmUgY2F0Y19nZXRfcmVnKGNhdGMsIHJlZywgYnVmKVxcdFxcdFxcdGNhdGNfY3RybF9tc2coY2F0YywgVVNCX0RJUl9JTiwgIEdldFJlZywgMCwgcmVnLCBidWYsIDEpXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzoyMDE6I2RlZmluZSBjYXRjX3dyaXRlX21lbShjYXRjLCBhZGRyLCBidWYsIHNpemUpXFx0XFx0Y2F0Y19jdHJsX21zZyhjYXRjLCBVU0JfRElSX09VVCwgV3JpdGVNZW0sIDAsIGFkZHIsIGJ1Ziwgc2l6ZSlcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjIwMjojZGVmaW5lIGNhdGNfcmVhZF9tZW0oY2F0YywgYWRkciwgYnVmLCBzaXplKVxcdFxcdGNhdGNfY3RybF9tc2coY2F0YywgVVNCX0RJUl9JTiwgIFJlYWRNZW0sIDAsIGFkZHIsIGJ1Ziwgc2l6ZSlcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTIwMy1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjIwNDojZGVmaW5lIGY1dTAxMV9yeG1vZGUoY2F0Yywgcnhtb2RlKVxcdFxcdFxcdGNhdGNfY3RybF9tc2coY2F0YywgVVNCX0RJUl9PVVQsIFNldFJ4TW9kZSwgMCwgMSwgcnhtb2RlLCAyKVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MjA1OiNkZWZpbmUgZjV1MDExX3J4bW9kZV9hc3luYyhjYXRjLCByeG1vZGUpXFx0XFx0Y2F0Y19jdHJsX2FzeW5jKGNhdGMsIFVTQl9ESVJfT1VULCBTZXRSeE1vZGUsIDAsIDEsIFxcdTAwMjZyeG1vZGUsIDIsIE5VTEwpXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzoyMDY6I2RlZmluZSBmNXUwMTFfbWNoYXNoX2FzeW5jKGNhdGMsIGhhc2gpXFx0XFx0XFx0Y2F0Y19jdHJsX2FzeW5jKGNhdGMsIFVTQl9ESVJfT1VULCBTZXRSeE1vZGUsIDAsIDIsIFxcdTAwMjZoYXNoLCA4LCBOVUxMKVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMjA3LVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MjA4OiNkZWZpbmUgY2F0Y19zZXRfcmVnX2FzeW5jKGNhdGMsIHJlZywgdmFsKVxcdFxcdGNhdGNfY3RybF9hc3luYyhjYXRjLCBVU0JfRElSX09VVCwgU2V0UmVnLCB2YWwsIHJlZywgTlVMTCwgMCwgTlVMTClcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjIwOTojZGVmaW5lIGNhdGNfZ2V0X3JlZ19hc3luYyhjYXRjLCByZWcsIGNiKVxcdFxcdGNhdGNfY3RybF9hc3luYyhjYXRjLCBVU0JfRElSX0lOLCBHZXRSZWcsIDAsIHJlZywgTlVMTCwgMSwgY2IpXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzoyMTA6I2RlZmluZSBjYXRjX3dyaXRlX21lbV9hc3luYyhjYXRjLCBhZGRyLCBidWYsIHNpemUpXFx0Y2F0Y19jdHJsX2FzeW5jKGNhdGMsIFVTQl9ESVJfT1VULCBXcml0ZU1lbSwgMCwgYWRkciwgYnVmLCBzaXplLCBOVUxMKVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMjExLVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0yMTUtXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzoyMTY6c3RhdGljIHZvaWQgY2F0Y19yeF9kb25lKHN0cnVjdCB1cmIgKnVyYilcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTIxNy17XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzoyMTg6XFx0c3RydWN0IGNhdGMgKmNhdGMgPSB1cmItXFx1MDAzZWNvbnRleHQ7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0yMTktXFx0dTggKnBrdF9zdGFydCA9IHVyYi1cXHUwMDNldHJhbnNmZXJfYnVmZmVyO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0yMjMtXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzoyMjQ6XFx0aWYgKCFjYXRjLVxcdTAwM2Vpc19mNXUwMTEpIHtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjIyNTpcXHRcXHRjbGVhcl9iaXQoUlhfUlVOTklORywgXFx1MDAyNmNhdGMtXFx1MDAzZWZsYWdzKTtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTIyNi1cXHRcXHRwa3Rfb2Zmc2V0ID0gMjtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMjM1LVxcdGRvIHtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjIzNjpcXHRcXHRpZighY2F0Yy1cXHUwMDNlaXNfZjV1MDExKSB7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0yMzctXFx0XFx0XFx0aW50IHJlbWFpbmluZyA9IHVyYi1cXHUwMDNlYWN0dWFsX2xlbmd0aCAtXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTI0MC1cXHRcXHRcXHRpZiAocmVtYWluaW5nIFxcdTAwM2MgcGt0X29mZnNldCkge1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MjQxOlxcdFxcdFxcdFxcdGNhdGMtXFx1MDAzZW5ldGRldi1cXHUwMDNlc3RhdHMucnhfbGVuZ3RoX2Vycm9ycysrO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MjQyOlxcdFxcdFxcdFxcdGNhdGMtXFx1MDAzZW5ldGRldi1cXHUwMDNlc3RhdHMucnhfZXJyb3JzKys7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0yNDMtXFx0XFx0XFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTI0Ni1cXHRcXHRcXHRpZiAocGt0X2xlbiArIHBrdF9vZmZzZXQgXFx1MDAzZSByZW1haW5pbmcpIHtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjI0NzpcXHRcXHRcXHRcXHRjYXRjLVxcdTAwM2VuZXRkZXYtXFx1MDAzZXN0YXRzLnJ4X2xlbmd0aF9lcnJvcnMrKztcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjI0ODpcXHRcXHRcXHRcXHRjYXRjLVxcdTAwM2VuZXRkZXYtXFx1MDAzZXN0YXRzLnJ4X2Vycm9ycysrO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMjQ5LVxcdFxcdFxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0yNjAtXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzoyNjE6XFx0XFx0c2tiLVxcdTAwM2Vwcm90b2NvbCA9IGV0aF90eXBlX3RyYW5zKHNrYiwgY2F0Yy1cXHUwMDNlbmV0ZGV2KTtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTI2Mi1cXHRcXHRuZXRpZl9yeChza2IpO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMjYzLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MjY0OlxcdFxcdGNhdGMtXFx1MDAzZW5ldGRldi1cXHUwMDNlc3RhdHMucnhfcGFja2V0cysrO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MjY1OlxcdFxcdGNhdGMtXFx1MDAzZW5ldGRldi1cXHUwMDNlc3RhdHMucnhfYnl0ZXMgKz0gcGt0X2xlbjtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTI2Ni1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTI2Ny1cXHRcXHQvKiBGNVUwMTEgb25seSBkb2VzIG9uZSBwYWNrZXQgcGVyIFJYICovXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzoyNjg6XFx0XFx0aWYgKGNhdGMtXFx1MDAzZWlzX2Y1dTAxMSlcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTI2OS1cXHRcXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMjczLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6Mjc0OlxcdGlmIChjYXRjLVxcdTAwM2Vpc19mNXUwMTEpIHtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjI3NTpcXHRcXHRpZiAoYXRvbWljX3JlYWQoXFx1MDAyNmNhdGMtXFx1MDAzZXJlY3Ffc3opKSB7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0yNzYtXFx0XFx0XFx0aW50IHN0YXRlO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6Mjc3OlxcdFxcdFxcdGF0b21pY19kZWMoXFx1MDAyNmNhdGMtXFx1MDAzZXJlY3Ffc3opO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6Mjc4OlxcdFxcdFxcdG5ldGRldl9kYmcoY2F0Yy1cXHUwMDNlbmV0ZGV2LCBcXFwiZ2V0dGluZyBleHRyYSBwYWNrZXRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6Mjc5OlxcdFxcdFxcdHVyYi1cXHUwMDNlZGV2ID0gY2F0Yy1cXHUwMDNldXNiZGV2O1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMjgwLVxcdFxcdFxcdGlmICgoc3RhdGUgPSB1c2Jfc3VibWl0X3VyYih1cmIsIEdGUF9BVE9NSUMpKSBcXHUwMDNjIDApIHtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjI4MTpcXHRcXHRcXHRcXHRuZXRkZXZfZGJnKGNhdGMtXFx1MDAzZW5ldGRldixcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTI4Mi1cXHRcXHRcXHRcXHRcXHQgICBcXFwic3VibWl0KHJ4X3VyYikgc3RhdHVzICVkXFxcXG5cXFwiLCBzdGF0ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTI4NC1cXHRcXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6Mjg1OlxcdFxcdFxcdGNsZWFyX2JpdChSWF9SVU5OSU5HLCBcXHUwMDI2Y2F0Yy1cXHUwMDNlZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMjg2LVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMjg5LVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MjkwOnN0YXRpYyB2b2lkIGNhdGNfaXJxX2RvbmUoc3RydWN0IHVyYiAqdXJiKVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMjkxLXtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjI5MjpcXHRzdHJ1Y3QgY2F0YyAqY2F0YyA9IHVyYi1cXHUwMDNlY29udGV4dDtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTI5My1cXHR1OCAqZGF0YSA9IHVyYi1cXHUwMDNldHJhbnNmZXJfYnVmZmVyO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0yOTctXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzoyOTg6XFx0aWYgKCFjYXRjLVxcdTAwM2Vpc19mNXUwMTEpIHtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTI5OS1cXHRcXHRoYXNkYXRhID0gZGF0YVsxXSBcXHUwMDI2IDB4ODA7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTMyNy1cXHRpZiAobGlua3N0cyA9PSBMaW5rR29vZCkge1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MzI4OlxcdFxcdG5ldGlmX2NhcnJpZXJfb24oY2F0Yy1cXHUwMDNlbmV0ZGV2KTtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjMyOTpcXHRcXHRuZXRkZXZfZGJnKGNhdGMtXFx1MDAzZW5ldGRldiwgXFxcImxpbmsgb2tcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMzMwLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMzMyLVxcdGlmIChsaW5rc3RzID09IExpbmtCYWQpIHtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjMzMzpcXHRcXHRuZXRpZl9jYXJyaWVyX29mZihjYXRjLVxcdTAwM2VuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MzM0OlxcdFxcdG5ldGRldl9kYmcoY2F0Yy1cXHUwMDNlbmV0ZGV2LCBcXFwibGluayBiYWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMzM1LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMzM3LVxcdGlmIChoYXNkYXRhKSB7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzozMzg6XFx0XFx0aWYgKHRlc3RfYW5kX3NldF9iaXQoUlhfUlVOTklORywgXFx1MDAyNmNhdGMtXFx1MDAzZWZsYWdzKSkge1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MzM5OlxcdFxcdFxcdGlmIChjYXRjLVxcdTAwM2Vpc19mNXUwMTEpXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzozNDA6XFx0XFx0XFx0XFx0YXRvbWljX2luYyhcXHUwMDI2Y2F0Yy1cXHUwMDNlcmVjcV9zeik7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0zNDEtXFx0XFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjM0MjpcXHRcXHRcXHRjYXRjLVxcdTAwM2VyeF91cmItXFx1MDAzZWRldiA9IGNhdGMtXFx1MDAzZXVzYmRldjtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjM0MzpcXHRcXHRcXHRpZiAoKHJlcyA9IHVzYl9zdWJtaXRfdXJiKGNhdGMtXFx1MDAzZXJ4X3VyYiwgR0ZQX0FUT01JQykpIFxcdTAwM2MgMCkge1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MzQ0OlxcdFxcdFxcdFxcdGRldl9lcnIoXFx1MDAyNmNhdGMtXFx1MDAzZXVzYmRldi1cXHUwMDNlZGV2LFxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMzQ1LVxcdFxcdFxcdFxcdFxcdFxcXCJzdWJtaXQocnhfdXJiKSBzdGF0dXMgJWRcXFxcblxcXCIsIHJlcyk7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTM1MS1cXHRpZiAocmVzKVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MzUyOlxcdFxcdGRldl9lcnIoXFx1MDAyNmNhdGMtXFx1MDAzZXVzYmRldi1cXHUwMDNlZGV2LFxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMzUzLVxcdFxcdFxcdFxcXCJjYW4ndCByZXN1Ym1pdCBpbnRyLCAlcy0lcywgc3RhdHVzICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MzU0OlxcdFxcdFxcdGNhdGMtXFx1MDAzZXVzYmRldi1cXHUwMDNlYnVzLVxcdTAwM2VidXNfbmFtZSxcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjM1NTpcXHRcXHRcXHRjYXRjLVxcdTAwM2V1c2JkZXYtXFx1MDAzZWRldnBhdGgsIHJlcyk7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0zNTYtfVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0zNjEtXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzozNjI6c3RhdGljIGludCBjYXRjX3R4X3J1bihzdHJ1Y3QgY2F0YyAqY2F0YylcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTM2My17XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTM2NS1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjM2NjpcXHRpZiAoY2F0Yy1cXHUwMDNlaXNfZjV1MDExKVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MzY3OlxcdFxcdGNhdGMtXFx1MDAzZXR4X3B0ciA9IChjYXRjLVxcdTAwM2V0eF9wdHIgKyA2MykgXFx1MDAyNiB+NjM7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0zNjgtXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzozNjk6XFx0Y2F0Yy1cXHUwMDNldHhfdXJiLVxcdTAwM2V0cmFuc2Zlcl9idWZmZXJfbGVuZ3RoID0gY2F0Yy1cXHUwMDNldHhfcHRyO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MzcwOlxcdGNhdGMtXFx1MDAzZXR4X3VyYi1cXHUwMDNldHJhbnNmZXJfYnVmZmVyID0gY2F0Yy1cXHUwMDNldHhfYnVmW2NhdGMtXFx1MDAzZXR4X2lkeF07XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzozNzE6XFx0Y2F0Yy1cXHUwMDNldHhfdXJiLVxcdTAwM2VkZXYgPSBjYXRjLVxcdTAwM2V1c2JkZXY7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0zNzItXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzozNzM6XFx0aWYgKChzdGF0dXMgPSB1c2Jfc3VibWl0X3VyYihjYXRjLVxcdTAwM2V0eF91cmIsIEdGUF9BVE9NSUMpKSBcXHUwMDNjIDApXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzozNzQ6XFx0XFx0ZGV2X2VycihcXHUwMDI2Y2F0Yy1cXHUwMDNldXNiZGV2LVxcdTAwM2VkZXYsIFxcXCJzdWJtaXQodHhfdXJiKSwgc3RhdHVzICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMzc1LVxcdFxcdFxcdHN0YXR1cyk7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0zNzYtXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzozNzc6XFx0Y2F0Yy1cXHUwMDNldHhfaWR4ID0gIWNhdGMtXFx1MDAzZXR4X2lkeDtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjM3ODpcXHRjYXRjLVxcdTAwM2V0eF9wdHIgPSAwO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMzc5LVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MzgwOlxcdG5ldGlmX3RyYW5zX3VwZGF0ZShjYXRjLVxcdTAwM2VuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMzgxLVxcdHJldHVybiBzdGF0dXM7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTM4My1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjM4NDpzdGF0aWMgdm9pZCBjYXRjX3R4X2RvbmUoc3RydWN0IHVyYiAqdXJiKVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMzg1LXtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjM4NjpcXHRzdHJ1Y3QgY2F0YyAqY2F0YyA9IHVyYi1cXHUwMDNlY29udGV4dDtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTM4Ny1cXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0zOTItXFx0XFx0dXJiLVxcdTAwM2VzdGF0dXMgPSAwO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MzkzOlxcdFxcdG5ldGlmX3RyYW5zX3VwZGF0ZShjYXRjLVxcdTAwM2VuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6Mzk0OlxcdFxcdGNhdGMtXFx1MDAzZW5ldGRldi1cXHUwMDNlc3RhdHMudHhfZXJyb3JzKys7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzozOTU6XFx0XFx0Y2xlYXJfYml0KFRYX1JVTk5JTkcsIFxcdTAwMjZjYXRjLVxcdTAwM2VmbGFncyk7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzozOTY6XFx0XFx0bmV0aWZfd2FrZV9xdWV1ZShjYXRjLVxcdTAwM2VuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMzk3LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNDA1LVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NDA2OlxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZjYXRjLVxcdTAwM2V0eF9sb2NrLCBmbGFncyk7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy00MDctXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo0MDg6XFx0aWYgKGNhdGMtXFx1MDAzZXR4X3B0cikge1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NDA5OlxcdFxcdHIgPSBjYXRjX3R4X3J1bihjYXRjKTtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTQxMC1cXHRcXHRpZiAodW5saWtlbHkociBcXHUwMDNjIDApKVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NDExOlxcdFxcdFxcdGNsZWFyX2JpdChUWF9SVU5OSU5HLCBcXHUwMDI2Y2F0Yy1cXHUwMDNlZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNDEyLVxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo0MTM6XFx0XFx0Y2xlYXJfYml0KFRYX1JVTk5JTkcsIFxcdTAwMjZjYXRjLVxcdTAwM2VmbGFncyk7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy00MTQtXFx0fVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNDE1LVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NDE2OlxcdG5ldGlmX3dha2VfcXVldWUoY2F0Yy1cXHUwMDNlbmV0ZGV2KTtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTQxNy1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjQxODpcXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZjYXRjLVxcdTAwM2V0eF9sb2NrLCBmbGFncyk7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy00MTktfVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNDIwLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NDIxOnN0YXRpYyBuZXRkZXZfdHhfdCBjYXRjX3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTQyMi1cXHRcXHRcXHRcXHRcXHQgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTQyMy17XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo0MjQ6XFx0c3RydWN0IGNhdGMgKmNhdGMgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNDI1LVxcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTQyOC1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjQyOTpcXHRzcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2Y2F0Yy1cXHUwMDNldHhfbG9jaywgZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNDMwLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NDMxOlxcdGNhdGMtXFx1MDAzZXR4X3B0ciA9ICgoKGNhdGMtXFx1MDAzZXR4X3B0ciAtIDEpIFxcdTAwM2VcXHUwMDNlIDYpICsgMSkgXFx1MDAzY1xcdTAwM2MgNjtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjQzMjpcXHR0eF9idWYgPSBjYXRjLVxcdTAwM2V0eF9idWZbY2F0Yy1cXHUwMDNldHhfaWR4XSArIGNhdGMtXFx1MDAzZXR4X3B0cjtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjQzMzpcXHRpZiAoY2F0Yy1cXHUwMDNlaXNfZjV1MDExKVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNDM0LVxcdFxcdCooX19iZTE2ICopdHhfYnVmID0gY3B1X3RvX2JlMTYoc2tiLVxcdTAwM2VsZW4pO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy00MzctXFx0c2tiX2NvcHlfZnJvbV9saW5lYXJfZGF0YShza2IsIHR4X2J1ZiArIDIsIHNrYi1cXHUwMDNlbGVuKTtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjQzODpcXHRjYXRjLVxcdTAwM2V0eF9wdHIgKz0gc2tiLVxcdTAwM2VsZW4gKyAyO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNDM5LVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NDQwOlxcdGlmICghdGVzdF9hbmRfc2V0X2JpdChUWF9SVU5OSU5HLCBcXHUwMDI2Y2F0Yy1cXHUwMDNlZmxhZ3MpKSB7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo0NDE6XFx0XFx0ciA9IGNhdGNfdHhfcnVuKGNhdGMpO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNDQyLVxcdFxcdGlmIChyIFxcdTAwM2MgMClcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjQ0MzpcXHRcXHRcXHRjbGVhcl9iaXQoVFhfUlVOTklORywgXFx1MDAyNmNhdGMtXFx1MDAzZWZsYWdzKTtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTQ0NC1cXHR9XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy00NDUtXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo0NDY6XFx0aWYgKChjYXRjLVxcdTAwM2Vpc19mNXUwMTEgXFx1MDAyNlxcdTAwMjYgY2F0Yy1cXHUwMDNldHhfcHRyKSB8fFxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NDQ3OlxcdCAgICAoY2F0Yy1cXHUwMDNldHhfcHRyIFxcdTAwM2U9ICgoVFhfTUFYX0JVUlNUIC0gMSkgKiAoUEtUX1NaICsgMikpKSlcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTQ0OC1cXHRcXHRuZXRpZl9zdG9wX3F1ZXVlKG5ldGRldik7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy00NDktXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo0NTA6XFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2Y2F0Yy1cXHUwMDNldHhfbG9jaywgZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNDUxLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNDUyLVxcdGlmIChyIFxcdTAwM2U9IDApIHtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjQ1MzpcXHRcXHRjYXRjLVxcdTAwM2VuZXRkZXYtXFx1MDAzZXN0YXRzLnR4X2J5dGVzICs9IHNrYi1cXHUwMDNlbGVuO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NDU0OlxcdFxcdGNhdGMtXFx1MDAzZW5ldGRldi1cXHUwMDNlc3RhdHMudHhfcGFja2V0cysrO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNDU1LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNDYxLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NDYyOnN0YXRpYyB2b2lkIGNhdGNfdHhfdGltZW91dChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCB1bnNpZ25lZCBpbnQgdHhxdWV1ZSlcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTQ2My17XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo0NjQ6XFx0c3RydWN0IGNhdGMgKmNhdGMgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNDY1LVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNDY2LVxcdGRldl93YXJuKFxcdTAwMjZuZXRkZXYtXFx1MDAzZWRldiwgXFxcIlRyYW5zbWl0IHRpbWVkIG91dC5cXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NDY3OlxcdHVzYl91bmxpbmtfdXJiKGNhdGMtXFx1MDAzZXR4X3VyYik7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy00NjgtfVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy00NzMtXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo0NzQ6c3RhdGljIGludCBjYXRjX2N0cmxfbXNnKHN0cnVjdCBjYXRjICpjYXRjLCB1OCBkaXIsIHU4IHJlcXVlc3QsIHUxNiB2YWx1ZSwgdTE2IGluZGV4LCB2b2lkICpidWYsIGludCBsZW4pXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy00NzUte1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NDc2OiAgICAgICAgaW50IHJldHZhbCA9IHVzYl9jb250cm9sX21zZyhjYXRjLVxcdTAwM2V1c2JkZXYsXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo0Nzc6XFx0XFx0ZGlyID8gdXNiX3JjdmN0cmxwaXBlKGNhdGMtXFx1MDAzZXVzYmRldiwgMCkgOiB1c2Jfc25kY3RybHBpcGUoY2F0Yy1cXHUwMDNldXNiZGV2LCAwKSxcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTQ3OC1cXHRcXHQgcmVxdWVzdCwgMHg0MCB8IGRpciwgdmFsdWUsIGluZGV4LCBidWYsIGxlbiwgMTAwMCk7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTQ4MS1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjQ4MjpzdGF0aWMgdm9pZCBjYXRjX2N0cmxfcnVuKHN0cnVjdCBjYXRjICpjYXRjKVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNDgzLXtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjQ4NDpcXHRzdHJ1Y3QgY3RybF9xdWV1ZSAqcSA9IGNhdGMtXFx1MDAzZWN0cmxfcXVldWUgKyBjYXRjLVxcdTAwM2VjdHJsX3RhaWw7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo0ODU6XFx0c3RydWN0IHVzYl9kZXZpY2UgKnVzYmRldiA9IGNhdGMtXFx1MDAzZXVzYmRldjtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjQ4NjpcXHRzdHJ1Y3QgdXJiICp1cmIgPSBjYXRjLVxcdTAwM2VjdHJsX3VyYjtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjQ4NzpcXHRzdHJ1Y3QgdXNiX2N0cmxyZXF1ZXN0ICpkciA9IFxcdTAwMjZjYXRjLVxcdTAwM2VjdHJsX2RyO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNDg4LVxcdGludCBzdGF0dXM7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTQ5Ny1cXHR1cmItXFx1MDAzZXRyYW5zZmVyX2J1ZmZlcl9sZW5ndGggPSBxLVxcdTAwM2VsZW47XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo0OTg6XFx0dXJiLVxcdTAwM2V0cmFuc2Zlcl9idWZmZXIgPSBjYXRjLVxcdTAwM2VjdHJsX2J1ZjtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTQ5OS1cXHR1cmItXFx1MDAzZXNldHVwX3BhY2tldCA9ICh2b2lkICopIGRyO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy01MDItXFx0aWYgKCFxLVxcdTAwM2VkaXIgXFx1MDAyNlxcdTAwMjYgcS1cXHUwMDNlYnVmIFxcdTAwMjZcXHUwMDI2IHEtXFx1MDAzZWxlbilcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjUwMzpcXHRcXHRtZW1jcHkoY2F0Yy1cXHUwMDNlY3RybF9idWYsIHEtXFx1MDAzZWJ1ZiwgcS1cXHUwMDNlbGVuKTtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTUwNC1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjUwNTpcXHRpZiAoKHN0YXR1cyA9IHVzYl9zdWJtaXRfdXJiKGNhdGMtXFx1MDAzZWN0cmxfdXJiLCBHRlBfQVRPTUlDKSkpXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo1MDY6XFx0XFx0ZGV2X2VycihcXHUwMDI2Y2F0Yy1cXHUwMDNldXNiZGV2LVxcdTAwM2VkZXYsIFxcXCJzdWJtaXQoY3RybF91cmIpIHN0YXR1cyAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTUwNy1cXHRcXHRcXHRzdGF0dXMpO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy01MDktXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo1MTA6c3RhdGljIHZvaWQgY2F0Y19jdHJsX2RvbmUoc3RydWN0IHVyYiAqdXJiKVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNTExLXtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjUxMjpcXHRzdHJ1Y3QgY2F0YyAqY2F0YyA9IHVyYi1cXHUwMDNlY29udGV4dDtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTUxMy1cXHRzdHJ1Y3QgY3RybF9xdWV1ZSAqcTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNTIwLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NTIxOlxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZjYXRjLVxcdTAwM2VjdHJsX2xvY2ssIGZsYWdzKTtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTUyMi1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjUyMzpcXHRxID0gY2F0Yy1cXHUwMDNlY3RybF9xdWV1ZSArIGNhdGMtXFx1MDAzZWN0cmxfdGFpbDtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTUyNC1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNTI2LVxcdFxcdGlmIChxLVxcdTAwM2VidWYgXFx1MDAyNlxcdTAwMjYgcS1cXHUwMDNlbGVuKVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NTI3OlxcdFxcdFxcdG1lbWNweShxLVxcdTAwM2VidWYsIGNhdGMtXFx1MDAzZWN0cmxfYnVmLCBxLVxcdTAwM2VsZW4pO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNTI4LVxcdFxcdGVsc2VcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjUyOTpcXHRcXHRcXHRxLVxcdTAwM2VidWYgPSBjYXRjLVxcdTAwM2VjdHJsX2J1ZjtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTUzMC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTUzMi1cXHRpZiAocS1cXHUwMDNlY2FsbGJhY2spXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo1MzM6XFx0XFx0cS1cXHUwMDNlY2FsbGJhY2soY2F0YywgcSk7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy01MzQtXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo1MzU6XFx0Y2F0Yy1cXHUwMDNlY3RybF90YWlsID0gKGNhdGMtXFx1MDAzZWN0cmxfdGFpbCArIDEpIFxcdTAwMjYgKENUUkxfUVVFVUUgLSAxKTtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTUzNi1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjUzNzpcXHRpZiAoY2F0Yy1cXHUwMDNlY3RybF9oZWFkICE9IGNhdGMtXFx1MDAzZWN0cmxfdGFpbClcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjUzODpcXHRcXHRjYXRjX2N0cmxfcnVuKGNhdGMpO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNTM5LVxcdGVsc2VcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjU0MDpcXHRcXHRjbGVhcl9iaXQoQ1RSTF9SVU5OSU5HLCBcXHUwMDI2Y2F0Yy1cXHUwMDNlZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNTQxLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NTQyOlxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNmNhdGMtXFx1MDAzZWN0cmxfbG9jaywgZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNTQzLX1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTU0NC1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjU0NTpzdGF0aWMgaW50IGNhdGNfY3RybF9hc3luYyhzdHJ1Y3QgY2F0YyAqY2F0YywgdTggZGlyLCB1OCByZXF1ZXN0LCB1MTYgdmFsdWUsXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo1NDY6XFx0dTE2IGluZGV4LCB2b2lkICpidWYsIGludCBsZW4sIHZvaWQgKCpjYWxsYmFjaykoc3RydWN0IGNhdGMgKmNhdGMsIHN0cnVjdCBjdHJsX3F1ZXVlICpxKSlcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTU0Ny17XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTU1MS1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjU1MjpcXHRzcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2Y2F0Yy1cXHUwMDNlY3RybF9sb2NrLCBmbGFncyk7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy01NTMtXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo1NTQ6XFx0cSA9IGNhdGMtXFx1MDAzZWN0cmxfcXVldWUgKyBjYXRjLVxcdTAwM2VjdHJsX2hlYWQ7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy01NTUtXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTU2My1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjU2NDpcXHRjYXRjLVxcdTAwM2VjdHJsX2hlYWQgPSAoY2F0Yy1cXHUwMDNlY3RybF9oZWFkICsgMSkgXFx1MDAyNiAoQ1RSTF9RVUVVRSAtIDEpO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNTY1LVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NTY2OlxcdGlmIChjYXRjLVxcdTAwM2VjdHJsX2hlYWQgPT0gY2F0Yy1cXHUwMDNlY3RybF90YWlsKSB7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo1Njc6XFx0XFx0ZGV2X2VycihcXHUwMDI2Y2F0Yy1cXHUwMDNldXNiZGV2LVxcdTAwM2VkZXYsIFxcXCJjdHJsIHF1ZXVlIGZ1bGxcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NTY4OlxcdFxcdGNhdGMtXFx1MDAzZWN0cmxfdGFpbCA9IChjYXRjLVxcdTAwM2VjdHJsX3RhaWwgKyAxKSBcXHUwMDI2IChDVFJMX1FVRVVFIC0gMSk7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy01NjktXFx0XFx0cmV0dmFsID0gLTE7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTU3MS1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjU3MjpcXHRpZiAoIXRlc3RfYW5kX3NldF9iaXQoQ1RSTF9SVU5OSU5HLCBcXHUwMDI2Y2F0Yy1cXHUwMDNlZmxhZ3MpKVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NTczOlxcdFxcdGNhdGNfY3RybF9ydW4oY2F0Yyk7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy01NzQtXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo1NzU6XFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2Y2F0Yy1cXHUwMDNlY3RybF9sb2NrLCBmbGFncyk7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy01NzYtXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTU4My1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjU4NDpzdGF0aWMgdm9pZCBjYXRjX3N0YXRzX2RvbmUoc3RydWN0IGNhdGMgKmNhdGMsIHN0cnVjdCBjdHJsX3F1ZXVlICpxKVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNTg1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNTg4LVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NTg5OlxcdGNhdGMtXFx1MDAzZXN0YXRzX2J1ZltpbmRleF0gPSAqKChjaGFyICopcS1cXHUwMDNlYnVmKTtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTU5MC1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNTkzLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NTk0OlxcdGRhdGEgPSAoKHUxNiljYXRjLVxcdTAwM2VzdGF0c19idWZbaW5kZXhdIFxcdTAwM2NcXHUwMDNjIDgpIHwgY2F0Yy1cXHUwMDNlc3RhdHNfYnVmW2luZGV4ICsgMV07XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo1OTU6XFx0bGFzdCA9IGNhdGMtXFx1MDAzZXN0YXRzX3ZhbHNbaW5kZXggXFx1MDAzZVxcdTAwM2UgMV07XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy01OTYtXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTU5OS1cXHRcXHRjYXNlIFR4TXVsdGlDb2xsOlxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NjAwOlxcdFxcdFxcdGNhdGMtXFx1MDAzZW5ldGRldi1cXHUwMDNlc3RhdHMuY29sbGlzaW9ucyArPSBkYXRhIC0gbGFzdDtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTYwMS1cXHRcXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTYwMi1cXHRcXHRjYXNlIFR4RXhjZXNzQ29sbDpcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjYwMzpcXHRcXHRcXHRjYXRjLVxcdTAwM2VuZXRkZXYtXFx1MDAzZXN0YXRzLnR4X2Fib3J0ZWRfZXJyb3JzICs9IGRhdGEgLSBsYXN0O1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NjA0OlxcdFxcdFxcdGNhdGMtXFx1MDAzZW5ldGRldi1cXHUwMDNlc3RhdHMudHhfZXJyb3JzICs9IGRhdGEgLSBsYXN0O1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNjA1LVxcdFxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNjA2LVxcdFxcdGNhc2UgUnhGcmFtRXJyOlxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NjA3OlxcdFxcdFxcdGNhdGMtXFx1MDAzZW5ldGRldi1cXHUwMDNlc3RhdHMucnhfZnJhbWVfZXJyb3JzICs9IGRhdGEgLSBsYXN0O1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NjA4OlxcdFxcdFxcdGNhdGMtXFx1MDAzZW5ldGRldi1cXHUwMDNlc3RhdHMucnhfZXJyb3JzICs9IGRhdGEgLSBsYXN0O1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNjA5LVxcdFxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02MTEtXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo2MTI6XFx0Y2F0Yy1cXHUwMDNlc3RhdHNfdmFsc1tpbmRleCBcXHUwMDNlXFx1MDAzZSAxXSA9IGRhdGE7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02MTMtfVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNjE0LVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NjE1OnN0YXRpYyB2b2lkIGNhdGNfc3RhdHNfdGltZXIoc3RydWN0IHRpbWVyX2xpc3QgKnQpXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02MTYte1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NjE3OlxcdHN0cnVjdCBjYXRjICpjYXRjID0gdGltZXJfY29udGFpbmVyX29mKGNhdGMsIHQsIHRpbWVyKTtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTYxOC1cXHRpbnQgaTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNjIwLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyA4OyBpKyspXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo2MjE6XFx0XFx0Y2F0Y19nZXRfcmVnX2FzeW5jKGNhdGMsIEV0aFN0YXRzICsgNyAtIGksIGNhdGNfc3RhdHNfZG9uZSk7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02MjItXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo2MjM6XFx0bW9kX3RpbWVyKFxcdTAwMjZjYXRjLVxcdTAwM2V0aW1lciwgamlmZmllcyArIFNUQVRTX1VQREFURSk7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02MjQtfVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02MjktXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo2MzA6c3RhdGljIHZvaWQgY2F0Y19tdWx0aWNhc3QoY29uc3QgdW5zaWduZWQgY2hhciAqYWRkciwgdTggKm11bHRpY2FzdClcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTYzMS17XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTYzNy1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjYzODpzdGF0aWMgdm9pZCBjYXRjX3NldF9tdWx0aWNhc3RfbGlzdChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNjM5LXtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjY0MDpcXHRzdHJ1Y3QgY2F0YyAqY2F0YyA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02NDEtXFx0c3RydWN0IG5ldGRldl9od19hZGRyICpoYTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNjQ1LVxcdGV0aF9icm9hZGNhc3RfYWRkcihicm9hZGNhc3QpO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NjQ2OlxcdG1lbXNldChjYXRjLVxcdTAwM2VtdWx0aWNhc3QsIDAsIDY0KTtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTY0Ny1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjY0ODpcXHRjYXRjX211bHRpY2FzdChicm9hZGNhc3QsIGNhdGMtXFx1MDAzZW11bHRpY2FzdCk7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo2NDk6XFx0Y2F0Y19tdWx0aWNhc3QobmV0ZGV2LVxcdTAwM2VkZXZfYWRkciwgY2F0Yy1cXHUwMDNlbXVsdGljYXN0KTtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTY1MC1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTY1MS1cXHRpZiAobmV0ZGV2LVxcdTAwM2VmbGFncyBcXHUwMDI2IElGRl9QUk9NSVNDKSB7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo2NTI6XFx0XFx0bWVtc2V0KGNhdGMtXFx1MDAzZW11bHRpY2FzdCwgMHhmZiwgNjQpO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NjUzOlxcdFxcdHJ4IHw9ICghY2F0Yy1cXHUwMDNlaXNfZjV1MDExKSA/IFJ4UHJvbWlzYyA6IEFsdFJ4UHJvbWlzYztcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTY1NC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTY1Ni1cXHRpZiAobmV0ZGV2LVxcdTAwM2VmbGFncyBcXHUwMDI2IElGRl9BTExNVUxUSSkge1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NjU3OlxcdFxcdG1lbXNldChjYXRjLVxcdTAwM2VtdWx0aWNhc3QsIDB4ZmYsIDY0KTtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTY1OC1cXHR9IGVsc2Uge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02NjAtXFx0XFx0XFx0dTMyIGNyYyA9IGV0aGVyX2NyY19sZSg2LCBoYS1cXHUwMDNlYWRkcik7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo2NjE6XFx0XFx0XFx0aWYgKCFjYXRjLVxcdTAwM2Vpc19mNXUwMTEpIHtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjY2MjpcXHRcXHRcXHRcXHRjYXRjLVxcdTAwM2VtdWx0aWNhc3RbKGNyYyBcXHUwMDNlXFx1MDAzZSAzKSBcXHUwMDI2IDB4M2ZdIHw9IDEgXFx1MDAzY1xcdTAwM2MgKGNyYyBcXHUwMDI2IDcpO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNjYzLVxcdFxcdFxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo2NjQ6XFx0XFx0XFx0XFx0Y2F0Yy1cXHUwMDNlbXVsdGljYXN0WzctKGNyYyBcXHUwMDNlXFx1MDAzZSAyOSldIHw9IDEgXFx1MDAzY1xcdTAwM2MgKChjcmMgXFx1MDAzZVxcdTAwM2UgMjYpIFxcdTAwMjYgNyk7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02NjUtXFx0XFx0XFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02NjctXFx0fVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NjY4OlxcdGlmICghY2F0Yy1cXHUwMDNlaXNfZjV1MDExKSB7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo2Njk6XFx0XFx0Y2F0Y19zZXRfcmVnX2FzeW5jKGNhdGMsIFJ4VW5pdCwgcngpO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NjcwOlxcdFxcdGNhdGNfd3JpdGVfbWVtX2FzeW5jKGNhdGMsIDB4ZmE4MCwgY2F0Yy1cXHUwMDNlbXVsdGljYXN0LCA2NCk7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02NzEtXFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjY3MjpcXHRcXHRmNXUwMTFfbWNoYXNoX2FzeW5jKGNhdGMsIGNhdGMtXFx1MDAzZW11bHRpY2FzdCk7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo2NzM6XFx0XFx0aWYgKGNhdGMtXFx1MDAzZXJ4bW9kZVswXSAhPSByeCkge1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6Njc0OlxcdFxcdFxcdGNhdGMtXFx1MDAzZXJ4bW9kZVswXSA9IHJ4O1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6Njc1OlxcdFxcdFxcdG5ldGRldl9kYmcoY2F0Yy1cXHUwMDNlbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNjc2LVxcdFxcdFxcdFxcdCAgIFxcXCJTZXR0aW5nIFJYIG1vZGUgdG8gJTIuMlggJTIuMlhcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo2Nzc6XFx0XFx0XFx0XFx0ICAgY2F0Yy1cXHUwMDNlcnhtb2RlWzBdLCBjYXRjLVxcdTAwM2VyeG1vZGVbMV0pO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6Njc4OlxcdFxcdFxcdGY1dTAxMV9yeG1vZGVfYXN5bmMoY2F0YywgY2F0Yy1cXHUwMDNlcnhtb2RlKTtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTY3OS1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTY4Mi1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjY4MzpzdGF0aWMgdm9pZCBjYXRjX2dldF9kcnZpbmZvKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02ODQtXFx0XFx0XFx0ICAgICBzdHJ1Y3QgZXRodG9vbF9kcnZpbmZvICppbmZvKVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNjg1LXtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjY4NjpcXHRzdHJ1Y3QgY2F0YyAqY2F0YyA9IG5ldGRldl9wcml2KGRldik7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02ODctXFx0c3Ryc2NweShpbmZvLVxcdTAwM2Vkcml2ZXIsIGRyaXZlcl9uYW1lLCBzaXplb2YoaW5mby1cXHUwMDNlZHJpdmVyKSk7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo2ODg6XFx0dXNiX21ha2VfcGF0aChjYXRjLVxcdTAwM2V1c2JkZXYsIGluZm8tXFx1MDAzZWJ1c19pbmZvLCBzaXplb2YoaW5mby1cXHUwMDNlYnVzX2luZm8pKTtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTY4OS19XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02OTAtXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo2OTE6c3RhdGljIGludCBjYXRjX2dldF9saW5rX2tzZXR0aW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNjkyLVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBldGh0b29sX2xpbmtfa3NldHRpbmdzICpjbWQpXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02OTMte1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6Njk0OlxcdHN0cnVjdCBjYXRjICpjYXRjID0gbmV0ZGV2X3ByaXYoZGV2KTtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjY5NTpcXHRpZiAoIWNhdGMtXFx1MDAzZWlzX2Y1dTAxMSlcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTY5Ni1cXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jPTcxNT1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIG9wcyA9IHtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjcxNjpcXHQuZ2V0X2RydmluZm8gPSBjYXRjX2dldF9kcnZpbmZvLFxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNzE3LVxcdC5nZXRfbGluayA9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo3MTg6XFx0LmdldF9saW5rX2tzZXR0aW5ncyA9IGNhdGNfZ2V0X2xpbmtfa3NldHRpbmdzLFxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNzE5LX07XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTcyNC1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjcyNTpzdGF0aWMgaW50IGNhdGNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNzI2LXtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjcyNzpcXHRzdHJ1Y3QgY2F0YyAqY2F0YyA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy03MjgtXFx0aW50IHN0YXR1cztcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTcyOS1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjczMDpcXHRjYXRjLVxcdTAwM2VpcnFfdXJiLVxcdTAwM2VkZXYgPSBjYXRjLVxcdTAwM2V1c2JkZXY7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo3MzE6XFx0aWYgKChzdGF0dXMgPSB1c2Jfc3VibWl0X3VyYihjYXRjLVxcdTAwM2VpcnFfdXJiLCBHRlBfS0VSTkVMKSkgXFx1MDAzYyAwKSB7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo3MzI6XFx0XFx0ZGV2X2VycihcXHUwMDI2Y2F0Yy1cXHUwMDNldXNiZGV2LVxcdTAwM2VkZXYsIFxcXCJzdWJtaXQoaXJxX3VyYikgc3RhdHVzICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNzMzLVxcdFxcdFxcdHN0YXR1cyk7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTczOC1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjczOTpcXHRpZiAoIWNhdGMtXFx1MDAzZWlzX2Y1dTAxMSlcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjc0MDpcXHRcXHRtb2RfdGltZXIoXFx1MDAyNmNhdGMtXFx1MDAzZXRpbWVyLCBqaWZmaWVzICsgU1RBVFNfVVBEQVRFKTtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTc0MS1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNzQ0LVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NzQ1OnN0YXRpYyBpbnQgY2F0Y19zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy03NDYte1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NzQ3OlxcdHN0cnVjdCBjYXRjICpjYXRjID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTc0OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNzUwLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NzUxOlxcdGlmICghY2F0Yy1cXHUwMDNlaXNfZjV1MDExKVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NzUyOlxcdFxcdHRpbWVyX2RlbGV0ZV9zeW5jKFxcdTAwMjZjYXRjLVxcdTAwM2V0aW1lcik7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy03NTMtXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo3NTQ6XFx0dXNiX2tpbGxfdXJiKGNhdGMtXFx1MDAzZXJ4X3VyYik7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo3NTU6XFx0dXNiX2tpbGxfdXJiKGNhdGMtXFx1MDAzZXR4X3VyYik7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo3NTY6XFx0dXNiX2tpbGxfdXJiKGNhdGMtXFx1MDAzZWlycV91cmIpO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NzU3OlxcdHVzYl9raWxsX3VyYihjYXRjLVxcdTAwM2VjdHJsX3VyYik7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy03NTgtXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTc2MS1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjc2MjpzdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGNhdGNfbmV0ZGV2X29wcyA9IHtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjc2MzpcXHQubmRvX29wZW5cXHRcXHQ9IGNhdGNfb3BlbixcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjc2NDpcXHQubmRvX3N0b3BcXHRcXHQ9IGNhdGNfc3RvcCxcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjc2NTpcXHQubmRvX3N0YXJ0X3htaXRcXHRcXHQ9IGNhdGNfc3RhcnRfeG1pdCxcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTc2Ni1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjc2NzpcXHQubmRvX3R4X3RpbWVvdXRcXHRcXHQ9IGNhdGNfdHhfdGltZW91dCxcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjc2ODpcXHQubmRvX3NldF9yeF9tb2RlXFx0PSBjYXRjX3NldF9tdWx0aWNhc3RfbGlzdCxcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTc2OS1cXHQubmRvX3NldF9tYWNfYWRkcmVzcyBcXHQ9IGV0aF9tYWNfYWRkcixcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNzc2LVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6Nzc3OnN0YXRpYyBpbnQgY2F0Y19wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNzc4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNzgxLVxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo3ODI6XFx0c3RydWN0IGNhdGMgKmNhdGM7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy03ODMtXFx0dTggYnJvYWRjYXN0W0VUSF9BTEVOXTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtODEyLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6ODEzOlxcdG5ldGRldiA9IGFsbG9jX2V0aGVyZGV2KHNpemVvZihzdHJ1Y3QgY2F0YykpO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtODE0LVxcdGlmICghbmV0ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy04MTYtXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo4MTc6XFx0Y2F0YyA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy04MTgtXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo4MTk6XFx0bmV0ZGV2LVxcdTAwM2VuZXRkZXZfb3BzID0gXFx1MDAyNmNhdGNfbmV0ZGV2X29wcztcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTgyMC1cXHRuZXRkZXYtXFx1MDAzZXdhdGNoZG9nX3RpbWVvID0gVFhfVElNRU9VVDtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtODIyLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6ODIzOlxcdGNhdGMtXFx1MDAzZXVzYmRldiA9IHVzYmRldjtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjgyNDpcXHRjYXRjLVxcdTAwM2VuZXRkZXYgPSBuZXRkZXY7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy04MjUtXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo4MjY6XFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNmNhdGMtXFx1MDAzZXR4X2xvY2spO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6ODI3OlxcdHNwaW5fbG9ja19pbml0KFxcdTAwMjZjYXRjLVxcdTAwM2VjdHJsX2xvY2spO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtODI4LVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6ODI5OlxcdHRpbWVyX3NldHVwKFxcdTAwMjZjYXRjLVxcdTAwM2V0aW1lciwgY2F0Y19zdGF0c190aW1lciwgMCk7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy04MzAtXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo4MzE6XFx0Y2F0Yy1cXHUwMDNlY3RybF91cmIgPSB1c2JfYWxsb2NfdXJiKDAsIEdGUF9LRVJORUwpO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6ODMyOlxcdGNhdGMtXFx1MDAzZXR4X3VyYiA9IHVzYl9hbGxvY191cmIoMCwgR0ZQX0tFUk5FTCk7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo4MzM6XFx0Y2F0Yy1cXHUwMDNlcnhfdXJiID0gdXNiX2FsbG9jX3VyYigwLCBHRlBfS0VSTkVMKTtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjgzNDpcXHRjYXRjLVxcdTAwM2VpcnFfdXJiID0gdXNiX2FsbG9jX3VyYigwLCBHRlBfS0VSTkVMKTtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjgzNTpcXHRpZiAoKCFjYXRjLVxcdTAwM2VjdHJsX3VyYikgfHwgKCFjYXRjLVxcdTAwM2V0eF91cmIpIHx8XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo4MzY6XFx0ICAgICghY2F0Yy1cXHUwMDNlcnhfdXJiKSB8fCAoIWNhdGMtXFx1MDAzZWlycV91cmIpKSB7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy04MzctXFx0XFx0ZGV2X2VycihcXHUwMDI2aW50Zi1cXHUwMDNlZGV2LCBcXFwiTm8gZnJlZSB1cmJzIGF2YWlsYWJsZS5cXFxcblxcXCIpO1xcbi0tXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDExOjI2OjEyLjQ4MjMwMDcwMloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI2MjA1MDkzODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgaW1tZWRpYXRlIHRob3VnaHQgcHJvY2VzcywgZm9jdXNpbmcgb24gd2hhdCBJJ2QgYmUgZG9pbmcgYW5kIHdoeSwgZ2l2ZW4gdGhlIGNvbnRleHQ6XG5cbioqSW52ZXN0aWdhdGluZyBVU0JfQ0FUQyBpbiB0aGUgS2VybmVsIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyB3ZSdyZSBsb29raW5nIGF0IHNvbWV0aGluZyByZWxhdGVkIHRvIGBVU0JfQ0FUQ2AuIE15IGluaXRpYWwgcmVhY3Rpb24gaXMgdG8gaGVhZCBzdHJhaWdodCB0byB0aGUgc291cmNlLCB0aGUgYEtjb25maWdgIGZpbGUgZm9yIFVTQiBuZXR3b3JraW5nIGRyaXZlcnMsIHNwZWNpZmljYWxseSBgZHJpdmVycy9uZXQvdXNiL0tjb25maWdgLiBUaGlzIGlzIHdoZXJlIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoYXQgYXJlYSBvZiB0aGUga2VybmVsIHdvdWxkIGJlIGRlZmluZWQuIEknbSBnb2luZyB0byBsb29rIGZvciB0aGUgZGVmaW5pdGlvbiBvZiBgVVNCX0NBVENgIGl0c2VsZiwgd2hpY2ggbGlrZWx5IG1lYW5zIGNoZWNraW5nIHRoZSBzeW1ib2wgbmFtZS4gSSdsbCBiZSBsb29raW5nIGZvciBpdHMgZGVwZW5kZW5jaWVzLCB0aGUgaGVscCB0ZXh0IGFzc29jaWF0ZWQgd2l0aCBpdCwgYW5kIHBvc3NpYmx5IGFueSBhc3NvY2lhdGVkIGRlZmF1bHQgc2V0dGluZ3MuIFRoZSBgS2NvbmZpZ2AgZmlsZSBpcyB0aGUgZ28tdG8gcGxhY2UgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoYXQgb3B0aW9uIGZpdHMgaW50byB0aGUgbGFyZ2VyIHBpY3R1cmUgb2YgVVNCIG5ldHdvcmtpbmcgc3VwcG9ydCBpbiB0aGUga2VybmVsLiBJIGV4cGVjdCBpdCB0byBnaXZlIG1lIGNsdWVzIGFib3V0IHdoYXQgQ0FUQyBpcywgd2hhdCBpdHMgcG90ZW50aWFsIGhhcmR3YXJlIHJlcXVpcmVtZW50cyBtaWdodCBiZSwgaG93IGl0IGludGVyYWN0cyB3aXRoIG90aGVyIFVTQiBuZXR3b3JraW5nIGZlYXR1cmVzLCBhbmQgd2hhdCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBpbXBsaWNhdGlvbnMgb2YgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIGl0IG1pZ2h0IGJlLiBUaGlzIGluZm9ybWF0aW9uIGlzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIHJvbGUgYW5kIHJlbGV2YW5jZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc0OTgsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QxMToyNjoxNS4xMDI4MTMzODFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcxOTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3VzYi9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIFVTQiBOZXR3b3JrIGRldmljZXMgY29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0Y29tbWVudCBcXFwiSG9zdC1zaWRlIFVTQiBzdXBwb3J0IGlzIG5lZWRlZCBmb3IgVVNCIE5ldHdvcmsgQWRhcHRlciBzdXBwb3J0XFxcIlxcbiAgIDY6XFx0XFx0ZGVwZW5kcyBvbiAhVVNCIFxcdTAwMjZcXHUwMDI2IE5FVFxcbiAgIDc6XFx0XFxuICAgODpcXHRtZW51Y29uZmlnIFVTQl9ORVRfRFJJVkVSU1xcbiAgIDk6XFx0XFx0dHJpc3RhdGUgXFxcIlVTQiBOZXR3b3JrIEFkYXB0ZXJzXFxcIlxcbiAgMTA6XFx0XFx0ZGVmYXVsdCBVU0IgaWYgVVNCXFxuICAxMTpcXHRcXHRkZXBlbmRzIG9uIFVTQiBcXHUwMDI2XFx1MDAyNiBORVRcXG4gIDEyOlxcdFxcbiAgMTM6XFx0aWYgVVNCX05FVF9EUklWRVJTXFxuICAxNDpcXHRcXG4gIDE1OlxcdGNvbmZpZyBVU0JfQ0FUQ1xcbiAgMTY6XFx0XFx0dHJpc3RhdGUgXFxcIlVTQiBDQVRDIE5ldE1hdGUtYmFzZWQgRXRoZXJuZXQgZGV2aWNlIHN1cHBvcnRcXFwiXFxuICAxNzpcXHRcXHRzZWxlY3QgQ1JDMzJcXG4gIDE4OlxcdFxcdGhlbHBcXG4gIDE5OlxcdFxcdCAgU2F5IFkgaWYgeW91IHdhbnQgdG8gdXNlIG9uZSBvZiB0aGUgZm9sbG93aW5nIDEwTWJwcyBVU0IgRXRoZXJuZXRcXG4gIDIwOlxcdFxcdCAgZGV2aWNlIGJhc2VkIG9uIHRoZSBFTDEyMTBBIGNoaXAuIFN1cHBvcnRlZCBkZXZpY2VzIGFyZTpcXG4gIDIxOlxcdFxcdCAgQmVsa2luIEY1VTAxMVxcbiAgMjI6XFx0XFx0ICBCZWxraW4gRjVVMTExXFxuICAyMzpcXHRcXHQgIENBVEMgTmV0TWF0ZVxcbiAgMjQ6XFx0XFx0ICBDQVRDIE5ldE1hdGUgSUlcXG4gIDI1OlxcdFxcdCAgc21hcnRCcmlkZ2VzIHNtYXJ0TklDXFxuICAyNjpcXHRcXG4gIDI3OlxcdFxcdCAgVGhpcyBkcml2ZXIgbWFrZXMgdGhlIGFkYXB0ZXIgYXBwZWFyIGFzIGEgbm9ybWFsIEV0aGVybmV0IGludGVyZmFjZSxcXG4gIDI4OlxcdFxcdCAgdHlwaWNhbGx5IG9uIGV0aDAsIGlmIGl0IGlzIHRoZSBvbmx5IGV0aGVybmV0IGRldmljZSwgb3IgcGVyaGFwcyBvblxcbiAgMjk6XFx0XFx0ICBldGgxLCBpZiB5b3UgaGF2ZSBhIFBDSSBvciBJU0EgZXRoZXJuZXQgY2FyZCBpbnN0YWxsZWQuXFxuICAzMDpcXHRcXG4gIDMxOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXFxuICAzMjpcXHRcXHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBjYXRjLlxcbiAgMzM6XFx0XFxuICAzNDpcXHRjb25maWcgVVNCX0tBV0VUSFxcbiAgMzU6XFx0XFx0dHJpc3RhdGUgXFxcIlVTQiBLTFNJIEtMNVVTQjEwMS1iYXNlZCBldGhlcm5ldCBkZXZpY2Ugc3VwcG9ydFxcXCJcXG4gIDM2OlxcdFxcdGhlbHBcXG4gIDM3OlxcdFxcdCAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byB1c2Ugb25lIG9mIHRoZSBmb2xsb3dpbmcgMTBNYnBzIG9ubHlcXG4gIDM4OlxcdFxcdCAgVVNCIEV0aGVybmV0IGFkYXB0ZXJzIGJhc2VkIG9uIHRoZSBLTFNJIEtMNUtVU0IxMDFCIGNoaXBzZXQ6XFxuICAzOTpcXHRcXHQgIDNDb20gM0MxOTI1MFxcbiAgNDA6XFx0XFx0ICBBRFMgVVNCLTEwQlRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTE6MjY6MTUuMTAyOTg5NjUxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ5NDQ3NTMwNjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUmVjZW50IFBhdGNoIGluIHRoZSBDQVRDIFVTQiBEcml2ZXIqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCdzIGJlZW4gYXBwbGllZCB0byBgZHJpdmVycy9uZXQvdXNiL2NhdGMuY2AsIHNwZWNpZmljYWxseSB0aGUgYGNhdGNfcnhfZG9uZWAgZnVuY3Rpb24uIEkgc2VlIHRoZXkndmUgYWRkZWQgYSBjaGVjayB0byBoYW5kbGUgcG90ZW50aWFsIGlzc3VlcyB3aXRoIHBhY2tldCBsZW5ndGhzIHdoZW4gZGVhbGluZyB3aXRoIHRoaXMgVVNCIG5ldHdvcmsgaW50ZXJmYWNlLlxuXG5Fc3NlbnRpYWxseSwgdGhleSdyZSBub3cgY2FsY3VsYXRpbmcgdGhlIGByZW1haW5pbmdgIGJ5dGVzIGluIHRoZSB0cmFuc2ZlciBidWZmZXIgYWZ0ZXIgY29uc2lkZXJpbmcgdGhlIGBwa3Rfb2Zmc2V0YC4gIFRoZSBvcmlnaW5hbCBjaGVjaywgYGlmIChwa3RfbGVuIFx1MDAzZSB1cmItXHUwMDNlYWN0dWFsX2xlbmd0aClgLCBoYWQgYSBwb3RlbnRpYWwgZmxhdy4gIFRoaXMgbmV3IGNvZGUgYWRkcmVzc2VzIGEgbW9yZSBwcmVjaXNlIHZhbGlkYXRpb246IGBpZiAocGt0X2xlbiArIHBrdF9vZmZzZXQgXHUwMDNlIHJlbWFpbmluZylgLiBJZiB0aGUgcmVwb3J0ZWQgcGFja2V0IGxlbmd0aCwgcGx1cyB0aGUgb2Zmc2V0IHdpdGhpbiB0aGUgYnVmZmVyLCBleGNlZWRzIHRoZSBhdmFpbGFibGUgZGF0YSwgdGhleSdyZSBpbmNyZW1lbnRpbmcgdGhlIGByeF9sZW5ndGhfZXJyb3JzYCBhbmQgYHJ4X2Vycm9yc2AgY291bnRlcnMsIGFuZCBicmVha2luZyBvdXQgb2YgdGhlIHByb2Nlc3NpbmcgbG9vcC4gVGhpcyBpcyBzbWFydDsgaXQgYXZvaWRzIHBvdGVudGlhbGx5IHJlYWRpbmcgcGFzdCB0aGUgZW5kIG9mIHRoZSBidWZmZXIsIHdoaWNoIGNvdWxkIGxlYWQgdG8gYWxsIHNvcnRzIG9mIG5hc3R5IGNvbnNlcXVlbmNlcy5cblxuTXkgbmV4dCBsaW5lIG9mIHRob3VnaHQgaXMgYWx3YXlzIGFib3V0IHJlYWNoYWJpbGl0eSBhbmQgZnV6emluZy4gIENhbiB3ZSB0cmlnZ2VyIHRoaXMgY29kZSB3aXRoIGZ1enppbmc/IERlZmluaXRlbHkuICBVU0IgZHJpdmVycywgbGlrZSB0aGlzIG9uZSwgYXJlIHByaW1lIHRhcmdldHMgZm9yIFVTQiBmdXp6aW5nLCBhbmQgSSBrbm93IFN5emthbGxlciBpcyBhIGZhbnRhc3RpYyB0b29sIGZvciB0aGlzLiAgSXQgY2FuIGVtdWxhdGUgVVNCIGRldmljZXMsIGFuZCBiYXNlZCBvbiB0aGUgZGV2aWNlIElEcyBkZWZpbmVkIHdpdGhpbiB0aGUgYGNhdGNfaWRfdGFibGVgLCBpdCBjYW4gYmluZCB0aGUgYGNhdGNgIGRyaXZlciBhbmQgc2VuZCB0aGUgbmVjZXNzYXJ5IHBhY2tldHMuICBUaGlzIHdvdWxkIGludm9rZSBgY2F0Y19yeF9kb25lYCwgbWFraW5nIHRoZSBwYXRjaGVkIGNvZGUgcGF0aCBkaXJlY3RseSBhY2Nlc3NpYmxlLlxuXG5TbywgaW4gdGVybXMgb2YgY29uZmlndXJhdGlvbiwgd2UncmUgbG9va2luZyBhdCBgVVNCX0NBVENgLCBgVVNCX05FVF9EUklWRVJTYCwgYFVTQmAsIGFuZCBgTkVUYC4gVGhvc2UgYXJlIHRoZSBjb3JlIGNvbXBvbmVudHMgbmVlZGVkIHRvIGJ1aWxkIHRoaXMgZHJpdmVyIGFuZCBtYWtlIGl0IGZ1bmN0aW9uYWwuIEknbSBmb2N1c2luZyBvbiBgY2F0Y19yeF9kb25lYCBhcyB0aGUga2V5IHN5bWJvbC4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBsb2dpYyBvZiB0aGUgcGF0Y2ggbGl2ZXMuXG5cbkkgbmVlZCB0byBjb25maXJtIGlmIHRoZXJlIGFyZSBvdGhlciBmdW5jdGlvbnMgaW4gYGNhdGMuY2AgdGhhdCBjYWxsIGBjYXRjX3J4X2RvbmVgIG9yIGFyZSBwcm9iZWQgYW5kIGFsc28gd29ydGggcmV2aWV3aW5nLiBJJ2xsIG5lZWQgdG8gZG8gYSB0aG9yb3VnaCBpbnNwZWN0aW9uIG9mIHRoZSBgY2F0Yy5jYCBzb3VyY2UgY29kZSwgbG9va2luZyBmb3Igb3RoZXIgZnVuY3Rpb25zIGFuZCBzeW1ib2xzLiBHb3R0YSBtYWtlIHN1cmUgd2UndmUgZ290IHRoZSBmdWxsIHBpY3R1cmUgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgzNTYsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MTMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QxMToyNjoyMC4wNDc3NDc2MTVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQwMjM1NTUyMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjYXRjX3J4X2RvbmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdXNiL2NhdGMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC91c2IvY2F0Yy5jPTE1Mz1zdHJ1Y3QgY2F0YyB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTIxNS1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjIxNjpzdGF0aWMgdm9pZCBjYXRjX3J4X2RvbmUoc3RydWN0IHVyYiAqdXJiKVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMjE3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM9Nzc3PXN0YXRpYyBpbnQgY2F0Y19wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy04NjAtXFx0dXNiX2ZpbGxfYnVsa191cmIoY2F0Yy1cXHUwMDNlcnhfdXJiLCB1c2JkZXYsIHVzYl9yY3ZidWxrcGlwZSh1c2JkZXYsIENBVENfVVNCX0VQX0JVTEspLFxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6ODYxOlxcdFxcdFxcdCAgY2F0Yy1cXHUwMDNlcnhfYnVmLCBwa3RzeiwgY2F0Y19yeF9kb25lLCBjYXRjKTtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTg2Mi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTE6MjY6MjAuNDUwMTExMjA3WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU3NDczNTUwMTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIGBjYXRjX3J4X2RvbmVgIEZ1bmN0aW9uIGFuZCBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gRmlyc3QsIEkgbmVlZCB0byBjb25maXJtIHNvbWV0aGluZyBmdW5kYW1lbnRhbDogaXMgYGNhdGNfcnhfZG9uZWAganVzdCBhIHN0YXRpYyBmdW5jdGlvbiwgb3IgZG9lcyBpdCBoYXZlIGEgc3ltYm9sIEkgY2FuIGxldmVyYWdlPyBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQsIHdoaWxlIHN0YXRpYyBmdW5jdGlvbnMgKndpdGhpbiogYSBDIGZpbGUgZG8gaGF2ZSBzeW1ib2xzIGluIGB2bWxpbnV4YCwgdW5saWtlIHN0YXRpYyBpbmxpbmVzIHdpdGhpbiBoZWFkZXJzLCBJIG5lZWQgdG8gYmUgY2VydGFpbi4gU3BlY2lmaWNhbGx5LCB0aGlzIGBjYXRjX3J4X2RvbmVgIGZ1bmN0aW9uIGlzIHRoYXQgVVJCIGNvbXBsZXRpb24gaGFuZGxlciBmb3IgdGhlIFJYIGJ1bGsgVVJCLCBzbyBpdCdzIGNyaXRpY2FsIHRvIHVuZGVyc3RhbmQgaXRzIHZpc2liaWxpdHkgYW5kIGFueSBwb3RlbnRpYWwgc2NvcGUgZm9yIGludGVyYWN0aW9uLlxuXG5BbHJpZ2h0LCBzbyBgY2F0Y19yeF9kb25lYCBpcyB0aGUgcHJpbWFyeSBmb2N1cywgdGhlIG9uZSB0aGF0J3MgYmVlbiBwYXRjaGVkLiBIb3dldmVyLCB3aGlsZSBJJ20gaGVyZSwgSSB3YW50IHRvIHRha2UgYSBxdWljayBsb29rIGF0IG90aGVyIHBvdGVudGlhbGx5IHJlbGV2YW50IGZ1bmN0aW9ucyBpbiBgY2F0Yy5jYC4gSSBleHBlY3QgdG8gc2VlIHRoZSB1c3VhbCBzdXNwZWN0cyBsaWtlIGBjYXRjX3Byb2JlYCBhbG9uZ3NpZGUgYGNhdGNfcnhfZG9uZWAuIEJ1dCwgYWdhaW4sIG15IHBhdGNoLWFuYWx5c2lzIGxlbnMgaXMgZml4ZWQgb24gYGNhdGNfcnhfZG9uZWAuXG5cbk5vdywgdGhlIGNydWNpYWwgcGFydDogS2NvbmZpZyBkZXBlbmRlbmNpZXMuIFdoYXQgY29uZmlndXJhdGlvbnMgYXJlICpyZXF1aXJlZCogZm9yIHRoaXMgdG8gZXZlbiBjb21waWxlLCBtdWNoIGxlc3MgZnVuY3Rpb24gY29ycmVjdGx5PyBJbiBgZHJpdmVycy9uZXQvdXNiL0tjb25maWdgLCBJIGNhbiBzZWUgYSBjb3VwbGUgb2YgdGhpbmdzLCBhbmQgSSBoYXZlIHRvIG1ha2Ugc3VyZSB0aGV5IGFyZSBpbmNsdWRlZC5cblxuSSBjYW4gc2VlIHRoYXQgYFVTQl9ORVRfRFJJVkVSU2AgZGVwZW5kcyBvbiBgVVNCIFx1MDAyNlx1MDAyNiBORVRgLiBNYWtlcyBzZW5zZS4gVGhlbiBgVVNCX0NBVENgIGlzIGRlZmluZWQgYXMgYSB0cmlzdGF0ZSBvcHRpb24sIGVzc2VudGlhbGx5IFwiVVNCIENBVEMgTmV0TWF0ZS1iYXNlZCBFdGhlcm5ldCBkZXZpY2Ugc3VwcG9ydFwiLiBUaGUgYENSQzMyYCBrY29uZmlnIGFsc28gcmVxdWlyZXMgdG8gYmUgc2VsZWN0ZWQuIEltcG9ydGFudGx5LCBgVVNCX0NBVENgIGRlcGVuZHMgb24gYFVTQl9ORVRfRFJJVkVSU2AuXG5cblNvLCB0byBzdW1tYXJpemUsIHRoZSBjb25maWdzIG5lZWRlZCBhcmU6IGBVU0JfQ0FUQ2AsIGBVU0JfTkVUX0RSSVZFUlNgLCBgVVNCYCwgYW5kIGBORVRgLiBJJ2xsIGRvdWJsZS1jaGVjayB0aGF0IEkndmUgYWNjb3VudGVkIGZvciB0aGVzZSBkZXBlbmRlbmNpZXMgY29ycmVjdGx5LlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgdGhvcm91Z2gsIEknbSBnb2luZyB0byBxdWlja2x5IHNjYW4gdGhlIHdpZGVyIGBLY29uZmlnYCBhbmQgYE1ha2VmaWxlYCBzdHJ1Y3R1cmUsIHBhcnRpY3VsYXJseSBpbiB0aGUgYGRyaXZlcnMvbmV0YCBkaXJlY3RvcnksIHRvIGJlIGNlcnRhaW4gSSBoYXZlbid0IG1pc3NlZCBhbnkgaW5kaXJlY3QgZGVwZW5kZW5jaWVzIG9yIGJ1aWxkLXRpbWUgY29uc2lkZXJhdGlvbnMuIE5vIHN0b25lIGxlZnQgdW50dXJuZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5NjQ5LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzA1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDExOjI2OjI2LjE5NzQ2OTg1NFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUxMzgwMDQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlVTQl9DQVRDXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTEzPWlmIFVTQl9ORVRfRFJJVkVSU1xcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTE0LVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjE1OmNvbmZpZyBVU0JfQ0FUQ1xcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTE2LVxcdHRyaXN0YXRlIFxcXCJVU0IgQ0FUQyBOZXRNYXRlLWJhc2VkIEV0aGVybmV0IGRldmljZSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL01ha2VmaWxlLTUtXFxuZHJpdmVycy9uZXQvdXNiL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX1VTQl9DQVRDKVxcdFxcdCs9IGNhdGMub1xcbmRyaXZlcnMvbmV0L3VzYi9NYWtlZmlsZS03LW9iai0kKENPTkZJR19VU0JfS0FXRVRIKVxcdCs9IGthd2V0aC5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDExOjI2OjI2LjQ0ODg1NTkxOVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMzg2NTQyNDg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgTmV0d29yayBEcml2ZXIgTWFrZWZpbGUqKlxuXG5Pa2F5LCBzbyB0aGUgaW5pdGlhbCB0aG91Z2h0IGlzLCBcIkxldCdzIGNyYWNrIG9wZW4gdGhlIGBkcml2ZXJzL25ldC9NYWtlZmlsZWAuXCIgVGhhdCdzIGEgbmF0dXJhbCBzdGFydGluZyBwb2ludCB3aGVuIEknbSBkZWFsaW5nIHdpdGggbmV0d29yayBkcml2ZXIgY29kZS4gTXkgaW5zdGluY3QgaXMgYWx3YXlzIHRvIGNoZWNrIHRoZSBidWlsZCBzeXN0ZW0gZmlyc3QuIEknbSBwcm9iYWJseSBsb29raW5nIGZvciBhIGZldyBzcGVjaWZpYyB0aGluZ3MgcmlnaHQgb2ZmIHRoZSBiYXQuIEknbSB3b25kZXJpbmcgYWJvdXQgYnVpbGQgZGVwZW5kZW5jaWVzLCBvYnZpb3VzbHkuIFdoYXQgb3RoZXIga2VybmVsIGNvbXBvbmVudHMgb3IgbGlicmFyaWVzIGRvZXMgdGhpcyBwYXJ0aWN1bGFyIGRyaXZlciBuZWVkPyBBcmUgdGhlcmUgYW55IG1vZHVsZS1zcGVjaWZpYyBmbGFncyBvciBjb21waWxhdGlvbiB0YXJnZXRzIGRlZmluZWQ/IEknbSBob3BpbmcgSSBjYW4gZ2V0IGEgZGVjZW50IG92ZXJ2aWV3IG9mIHRoZSBkcml2ZXIncyBhcmNoaXRlY3R1cmUgYW5kIGhvdyBpdCBpbnRlZ3JhdGVzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIG5ldHdvcmtpbmcgc3RhY2sganVzdCBieSB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgYnVpbGQgcHJvY2VzcyBoYW5kbGVzIGl0LiBBcmUgdGhlcmUgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGVzIGJhc2VkIG9uIGtlcm5lbCB2ZXJzaW9ucywgaGFyZHdhcmUgY29uZmlndXJhdGlvbnMsIG9yIGZlYXR1cmVzPyBUaGF0J3MgZ29pbmcgdG8gYmUga2V5IHRvIGRlYnVnZ2luZyBhbnkgcG9ydGFiaWxpdHkgaXNzdWVzIGRvd24gdGhlIGxpbmUuIEknbSBhbHNvIGtlZXBpbmcgYW4gZXllIG91dCBmb3IgYW55IGN1c3RvbSBidWlsZCBydWxlcyBvciBtYWNyb3MgdGhhdCBtaWdodCBiZSBzcGVjaWZpYyB0byB0aGlzIGRyaXZlciBvciBpdHMgZmFtaWx5LiBLbm93aW5nIHRoZSBidWlsZCBzeXN0ZW0gaXMgbW9yZSB0aGFuIGhhbGYgdGhlIGJhdHRsZSwgcmVhbGx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDYyMSwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDExOjI2OjI4LjgzNTQwMjczM1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTU4MjQ0MzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidXNiXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L01ha2VmaWxlPTc4PW9iai0kKENPTkZJR19YRU5fTkVUREVWX0JBQ0tFTkQpICs9IHhlbi1uZXRiYWNrL1xcbmRyaXZlcnMvbmV0L01ha2VmaWxlLTc5LVxcbmRyaXZlcnMvbmV0L01ha2VmaWxlOjgwOm9iai0kKENPTkZJR19VU0JfTkVUX0RSSVZFUlMpICs9IHVzYi9cXG5kcml2ZXJzL25ldC9NYWtlZmlsZS04MS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTE6MjY6MjguODkxMjMxOTYyWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM4NDc1ODE3OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBUYXJnZXQgQXNzZXNzbWVudCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIGxvb2tpbmcgcHJvbWlzaW5nLiBXZSd2ZSBnb3QgYSB0YXJnZXQgcGF0Y2ggdGhhdCdzIGZsYWdnZWQgYXMgYFdvcnRoRnV6emluZzogdHJ1ZWAsIHdoaWNoIGlzIGFsd2F5cyBhIGdvb2Qgc3RhcnQuIEl0IG1vZGlmaWVzIHBhY2tldCBwYXJzaW5nIGFuZCBib3VuZGFyeSBjaGVja3Mgd2l0aGluIHRoZSBgY2F0Y19yeF9kb25lYCBmdW5jdGlvbi4gQ3J1Y2lhbGx5LCB0aGlzIHJlc2lkZXMgaW4gYSBVU0IgbmV0d29yayBkcml2ZXIgKGBVU0JfQ0FUQ2AgYW5kIGBVU0JfTkVUX0RSSVZFUlNgKSwgbWFraW5nIGl0IHJlYWNoYWJsZSBmb3IgZnV6emluZyB0aHJvdWdoIGVzdGFibGlzaGVkIG1ldGhvZHMg4oCTIFVTQiBlbXVsYXRpb24sIHJhdyBnYWRnZXQgc2NlbmFyaW9zLCBvciBldmVuIHN5emthbGxlcidzIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcy4gSSBzZWUgdGhhdCB0aGUgYEZvY3VzU3ltYm9sc2AgYXJlIHNwZWNpZmljYWxseSB6ZXJvaW5nIGluIG9uIGBbXCJjYXRjX3J4X2RvbmVcIl1gLCB3aGljaCBjb25maXJtcyBteSBpbml0aWFsIGludHVpdGlvbjogdGhpcyBpcyB0aGUga2V5IGFyZWEgZm9yIGRlZXBlciBhbmFseXNpcy4gVGhlIGBFbmFibGVDb25maWdzYCBsaXN0LCBuYW1lbHkgYFtcIlVTQl9DQVRDXCIsIFwiVVNCX05FVF9EUklWRVJTXCIsIFwiVVNCXCIsIFwiTkVUXCJdYCwgcHJvdmlkZXMgdGhlIG5lY2Vzc2FyeSBidWlsZCBjb25maWd1cmF0aW9ucyB0byByZXByb2R1Y2UgYW5kIGxldmVyYWdlIHRoZSB0YXJnZXQgY29kZS4gVGhlIHJlYXNvbmluZyBjb25jaXNlbHkgY2xhcmlmaWVzIHRoZSB3b3J0aGluZXNzIGFuZCBtZXRob2Qgb2YgYXBwcm9hY2guIEl0IGxvb2tzIGxpa2Ugd2UndmUgZ290IGEgc29saWQgY2FuZGlkYXRlIGhlcmUuIFRpbWUgdG8gbWFrZSBpdCBvZmZpY2lhbCBhbmQgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA5ODAsIk91dHB1dFRva2VucyI6MTE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDExOjI2OjMyLjczODgxNjQ5NloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzODI4MzkxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVVNCX0NBVENcIixcbiAgICBcIlVTQl9ORVRfRFJJVkVSU1wiLFxuICAgIFwiVVNCXCIsXG4gICAgXCJORVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjYXRjX3J4X2RvbmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgcGFja2V0IHJlY2VwdGlvbiBhbmQgbGVuZ3RoIHZhbGlkYXRpb24gbG9naWMgaW4gY2F0Y19yeF9kb25lIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcyB3aGVuIHByb2Nlc3NpbmcgbWFsZm9ybWVkIFVTQiBSWCBVUkIgZGF0YS4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBhbmQgZnV6emFibGUgdmlhIFVTQiBlbXVsYXRpb24gLyBzeXprYWxsZXIgVVNCIHJhdy1nYWRnZXQgc3VwcG9ydC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJVU0JfQ0FUQ1wiLFxuICAgIFwiVVNCX05FVF9EUklWRVJTXCIsXG4gICAgXCJVU0JcIixcbiAgICBcIk5FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNhdGNfcnhfZG9uZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBwYWNrZXQgcmVjZXB0aW9uIGFuZCBsZW5ndGggdmFsaWRhdGlvbiBsb2dpYyBpbiBjYXRjX3J4X2RvbmUgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzIHdoZW4gcHJvY2Vzc2luZyBtYWxmb3JtZWQgVVNCIFJYIFVSQiBkYXRhLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGFuZCBmdXp6YWJsZSB2aWEgVVNCIGVtdWxhdGlvbiAvIHN5emthbGxlciBVU0IgcmF3LWdhZGdldCBzdXBwb3J0LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QxMToyNjozMi44NzcxMDgzNjRaIiwiU2VxIjoxOSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNjUyNzAwNTgzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTE6MjY6MzIuODc3NjcyOTI0WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MTM2NTIxMjk5MTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIG91dC1vZi1ib3VuZHMgcmVhZCB2dWxuZXJhYmlsaXRpZXMgaW4gdGhlIENBVEMgVVNCIEV0aGVybmV0IGRyaXZlcidzIHJlY2VpdmUgcGF0aCAoYGNhdGNfcnhfZG9uZWApLiBTcGVjaWZpY2FsbHksIGl0IGVuc3VyZXMgdGhhdCBgcmVtYWluaW5nYCB0cmFuc2ZlciBidWZmZXIgYnl0ZXMgYXJlIHN1ZmZpY2llbnQgdG8gcmVhZCB0aGUgMi1ieXRlIHBhY2tldCBsZW5ndGggaGVhZGVyIChgcmVtYWluaW5nIFxcdTAwM2U9IHBrdF9vZmZzZXRgKSwgYW5kIHRoYXQgdGhlIGluZGljYXRlZCBwYWNrZXQgbGVuZ3RoIHBsdXMgb2Zmc2V0IGZpdHMgd2l0aGluIHRoZSByZW1haW5pbmcgcmVjZWl2ZWQgYnVmZmVyIChgcGt0X2xlbiArIHBrdF9vZmZzZXQgXFx1MDAzYz0gcmVtYWluaW5nYCkuXFxuXFxuVGhlc2UgY2hhbmdlcyBwcmV2ZW50IG91dC1vZi1ib3VuZHMgbWVtb3J5IGFjY2Vzc2VzIGZyb20gYHVyYi1cXHUwMDNldHJhbnNmZXJfYnVmZmVyYCBkdXJpbmcgcGFja2V0IHByb2Nlc3NpbmcgYW5kIGNvcHlpbmcgdG8gdGhlIFNLQi4gQnVmZmVyIG92ZXItcmVhZHMgYW5kIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgYXJlIG1lbW9yeSBzYWZldHkgdmlvbGF0aW9ucyBkZXRlY3RlZCBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIGluZm8tbGVha3MgdG8gdXNlciBzcGFjZSwgb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBhMjZjMDg5NWFmNmMxNjJkZjJmMTM2YTE0OTAzM2ZkMzljMjM4MjAyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBTZXAgNyAxMToyNTo1MyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3VzYi9jYXRjLmMgYi9kcml2ZXJzL25ldC91c2IvY2F0Yy5jXG5pbmRleCA5NmU4MmY5NGVkY2Y4Li5lNGY4YjlhMGNhZjE5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvdXNiL2NhdGMuY1xuKysrIGIvZHJpdmVycy9uZXQvdXNiL2NhdGMuY1xuQEAgLTIzNCw4ICsyMzQsMTYgQEAgc3RhdGljIHZvaWQgY2F0Y19yeF9kb25lKHN0cnVjdCB1cmIgKnVyYilcbiBcbiBcdGRvIHtcbiBcdFx0aWYoIWNhdGMtXHUwMDNlaXNfZjV1MDExKSB7XG4rXHRcdFx0aW50IHJlbWFpbmluZyA9IHVyYi1cdTAwM2VhY3R1YWxfbGVuZ3RoIC1cbitcdFx0XHRcdFx0KHBrdF9zdGFydCAtICh1OCAqKXVyYi1cdTAwM2V0cmFuc2Zlcl9idWZmZXIpO1xuK1xuK1x0XHRcdGlmIChyZW1haW5pbmcgXHUwMDNjIHBrdF9vZmZzZXQpIHtcbitcdFx0XHRcdGNhdGMtXHUwMDNlbmV0ZGV2LVx1MDAzZXN0YXRzLnJ4X2xlbmd0aF9lcnJvcnMrKztcbitcdFx0XHRcdGNhdGMtXHUwMDNlbmV0ZGV2LVx1MDAzZXN0YXRzLnJ4X2Vycm9ycysrO1xuK1x0XHRcdFx0YnJlYWs7XG4rXHRcdFx0fVxuIFx0XHRcdHBrdF9sZW4gPSBsZTE2X3RvX2NwdXAoKF9fbGUxNiopcGt0X3N0YXJ0KTtcbi1cdFx0XHRpZiAocGt0X2xlbiBcdTAwM2UgdXJiLVx1MDAzZWFjdHVhbF9sZW5ndGgpIHtcbitcdFx0XHRpZiAocGt0X2xlbiArIHBrdF9vZmZzZXQgXHUwMDNlIHJlbWFpbmluZykge1xuIFx0XHRcdFx0Y2F0Yy1cdTAwM2VuZXRkZXYtXHUwMDNlc3RhdHMucnhfbGVuZ3RoX2Vycm9ycysrO1xuIFx0XHRcdFx0Y2F0Yy1cdTAwM2VuZXRkZXYtXHUwMDNlc3RhdHMucnhfZXJyb3JzKys7XG4gXHRcdFx0XHRicmVhaztcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDExOjI2OjMyLjg3NzY3MzkxNFoiLCJTZXEiOjIxLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0MjE3NjQwNDc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgY2F0Yy5jIERyaXZlcioqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5IHdpdGggdGhpcyBgY2F0Yy5jYCBkcml2ZXIgaW4gdGhlIGBkcml2ZXJzL25ldC91c2JgIGRpcmVjdG9yeS4gVGhlIGZpcnN0IHRoaW5nIEkgbmVlZCB0byBkbyBpcyByZWFsbHkgdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgcGF0Y2guIEknbGwgbmVlZCB0byBkaWcgaW50byB0aGUgc3Vycm91bmRpbmcgY29kZSB0byBncmFzcCB0aGUgY29udGV4dCBvZiB0aGUgY2hhbmdlLiBTcGVjaWZpY2FsbHksIEknbSBnb2luZyB0byBmb2N1cyBteSBhdHRlbnRpb24gYXJvdW5kIGxpbmUgMjM0IGluIGBjYXRjLmNgLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBhbmNob3IgSSBuZWVkIHRvIHN0YXJ0IG15IGFuYWx5c2lzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTk2LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QxMToyNjozNy4wOTUzMTc5NDJaIiwiU2VxIjoyMiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc1MTQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3VzYi9jYXRjLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjEwLFxuICBcIkxpbmVDb3VudFwiOiA2MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjEwOlxcdCNkZWZpbmUgY2F0Y193cml0ZV9tZW1fYXN5bmMoY2F0YywgYWRkciwgYnVmLCBzaXplKVxcdGNhdGNfY3RybF9hc3luYyhjYXRjLCBVU0JfRElSX09VVCwgV3JpdGVNZW0sIDAsIGFkZHIsIGJ1Ziwgc2l6ZSwgTlVMTClcXG4gMjExOlxcdFxcbiAyMTI6XFx0LypcXG4gMjEzOlxcdCAqIFJlY2VpdmUgcm91dGluZXMuXFxuIDIxNDpcXHQgKi9cXG4gMjE1OlxcdFxcbiAyMTY6XFx0c3RhdGljIHZvaWQgY2F0Y19yeF9kb25lKHN0cnVjdCB1cmIgKnVyYilcXG4gMjE3OlxcdHtcXG4gMjE4OlxcdFxcdHN0cnVjdCBjYXRjICpjYXRjID0gdXJiLVxcdTAwM2Vjb250ZXh0O1xcbiAyMTk6XFx0XFx0dTggKnBrdF9zdGFydCA9IHVyYi1cXHUwMDNldHJhbnNmZXJfYnVmZmVyO1xcbiAyMjA6XFx0XFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4gMjIxOlxcdFxcdGludCBwa3RfbGVuLCBwa3Rfb2Zmc2V0ID0gMDtcXG4gMjIyOlxcdFxcdGludCBzdGF0dXMgPSB1cmItXFx1MDAzZXN0YXR1cztcXG4gMjIzOlxcdFxcbiAyMjQ6XFx0XFx0aWYgKCFjYXRjLVxcdTAwM2Vpc19mNXUwMTEpIHtcXG4gMjI1OlxcdFxcdFxcdGNsZWFyX2JpdChSWF9SVU5OSU5HLCBcXHUwMDI2Y2F0Yy1cXHUwMDNlZmxhZ3MpO1xcbiAyMjY6XFx0XFx0XFx0cGt0X29mZnNldCA9IDI7XFxuIDIyNzpcXHRcXHR9XFxuIDIyODpcXHRcXG4gMjI5OlxcdFxcdGlmIChzdGF0dXMpIHtcXG4gMjMwOlxcdFxcdFxcdGRldl9kYmcoXFx1MDAyNnVyYi1cXHUwMDNlZGV2LVxcdTAwM2VkZXYsIFxcXCJyeF9kb25lLCBzdGF0dXMgJWQsIGxlbmd0aCAlZFxcXFxuXFxcIixcXG4gMjMxOlxcdFxcdFxcdFxcdHN0YXR1cywgdXJiLVxcdTAwM2VhY3R1YWxfbGVuZ3RoKTtcXG4gMjMyOlxcdFxcdFxcdHJldHVybjtcXG4gMjMzOlxcdFxcdH1cXG4gMjM0OlxcdFxcbiAyMzU6XFx0XFx0ZG8ge1xcbiAyMzY6XFx0XFx0XFx0aWYoIWNhdGMtXFx1MDAzZWlzX2Y1dTAxMSkge1xcbiAyMzc6XFx0XFx0XFx0XFx0aW50IHJlbWFpbmluZyA9IHVyYi1cXHUwMDNlYWN0dWFsX2xlbmd0aCAtXFxuIDIzODpcXHRcXHRcXHRcXHRcXHRcXHQocGt0X3N0YXJ0IC0gKHU4ICopdXJiLVxcdTAwM2V0cmFuc2Zlcl9idWZmZXIpO1xcbiAyMzk6XFx0XFxuIDI0MDpcXHRcXHRcXHRcXHRpZiAocmVtYWluaW5nIFxcdTAwM2MgcGt0X29mZnNldCkge1xcbiAyNDE6XFx0XFx0XFx0XFx0XFx0Y2F0Yy1cXHUwMDNlbmV0ZGV2LVxcdTAwM2VzdGF0cy5yeF9sZW5ndGhfZXJyb3JzKys7XFxuIDI0MjpcXHRcXHRcXHRcXHRcXHRjYXRjLVxcdTAwM2VuZXRkZXYtXFx1MDAzZXN0YXRzLnJ4X2Vycm9ycysrO1xcbiAyNDM6XFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuIDI0NDpcXHRcXHRcXHRcXHR9XFxuIDI0NTpcXHRcXHRcXHRcXHRwa3RfbGVuID0gbGUxNl90b19jcHVwKChfX2xlMTYqKXBrdF9zdGFydCk7XFxuIDI0NjpcXHRcXHRcXHRcXHRpZiAocGt0X2xlbiArIHBrdF9vZmZzZXQgXFx1MDAzZSByZW1haW5pbmcpIHtcXG4gMjQ3OlxcdFxcdFxcdFxcdFxcdGNhdGMtXFx1MDAzZW5ldGRldi1cXHUwMDNlc3RhdHMucnhfbGVuZ3RoX2Vycm9ycysrO1xcbiAyNDg6XFx0XFx0XFx0XFx0XFx0Y2F0Yy1cXHUwMDNlbmV0ZGV2LVxcdTAwM2VzdGF0cy5yeF9lcnJvcnMrKztcXG4gMjQ5OlxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcbiAyNTA6XFx0XFx0XFx0XFx0fVxcbiAyNTE6XFx0XFx0XFx0fSBlbHNlIHtcXG4gMjUyOlxcdFxcdFxcdFxcdHBrdF9sZW4gPSB1cmItXFx1MDAzZWFjdHVhbF9sZW5ndGg7XFxuIDI1MzpcXHRcXHRcXHR9XFxuIDI1NDpcXHRcXG4gMjU1OlxcdFxcdFxcdGlmICghKHNrYiA9IGRldl9hbGxvY19za2IocGt0X2xlbikpKVxcbiAyNTY6XFx0XFx0XFx0XFx0cmV0dXJuO1xcbiAyNTc6XFx0XFxuIDI1ODpcXHRcXHRcXHRza2JfY29weV90b19saW5lYXJfZGF0YShza2IsIHBrdF9zdGFydCArIHBrdF9vZmZzZXQsIHBrdF9sZW4pO1xcbiAyNTk6XFx0XFx0XFx0c2tiX3B1dChza2IsIHBrdF9sZW4pO1xcbiAyNjA6XFx0XFxuIDI2MTpcXHRcXHRcXHRza2ItXFx1MDAzZXByb3RvY29sID0gZXRoX3R5cGVfdHJhbnMoc2tiLCBjYXRjLVxcdTAwM2VuZXRkZXYpO1xcbiAyNjI6XFx0XFx0XFx0bmV0aWZfcngoc2tiKTtcXG4gMjYzOlxcdFxcbiAyNjQ6XFx0XFx0XFx0Y2F0Yy1cXHUwMDNlbmV0ZGV2LVxcdTAwM2VzdGF0cy5yeF9wYWNrZXRzKys7XFxuIDI2NTpcXHRcXHRcXHRjYXRjLVxcdTAwM2VuZXRkZXYtXFx1MDAzZXN0YXRzLnJ4X2J5dGVzICs9IHBrdF9sZW47XFxuIDI2NjpcXHRcXG4gMjY3OlxcdFxcdFxcdC8qIEY1VTAxMSBvbmx5IGRvZXMgb25lIHBhY2tldCBwZXIgUlggKi9cXG4gMjY4OlxcdFxcdFxcdGlmIChjYXRjLVxcdTAwM2Vpc19mNXUwMTEpXFxuIDI2OTpcXHRcXHRcXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTE6MjY6MzcuMDk1NDk1NzIyWiIsIlNlcSI6MjMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIxMDQyNDgyOTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipBbmFseXppbmcgdGhlIEZ1bmN0aW9uJ3MgU3Vic2VxdWVudCBPcGVyYXRpb25zKipcblxuUmlnaHQsIHNvIEkndmUgcmVhY2hlZCBhIHBvaW50IGluIG15IGFuYWx5c2lzIHdoZXJlIEkgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGZ1bmN0aW9uYWxpdHkgb2YgYGNhdGNfcnhfZG9uZWAuIEkga25vdyB0aGUgaW5pdGlhbCBwaWVjZXMsIGJ1dCB0byBncmFzcCBpdHMgZnVsbCBpbXBhY3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgaGFwcGVucyAqYWZ0ZXIqIHRoZSBpbml0aWFsIGhhbmRsaW5nLiBXaGF0IGFyZSB0aGUgc3Vic2VxdWVudCBvcGVyYXRpb25zIHRyaWdnZXJlZCBvciBpbmZsdWVuY2VkIGJ5IHRoaXMgZnVuY3Rpb24/IEFyZSB0aGVyZSBhbnkgZGF0YSBzdHJ1Y3R1cmVzIGJlaW5nIG1vZGlmaWVkLCBvdGhlciBmdW5jdGlvbnMgYmVpbmcgY2FsbGVkLCBvciBzdGF0ZSB0cmFuc2l0aW9ucyBvY2N1cnJpbmcgYXMgYSByZXN1bHQ/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmdW5jdGlvbidzIHNpZGUgZWZmZWN0cyBhbmQgaG93IGl0IGZpdHMgaW50byB0aGUgYnJvYWRlciBwaWN0dXJlIG9mIHRoZSBkYXRhIHJlY2VwdGlvbiBhbmQgcHJvY2Vzc2luZyBwaXBlbGluZS4gSSdsbCBuZWVkIHRvIGNhcmVmdWxseSBleGFtaW5lIHRoZSBjb2RlIGZvbGxvd2luZyBgY2F0Y19yeF9kb25lYCB0byBwYWludCBhIG1vcmUgY29tcGxldGUgcGljdHVyZS4gSXQncyB0aW1lIHRvIGZvbGxvdyB0aGUgdHJhaWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzNDUsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDExOjI2OjM5LjE5OTc0OVoiLCJTZXEiOjI0LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjcyODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvdXNiL2NhdGMuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyNzAsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyNzA6XFx0XFx0XFx0cGt0X3N0YXJ0ICs9ICgoKHBrdF9sZW4gKyAxKSBcXHUwMDNlXFx1MDAzZSA2KSArIDEpIFxcdTAwM2NcXHUwMDNjIDY7XFxuIDI3MTpcXHRcXG4gMjcyOlxcdFxcdH0gd2hpbGUgKHBrdF9zdGFydCAtICh1OCAqKSB1cmItXFx1MDAzZXRyYW5zZmVyX2J1ZmZlciBcXHUwMDNjIHVyYi1cXHUwMDNlYWN0dWFsX2xlbmd0aCk7XFxuIDI3MzpcXHRcXG4gMjc0OlxcdFxcdGlmIChjYXRjLVxcdTAwM2Vpc19mNXUwMTEpIHtcXG4gMjc1OlxcdFxcdFxcdGlmIChhdG9taWNfcmVhZChcXHUwMDI2Y2F0Yy1cXHUwMDNlcmVjcV9zeikpIHtcXG4gMjc2OlxcdFxcdFxcdFxcdGludCBzdGF0ZTtcXG4gMjc3OlxcdFxcdFxcdFxcdGF0b21pY19kZWMoXFx1MDAyNmNhdGMtXFx1MDAzZXJlY3Ffc3opO1xcbiAyNzg6XFx0XFx0XFx0XFx0bmV0ZGV2X2RiZyhjYXRjLVxcdTAwM2VuZXRkZXYsIFxcXCJnZXR0aW5nIGV4dHJhIHBhY2tldFxcXFxuXFxcIik7XFxuIDI3OTpcXHRcXHRcXHRcXHR1cmItXFx1MDAzZWRldiA9IGNhdGMtXFx1MDAzZXVzYmRldjtcXG4gMjgwOlxcdFxcdFxcdFxcdGlmICgoc3RhdGUgPSB1c2Jfc3VibWl0X3VyYih1cmIsIEdGUF9BVE9NSUMpKSBcXHUwMDNjIDApIHtcXG4gMjgxOlxcdFxcdFxcdFxcdFxcdG5ldGRldl9kYmcoY2F0Yy1cXHUwMDNlbmV0ZGV2LFxcbiAyODI6XFx0XFx0XFx0XFx0XFx0XFx0ICAgXFxcInN1Ym1pdChyeF91cmIpIHN0YXR1cyAlZFxcXFxuXFxcIiwgc3RhdGUpO1xcbiAyODM6XFx0XFx0XFx0XFx0fVxcbiAyODQ6XFx0XFx0XFx0fSBlbHNlIHtcXG4gMjg1OlxcdFxcdFxcdFxcdGNsZWFyX2JpdChSWF9SVU5OSU5HLCBcXHUwMDI2Y2F0Yy1cXHUwMDNlZmxhZ3MpO1xcbiAyODY6XFx0XFx0XFx0fVxcbiAyODc6XFx0XFx0fVxcbiAyODg6XFx0fVxcbiAyODk6XFx0XFxuIDI5MDpcXHRzdGF0aWMgdm9pZCBjYXRjX2lycV9kb25lKHN0cnVjdCB1cmIgKnVyYilcXG4gMjkxOlxcdHtcXG4gMjkyOlxcdFxcdHN0cnVjdCBjYXRjICpjYXRjID0gdXJiLVxcdTAwM2Vjb250ZXh0O1xcbiAyOTM6XFx0XFx0dTggKmRhdGEgPSB1cmItXFx1MDAzZXRyYW5zZmVyX2J1ZmZlcjtcXG4gMjk0OlxcdFxcdGludCBzdGF0dXMgPSB1cmItXFx1MDAzZXN0YXR1cztcXG4gMjk1OlxcdFxcdHVuc2lnbmVkIGludCBoYXNkYXRhLCBsaW5rc3RzID0gTGlua05vQ2hhbmdlO1xcbiAyOTY6XFx0XFx0aW50IHJlcztcXG4gMjk3OlxcdFxcbiAyOTg6XFx0XFx0aWYgKCFjYXRjLVxcdTAwM2Vpc19mNXUwMTEpIHtcXG4gMjk5OlxcdFxcdFxcdGhhc2RhdGEgPSBkYXRhWzFdIFxcdTAwMjYgMHg4MDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTE6MjY6MzkuMTk5OTE5M1oiLCJTZXEiOjI1LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo3MzI5ODU0Njc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFVTQiBOZXR3b3JrIERyaXZlciBSZWNlaXZlIEhhbmRsZXIgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoaXMgcGF0Y2ggaXMgdGFyZ2V0aW5nIGBjYXRjX3J4X2RvbmUoKWAsIHRoZSByZWNlaXZlIGhhbmRsZXIgZm9yIGEgVVNCIG5ldHdvcmsgZHJpdmVyLiBJdCdzIGNsZWFybHkgYSBjcml0aWNhbCBhcmVhLCB3aGVyZSBwZXJmb3JtYW5jZSBpcyBwYXJhbW91bnQuIExvb2tpbmcgYXQgdGhlIFwiYmVmb3JlXCIgY29kZSwgdGhlIG9yaWdpbmFsIGxvZ2ljIGhhZCBzb21lIHNlcmlvdXMgZmxhd3MuIEl0IGFwcGVhcnMgd2Ugd2VyZSByZWx5aW5nIG9uIGB1cmItXHUwMDNlYWN0dWFsX2xlbmd0aGAgZm9yIGJ1ZmZlciBib3VuZHMsIGJ1dCB0aGVyZSB3YXMgYSBwb3RlbnRpYWwgZm9yIG91dC1vZi1ib3VuZHMgcmVhZHMuIFNwZWNpZmljYWxseSwgaWYgdGhlIHJlbWFpbmluZyBkYXRhIGluIHRoZSBVU0IgdHJhbnNmZXIgYnVmZmVyIChgdXJiLVx1MDAzZXRyYW5zZmVyX2J1ZmZlcmApIHdhcyBsZXNzIHRoYW4gYSBwYWNrZXQgb2Zmc2V0IChgcGt0X29mZnNldGApLCB3ZSdkIGJlIHJlYWRpbmcgcGFzdCB0aGUgZW5kIG9mIHRoZSBidWZmZXIgd2hlbiBjYWxsaW5nIGBsZTE2X3RvX2NwdXBgLiBTaW1pbGFybHksIGlmIHRoZSBwYWNrZXQgbGVuZ3RoIChgcGt0X2xlbmApIHBsdXMgdGhlIG9mZnNldCBleGNlZWRlZCB0aGUgcmVtYWluaW5nIGJ1ZmZlciBzaXplLCB3ZSB3b3VsZCBhbHNvIGJlIHJlYWRpbmcgT09CLiBUaGlzIGlzIGEgY2xhc3NpYyB2dWxuZXJhYmlsaXR5IVxuXG5UaGUgZml4IGlzIHN0cmFpZ2h0Zm9yd2FyZCwgdGhhbmtmdWxseS4gVGhleSd2ZSBhZGRlZCBleHBsaWNpdCBib3VuZHMgY2hlY2tpbmcuIE5vdywgYmVmb3JlIGFueSBhdHRlbXB0IHRvIGFjY2VzcyB0aGUgcGFja2V0IGRhdGEsIHdlIGNhbGN1bGF0ZSBgcmVtYWluaW5nYCDigJMgdGhlIGFtb3VudCBvZiBkYXRhIGxlZnQgaW4gdGhlIFVTQiBidWZmZXIg4oCTIGFuZCB0aGVuIGNvbXBhcmUgdGhhdCBhZ2FpbnN0IGJvdGggdGhlIG9mZnNldCBhbmQgdGhlIGFudGljaXBhdGVkIHBhY2tldCBsZW5ndGguIElmIGVpdGhlciBjaGVjayBmYWlscywgdGhlIHBhY2tldCBpcyBkaXNjYXJkZWQsIGFuZCB0aGUgcmVsZXZhbnQgZXJyb3IgY291bnRlcnMgYXJlIGluY3JlbWVudGVkLiBQZXJmZWN0LiBNdWNoIG1vcmUgcm9idXN0LlxuXG5UaGUgaW1wb3J0YW50IG5leHQgc3RlcCBpcyB0byBhc3Nlc3MgZm9yIHBvdGVudGlhbCBLTVNBTiAoS2VybmVsIE1lbW9yeSBTYW5pdGl6ZXIpIGlzc3Vlcy4gSXMgdGhpcyBwYXRjaCBpbnRyb2R1Y2luZyBvciBleHBvc2luZyB1bmluaXRpYWxpemVkIG1lbW9yeT8gTm8sIG5vdCB0aGF0IEkgY2FuIHNlZS4gV2UgYXJlbid0IGNvcHlpbmcgYW55IGtlcm5lbCBzdHJ1Y3R1cmVzIHRvIHVzZXJzcGFjZSwgYW5kIG5vIHN0cnVjdHVyZXMgd2l0aCBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHBhZGRpbmcuIFdlIGFyZW4ndCBtYWtpbmcgZGVjaXNpb25zIGJhc2VkIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLCBhbGwgb2YgdGhlIHZhcmlhYmxlcyB1c2VkIGluIHRoZSBjYWxjdWxhdGlvbnMgYXJlIGluaXRpYWxpemVkIGZyb20gdGhlIFVTQiBjb3JlIGFuZCB0aGUgcGFja2V0IGhlYWRlci4gVGhlcmUncyBubyBhbGxvY2F0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIGVpdGhlci4gQ3J1Y2lhbGx5LCB0aGUgKnB1cnBvc2UqIG9mIHRoZSBwYXRjaCBpcyB0byAqcHJldmVudCogb3V0LW9mLWJvdW5kcyByZWFkcyEgU28sIGl0J3MgdGlnaHRlbmluZyB1cCB0aGUgYnVmZmVyIGFjY2Vzcywgbm90IGxvb3NlbmluZyBpdC4gS0FTQU4gaXMgdGhlIHRvb2wgdGhhdCBpcyByZWFsbHkgZGVzaWduZWQgZm9yIGNhdGNoaW5nIE9PQiByZWFkcy93cml0ZXMuIFRoaXMgcGF0Y2ggbG9va3MgY2xlYW4gZnJvbSBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSBwZXJzcGVjdGl2ZS5cblxuTGV0J3MgZG91YmxlLWNoZWNrIGFsbCB0aGUgcmVxdWlyZW1lbnRzOiAxLiBObyBrZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXJzcGFjZS4gMi4gTm8gY29uZGl0aW9uYWwgbG9naWMgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMuIDMuIE5vIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIGFsbG9jYXRpb24uIDQuIFRpZ2h0IGJvdW5kcyBjaGVja3MgdGhhdCBwcmV2ZW50IGFueSBhY2Nlc3MgdG8gdW5pbml0aWFsaXplZCBieXRlcy4gWXVwLCBhbGwgdGhlIGJveGVzIGFyZSB0aWNrZWQuIFRoaXMgbG9va3MgbGlrZSBhIHNvbGlkLCBzYWZlIGZpeC4gSSBjYW4gY29uZmlkZW50bHkgdGFnIHRoaXMgYXMgYE5lZWRzS01TQU4gPSBmYWxzZWAuIFRpbWUgdG8gY2FsbCB0aGF0IGBzZXQtcmVzdWx0c2AgdG9vbCBhbmQgbW92ZSBvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDA4NywiT3V0cHV0VG9rZW5zIjoxOTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MzksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QxMToyNjo0Ni41Mjk3NzY2MjdaIiwiU2VxIjoyNiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzc5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIG91dC1vZi1ib3VuZHMgcmVhZCB2dWxuZXJhYmlsaXRpZXMgaW4gdGhlIENBVEMgVVNCIEV0aGVybmV0IGRyaXZlcidzIHJlY2VpdmUgcGF0aCAoYGNhdGNfcnhfZG9uZWApLiBTcGVjaWZpY2FsbHksIGl0IGVuc3VyZXMgdGhhdCBgcmVtYWluaW5nYCB0cmFuc2ZlciBidWZmZXIgYnl0ZXMgYXJlIHN1ZmZpY2llbnQgdG8gcmVhZCB0aGUgMi1ieXRlIHBhY2tldCBsZW5ndGggaGVhZGVyIChgcmVtYWluaW5nIFxcdTAwM2U9IHBrdF9vZmZzZXRgKSwgYW5kIHRoYXQgdGhlIGluZGljYXRlZCBwYWNrZXQgbGVuZ3RoIHBsdXMgb2Zmc2V0IGZpdHMgd2l0aGluIHRoZSByZW1haW5pbmcgcmVjZWl2ZWQgYnVmZmVyIChgcGt0X2xlbiArIHBrdF9vZmZzZXQgXFx1MDAzYz0gcmVtYWluaW5nYCkuXFxuXFxuVGhlc2UgY2hhbmdlcyBwcmV2ZW50IG91dC1vZi1ib3VuZHMgbWVtb3J5IGFjY2Vzc2VzIGZyb20gYHVyYi1cXHUwMDNldHJhbnNmZXJfYnVmZmVyYCBkdXJpbmcgcGFja2V0IHByb2Nlc3NpbmcgYW5kIGNvcHlpbmcgdG8gdGhlIFNLQi4gQnVmZmVyIG92ZXItcmVhZHMgYW5kIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgYXJlIG1lbW9yeSBzYWZldHkgdmlvbGF0aW9ucyBkZXRlY3RlZCBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIGluZm8tbGVha3MgdG8gdXNlciBzcGFjZSwgb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBvdXQtb2YtYm91bmRzIHJlYWQgdnVsbmVyYWJpbGl0aWVzIGluIHRoZSBDQVRDIFVTQiBFdGhlcm5ldCBkcml2ZXIncyByZWNlaXZlIHBhdGggKGBjYXRjX3J4X2RvbmVgKS4gU3BlY2lmaWNhbGx5LCBpdCBlbnN1cmVzIHRoYXQgYHJlbWFpbmluZ2AgdHJhbnNmZXIgYnVmZmVyIGJ5dGVzIGFyZSBzdWZmaWNpZW50IHRvIHJlYWQgdGhlIDItYnl0ZSBwYWNrZXQgbGVuZ3RoIGhlYWRlciAoYHJlbWFpbmluZyBcXHUwMDNlPSBwa3Rfb2Zmc2V0YCksIGFuZCB0aGF0IHRoZSBpbmRpY2F0ZWQgcGFja2V0IGxlbmd0aCBwbHVzIG9mZnNldCBmaXRzIHdpdGhpbiB0aGUgcmVtYWluaW5nIHJlY2VpdmVkIGJ1ZmZlciAoYHBrdF9sZW4gKyBwa3Rfb2Zmc2V0IFxcdTAwM2M9IHJlbWFpbmluZ2ApLlxcblxcblRoZXNlIGNoYW5nZXMgcHJldmVudCBvdXQtb2YtYm91bmRzIG1lbW9yeSBhY2Nlc3NlcyBmcm9tIGB1cmItXFx1MDAzZXRyYW5zZmVyX2J1ZmZlcmAgZHVyaW5nIHBhY2tldCBwcm9jZXNzaW5nIGFuZCBjb3B5aW5nIHRvIHRoZSBTS0IuIEJ1ZmZlciBvdmVyLXJlYWRzIGFuZCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGFyZSBtZW1vcnkgc2FmZXR5IHZpb2xhdGlvbnMgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLCBpbmZvLWxlYWtzIHRvIHVzZXIgc3BhY2UsIG9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowmcb8q[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-07 10:38:30 +0000 UTC FinishedAt: 2026-09-07 11:26:48 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "USB_CATC", "USB_NET_DRIVERS", "USB", "NET" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "USB_CATC", "USB_NET_DRIVERS", "USB", "NET" ], "series_id": "aec6bc7e-eebf-4623-9f26-04574067334f" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "catc_rx_done" ], "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+CgkJCTx0ZD4yMDI2LzA5LzA3IDExOjI1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTQl9DQVRDJiMzNDssCiAgICAmIzM0O1VTQl9ORVRfRFJJVkVSUyYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OywKICAgICYjMzQ7TkVUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2F0Y19yeF9kb25lJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgb3V0LW9mLWJvdW5kcyByZWFkIHZ1bG5lcmFiaWxpdGllcyBpbiB0aGUgQ0FUQyBVU0IgRXRoZXJuZXQgZHJpdmVyJiMzOTtzIHJlY2VpdmUgcGF0aCAoYGNhdGNfcnhfZG9uZWApLiBTcGVjaWZpY2FsbHksIGl0IGVuc3VyZXMgdGhhdCBgcmVtYWluaW5nYCB0cmFuc2ZlciBidWZmZXIgYnl0ZXMgYXJlIHN1ZmZpY2llbnQgdG8gcmVhZCB0aGUgMi1ieXRlIHBhY2tldCBsZW5ndGggaGVhZGVyIChgcmVtYWluaW5nIFx1MDAzZT0gcGt0X29mZnNldGApLCBhbmQgdGhhdCB0aGUgaW5kaWNhdGVkIHBhY2tldCBsZW5ndGggcGx1cyBvZmZzZXQgZml0cyB3aXRoaW4gdGhlIHJlbWFpbmluZyByZWNlaXZlZCBidWZmZXIgKGBwa3RfbGVuICYjNDM7IHBrdF9vZmZzZXQgXHUwMDNjPSByZW1haW5pbmdgKS5cblxuVGhlc2UgY2hhbmdlcyBwcmV2ZW50IG91dC1vZi1ib3VuZHMgbWVtb3J5IGFjY2Vzc2VzIGZyb20gYHVyYi1cdTAwM2V0cmFuc2Zlcl9idWZmZXJgIGR1cmluZyBwYWNrZXQgcHJvY2Vzc2luZyBhbmQgY29weWluZyB0byB0aGUgU0tCLiBCdWZmZXIgb3Zlci1yZWFkcyBhbmQgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhcmUgbWVtb3J5IHNhZmV0eSB2aW9sYXRpb25zIGRldGVjdGVkIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcywgaW5mby1sZWFrcyB0byB1c2VyIHNwYWNlLCBvciB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgcGFja2V0IHJlY2VwdGlvbiBhbmQgbGVuZ3RoIHZhbGlkYXRpb24gbG9naWMgaW4gY2F0Y19yeF9kb25lIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcyB3aGVuIHByb2Nlc3NpbmcgbWFsZm9ybWVkIFVTQiBSWCBVUkIgZGF0YS4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBhbmQgZnV6emFibGUgdmlhIFVTQiBlbXVsYXRpb24gLyBzeXprYWxsZXIgVVNCIHJhdy1nYWRnZXQgc3VwcG9ydC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAxMToyNTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGEyNmMwODk1YWY2YzE2MmRmMmYxMzZhMTQ5MDMzZmQzOWMyMzgyMDJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIFNlcCA3IDExOjI1OjUzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3VzYi9jYXRjLmMgYi9kcml2ZXJzL25ldC91c2IvY2F0Yy5jXG5pbmRleCA5NmU4MmY5NGVkY2Y4Li5lNGY4YjlhMGNhZjE5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvdXNiL2NhdGMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvdXNiL2NhdGMuY1xuQEAgLTIzNCw4ICYjNDM7MjM0LDE2IEBAIHN0YXRpYyB2b2lkIGNhdGNfcnhfZG9uZShzdHJ1Y3QgdXJiICp1cmIpXG4gXG4gXHRkbyB7XG4gXHRcdGlmKCFjYXRjLVx1MDAzZWlzX2Y1dTAxMSkge1xuJiM0MztcdFx0XHRpbnQgcmVtYWluaW5nID0gdXJiLVx1MDAzZWFjdHVhbF9sZW5ndGggLVxuJiM0MztcdFx0XHRcdFx0KHBrdF9zdGFydCAtICh1OCAqKXVyYi1cdTAwM2V0cmFuc2Zlcl9idWZmZXIpO1xuJiM0MztcbiYjNDM7XHRcdFx0aWYgKHJlbWFpbmluZyBcdTAwM2MgcGt0X29mZnNldCkge1xuJiM0MztcdFx0XHRcdGNhdGMtXHUwMDNlbmV0ZGV2LVx1MDAzZXN0YXRzLnJ4X2xlbmd0aF9lcnJvcnMmIzQzOyYjNDM7O1xuJiM0MztcdFx0XHRcdGNhdGMtXHUwMDNlbmV0ZGV2LVx1MDAzZXN0YXRzLnJ4X2Vycm9ycyYjNDM7JiM0Mzs7XG4mIzQzO1x0XHRcdFx0YnJlYWs7XG4mIzQzO1x0XHRcdH1cbiBcdFx0XHRwa3RfbGVuID0gbGUxNl90b19jcHVwKChfX2xlMTYqKXBrdF9zdGFydCk7XG4tXHRcdFx0aWYgKHBrdF9sZW4gXHUwMDNlIHVyYi1cdTAwM2VhY3R1YWxfbGVuZ3RoKSB7XG4mIzQzO1x0XHRcdGlmIChwa3RfbGVuICYjNDM7IHBrdF9vZmZzZXQgXHUwMDNlIHJlbWFpbmluZykge1xuIFx0XHRcdFx0Y2F0Yy1cdTAwM2VuZXRkZXYtXHUwMDNlc3RhdHMucnhfbGVuZ3RoX2Vycm9ycyYjNDM7JiM0Mzs7XG4gXHRcdFx0XHRjYXRjLVx1MDAzZW5ldGRldi1cdTAwM2VzdGF0cy5yeF9lcnJvcnMmIzQzOyYjNDM7O1xuIFx0XHRcdFx0YnJlYWs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTE6MjU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VVNCX0NBVEMmIzM0OywKICAgICYjMzQ7VVNCX05FVF9EUklWRVJTJiMzNDssCiAgICAmIzM0O1VTQiYjMzQ7LAogICAgJiMzNDtORVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjYXRjX3J4X2RvbmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHBhY2tldCByZWNlcHRpb24gYW5kIGxlbmd0aCB2YWxpZGF0aW9uIGxvZ2ljIGluIGNhdGNfcnhfZG9uZSB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMgd2hlbiBwcm9jZXNzaW5nIG1hbGZvcm1lZCBVU0IgUlggVVJCIGRhdGEuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgYW5kIGZ1enphYmxlIHZpYSBVU0IgZW11bGF0aW9uIC8gc3l6a2FsbGVyIFVTQiByYXctZ2FkZ2V0IHN1cHBvcnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBhMjZjMDg5NWFmNmMxNjJkZjJmMTM2YTE0OTAzM2ZkMzljMjM4MjAyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBTZXAgNyAxMToyNTo1MyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3VzYi9jYXRjLmMgYi9kcml2ZXJzL25ldC91c2IvY2F0Yy5jCmluZGV4IDk2ZTgyZjk0ZWRjZjguLmU0ZjhiOWEwY2FmMTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3VzYi9jYXRjLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvdXNiL2NhdGMuYwpAQCAtMjM0LDggJiM0MzsyMzQsMTYgQEAgc3RhdGljIHZvaWQgY2F0Y19yeF9kb25lKHN0cnVjdCB1cmIgKnVyYikKIAogCWRvIHsKIAkJaWYoIWNhdGMtJmd0O2lzX2Y1dTAxMSkgewomIzQzOwkJCWludCByZW1haW5pbmcgPSB1cmItJmd0O2FjdHVhbF9sZW5ndGggLQomIzQzOwkJCQkJKHBrdF9zdGFydCAtICh1OCAqKXVyYi0mZ3Q7dHJhbnNmZXJfYnVmZmVyKTsKJiM0MzsKJiM0MzsJCQlpZiAocmVtYWluaW5nICZsdDsgcGt0X29mZnNldCkgewomIzQzOwkJCQljYXRjLSZndDtuZXRkZXYtJmd0O3N0YXRzLnJ4X2xlbmd0aF9lcnJvcnMmIzQzOyYjNDM7OwomIzQzOwkJCQljYXRjLSZndDtuZXRkZXYtJmd0O3N0YXRzLnJ4X2Vycm9ycyYjNDM7JiM0Mzs7CiYjNDM7CQkJCWJyZWFrOwomIzQzOwkJCX0KIAkJCXBrdF9sZW4gPSBsZTE2X3RvX2NwdXAoKF9fbGUxNiopcGt0X3N0YXJ0KTsKLQkJCWlmIChwa3RfbGVuICZndDsgdXJiLSZndDthY3R1YWxfbGVuZ3RoKSB7CiYjNDM7CQkJaWYgKHBrdF9sZW4gJiM0MzsgcGt0X29mZnNldCAmZ3Q7IHJlbWFpbmluZykgewogCQkJCWNhdGMtJmd0O25ldGRldi0mZ3Q7c3RhdHMucnhfbGVuZ3RoX2Vycm9ycyYjNDM7JiM0Mzs7CiAJCQkJY2F0Yy0mZ3Q7bmV0ZGV2LSZndDtzdGF0cy5yeF9lcnJvcnMmIzQzOyYjNDM7OwogCQkJCWJyZWFrOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAxMToyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTg0CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXZhbHVhdGluZyBUaGlzIEtlcm5lbCBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgc28gdGhpcyBwYXRjaCBsYW5kZWQgb24gbXkgZGVzaywgYW5kIG15IGZpcnN0IHRob3VnaHQgaXM6IERvZXMgdGhpcyB3YXJyYW50IGEgZGVlcCBkaXZlIHdpdGggc3l6a2FsbGVyPyBMZXQmIzM5O3MgdGFrZSBhIG1ldGhvZGljYWwgYXBwcm9hY2guIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wYWN0IG9mIHRoaXMgY2hhbmdlLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGRpZyBpbnRvIHRoZSBjb2RlIGFuZCBkZXRlcm1pbmUgaWYgdGhlIHBhdGNoIGludHJvZHVjZXMgYW55IG5ldyBrZXJuZWwgZnVuY3Rpb25hbGl0eSwgYWx0ZXJzIGV4aXN0aW5nIGludGVyZmFjZXMsIG9yIHRvdWNoZXMgY29kZSB0aGF0JiMzOTtzIGFscmVhZHkga25vd24gdG8gYmUgYSBzb3VyY2Ugb2YgYnVncy4KCkkmIzM5O20gdGhpbmtpbmcgSSYjMzk7bGwgc3RhcnQgd2l0aCBgZ3JlcHBlcmAg4oCTIHRoYXQmIzM5O3Mgb2Z0ZW4gbXkgZmlyc3Qgc3RvcCBmb3IgYSBicm9hZCBvdmVydmlldyBvZiB0aGUgYWZmZWN0ZWQgYXJlYXMuIEkgd2FudCB0byBzZWUgYSBnZW5lcmFsIHBpY3R1cmUgb2YgdGhlIHNjb3BlLiBJZiB0aGF0JiMzOTtzIG5vdCB5aWVsZGluZyBlbm91Z2gsIG9yIGlmIGl0IGxvb2tzIGxpa2UgdGhlIGNoYW5nZSBpcyBoaWdobHkgbG9jYWxpemVkLCBJJiMzOTtsbCBnbyBkaXJlY3RseSBmb3IgYGNhdGMuY2Agb3IgdGhlIEtjb25maWcgZmlsZXMuIFRoaXMgc2hvdWxkIHF1aWNrbHkgZ2l2ZSBtZSBhIHNlbnNlIG9mIHdoYXQmIzM5O3MgYmVpbmcgZW5hYmxlZCBvciBtb2RpZmllZC4gVW5kZXJzdGFuZGluZyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGlzIGNydWNpYWwg4oCTIGlzIHRoaXMgYSBmZWF0dXJlIHRoYXQmIzM5O3MgZGlzYWJsZWQgYnkgZGVmYXVsdCwgb3IgaXMgaXQgcG90ZW50aWFsbHkgYSBzaWduaWZpY2FudCBjaGFuZ2UgdGhhdCBpbXBhY3RzIGEgd2lkZSByYW5nZSBvZiBzeXN0ZW1zPyBUaGF0JiMzOTtsbCBoZWxwIG1lIHRvIHdlaWdoIGl0cyBpbXBvcnRhbmNlIGZvciBmdXp6aW5nIHB1cnBvc2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDExOjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL2NhdGMuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIyMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjIwOlx0XHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuIDIyMTpcdFx0aW50IHBrdF9sZW4sIHBrdF9vZmZzZXQgPSAwO1xuIDIyMjpcdFx0aW50IHN0YXR1cyA9IHVyYi1cdTAwM2VzdGF0dXM7XG4gMjIzOlx0XG4gMjI0Olx0XHRpZiAoIWNhdGMtXHUwMDNlaXNfZjV1MDExKSB7XG4gMjI1Olx0XHRcdGNsZWFyX2JpdChSWF9SVU5OSU5HLCBcdTAwMjZjYXRjLVx1MDAzZWZsYWdzKTtcbiAyMjY6XHRcdFx0cGt0X29mZnNldCA9IDI7XG4gMjI3Olx0XHR9XG4gMjI4Olx0XG4gMjI5Olx0XHRpZiAoc3RhdHVzKSB7XG4gMjMwOlx0XHRcdGRldl9kYmcoXHUwMDI2dXJiLVx1MDAzZWRldi1cdTAwM2VkZXYsIFwmIzM0O3J4X2RvbmUsIHN0YXR1cyAlZCwgbGVuZ3RoICVkXFxuXCYjMzQ7LFxuIDIzMTpcdFx0XHRcdHN0YXR1cywgdXJiLVx1MDAzZWFjdHVhbF9sZW5ndGgpO1xuIDIzMjpcdFx0XHRyZXR1cm47XG4gMjMzOlx0XHR9XG4gMjM0Olx0XG4gMjM1Olx0XHRkbyB7XG4gMjM2Olx0XHRcdGlmKCFjYXRjLVx1MDAzZWlzX2Y1dTAxMSkge1xuIDIzNzpcdFx0XHRcdGludCByZW1haW5pbmcgPSB1cmItXHUwMDNlYWN0dWFsX2xlbmd0aCAtXG4gMjM4Olx0XHRcdFx0XHRcdChwa3Rfc3RhcnQgLSAodTggKil1cmItXHUwMDNldHJhbnNmZXJfYnVmZmVyKTtcbiAyMzk6XHRcbiAyNDA6XHRcdFx0XHRpZiAocmVtYWluaW5nIFx1MDAzYyBwa3Rfb2Zmc2V0KSB7XG4gMjQxOlx0XHRcdFx0XHRjYXRjLVx1MDAzZW5ldGRldi1cdTAwM2VzdGF0cy5yeF9sZW5ndGhfZXJyb3JzJiM0MzsmIzQzOztcbiAyNDI6XHRcdFx0XHRcdGNhdGMtXHUwMDNlbmV0ZGV2LVx1MDAzZXN0YXRzLnJ4X2Vycm9ycyYjNDM7JiM0Mzs7XG4gMjQzOlx0XHRcdFx0XHRicmVhaztcbiAyNDQ6XHRcdFx0XHR9XG4gMjQ1Olx0XHRcdFx0cGt0X2xlbiA9IGxlMTZfdG9fY3B1cCgoX19sZTE2Kilwa3Rfc3RhcnQpO1xuIDI0NjpcdFx0XHRcdGlmIChwa3RfbGVuICYjNDM7IHBrdF9vZmZzZXQgXHUwMDNlIHJlbWFpbmluZykge1xuIDI0NzpcdFx0XHRcdFx0Y2F0Yy1cdTAwM2VuZXRkZXYtXHUwMDNlc3RhdHMucnhfbGVuZ3RoX2Vycm9ycyYjNDM7JiM0Mzs7XG4gMjQ4Olx0XHRcdFx0XHRjYXRjLVx1MDAzZW5ldGRldi1cdTAwM2VzdGF0cy5yeF9lcnJvcnMmIzQzOyYjNDM7O1xuIDI0OTpcdFx0XHRcdFx0YnJlYWs7XG4gMjUwOlx0XHRcdFx0fVxuIDI1MTpcdFx0XHR9IGVsc2Uge1xuIDI1MjpcdFx0XHRcdHBrdF9sZW4gPSB1cmItXHUwMDNlYWN0dWFsX2xlbmd0aDtcbiAyNTM6XHRcdFx0fVxuIDI1NDpcdFxuIDI1NTpcdFx0XHRpZiAoIShza2IgPSBkZXZfYWxsb2Nfc2tiKHBrdF9sZW4pKSlcbiAyNTY6XHRcdFx0XHRyZXR1cm47XG4gMjU3Olx0XG4gMjU4Olx0XHRcdHNrYl9jb3B5X3RvX2xpbmVhcl9kYXRhKHNrYiwgcGt0X3N0YXJ0ICYjNDM7IHBrdF9vZmZzZXQsIHBrdF9sZW4pO1xuIDI1OTpcdFx0XHRza2JfcHV0KHNrYiwgcGt0X2xlbik7XG4gMjYwOlx0XG4gMjYxOlx0XHRcdHNrYi1cdTAwM2Vwcm90b2NvbCA9IGV0aF90eXBlX3RyYW5zKHNrYiwgY2F0Yy1cdTAwM2VuZXRkZXYpO1xuIDI2MjpcdFx0XHRuZXRpZl9yeChza2IpO1xuIDI2MzpcdFxuIDI2NDpcdFx0XHRjYXRjLVx1MDAzZW5ldGRldi1cdTAwM2VzdGF0cy5yeF9wYWNrZXRzJiM0MzsmIzQzOztcbiAyNjU6XHRcdFx0Y2F0Yy1cdTAwM2VuZXRkZXYtXHUwMDNlc3RhdHMucnhfYnl0ZXMgJiM0Mzs9IHBrdF9sZW47XG4gMjY2Olx0XG4gMjY3Olx0XHRcdC8qIEY1VTAxMSBvbmx5IGRvZXMgb25lIHBhY2tldCBwZXIgUlggKi9cbiAyNjg6XHRcdFx0aWYgKGNhdGMtXHUwMDNlaXNfZjV1MDExKVxuIDI2OTpcdFx0XHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDExOjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwOTEKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRGl2aW5nIERlZXBlciBpbnRvIHRoZSBDQVRDIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGBjYXRjX3J4X2RvbmVgIGZ1bmN0aW9uIGFuZCBpdHMgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gaG93IHRoaXMgQ0FUQyBVU0IgbmV0d29yayBkcml2ZXIgaXMgaGFuZGxpbmcgcmVjZWl2ZSBjb21wbGV0aW9ucy4gSSB3YW50IHRvIHNlZSB0aGUgY29tcGxldGUgcGljdHVyZTsgaG93IGFyZSB0aGVzZSBSWCBldmVudHMgcHJvY2Vzc2VkLCBhbmQgd2hhdCYjMzk7cyB0aGUgd2hvbGUgZmxvdyBvZiBkYXRhPyBTZWVpbmcgdGhlIHJlc3Qgb2YgdGhlIGZ1bmN0aW9uIGlzIGNyaXRpY2FsIHRvIHVuZGVyc3RhbmRpbmcgaXRzIGNvbnRleHQuIFRoZW4sIEkgbmVlZCB0byBjaGVjayB0aGUgY29ycmVzcG9uZGluZyBLY29uZmlnIGZvciB0aGF0IGRyaXZlci4gVGhpcyYjMzk7bGwgdGVsbCBtZSBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGNvbXBpbGUtdGltZSBvcHRpb25zIG9yIGRlcGVuZGVuY2llcyB0aGF0IGFmZmVjdCBpdHMgYmVoYXZpb3IuIFVuZGVyc3RhbmRpbmcgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBpcyBjcnVjaWFsIHRvIHVuZGVyc3RhbmRpbmcgd2hpY2ggZmVhdHVyZXMgYXJlIGVuYWJsZWQgb3IgZGlzYWJsZWQsIGFuZCBob3cgdGhhdCBpbXBhY3RzIHRoZSBkcml2ZXImIzM5O3Mgb3BlcmF0aW9uLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGVzZSB0d28gcGllY2VzIG9mIGluZm9ybWF0aW9uIGZpdCB0b2dldGhlciDigJPCoHRoZSBleGVjdXRpb24gcGF0aCwgYW5kIHRoZSBjb250cm9sIHBhcmFtZXRlcnMuIFRoaXMgd2lsbCBoZWxwIG1lIGRpYWdub3NlIGlzc3Vlcywgb3B0aW1pemUgaXQsIG9yIHNpbXBseSB1bmRlcnN0YW5kIHRoZSBkZXNpZ24gYmV0dGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDExOjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL2NhdGMuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI3MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjcwOlx0XHRcdHBrdF9zdGFydCAmIzQzOz0gKCgocGt0X2xlbiAmIzQzOyAxKSBcdTAwM2VcdTAwM2UgNikgJiM0MzsgMSkgXHUwMDNjXHUwMDNjIDY7XG4gMjcxOlx0XG4gMjcyOlx0XHR9IHdoaWxlIChwa3Rfc3RhcnQgLSAodTggKikgdXJiLVx1MDAzZXRyYW5zZmVyX2J1ZmZlciBcdTAwM2MgdXJiLVx1MDAzZWFjdHVhbF9sZW5ndGgpO1xuIDI3MzpcdFxuIDI3NDpcdFx0aWYgKGNhdGMtXHUwMDNlaXNfZjV1MDExKSB7XG4gMjc1Olx0XHRcdGlmIChhdG9taWNfcmVhZChcdTAwMjZjYXRjLVx1MDAzZXJlY3Ffc3opKSB7XG4gMjc2Olx0XHRcdFx0aW50IHN0YXRlO1xuIDI3NzpcdFx0XHRcdGF0b21pY19kZWMoXHUwMDI2Y2F0Yy1cdTAwM2VyZWNxX3N6KTtcbiAyNzg6XHRcdFx0XHRuZXRkZXZfZGJnKGNhdGMtXHUwMDNlbmV0ZGV2LCBcJiMzNDtnZXR0aW5nIGV4dHJhIHBhY2tldFxcblwmIzM0Oyk7XG4gMjc5Olx0XHRcdFx0dXJiLVx1MDAzZWRldiA9IGNhdGMtXHUwMDNldXNiZGV2O1xuIDI4MDpcdFx0XHRcdGlmICgoc3RhdGUgPSB1c2Jfc3VibWl0X3VyYih1cmIsIEdGUF9BVE9NSUMpKSBcdTAwM2MgMCkge1xuIDI4MTpcdFx0XHRcdFx0bmV0ZGV2X2RiZyhjYXRjLVx1MDAzZW5ldGRldixcbiAyODI6XHRcdFx0XHRcdFx0ICAgXCYjMzQ7c3VibWl0KHJ4X3VyYikgc3RhdHVzICVkXFxuXCYjMzQ7LCBzdGF0ZSk7XG4gMjgzOlx0XHRcdFx0fVxuIDI4NDpcdFx0XHR9IGVsc2Uge1xuIDI4NTpcdFx0XHRcdGNsZWFyX2JpdChSWF9SVU5OSU5HLCBcdTAwMjZjYXRjLVx1MDAzZWZsYWdzKTtcbiAyODY6XHRcdFx0fVxuIDI4NzpcdFx0fVxuIDI4ODpcdH1cbiAyODk6XHRcbiAyOTA6XHRzdGF0aWMgdm9pZCBjYXRjX2lycV9kb25lKHN0cnVjdCB1cmIgKnVyYilcbiAyOTE6XHR7XG4gMjkyOlx0XHRzdHJ1Y3QgY2F0YyAqY2F0YyA9IHVyYi1cdTAwM2Vjb250ZXh0O1xuIDI5MzpcdFx0dTggKmRhdGEgPSB1cmItXHUwMDNldHJhbnNmZXJfYnVmZmVyO1xuIDI5NDpcdFx0aW50IHN0YXR1cyA9IHVyYi1cdTAwM2VzdGF0dXM7XG4gMjk1Olx0XHR1bnNpZ25lZCBpbnQgaGFzZGF0YSwgbGlua3N0cyA9IExpbmtOb0NoYW5nZTtcbiAyOTY6XHRcdGludCByZXM7XG4gMjk3Olx0XG4gMjk4Olx0XHRpZiAoIWNhdGMtXHUwMDNlaXNfZjV1MDExKSB7XG4gMjk5Olx0XHRcdGhhc2RhdGEgPSBkYXRhWzFdIFx1MDAyNiAweDgwO1xuIDMwMDpcdFx0XHRpZiAoZGF0YVsxXSBcdTAwMjYgMHg0MClcbiAzMDE6XHRcdFx0XHRsaW5rc3RzID0gTGlua0dvb2Q7XG4gMzAyOlx0XHRcdGVsc2UgaWYgKGRhdGFbMV0gXHUwMDI2IDB4MjApXG4gMzAzOlx0XHRcdFx0bGlua3N0cyA9IExpbmtCYWQ7XG4gMzA0Olx0XHR9IGVsc2Uge1xuIDMwNTpcdFx0XHRoYXNkYXRhID0gKHVuc2lnbmVkIGludCkoYmUxNl90b19jcHVwKChfX2JlMTYqKWRhdGEpIFx1MDAyNiAweDBmZmYpO1xuIDMwNjpcdFx0XHRpZiAoZGF0YVswXSA9PSAweDkwKVxuIDMwNzpcdFx0XHRcdGxpbmtzdHMgPSBMaW5rR29vZDtcbiAzMDg6XHRcdFx0ZWxzZSBpZiAoZGF0YVswXSA9PSAweEEwKVxuIDMwOTpcdFx0XHRcdGxpbmtzdHMgPSBMaW5rQmFkO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDExOjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwNTIKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgaXNzdWU6CgoqKktjb25maWcgSW5zcGVjdGlvbiBmb3IgYGNhdGMuY2AqKgoKT2theSwgZmlyc3QgdGhpbmdzIGZpcnN0LCBJIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgZmlsZXMuIFRoZSBjb2RlJiMzOTtzIGJlaGF2aW9yIGhpbmdlcyBvbiB0aG9zZSBjb25maWd1cmF0aW9ucywgc28gdW5kZXJzdGFuZGluZyB0aGUgS2NvbmZpZyBzZXR0aW5ncyByZWxhdGVkIHRvIGBjYXRjLmNgIGlzIHBhcmFtb3VudC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBvcHRpb25zIGNvbnRyb2wgaXRzIGluY2x1c2lvbiwgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uLCBhbmQgZGVwZW5kZW5jeSBpbXBsaWNhdGlvbnMuIE15IGluaXRpYWwgZm9jdXMgaXMgb24gbG9jYXRpbmcgdGhlIHJlbGV2YW50IEtjb25maWcgZnJhZ21lbnRzLCBwb3RlbnRpYWxseSB1c2luZyBhIGdsb2JhbCBzZWFyY2ggd2l0aGluIHRoZSBwcm9qZWN0JiMzOTtzIHNvdXJjZSB0cmVlIGlmIEkgZG9uJiMzOTt0IGltbWVkaWF0ZWx5IGtub3cgdGhlIG1vZHVsZSBvciBkaXJlY3Rvcnkgc3RydWN0dXJlLgoKSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgY29uZmlndXJhdGlvbiBzeW1ib2xzIGRpcmVjdGx5IHRpZWQgdG8gYGNhdGMuY2Agb3IsIGFsdGVybmF0aXZlbHksIG1vcmUgZ2VuZXJhbCBmZWF0dXJlcyB0aGF0IG1pZ2h0IGluZGlyZWN0bHkgYWZmZWN0IGl0LiBGb3IgZXhhbXBsZSwgaXMgYENPTkZJR19DQVRDX0VOQUJMRURgIGEgc3ltYm9sPyBPciBwZXJoYXBzIGl0JiMzOTtzIGVuYWJsZWQgYnkgc29tZSBicm9hZGVyIGZlYXR1cmUgbGlrZSBgQ09ORklHX05FVFdPUktfU1VQUE9SVGAgb3IgYSBtb3JlIHNwZWNpZmljIGRyaXZlciBjb25maWd1cmF0aW9uLiBJIGhhdmUgdG8ga2VlcCB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUgb2YgdGhlIHByb2plY3QgaW4gbWluZDsgaXQgY291bGQgYmUgbGF5ZXJlZCwgd2l0aCBkaWZmZXJlbnQgS2NvbmZpZyBmaWxlcyBpbmZsdWVuY2luZyB0aGlzIGZpbGUuCgpOZXh0LCBJIG5lZWQgdG8gYW5hbHl6ZSB0aGUgaW1wbGljYXRpb25zLiBJZiBgY2F0Yy5jYCBpcyBvbmx5IGluY2x1ZGVkIHVuZGVyIGNlcnRhaW4gY29uZmlndXJhdGlvbnMsIEkgbmVlZCB0byBrbm93ICp3aHkqLiBXaGF0IGFyZSB0aGUgYXNzdW1wdGlvbnMgYmFrZWQgaW50byB0aGF0IGNvbmZpZ3VyYXRpb24/IERvZXMgaXQgbWVhbiB0aGUgZmlsZSBpcyBvbmx5IG5lZWRlZCBmb3IgcGFydGljdWxhciBoYXJkd2FyZSwgc3BlY2lmaWMgdXNlIGNhc2VzLCBvciBwYXJ0aWN1bGFyIGJ1aWxkIHRhcmdldHM/IEFyZSB0aGVyZSBvdGhlciBmaWxlcyBvciBtb2R1bGVzIGltcGFjdGVkIGJ5IHRoaXMgc2V0dGluZz8gSG93IGRvZXMgdGhpcyBwb3RlbnRpYWxseSBhZmZlY3QgdGhlIG92ZXJhbGwgYnVpbGQgc3lzdGVtIGFuZCB0aGUgcmVzdWx0aW5nIGJpbmFyeSBzaXplPyBJdCYjMzk7cyByZWFsbHkgdGhlIG1vc3QgY3JpdGljYWwgZmlyc3Qgc3RlcDsgdW5kZXJzdGFuZGluZyB0aGVzZSBzZXR0aW5ncyBpcyBmb3VuZGF0aW9uYWwgZm9yIGFueXRoaW5nIGVsc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTE6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y2F0YyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNjIwIGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz0xNT1jb25maWcgVVNCX0NBVENcbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0zMS1cdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzozMjpcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGNhdGMuXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0zMy1cbi0tXG5kcml2ZXJzL25ldC91c2IvTWFrZWZpbGUtNS1cbmRyaXZlcnMvbmV0L3VzYi9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19VU0JfQ0FUQylcdFx0JiM0Mzs9IGNhdGMub1xuZHJpdmVycy9uZXQvdXNiL01ha2VmaWxlLTctb2JqLSQoQ09ORklHX1VTQl9LQVdFVEgpXHQmIzQzOz0ga2F3ZXRoLm9cbi0tXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jPTQ1PU1PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTFwmIzM0Oyk7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTQ2LVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo0NzpzdGF0aWMgY29uc3QgY2hhciBkcml2ZXJfbmFtZVtdID0gXCYjMzQ7Y2F0Y1wmIzM0OztcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNDgtXG4tLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02NC1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NjU6ZW51bSBjYXRjX3VzYl9lcCB7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTY2LVx0Q0FUQ19VU0JfRVBfQ09OVFJPTFx0PSAwLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM9MTM5PWVudW0gbGlua19zdGF0dXMge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMTQ1LS8qXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjE0NjogKiBUaGUgY2F0YyBzdHJ1Y3QuXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTE0Ny0gKi9cbi0tXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTE1Mi1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MTUzOnN0cnVjdCBjYXRjIHtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMTU0LVx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTE4Mi1cdFx0aW50IGxlbjtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MTgzOlx0XHR2b2lkICgqY2FsbGJhY2spKHN0cnVjdCBjYXRjICpjYXRjLCBzdHJ1Y3QgY3RybF9xdWV1ZSAqcSk7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTE4NC1cdH0gY3RybF9xdWV1ZVtDVFJMX1FVRVVFXTtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTE5Ni1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MTk3OiNkZWZpbmUgY2F0Y19nZXRfbWFjKGNhdGMsIG1hYylcdFx0XHRcdGNhdGNfY3RybF9tc2coY2F0YywgVVNCX0RJUl9JTiwgIEdldE1hYywgMCwgMCwgbWFjLCAgNilcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MTk4OiNkZWZpbmUgY2F0Y19yZXNldChjYXRjKVx0XHRcdFx0Y2F0Y19jdHJsX21zZyhjYXRjLCBVU0JfRElSX09VVCwgUmVzZXQsIDAsIDAsIE5VTEwsIDApXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjE5OTojZGVmaW5lIGNhdGNfc2V0X3JlZyhjYXRjLCByZWcsIHZhbClcdFx0XHRjYXRjX2N0cmxfbXNnKGNhdGMsIFVTQl9ESVJfT1VULCBTZXRSZWcsIHZhbCwgcmVnLCBOVUxMLCAwKVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzoyMDA6I2RlZmluZSBjYXRjX2dldF9yZWcoY2F0YywgcmVnLCBidWYpXHRcdFx0Y2F0Y19jdHJsX21zZyhjYXRjLCBVU0JfRElSX0lOLCAgR2V0UmVnLCAwLCByZWcsIGJ1ZiwgMSlcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MjAxOiNkZWZpbmUgY2F0Y193cml0ZV9tZW0oY2F0YywgYWRkciwgYnVmLCBzaXplKVx0XHRjYXRjX2N0cmxfbXNnKGNhdGMsIFVTQl9ESVJfT1VULCBXcml0ZU1lbSwgMCwgYWRkciwgYnVmLCBzaXplKVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzoyMDI6I2RlZmluZSBjYXRjX3JlYWRfbWVtKGNhdGMsIGFkZHIsIGJ1Ziwgc2l6ZSlcdFx0Y2F0Y19jdHJsX21zZyhjYXRjLCBVU0JfRElSX0lOLCAgUmVhZE1lbSwgMCwgYWRkciwgYnVmLCBzaXplKVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0yMDMtXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjIwNDojZGVmaW5lIGY1dTAxMV9yeG1vZGUoY2F0Yywgcnhtb2RlKVx0XHRcdGNhdGNfY3RybF9tc2coY2F0YywgVVNCX0RJUl9PVVQsIFNldFJ4TW9kZSwgMCwgMSwgcnhtb2RlLCAyKVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzoyMDU6I2RlZmluZSBmNXUwMTFfcnhtb2RlX2FzeW5jKGNhdGMsIHJ4bW9kZSlcdFx0Y2F0Y19jdHJsX2FzeW5jKGNhdGMsIFVTQl9ESVJfT1VULCBTZXRSeE1vZGUsIDAsIDEsIFx1MDAyNnJ4bW9kZSwgMiwgTlVMTClcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MjA2OiNkZWZpbmUgZjV1MDExX21jaGFzaF9hc3luYyhjYXRjLCBoYXNoKVx0XHRcdGNhdGNfY3RybF9hc3luYyhjYXRjLCBVU0JfRElSX09VVCwgU2V0UnhNb2RlLCAwLCAyLCBcdTAwMjZoYXNoLCA4LCBOVUxMKVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0yMDctXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjIwODojZGVmaW5lIGNhdGNfc2V0X3JlZ19hc3luYyhjYXRjLCByZWcsIHZhbClcdFx0Y2F0Y19jdHJsX2FzeW5jKGNhdGMsIFVTQl9ESVJfT1VULCBTZXRSZWcsIHZhbCwgcmVnLCBOVUxMLCAwLCBOVUxMKVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzoyMDk6I2RlZmluZSBjYXRjX2dldF9yZWdfYXN5bmMoY2F0YywgcmVnLCBjYilcdFx0Y2F0Y19jdHJsX2FzeW5jKGNhdGMsIFVTQl9ESVJfSU4sIEdldFJlZywgMCwgcmVnLCBOVUxMLCAxLCBjYilcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MjEwOiNkZWZpbmUgY2F0Y193cml0ZV9tZW1fYXN5bmMoY2F0YywgYWRkciwgYnVmLCBzaXplKVx0Y2F0Y19jdHJsX2FzeW5jKGNhdGMsIFVTQl9ESVJfT1VULCBXcml0ZU1lbSwgMCwgYWRkciwgYnVmLCBzaXplLCBOVUxMKVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0yMTEtXG4tLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0yMTUtXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjIxNjpzdGF0aWMgdm9pZCBjYXRjX3J4X2RvbmUoc3RydWN0IHVyYiAqdXJiKVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0yMTcte1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzoyMTg6XHRzdHJ1Y3QgY2F0YyAqY2F0YyA9IHVyYi1cdTAwM2Vjb250ZXh0O1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0yMTktXHR1OCAqcGt0X3N0YXJ0ID0gdXJiLVx1MDAzZXRyYW5zZmVyX2J1ZmZlcjtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTIyMy1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MjI0Olx0aWYgKCFjYXRjLVx1MDAzZWlzX2Y1dTAxMSkge1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzoyMjU6XHRcdGNsZWFyX2JpdChSWF9SVU5OSU5HLCBcdTAwMjZjYXRjLVx1MDAzZWZsYWdzKTtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMjI2LVx0XHRwa3Rfb2Zmc2V0ID0gMjtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTIzNS1cdGRvIHtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MjM2Olx0XHRpZighY2F0Yy1cdTAwM2Vpc19mNXUwMTEpIHtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMjM3LVx0XHRcdGludCByZW1haW5pbmcgPSB1cmItXHUwMDNlYWN0dWFsX2xlbmd0aCAtXG4tLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0yNDAtXHRcdFx0aWYgKHJlbWFpbmluZyBcdTAwM2MgcGt0X29mZnNldCkge1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzoyNDE6XHRcdFx0XHRjYXRjLVx1MDAzZW5ldGRldi1cdTAwM2VzdGF0cy5yeF9sZW5ndGhfZXJyb3JzJiM0MzsmIzQzOztcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MjQyOlx0XHRcdFx0Y2F0Yy1cdTAwM2VuZXRkZXYtXHUwMDNlc3RhdHMucnhfZXJyb3JzJiM0MzsmIzQzOztcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMjQzLVx0XHRcdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0yNDYtXHRcdFx0aWYgKHBrdF9sZW4gJiM0MzsgcGt0X29mZnNldCBcdTAwM2UgcmVtYWluaW5nKSB7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjI0NzpcdFx0XHRcdGNhdGMtXHUwMDNlbmV0ZGV2LVx1MDAzZXN0YXRzLnJ4X2xlbmd0aF9lcnJvcnMmIzQzOyYjNDM7O1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzoyNDg6XHRcdFx0XHRjYXRjLVx1MDAzZW5ldGRldi1cdTAwM2VzdGF0cy5yeF9lcnJvcnMmIzQzOyYjNDM7O1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0yNDktXHRcdFx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTI2MC1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MjYxOlx0XHRza2ItXHUwMDNlcHJvdG9jb2wgPSBldGhfdHlwZV90cmFucyhza2IsIGNhdGMtXHUwMDNlbmV0ZGV2KTtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMjYyLVx0XHRuZXRpZl9yeChza2IpO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0yNjMtXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjI2NDpcdFx0Y2F0Yy1cdTAwM2VuZXRkZXYtXHUwMDNlc3RhdHMucnhfcGFja2V0cyYjNDM7JiM0Mzs7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjI2NTpcdFx0Y2F0Yy1cdTAwM2VuZXRkZXYtXHUwMDNlc3RhdHMucnhfYnl0ZXMgJiM0Mzs9IHBrdF9sZW47XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTI2Ni1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMjY3LVx0XHQvKiBGNVUwMTEgb25seSBkb2VzIG9uZSBwYWNrZXQgcGVyIFJYICovXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjI2ODpcdFx0aWYgKGNhdGMtXHUwMDNlaXNfZjV1MDExKVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0yNjktXHRcdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0yNzMtXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjI3NDpcdGlmIChjYXRjLVx1MDAzZWlzX2Y1dTAxMSkge1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzoyNzU6XHRcdGlmIChhdG9taWNfcmVhZChcdTAwMjZjYXRjLVx1MDAzZXJlY3Ffc3opKSB7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTI3Ni1cdFx0XHRpbnQgc3RhdGU7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjI3NzpcdFx0XHRhdG9taWNfZGVjKFx1MDAyNmNhdGMtXHUwMDNlcmVjcV9zeik7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjI3ODpcdFx0XHRuZXRkZXZfZGJnKGNhdGMtXHUwMDNlbmV0ZGV2LCBcJiMzNDtnZXR0aW5nIGV4dHJhIHBhY2tldFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjI3OTpcdFx0XHR1cmItXHUwMDNlZGV2ID0gY2F0Yy1cdTAwM2V1c2JkZXY7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTI4MC1cdFx0XHRpZiAoKHN0YXRlID0gdXNiX3N1Ym1pdF91cmIodXJiLCBHRlBfQVRPTUlDKSkgXHUwMDNjIDApIHtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MjgxOlx0XHRcdFx0bmV0ZGV2X2RiZyhjYXRjLVx1MDAzZW5ldGRldixcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMjgyLVx0XHRcdFx0XHQgICBcJiMzNDtzdWJtaXQocnhfdXJiKSBzdGF0dXMgJWRcXG5cJiMzNDssIHN0YXRlKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTI4NC1cdFx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6Mjg1Olx0XHRcdGNsZWFyX2JpdChSWF9SVU5OSU5HLCBcdTAwMjZjYXRjLVx1MDAzZWZsYWdzKTtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMjg2LVx0XHR9XG4tLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0yODktXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjI5MDpzdGF0aWMgdm9pZCBjYXRjX2lycV9kb25lKHN0cnVjdCB1cmIgKnVyYilcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMjkxLXtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MjkyOlx0c3RydWN0IGNhdGMgKmNhdGMgPSB1cmItXHUwMDNlY29udGV4dDtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMjkzLVx0dTggKmRhdGEgPSB1cmItXHUwMDNldHJhbnNmZXJfYnVmZmVyO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMjk3LVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzoyOTg6XHRpZiAoIWNhdGMtXHUwMDNlaXNfZjV1MDExKSB7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTI5OS1cdFx0aGFzZGF0YSA9IGRhdGFbMV0gXHUwMDI2IDB4ODA7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0zMjctXHRpZiAobGlua3N0cyA9PSBMaW5rR29vZCkge1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzozMjg6XHRcdG5ldGlmX2NhcnJpZXJfb24oY2F0Yy1cdTAwM2VuZXRkZXYpO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzozMjk6XHRcdG5ldGRldl9kYmcoY2F0Yy1cdTAwM2VuZXRkZXYsIFwmIzM0O2xpbmsgb2tcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0zMzAtXHR9XG4tLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0zMzItXHRpZiAobGlua3N0cyA9PSBMaW5rQmFkKSB7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjMzMzpcdFx0bmV0aWZfY2Fycmllcl9vZmYoY2F0Yy1cdTAwM2VuZXRkZXYpO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzozMzQ6XHRcdG5ldGRldl9kYmcoY2F0Yy1cdTAwM2VuZXRkZXYsIFwmIzM0O2xpbmsgYmFkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMzM1LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMzM3LVx0aWYgKGhhc2RhdGEpIHtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MzM4Olx0XHRpZiAodGVzdF9hbmRfc2V0X2JpdChSWF9SVU5OSU5HLCBcdTAwMjZjYXRjLVx1MDAzZWZsYWdzKSkge1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzozMzk6XHRcdFx0aWYgKGNhdGMtXHUwMDNlaXNfZjV1MDExKVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzozNDA6XHRcdFx0XHRhdG9taWNfaW5jKFx1MDAyNmNhdGMtXHUwMDNlcmVjcV9zeik7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTM0MS1cdFx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MzQyOlx0XHRcdGNhdGMtXHUwMDNlcnhfdXJiLVx1MDAzZWRldiA9IGNhdGMtXHUwMDNldXNiZGV2O1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzozNDM6XHRcdFx0aWYgKChyZXMgPSB1c2Jfc3VibWl0X3VyYihjYXRjLVx1MDAzZXJ4X3VyYiwgR0ZQX0FUT01JQykpIFx1MDAzYyAwKSB7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjM0NDpcdFx0XHRcdGRldl9lcnIoXHUwMDI2Y2F0Yy1cdTAwM2V1c2JkZXYtXHUwMDNlZGV2LFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0zNDUtXHRcdFx0XHRcdFwmIzM0O3N1Ym1pdChyeF91cmIpIHN0YXR1cyAlZFxcblwmIzM0OywgcmVzKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTM1MS1cdGlmIChyZXMpXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjM1MjpcdFx0ZGV2X2VycihcdTAwMjZjYXRjLVx1MDAzZXVzYmRldi1cdTAwM2VkZXYsXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTM1My1cdFx0XHRcJiMzNDtjYW4mIzM5O3QgcmVzdWJtaXQgaW50ciwgJXMtJXMsIHN0YXR1cyAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MzU0Olx0XHRcdGNhdGMtXHUwMDNldXNiZGV2LVx1MDAzZWJ1cy1cdTAwM2VidXNfbmFtZSxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MzU1Olx0XHRcdGNhdGMtXHUwMDNldXNiZGV2LVx1MDAzZWRldnBhdGgsIHJlcyk7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTM1Ni19XG4tLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0zNjEtXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjM2MjpzdGF0aWMgaW50IGNhdGNfdHhfcnVuKHN0cnVjdCBjYXRjICpjYXRjKVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0zNjMte1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMzY1LVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzozNjY6XHRpZiAoY2F0Yy1cdTAwM2Vpc19mNXUwMTEpXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjM2NzpcdFx0Y2F0Yy1cdTAwM2V0eF9wdHIgPSAoY2F0Yy1cdTAwM2V0eF9wdHIgJiM0MzsgNjMpIFx1MDAyNiB+NjM7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTM2OC1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MzY5Olx0Y2F0Yy1cdTAwM2V0eF91cmItXHUwMDNldHJhbnNmZXJfYnVmZmVyX2xlbmd0aCA9IGNhdGMtXHUwMDNldHhfcHRyO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzozNzA6XHRjYXRjLVx1MDAzZXR4X3VyYi1cdTAwM2V0cmFuc2Zlcl9idWZmZXIgPSBjYXRjLVx1MDAzZXR4X2J1ZltjYXRjLVx1MDAzZXR4X2lkeF07XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjM3MTpcdGNhdGMtXHUwMDNldHhfdXJiLVx1MDAzZWRldiA9IGNhdGMtXHUwMDNldXNiZGV2O1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0zNzItXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjM3MzpcdGlmICgoc3RhdHVzID0gdXNiX3N1Ym1pdF91cmIoY2F0Yy1cdTAwM2V0eF91cmIsIEdGUF9BVE9NSUMpKSBcdTAwM2MgMClcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6Mzc0Olx0XHRkZXZfZXJyKFx1MDAyNmNhdGMtXHUwMDNldXNiZGV2LVx1MDAzZWRldiwgXCYjMzQ7c3VibWl0KHR4X3VyYiksIHN0YXR1cyAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMzc1LVx0XHRcdHN0YXR1cyk7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTM3Ni1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6Mzc3Olx0Y2F0Yy1cdTAwM2V0eF9pZHggPSAhY2F0Yy1cdTAwM2V0eF9pZHg7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjM3ODpcdGNhdGMtXHUwMDNldHhfcHRyID0gMDtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMzc5LVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzozODA6XHRuZXRpZl90cmFuc191cGRhdGUoY2F0Yy1cdTAwM2VuZXRkZXYpO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0zODEtXHRyZXR1cm4gc3RhdHVzO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMzgzLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzozODQ6c3RhdGljIHZvaWQgY2F0Y190eF9kb25lKHN0cnVjdCB1cmIgKnVyYilcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMzg1LXtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6Mzg2Olx0c3RydWN0IGNhdGMgKmNhdGMgPSB1cmItXHUwMDNlY29udGV4dDtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMzg3LVx0dW5zaWduZWQgbG9uZyBmbGFncztcbi0tXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTM5Mi1cdFx0dXJiLVx1MDAzZXN0YXR1cyA9IDA7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjM5MzpcdFx0bmV0aWZfdHJhbnNfdXBkYXRlKGNhdGMtXHUwMDNlbmV0ZGV2KTtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6Mzk0Olx0XHRjYXRjLVx1MDAzZW5ldGRldi1cdTAwM2VzdGF0cy50eF9lcnJvcnMmIzQzOyYjNDM7O1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzozOTU6XHRcdGNsZWFyX2JpdChUWF9SVU5OSU5HLCBcdTAwMjZjYXRjLVx1MDAzZWZsYWdzKTtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6Mzk2Olx0XHRuZXRpZl93YWtlX3F1ZXVlKGNhdGMtXHUwMDNlbmV0ZGV2KTtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMzk3LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy00MDUtXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjQwNjpcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmNhdGMtXHUwMDNldHhfbG9jaywgZmxhZ3MpO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy00MDctXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjQwODpcdGlmIChjYXRjLVx1MDAzZXR4X3B0cikge1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo0MDk6XHRcdHIgPSBjYXRjX3R4X3J1bihjYXRjKTtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNDEwLVx0XHRpZiAodW5saWtlbHkociBcdTAwM2MgMCkpXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjQxMTpcdFx0XHRjbGVhcl9iaXQoVFhfUlVOTklORywgXHUwMDI2Y2F0Yy1cdTAwM2VmbGFncyk7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTQxMi1cdH0gZWxzZSB7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjQxMzpcdFx0Y2xlYXJfYml0KFRYX1JVTk5JTkcsIFx1MDAyNmNhdGMtXHUwMDNlZmxhZ3MpO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy00MTQtXHR9XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTQxNS1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NDE2Olx0bmV0aWZfd2FrZV9xdWV1ZShjYXRjLVx1MDAzZW5ldGRldik7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTQxNy1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NDE4Olx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZjYXRjLVx1MDAzZXR4X2xvY2ssIGZsYWdzKTtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNDE5LX1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNDIwLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo0MjE6c3RhdGljIG5ldGRldl90eF90IGNhdGNfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy00MjItXHRcdFx0XHRcdCBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy00MjMte1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo0MjQ6XHRzdHJ1Y3QgY2F0YyAqY2F0YyA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTQyNS1cdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy00MjgtXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjQyOTpcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmNhdGMtXHUwMDNldHhfbG9jaywgZmxhZ3MpO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy00MzAtXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjQzMTpcdGNhdGMtXHUwMDNldHhfcHRyID0gKCgoY2F0Yy1cdTAwM2V0eF9wdHIgLSAxKSBcdTAwM2VcdTAwM2UgNikgJiM0MzsgMSkgXHUwMDNjXHUwMDNjIDY7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjQzMjpcdHR4X2J1ZiA9IGNhdGMtXHUwMDNldHhfYnVmW2NhdGMtXHUwMDNldHhfaWR4XSAmIzQzOyBjYXRjLVx1MDAzZXR4X3B0cjtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NDMzOlx0aWYgKGNhdGMtXHUwMDNlaXNfZjV1MDExKVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy00MzQtXHRcdCooX19iZTE2ICopdHhfYnVmID0gY3B1X3RvX2JlMTYoc2tiLVx1MDAzZWxlbik7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy00MzctXHRza2JfY29weV9mcm9tX2xpbmVhcl9kYXRhKHNrYiwgdHhfYnVmICYjNDM7IDIsIHNrYi1cdTAwM2VsZW4pO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo0Mzg6XHRjYXRjLVx1MDAzZXR4X3B0ciAmIzQzOz0gc2tiLVx1MDAzZWxlbiAmIzQzOyAyO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy00MzktXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjQ0MDpcdGlmICghdGVzdF9hbmRfc2V0X2JpdChUWF9SVU5OSU5HLCBcdTAwMjZjYXRjLVx1MDAzZWZsYWdzKSkge1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo0NDE6XHRcdHIgPSBjYXRjX3R4X3J1bihjYXRjKTtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNDQyLVx0XHRpZiAociBcdTAwM2MgMClcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NDQzOlx0XHRcdGNsZWFyX2JpdChUWF9SVU5OSU5HLCBcdTAwMjZjYXRjLVx1MDAzZWZsYWdzKTtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNDQ0LVx0fVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy00NDUtXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjQ0NjpcdGlmICgoY2F0Yy1cdTAwM2Vpc19mNXUwMTEgXHUwMDI2XHUwMDI2IGNhdGMtXHUwMDNldHhfcHRyKSB8fFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo0NDc6XHQgICAgKGNhdGMtXHUwMDNldHhfcHRyIFx1MDAzZT0gKChUWF9NQVhfQlVSU1QgLSAxKSAqIChQS1RfU1ogJiM0MzsgMikpKSlcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNDQ4LVx0XHRuZXRpZl9zdG9wX3F1ZXVlKG5ldGRldik7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTQ0OS1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NDUwOlx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZjYXRjLVx1MDAzZXR4X2xvY2ssIGZsYWdzKTtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNDUxLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy00NTItXHRpZiAociBcdTAwM2U9IDApIHtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NDUzOlx0XHRjYXRjLVx1MDAzZW5ldGRldi1cdTAwM2VzdGF0cy50eF9ieXRlcyAmIzQzOz0gc2tiLVx1MDAzZWxlbjtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NDU0Olx0XHRjYXRjLVx1MDAzZW5ldGRldi1cdTAwM2VzdGF0cy50eF9wYWNrZXRzJiM0MzsmIzQzOztcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNDU1LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNDYxLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo0NjI6c3RhdGljIHZvaWQgY2F0Y190eF90aW1lb3V0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHVuc2lnbmVkIGludCB0eHF1ZXVlKVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy00NjMte1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo0NjQ6XHRzdHJ1Y3QgY2F0YyAqY2F0YyA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTQ2NS1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNDY2LVx0ZGV2X3dhcm4oXHUwMDI2bmV0ZGV2LVx1MDAzZWRldiwgXCYjMzQ7VHJhbnNtaXQgdGltZWQgb3V0LlxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjQ2NzpcdHVzYl91bmxpbmtfdXJiKGNhdGMtXHUwMDNldHhfdXJiKTtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNDY4LX1cbi0tXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTQ3My1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NDc0OnN0YXRpYyBpbnQgY2F0Y19jdHJsX21zZyhzdHJ1Y3QgY2F0YyAqY2F0YywgdTggZGlyLCB1OCByZXF1ZXN0LCB1MTYgdmFsdWUsIHUxNiBpbmRleCwgdm9pZCAqYnVmLCBpbnQgbGVuKVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy00NzUte1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo0NzY6ICAgICAgICBpbnQgcmV0dmFsID0gdXNiX2NvbnRyb2xfbXNnKGNhdGMtXHUwMDNldXNiZGV2LFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo0Nzc6XHRcdGRpciA/IHVzYl9yY3ZjdHJscGlwZShjYXRjLVx1MDAzZXVzYmRldiwgMCkgOiB1c2Jfc25kY3RybHBpcGUoY2F0Yy1cdTAwM2V1c2JkZXYsIDApLFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy00NzgtXHRcdCByZXF1ZXN0LCAweDQwIHwgZGlyLCB2YWx1ZSwgaW5kZXgsIGJ1ZiwgbGVuLCAxMDAwKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTQ4MS1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NDgyOnN0YXRpYyB2b2lkIGNhdGNfY3RybF9ydW4oc3RydWN0IGNhdGMgKmNhdGMpXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTQ4My17XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjQ4NDpcdHN0cnVjdCBjdHJsX3F1ZXVlICpxID0gY2F0Yy1cdTAwM2VjdHJsX3F1ZXVlICYjNDM7IGNhdGMtXHUwMDNlY3RybF90YWlsO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo0ODU6XHRzdHJ1Y3QgdXNiX2RldmljZSAqdXNiZGV2ID0gY2F0Yy1cdTAwM2V1c2JkZXY7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjQ4NjpcdHN0cnVjdCB1cmIgKnVyYiA9IGNhdGMtXHUwMDNlY3RybF91cmI7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjQ4NzpcdHN0cnVjdCB1c2JfY3RybHJlcXVlc3QgKmRyID0gXHUwMDI2Y2F0Yy1cdTAwM2VjdHJsX2RyO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy00ODgtXHRpbnQgc3RhdHVzO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNDk3LVx0dXJiLVx1MDAzZXRyYW5zZmVyX2J1ZmZlcl9sZW5ndGggPSBxLVx1MDAzZWxlbjtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NDk4Olx0dXJiLVx1MDAzZXRyYW5zZmVyX2J1ZmZlciA9IGNhdGMtXHUwMDNlY3RybF9idWY7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTQ5OS1cdHVyYi1cdTAwM2VzZXR1cF9wYWNrZXQgPSAodm9pZCAqKSBkcjtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTUwMi1cdGlmICghcS1cdTAwM2VkaXIgXHUwMDI2XHUwMDI2IHEtXHUwMDNlYnVmIFx1MDAyNlx1MDAyNiBxLVx1MDAzZWxlbilcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NTAzOlx0XHRtZW1jcHkoY2F0Yy1cdTAwM2VjdHJsX2J1ZiwgcS1cdTAwM2VidWYsIHEtXHUwMDNlbGVuKTtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNTA0LVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo1MDU6XHRpZiAoKHN0YXR1cyA9IHVzYl9zdWJtaXRfdXJiKGNhdGMtXHUwMDNlY3RybF91cmIsIEdGUF9BVE9NSUMpKSlcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NTA2Olx0XHRkZXZfZXJyKFx1MDAyNmNhdGMtXHUwMDNldXNiZGV2LVx1MDAzZWRldiwgXCYjMzQ7c3VibWl0KGN0cmxfdXJiKSBzdGF0dXMgJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTUwNy1cdFx0XHRzdGF0dXMpO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNTA5LVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo1MTA6c3RhdGljIHZvaWQgY2F0Y19jdHJsX2RvbmUoc3RydWN0IHVyYiAqdXJiKVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy01MTEte1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo1MTI6XHRzdHJ1Y3QgY2F0YyAqY2F0YyA9IHVyYi1cdTAwM2Vjb250ZXh0O1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy01MTMtXHRzdHJ1Y3QgY3RybF9xdWV1ZSAqcTtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTUyMC1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NTIxOlx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2Y2F0Yy1cdTAwM2VjdHJsX2xvY2ssIGZsYWdzKTtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNTIyLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo1MjM6XHRxID0gY2F0Yy1cdTAwM2VjdHJsX3F1ZXVlICYjNDM7IGNhdGMtXHUwMDNlY3RybF90YWlsO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy01MjQtXG4tLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy01MjYtXHRcdGlmIChxLVx1MDAzZWJ1ZiBcdTAwMjZcdTAwMjYgcS1cdTAwM2VsZW4pXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjUyNzpcdFx0XHRtZW1jcHkocS1cdTAwM2VidWYsIGNhdGMtXHUwMDNlY3RybF9idWYsIHEtXHUwMDNlbGVuKTtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNTI4LVx0XHRlbHNlXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjUyOTpcdFx0XHRxLVx1MDAzZWJ1ZiA9IGNhdGMtXHUwMDNlY3RybF9idWY7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTUzMC1cdH1cbi0tXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTUzMi1cdGlmIChxLVx1MDAzZWNhbGxiYWNrKVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo1MzM6XHRcdHEtXHUwMDNlY2FsbGJhY2soY2F0YywgcSk7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTUzNC1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NTM1Olx0Y2F0Yy1cdTAwM2VjdHJsX3RhaWwgPSAoY2F0Yy1cdTAwM2VjdHJsX3RhaWwgJiM0MzsgMSkgXHUwMDI2IChDVFJMX1FVRVVFIC0gMSk7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTUzNi1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NTM3Olx0aWYgKGNhdGMtXHUwMDNlY3RybF9oZWFkICE9IGNhdGMtXHUwMDNlY3RybF90YWlsKVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo1Mzg6XHRcdGNhdGNfY3RybF9ydW4oY2F0Yyk7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTUzOS1cdGVsc2VcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NTQwOlx0XHRjbGVhcl9iaXQoQ1RSTF9SVU5OSU5HLCBcdTAwMjZjYXRjLVx1MDAzZWZsYWdzKTtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNTQxLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo1NDI6XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmNhdGMtXHUwMDNlY3RybF9sb2NrLCBmbGFncyk7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTU0My19XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTU0NC1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NTQ1OnN0YXRpYyBpbnQgY2F0Y19jdHJsX2FzeW5jKHN0cnVjdCBjYXRjICpjYXRjLCB1OCBkaXIsIHU4IHJlcXVlc3QsIHUxNiB2YWx1ZSxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NTQ2Olx0dTE2IGluZGV4LCB2b2lkICpidWYsIGludCBsZW4sIHZvaWQgKCpjYWxsYmFjaykoc3RydWN0IGNhdGMgKmNhdGMsIHN0cnVjdCBjdHJsX3F1ZXVlICpxKSlcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNTQ3LXtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTU1MS1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NTUyOlx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2Y2F0Yy1cdTAwM2VjdHJsX2xvY2ssIGZsYWdzKTtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNTUzLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo1NTQ6XHRxID0gY2F0Yy1cdTAwM2VjdHJsX3F1ZXVlICYjNDM7IGNhdGMtXHUwMDNlY3RybF9oZWFkO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy01NTUtXG4tLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy01NjMtXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjU2NDpcdGNhdGMtXHUwMDNlY3RybF9oZWFkID0gKGNhdGMtXHUwMDNlY3RybF9oZWFkICYjNDM7IDEpIFx1MDAyNiAoQ1RSTF9RVUVVRSAtIDEpO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy01NjUtXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjU2NjpcdGlmIChjYXRjLVx1MDAzZWN0cmxfaGVhZCA9PSBjYXRjLVx1MDAzZWN0cmxfdGFpbCkge1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo1Njc6XHRcdGRldl9lcnIoXHUwMDI2Y2F0Yy1cdTAwM2V1c2JkZXYtXHUwMDNlZGV2LCBcJiMzNDtjdHJsIHF1ZXVlIGZ1bGxcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo1Njg6XHRcdGNhdGMtXHUwMDNlY3RybF90YWlsID0gKGNhdGMtXHUwMDNlY3RybF90YWlsICYjNDM7IDEpIFx1MDAyNiAoQ1RSTF9RVUVVRSAtIDEpO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy01NjktXHRcdHJldHZhbCA9IC0xO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNTcxLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo1NzI6XHRpZiAoIXRlc3RfYW5kX3NldF9iaXQoQ1RSTF9SVU5OSU5HLCBcdTAwMjZjYXRjLVx1MDAzZWZsYWdzKSlcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NTczOlx0XHRjYXRjX2N0cmxfcnVuKGNhdGMpO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy01NzQtXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjU3NTpcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2Y2F0Yy1cdTAwM2VjdHJsX2xvY2ssIGZsYWdzKTtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNTc2LVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNTgzLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo1ODQ6c3RhdGljIHZvaWQgY2F0Y19zdGF0c19kb25lKHN0cnVjdCBjYXRjICpjYXRjLCBzdHJ1Y3QgY3RybF9xdWV1ZSAqcSlcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNTg1LXtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTU4OC1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NTg5Olx0Y2F0Yy1cdTAwM2VzdGF0c19idWZbaW5kZXhdID0gKigoY2hhciAqKXEtXHUwMDNlYnVmKTtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNTkwLVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNTkzLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo1OTQ6XHRkYXRhID0gKCh1MTYpY2F0Yy1cdTAwM2VzdGF0c19idWZbaW5kZXhdIFx1MDAzY1x1MDAzYyA4KSB8IGNhdGMtXHUwMDNlc3RhdHNfYnVmW2luZGV4ICYjNDM7IDFdO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo1OTU6XHRsYXN0ID0gY2F0Yy1cdTAwM2VzdGF0c192YWxzW2luZGV4IFx1MDAzZVx1MDAzZSAxXTtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNTk2LVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNTk5LVx0XHRjYXNlIFR4TXVsdGlDb2xsOlxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo2MDA6XHRcdFx0Y2F0Yy1cdTAwM2VuZXRkZXYtXHUwMDNlc3RhdHMuY29sbGlzaW9ucyAmIzQzOz0gZGF0YSAtIGxhc3Q7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTYwMS1cdFx0XHRicmVhaztcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNjAyLVx0XHRjYXNlIFR4RXhjZXNzQ29sbDpcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NjAzOlx0XHRcdGNhdGMtXHUwMDNlbmV0ZGV2LVx1MDAzZXN0YXRzLnR4X2Fib3J0ZWRfZXJyb3JzICYjNDM7PSBkYXRhIC0gbGFzdDtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NjA0Olx0XHRcdGNhdGMtXHUwMDNlbmV0ZGV2LVx1MDAzZXN0YXRzLnR4X2Vycm9ycyAmIzQzOz0gZGF0YSAtIGxhc3Q7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTYwNS1cdFx0XHRicmVhaztcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNjA2LVx0XHRjYXNlIFJ4RnJhbUVycjpcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NjA3Olx0XHRcdGNhdGMtXHUwMDNlbmV0ZGV2LVx1MDAzZXN0YXRzLnJ4X2ZyYW1lX2Vycm9ycyAmIzQzOz0gZGF0YSAtIGxhc3Q7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjYwODpcdFx0XHRjYXRjLVx1MDAzZW5ldGRldi1cdTAwM2VzdGF0cy5yeF9lcnJvcnMgJiM0Mzs9IGRhdGEgLSBsYXN0O1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02MDktXHRcdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02MTEtXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjYxMjpcdGNhdGMtXHUwMDNlc3RhdHNfdmFsc1tpbmRleCBcdTAwM2VcdTAwM2UgMV0gPSBkYXRhO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02MTMtfVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02MTQtXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjYxNTpzdGF0aWMgdm9pZCBjYXRjX3N0YXRzX3RpbWVyKHN0cnVjdCB0aW1lcl9saXN0ICp0KVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02MTYte1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo2MTc6XHRzdHJ1Y3QgY2F0YyAqY2F0YyA9IHRpbWVyX2NvbnRhaW5lcl9vZihjYXRjLCB0LCB0aW1lcik7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTYxOC1cdGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNjIwLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgODsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjYyMTpcdFx0Y2F0Y19nZXRfcmVnX2FzeW5jKGNhdGMsIEV0aFN0YXRzICYjNDM7IDcgLSBpLCBjYXRjX3N0YXRzX2RvbmUpO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02MjItXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjYyMzpcdG1vZF90aW1lcihcdTAwMjZjYXRjLVx1MDAzZXRpbWVyLCBqaWZmaWVzICYjNDM7IFNUQVRTX1VQREFURSk7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTYyNC19XG4tLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02MjktXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjYzMDpzdGF0aWMgdm9pZCBjYXRjX211bHRpY2FzdChjb25zdCB1bnNpZ25lZCBjaGFyICphZGRyLCB1OCAqbXVsdGljYXN0KVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02MzEte1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNjM3LVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo2Mzg6c3RhdGljIHZvaWQgY2F0Y19zZXRfbXVsdGljYXN0X2xpc3Qoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNjM5LXtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NjQwOlx0c3RydWN0IGNhdGMgKmNhdGMgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02NDEtXHRzdHJ1Y3QgbmV0ZGV2X2h3X2FkZHIgKmhhO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNjQ1LVx0ZXRoX2Jyb2FkY2FzdF9hZGRyKGJyb2FkY2FzdCk7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjY0NjpcdG1lbXNldChjYXRjLVx1MDAzZW11bHRpY2FzdCwgMCwgNjQpO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02NDctXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjY0ODpcdGNhdGNfbXVsdGljYXN0KGJyb2FkY2FzdCwgY2F0Yy1cdTAwM2VtdWx0aWNhc3QpO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo2NDk6XHRjYXRjX211bHRpY2FzdChuZXRkZXYtXHUwMDNlZGV2X2FkZHIsIGNhdGMtXHUwMDNlbXVsdGljYXN0KTtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNjUwLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02NTEtXHRpZiAobmV0ZGV2LVx1MDAzZWZsYWdzIFx1MDAyNiBJRkZfUFJPTUlTQykge1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo2NTI6XHRcdG1lbXNldChjYXRjLVx1MDAzZW11bHRpY2FzdCwgMHhmZiwgNjQpO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo2NTM6XHRcdHJ4IHw9ICghY2F0Yy1cdTAwM2Vpc19mNXUwMTEpID8gUnhQcm9taXNjIDogQWx0UnhQcm9taXNjO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02NTQtXHR9XG4tLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02NTYtXHRpZiAobmV0ZGV2LVx1MDAzZWZsYWdzIFx1MDAyNiBJRkZfQUxMTVVMVEkpIHtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NjU3Olx0XHRtZW1zZXQoY2F0Yy1cdTAwM2VtdWx0aWNhc3QsIDB4ZmYsIDY0KTtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNjU4LVx0fSBlbHNlIHtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTY2MC1cdFx0XHR1MzIgY3JjID0gZXRoZXJfY3JjX2xlKDYsIGhhLVx1MDAzZWFkZHIpO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo2NjE6XHRcdFx0aWYgKCFjYXRjLVx1MDAzZWlzX2Y1dTAxMSkge1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo2NjI6XHRcdFx0XHRjYXRjLVx1MDAzZW11bHRpY2FzdFsoY3JjIFx1MDAzZVx1MDAzZSAzKSBcdTAwMjYgMHgzZl0gfD0gMSBcdTAwM2NcdTAwM2MgKGNyYyBcdTAwMjYgNyk7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTY2My1cdFx0XHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo2NjQ6XHRcdFx0XHRjYXRjLVx1MDAzZW11bHRpY2FzdFs3LShjcmMgXHUwMDNlXHUwMDNlIDI5KV0gfD0gMSBcdTAwM2NcdTAwM2MgKChjcmMgXHUwMDNlXHUwMDNlIDI2KSBcdTAwMjYgNyk7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTY2NS1cdFx0XHR9XG4tLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02NjctXHR9XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjY2ODpcdGlmICghY2F0Yy1cdTAwM2Vpc19mNXUwMTEpIHtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NjY5Olx0XHRjYXRjX3NldF9yZWdfYXN5bmMoY2F0YywgUnhVbml0LCByeCk7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjY3MDpcdFx0Y2F0Y193cml0ZV9tZW1fYXN5bmMoY2F0YywgMHhmYTgwLCBjYXRjLVx1MDAzZW11bHRpY2FzdCwgNjQpO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02NzEtXHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo2NzI6XHRcdGY1dTAxMV9tY2hhc2hfYXN5bmMoY2F0YywgY2F0Yy1cdTAwM2VtdWx0aWNhc3QpO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo2NzM6XHRcdGlmIChjYXRjLVx1MDAzZXJ4bW9kZVswXSAhPSByeCkge1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo2NzQ6XHRcdFx0Y2F0Yy1cdTAwM2VyeG1vZGVbMF0gPSByeDtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6Njc1Olx0XHRcdG5ldGRldl9kYmcoY2F0Yy1cdTAwM2VuZXRkZXYsXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTY3Ni1cdFx0XHRcdCAgIFwmIzM0O1NldHRpbmcgUlggbW9kZSB0byAlMi4yWCAlMi4yWFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6Njc3Olx0XHRcdFx0ICAgY2F0Yy1cdTAwM2VyeG1vZGVbMF0sIGNhdGMtXHUwMDNlcnhtb2RlWzFdKTtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6Njc4Olx0XHRcdGY1dTAxMV9yeG1vZGVfYXN5bmMoY2F0YywgY2F0Yy1cdTAwM2VyeG1vZGUpO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02NzktXHRcdH1cbi0tXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTY4Mi1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NjgzOnN0YXRpYyB2b2lkIGNhdGNfZ2V0X2RydmluZm8oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNjg0LVx0XHRcdCAgICAgc3RydWN0IGV0aHRvb2xfZHJ2aW5mbyAqaW5mbylcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNjg1LXtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6Njg2Olx0c3RydWN0IGNhdGMgKmNhdGMgPSBuZXRkZXZfcHJpdihkZXYpO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02ODctXHRzdHJzY3B5KGluZm8tXHUwMDNlZHJpdmVyLCBkcml2ZXJfbmFtZSwgc2l6ZW9mKGluZm8tXHUwMDNlZHJpdmVyKSk7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjY4ODpcdHVzYl9tYWtlX3BhdGgoY2F0Yy1cdTAwM2V1c2JkZXYsIGluZm8tXHUwMDNlYnVzX2luZm8sIHNpemVvZihpbmZvLVx1MDAzZWJ1c19pbmZvKSk7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTY4OS19XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTY5MC1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NjkxOnN0YXRpYyBpbnQgY2F0Y19nZXRfbGlua19rc2V0dGluZ3Moc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNjkyLVx0XHRcdFx0ICAgc3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgKmNtZClcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNjkzLXtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6Njk0Olx0c3RydWN0IGNhdGMgKmNhdGMgPSBuZXRkZXZfcHJpdihkZXYpO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo2OTU6XHRpZiAoIWNhdGMtXHUwMDNlaXNfZjV1MDExKVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02OTYtXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jPTcxNT1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIG9wcyA9IHtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NzE2Olx0LmdldF9kcnZpbmZvID0gY2F0Y19nZXRfZHJ2aW5mbyxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNzE3LVx0LmdldF9saW5rID0gZXRodG9vbF9vcF9nZXRfbGluayxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NzE4Olx0LmdldF9saW5rX2tzZXR0aW5ncyA9IGNhdGNfZ2V0X2xpbmtfa3NldHRpbmdzLFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy03MTktfTtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTcyNC1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NzI1OnN0YXRpYyBpbnQgY2F0Y19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTcyNi17XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjcyNzpcdHN0cnVjdCBjYXRjICpjYXRjID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNzI4LVx0aW50IHN0YXR1cztcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNzI5LVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo3MzA6XHRjYXRjLVx1MDAzZWlycV91cmItXHUwMDNlZGV2ID0gY2F0Yy1cdTAwM2V1c2JkZXY7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjczMTpcdGlmICgoc3RhdHVzID0gdXNiX3N1Ym1pdF91cmIoY2F0Yy1cdTAwM2VpcnFfdXJiLCBHRlBfS0VSTkVMKSkgXHUwMDNjIDApIHtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NzMyOlx0XHRkZXZfZXJyKFx1MDAyNmNhdGMtXHUwMDNldXNiZGV2LVx1MDAzZWRldiwgXCYjMzQ7c3VibWl0KGlycV91cmIpIHN0YXR1cyAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNzMzLVx0XHRcdHN0YXR1cyk7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy03MzgtXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjczOTpcdGlmICghY2F0Yy1cdTAwM2Vpc19mNXUwMTEpXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjc0MDpcdFx0bW9kX3RpbWVyKFx1MDAyNmNhdGMtXHUwMDNldGltZXIsIGppZmZpZXMgJiM0MzsgU1RBVFNfVVBEQVRFKTtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNzQxLVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNzQ0LVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo3NDU6c3RhdGljIGludCBjYXRjX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNzQ2LXtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NzQ3Olx0c3RydWN0IGNhdGMgKmNhdGMgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy03NDgtXG4tLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy03NTAtXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjc1MTpcdGlmICghY2F0Yy1cdTAwM2Vpc19mNXUwMTEpXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjc1MjpcdFx0dGltZXJfZGVsZXRlX3N5bmMoXHUwMDI2Y2F0Yy1cdTAwM2V0aW1lcik7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTc1My1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NzU0Olx0dXNiX2tpbGxfdXJiKGNhdGMtXHUwMDNlcnhfdXJiKTtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NzU1Olx0dXNiX2tpbGxfdXJiKGNhdGMtXHUwMDNldHhfdXJiKTtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NzU2Olx0dXNiX2tpbGxfdXJiKGNhdGMtXHUwMDNlaXJxX3VyYik7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjc1NzpcdHVzYl9raWxsX3VyYihjYXRjLVx1MDAzZWN0cmxfdXJiKTtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNzU4LVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNzYxLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo3NjI6c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBjYXRjX25ldGRldl9vcHMgPSB7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjc2MzpcdC5uZG9fb3Blblx0XHQ9IGNhdGNfb3BlbixcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NzY0Olx0Lm5kb19zdG9wXHRcdD0gY2F0Y19zdG9wLFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo3NjU6XHQubmRvX3N0YXJ0X3htaXRcdFx0PSBjYXRjX3N0YXJ0X3htaXQsXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTc2Ni1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NzY3Olx0Lm5kb190eF90aW1lb3V0XHRcdD0gY2F0Y190eF90aW1lb3V0LFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo3Njg6XHQubmRvX3NldF9yeF9tb2RlXHQ9IGNhdGNfc2V0X211bHRpY2FzdF9saXN0LFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy03NjktXHQubmRvX3NldF9tYWNfYWRkcmVzcyBcdD0gZXRoX21hY19hZGRyLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNzc2LVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo3Nzc6c3RhdGljIGludCBjYXRjX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLCBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTc3OC17XG4tLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy03ODEtXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2O1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo3ODI6XHRzdHJ1Y3QgY2F0YyAqY2F0YztcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNzgzLVx0dTggYnJvYWRjYXN0W0VUSF9BTEVOXTtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTgxMi1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6ODEzOlx0bmV0ZGV2ID0gYWxsb2NfZXRoZXJkZXYoc2l6ZW9mKHN0cnVjdCBjYXRjKSk7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTgxNC1cdGlmICghbmV0ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtODE2LVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo4MTc6XHRjYXRjID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtODE4LVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo4MTk6XHRuZXRkZXYtXHUwMDNlbmV0ZGV2X29wcyA9IFx1MDAyNmNhdGNfbmV0ZGV2X29wcztcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtODIwLVx0bmV0ZGV2LVx1MDAzZXdhdGNoZG9nX3RpbWVvID0gVFhfVElNRU9VVDtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTgyMi1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6ODIzOlx0Y2F0Yy1cdTAwM2V1c2JkZXYgPSB1c2JkZXY7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjgyNDpcdGNhdGMtXHUwMDNlbmV0ZGV2ID0gbmV0ZGV2O1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy04MjUtXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjgyNjpcdHNwaW5fbG9ja19pbml0KFx1MDAyNmNhdGMtXHUwMDNldHhfbG9jayk7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjgyNzpcdHNwaW5fbG9ja19pbml0KFx1MDAyNmNhdGMtXHUwMDNlY3RybF9sb2NrKTtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtODI4LVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo4Mjk6XHR0aW1lcl9zZXR1cChcdTAwMjZjYXRjLVx1MDAzZXRpbWVyLCBjYXRjX3N0YXRzX3RpbWVyLCAwKTtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtODMwLVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo4MzE6XHRjYXRjLVx1MDAzZWN0cmxfdXJiID0gdXNiX2FsbG9jX3VyYigwLCBHRlBfS0VSTkVMKTtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6ODMyOlx0Y2F0Yy1cdTAwM2V0eF91cmIgPSB1c2JfYWxsb2NfdXJiKDAsIEdGUF9LRVJORUwpO1xuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo4MzM6XHRjYXRjLVx1MDAzZXJ4X3VyYiA9IHVzYl9hbGxvY191cmIoMCwgR0ZQX0tFUk5FTCk7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjgzNDpcdGNhdGMtXHUwMDNlaXJxX3VyYiA9IHVzYl9hbGxvY191cmIoMCwgR0ZQX0tFUk5FTCk7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjgzNTpcdGlmICgoIWNhdGMtXHUwMDNlY3RybF91cmIpIHx8ICghY2F0Yy1cdTAwM2V0eF91cmIpIHx8XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjgzNjpcdCAgICAoIWNhdGMtXHUwMDNlcnhfdXJiKSB8fCAoIWNhdGMtXHUwMDNlaXJxX3VyYikpIHtcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtODM3LVx0XHRkZXZfZXJyKFx1MDAyNmludGYtXHUwMDNlZGV2LCBcJiMzNDtObyBmcmVlIHVyYnMgYXZhaWxhYmxlLlxcblwmIzM0Oyk7XG4tLVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTE6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc0OTgKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgaW1tZWRpYXRlIHRob3VnaHQgcHJvY2VzcywgZm9jdXNpbmcgb24gd2hhdCBJJiMzOTtkIGJlIGRvaW5nIGFuZCB3aHksIGdpdmVuIHRoZSBjb250ZXh0OgoKKipJbnZlc3RpZ2F0aW5nIFVTQl9DQVRDIGluIHRoZSBLZXJuZWwgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCBzb21ldGhpbmcgcmVsYXRlZCB0byBgVVNCX0NBVENgLiBNeSBpbml0aWFsIHJlYWN0aW9uIGlzIHRvIGhlYWQgc3RyYWlnaHQgdG8gdGhlIHNvdXJjZSwgdGhlIGBLY29uZmlnYCBmaWxlIGZvciBVU0IgbmV0d29ya2luZyBkcml2ZXJzLCBzcGVjaWZpY2FsbHkgYGRyaXZlcnMvbmV0L3VzYi9LY29uZmlnYC4gVGhpcyBpcyB3aGVyZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGF0IGFyZWEgb2YgdGhlIGtlcm5lbCB3b3VsZCBiZSBkZWZpbmVkLiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgZm9yIHRoZSBkZWZpbml0aW9uIG9mIGBVU0JfQ0FUQ2AgaXRzZWxmLCB3aGljaCBsaWtlbHkgbWVhbnMgY2hlY2tpbmcgdGhlIHN5bWJvbCBuYW1lLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBpdHMgZGVwZW5kZW5jaWVzLCB0aGUgaGVscCB0ZXh0IGFzc29jaWF0ZWQgd2l0aCBpdCwgYW5kIHBvc3NpYmx5IGFueSBhc3NvY2lhdGVkIGRlZmF1bHQgc2V0dGluZ3MuIFRoZSBgS2NvbmZpZ2AgZmlsZSBpcyB0aGUgZ28tdG8gcGxhY2UgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoYXQgb3B0aW9uIGZpdHMgaW50byB0aGUgbGFyZ2VyIHBpY3R1cmUgb2YgVVNCIG5ldHdvcmtpbmcgc3VwcG9ydCBpbiB0aGUga2VybmVsLiBJIGV4cGVjdCBpdCB0byBnaXZlIG1lIGNsdWVzIGFib3V0IHdoYXQgQ0FUQyBpcywgd2hhdCBpdHMgcG90ZW50aWFsIGhhcmR3YXJlIHJlcXVpcmVtZW50cyBtaWdodCBiZSwgaG93IGl0IGludGVyYWN0cyB3aXRoIG90aGVyIFVTQiBuZXR3b3JraW5nIGZlYXR1cmVzLCBhbmQgd2hhdCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBpbXBsaWNhdGlvbnMgb2YgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIGl0IG1pZ2h0IGJlLiBUaGlzIGluZm9ybWF0aW9uIGlzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIHJvbGUgYW5kIHJlbGV2YW5jZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTE6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIFVTQiBOZXR3b3JrIGRldmljZXMgY29uZmlndXJhdGlvblxuICAgNDpcdCNcbiAgIDU6XHRjb21tZW50IFwmIzM0O0hvc3Qtc2lkZSBVU0Igc3VwcG9ydCBpcyBuZWVkZWQgZm9yIFVTQiBOZXR3b3JrIEFkYXB0ZXIgc3VwcG9ydFwmIzM0O1xuICAgNjpcdFx0ZGVwZW5kcyBvbiAhVVNCIFx1MDAyNlx1MDAyNiBORVRcbiAgIDc6XHRcbiAgIDg6XHRtZW51Y29uZmlnIFVTQl9ORVRfRFJJVkVSU1xuICAgOTpcdFx0dHJpc3RhdGUgXCYjMzQ7VVNCIE5ldHdvcmsgQWRhcHRlcnNcJiMzNDtcbiAgMTA6XHRcdGRlZmF1bHQgVVNCIGlmIFVTQlxuICAxMTpcdFx0ZGVwZW5kcyBvbiBVU0IgXHUwMDI2XHUwMDI2IE5FVFxuICAxMjpcdFxuICAxMzpcdGlmIFVTQl9ORVRfRFJJVkVSU1xuICAxNDpcdFxuICAxNTpcdGNvbmZpZyBVU0JfQ0FUQ1xuICAxNjpcdFx0dHJpc3RhdGUgXCYjMzQ7VVNCIENBVEMgTmV0TWF0ZS1iYXNlZCBFdGhlcm5ldCBkZXZpY2Ugc3VwcG9ydFwmIzM0O1xuICAxNzpcdFx0c2VsZWN0IENSQzMyXG4gIDE4Olx0XHRoZWxwXG4gIDE5Olx0XHQgIFNheSBZIGlmIHlvdSB3YW50IHRvIHVzZSBvbmUgb2YgdGhlIGZvbGxvd2luZyAxME1icHMgVVNCIEV0aGVybmV0XG4gIDIwOlx0XHQgIGRldmljZSBiYXNlZCBvbiB0aGUgRUwxMjEwQSBjaGlwLiBTdXBwb3J0ZWQgZGV2aWNlcyBhcmU6XG4gIDIxOlx0XHQgIEJlbGtpbiBGNVUwMTFcbiAgMjI6XHRcdCAgQmVsa2luIEY1VTExMVxuICAyMzpcdFx0ICBDQVRDIE5ldE1hdGVcbiAgMjQ6XHRcdCAgQ0FUQyBOZXRNYXRlIElJXG4gIDI1Olx0XHQgIHNtYXJ0QnJpZGdlcyBzbWFydE5JQ1xuICAyNjpcdFxuICAyNzpcdFx0ICBUaGlzIGRyaXZlciBtYWtlcyB0aGUgYWRhcHRlciBhcHBlYXIgYXMgYSBub3JtYWwgRXRoZXJuZXQgaW50ZXJmYWNlLFxuICAyODpcdFx0ICB0eXBpY2FsbHkgb24gZXRoMCwgaWYgaXQgaXMgdGhlIG9ubHkgZXRoZXJuZXQgZGV2aWNlLCBvciBwZXJoYXBzIG9uXG4gIDI5Olx0XHQgIGV0aDEsIGlmIHlvdSBoYXZlIGEgUENJIG9yIElTQSBldGhlcm5ldCBjYXJkIGluc3RhbGxlZC5cbiAgMzA6XHRcbiAgMzE6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXG4gIDMyOlx0XHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBjYXRjLlxuICAzMzpcdFxuICAzNDpcdGNvbmZpZyBVU0JfS0FXRVRIXG4gIDM1Olx0XHR0cmlzdGF0ZSBcJiMzNDtVU0IgS0xTSSBLTDVVU0IxMDEtYmFzZWQgZXRoZXJuZXQgZGV2aWNlIHN1cHBvcnRcJiMzNDtcbiAgMzY6XHRcdGhlbHBcbiAgMzc6XHRcdCAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byB1c2Ugb25lIG9mIHRoZSBmb2xsb3dpbmcgMTBNYnBzIG9ubHlcbiAgMzg6XHRcdCAgVVNCIEV0aGVybmV0IGFkYXB0ZXJzIGJhc2VkIG9uIHRoZSBLTFNJIEtMNUtVU0IxMDFCIGNoaXBzZXQ6XG4gIDM5Olx0XHQgIDNDb20gM0MxOTI1MFxuICA0MDpcdFx0ICBBRFMgVVNCLTEwQlRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTE6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgzNTYKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA1MTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUmVjZW50IFBhdGNoIGluIHRoZSBDQVRDIFVTQiBEcml2ZXIqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCYjMzk7cyBiZWVuIGFwcGxpZWQgdG8gYGRyaXZlcnMvbmV0L3VzYi9jYXRjLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBjYXRjX3J4X2RvbmVgIGZ1bmN0aW9uLiBJIHNlZSB0aGV5JiMzOTt2ZSBhZGRlZCBhIGNoZWNrIHRvIGhhbmRsZSBwb3RlbnRpYWwgaXNzdWVzIHdpdGggcGFja2V0IGxlbmd0aHMgd2hlbiBkZWFsaW5nIHdpdGggdGhpcyBVU0IgbmV0d29yayBpbnRlcmZhY2UuCgpFc3NlbnRpYWxseSwgdGhleSYjMzk7cmUgbm93IGNhbGN1bGF0aW5nIHRoZSBgcmVtYWluaW5nYCBieXRlcyBpbiB0aGUgdHJhbnNmZXIgYnVmZmVyIGFmdGVyIGNvbnNpZGVyaW5nIHRoZSBgcGt0X29mZnNldGAuICBUaGUgb3JpZ2luYWwgY2hlY2ssIGBpZiAocGt0X2xlbiAmZ3Q7IHVyYi0mZ3Q7YWN0dWFsX2xlbmd0aClgLCBoYWQgYSBwb3RlbnRpYWwgZmxhdy4gIFRoaXMgbmV3IGNvZGUgYWRkcmVzc2VzIGEgbW9yZSBwcmVjaXNlIHZhbGlkYXRpb246IGBpZiAocGt0X2xlbiAmIzQzOyBwa3Rfb2Zmc2V0ICZndDsgcmVtYWluaW5nKWAuIElmIHRoZSByZXBvcnRlZCBwYWNrZXQgbGVuZ3RoLCBwbHVzIHRoZSBvZmZzZXQgd2l0aGluIHRoZSBidWZmZXIsIGV4Y2VlZHMgdGhlIGF2YWlsYWJsZSBkYXRhLCB0aGV5JiMzOTtyZSBpbmNyZW1lbnRpbmcgdGhlIGByeF9sZW5ndGhfZXJyb3JzYCBhbmQgYHJ4X2Vycm9yc2AgY291bnRlcnMsIGFuZCBicmVha2luZyBvdXQgb2YgdGhlIHByb2Nlc3NpbmcgbG9vcC4gVGhpcyBpcyBzbWFydDsgaXQgYXZvaWRzIHBvdGVudGlhbGx5IHJlYWRpbmcgcGFzdCB0aGUgZW5kIG9mIHRoZSBidWZmZXIsIHdoaWNoIGNvdWxkIGxlYWQgdG8gYWxsIHNvcnRzIG9mIG5hc3R5IGNvbnNlcXVlbmNlcy4KCk15IG5leHQgbGluZSBvZiB0aG91Z2h0IGlzIGFsd2F5cyBhYm91dCByZWFjaGFiaWxpdHkgYW5kIGZ1enppbmcuICBDYW4gd2UgdHJpZ2dlciB0aGlzIGNvZGUgd2l0aCBmdXp6aW5nPyBEZWZpbml0ZWx5LiAgVVNCIGRyaXZlcnMsIGxpa2UgdGhpcyBvbmUsIGFyZSBwcmltZSB0YXJnZXRzIGZvciBVU0IgZnV6emluZywgYW5kIEkga25vdyBTeXprYWxsZXIgaXMgYSBmYW50YXN0aWMgdG9vbCBmb3IgdGhpcy4gIEl0IGNhbiBlbXVsYXRlIFVTQiBkZXZpY2VzLCBhbmQgYmFzZWQgb24gdGhlIGRldmljZSBJRHMgZGVmaW5lZCB3aXRoaW4gdGhlIGBjYXRjX2lkX3RhYmxlYCwgaXQgY2FuIGJpbmQgdGhlIGBjYXRjYCBkcml2ZXIgYW5kIHNlbmQgdGhlIG5lY2Vzc2FyeSBwYWNrZXRzLiAgVGhpcyB3b3VsZCBpbnZva2UgYGNhdGNfcnhfZG9uZWAsIG1ha2luZyB0aGUgcGF0Y2hlZCBjb2RlIHBhdGggZGlyZWN0bHkgYWNjZXNzaWJsZS4KClNvLCBpbiB0ZXJtcyBvZiBjb25maWd1cmF0aW9uLCB3ZSYjMzk7cmUgbG9va2luZyBhdCBgVVNCX0NBVENgLCBgVVNCX05FVF9EUklWRVJTYCwgYFVTQmAsIGFuZCBgTkVUYC4gVGhvc2UgYXJlIHRoZSBjb3JlIGNvbXBvbmVudHMgbmVlZGVkIHRvIGJ1aWxkIHRoaXMgZHJpdmVyIGFuZCBtYWtlIGl0IGZ1bmN0aW9uYWwuIEkmIzM5O20gZm9jdXNpbmcgb24gYGNhdGNfcnhfZG9uZWAgYXMgdGhlIGtleSBzeW1ib2wuIFRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgbG9naWMgb2YgdGhlIHBhdGNoIGxpdmVzLgoKSSBuZWVkIHRvIGNvbmZpcm0gaWYgdGhlcmUgYXJlIG90aGVyIGZ1bmN0aW9ucyBpbiBgY2F0Yy5jYCB0aGF0IGNhbGwgYGNhdGNfcnhfZG9uZWAgb3IgYXJlIHByb2JlZCBhbmQgYWxzbyB3b3J0aCByZXZpZXdpbmcuIEkmIzM5O2xsIG5lZWQgdG8gZG8gYSB0aG9yb3VnaCBpbnNwZWN0aW9uIG9mIHRoZSBgY2F0Yy5jYCBzb3VyY2UgY29kZSwgbG9va2luZyBmb3Igb3RoZXIgZnVuY3Rpb25zIGFuZCBzeW1ib2xzLiBHb3R0YSBtYWtlIHN1cmUgd2UmIzM5O3ZlIGdvdCB0aGUgZnVsbCBwaWN0dXJlIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDExOjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NhdGNfcnhfZG9uZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9jYXRjLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL2NhdGMuYz0xNTM9c3RydWN0IGNhdGMge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMjE1LVxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzoyMTY6c3RhdGljIHZvaWQgY2F0Y19yeF9kb25lKHN0cnVjdCB1cmIgKnVyYilcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMjE3LXtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jPTc3Nz1zdGF0aWMgaW50IGNhdGNfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTg2MC1cdHVzYl9maWxsX2J1bGtfdXJiKGNhdGMtXHUwMDNlcnhfdXJiLCB1c2JkZXYsIHVzYl9yY3ZidWxrcGlwZSh1c2JkZXYsIENBVENfVVNCX0VQX0JVTEspLFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo4NjE6XHRcdFx0ICBjYXRjLVx1MDAzZXJ4X2J1ZiwgcGt0c3osIGNhdGNfcnhfZG9uZSwgY2F0Yyk7XG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTg2Mi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTE6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk2NDkKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAzMDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIGBjYXRjX3J4X2RvbmVgIEZ1bmN0aW9uIGFuZCBEZXBlbmRlbmNpZXMqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBGaXJzdCwgSSBuZWVkIHRvIGNvbmZpcm0gc29tZXRoaW5nIGZ1bmRhbWVudGFsOiBpcyBgY2F0Y19yeF9kb25lYCBqdXN0IGEgc3RhdGljIGZ1bmN0aW9uLCBvciBkb2VzIGl0IGhhdmUgYSBzeW1ib2wgSSBjYW4gbGV2ZXJhZ2U/IE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCwgd2hpbGUgc3RhdGljIGZ1bmN0aW9ucyAqd2l0aGluKiBhIEMgZmlsZSBkbyBoYXZlIHN5bWJvbHMgaW4gYHZtbGludXhgLCB1bmxpa2Ugc3RhdGljIGlubGluZXMgd2l0aGluIGhlYWRlcnMsIEkgbmVlZCB0byBiZSBjZXJ0YWluLiBTcGVjaWZpY2FsbHksIHRoaXMgYGNhdGNfcnhfZG9uZWAgZnVuY3Rpb24gaXMgdGhhdCBVUkIgY29tcGxldGlvbiBoYW5kbGVyIGZvciB0aGUgUlggYnVsayBVUkIsIHNvIGl0JiMzOTtzIGNyaXRpY2FsIHRvIHVuZGVyc3RhbmQgaXRzIHZpc2liaWxpdHkgYW5kIGFueSBwb3RlbnRpYWwgc2NvcGUgZm9yIGludGVyYWN0aW9uLgoKQWxyaWdodCwgc28gYGNhdGNfcnhfZG9uZWAgaXMgdGhlIHByaW1hcnkgZm9jdXMsIHRoZSBvbmUgdGhhdCYjMzk7cyBiZWVuIHBhdGNoZWQuIEhvd2V2ZXIsIHdoaWxlIEkmIzM5O20gaGVyZSwgSSB3YW50IHRvIHRha2UgYSBxdWljayBsb29rIGF0IG90aGVyIHBvdGVudGlhbGx5IHJlbGV2YW50IGZ1bmN0aW9ucyBpbiBgY2F0Yy5jYC4gSSBleHBlY3QgdG8gc2VlIHRoZSB1c3VhbCBzdXNwZWN0cyBsaWtlIGBjYXRjX3Byb2JlYCBhbG9uZ3NpZGUgYGNhdGNfcnhfZG9uZWAuIEJ1dCwgYWdhaW4sIG15IHBhdGNoLWFuYWx5c2lzIGxlbnMgaXMgZml4ZWQgb24gYGNhdGNfcnhfZG9uZWAuCgpOb3csIHRoZSBjcnVjaWFsIHBhcnQ6IEtjb25maWcgZGVwZW5kZW5jaWVzLiBXaGF0IGNvbmZpZ3VyYXRpb25zIGFyZSAqcmVxdWlyZWQqIGZvciB0aGlzIHRvIGV2ZW4gY29tcGlsZSwgbXVjaCBsZXNzIGZ1bmN0aW9uIGNvcnJlY3RseT8gSW4gYGRyaXZlcnMvbmV0L3VzYi9LY29uZmlnYCwgSSBjYW4gc2VlIGEgY291cGxlIG9mIHRoaW5ncywgYW5kIEkgaGF2ZSB0byBtYWtlIHN1cmUgdGhleSBhcmUgaW5jbHVkZWQuCgpJIGNhbiBzZWUgdGhhdCBgVVNCX05FVF9EUklWRVJTYCBkZXBlbmRzIG9uIGBVU0IgJmFtcDsmYW1wOyBORVRgLiBNYWtlcyBzZW5zZS4gVGhlbiBgVVNCX0NBVENgIGlzIGRlZmluZWQgYXMgYSB0cmlzdGF0ZSBvcHRpb24sIGVzc2VudGlhbGx5ICYjMzQ7VVNCIENBVEMgTmV0TWF0ZS1iYXNlZCBFdGhlcm5ldCBkZXZpY2Ugc3VwcG9ydCYjMzQ7LiBUaGUgYENSQzMyYCBrY29uZmlnIGFsc28gcmVxdWlyZXMgdG8gYmUgc2VsZWN0ZWQuIEltcG9ydGFudGx5LCBgVVNCX0NBVENgIGRlcGVuZHMgb24gYFVTQl9ORVRfRFJJVkVSU2AuCgpTbywgdG8gc3VtbWFyaXplLCB0aGUgY29uZmlncyBuZWVkZWQgYXJlOiBgVVNCX0NBVENgLCBgVVNCX05FVF9EUklWRVJTYCwgYFVTQmAsIGFuZCBgTkVUYC4gSSYjMzk7bGwgZG91YmxlLWNoZWNrIHRoYXQgSSYjMzk7dmUgYWNjb3VudGVkIGZvciB0aGVzZSBkZXBlbmRlbmNpZXMgY29ycmVjdGx5LgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHRob3JvdWdoLCBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgc2NhbiB0aGUgd2lkZXIgYEtjb25maWdgIGFuZCBgTWFrZWZpbGVgIHN0cnVjdHVyZSwgcGFydGljdWxhcmx5IGluIHRoZSBgZHJpdmVycy9uZXRgIGRpcmVjdG9yeSwgdG8gYmUgY2VydGFpbiBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnkgaW5kaXJlY3QgZGVwZW5kZW5jaWVzIG9yIGJ1aWxkLXRpbWUgY29uc2lkZXJhdGlvbnMuIE5vIHN0b25lIGxlZnQgdW50dXJuZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDExOjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1VTQl9DQVRDJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MTM9aWYgVVNCX05FVF9EUklWRVJTXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xNC1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjE1OmNvbmZpZyBVU0JfQ0FUQ1xuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTYtXHR0cmlzdGF0ZSBcJiMzNDtVU0IgQ0FUQyBOZXRNYXRlLWJhc2VkIEV0aGVybmV0IGRldmljZSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvdXNiL01ha2VmaWxlLTUtXG5kcml2ZXJzL25ldC91c2IvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfVVNCX0NBVEMpXHRcdCYjNDM7PSBjYXRjLm9cbmRyaXZlcnMvbmV0L3VzYi9NYWtlZmlsZS03LW9iai0kKENPTkZJR19VU0JfS0FXRVRIKVx0JiM0Mzs9IGthd2V0aC5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDExOjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNjIxCgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIE5ldHdvcmsgRHJpdmVyIE1ha2VmaWxlKioKCk9rYXksIHNvIHRoZSBpbml0aWFsIHRob3VnaHQgaXMsICYjMzQ7TGV0JiMzOTtzIGNyYWNrIG9wZW4gdGhlIGBkcml2ZXJzL25ldC9NYWtlZmlsZWAuJiMzNDsgVGhhdCYjMzk7cyBhIG5hdHVyYWwgc3RhcnRpbmcgcG9pbnQgd2hlbiBJJiMzOTttIGRlYWxpbmcgd2l0aCBuZXR3b3JrIGRyaXZlciBjb2RlLiBNeSBpbnN0aW5jdCBpcyBhbHdheXMgdG8gY2hlY2sgdGhlIGJ1aWxkIHN5c3RlbSBmaXJzdC4gSSYjMzk7bSBwcm9iYWJseSBsb29raW5nIGZvciBhIGZldyBzcGVjaWZpYyB0aGluZ3MgcmlnaHQgb2ZmIHRoZSBiYXQuIEkmIzM5O20gd29uZGVyaW5nIGFib3V0IGJ1aWxkIGRlcGVuZGVuY2llcywgb2J2aW91c2x5LiBXaGF0IG90aGVyIGtlcm5lbCBjb21wb25lbnRzIG9yIGxpYnJhcmllcyBkb2VzIHRoaXMgcGFydGljdWxhciBkcml2ZXIgbmVlZD8gQXJlIHRoZXJlIGFueSBtb2R1bGUtc3BlY2lmaWMgZmxhZ3Mgb3IgY29tcGlsYXRpb24gdGFyZ2V0cyBkZWZpbmVkPyBJJiMzOTttIGhvcGluZyBJIGNhbiBnZXQgYSBkZWNlbnQgb3ZlcnZpZXcgb2YgdGhlIGRyaXZlciYjMzk7cyBhcmNoaXRlY3R1cmUgYW5kIGhvdyBpdCBpbnRlZ3JhdGVzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIG5ldHdvcmtpbmcgc3RhY2sganVzdCBieSB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgYnVpbGQgcHJvY2VzcyBoYW5kbGVzIGl0LiBBcmUgdGhlcmUgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGVzIGJhc2VkIG9uIGtlcm5lbCB2ZXJzaW9ucywgaGFyZHdhcmUgY29uZmlndXJhdGlvbnMsIG9yIGZlYXR1cmVzPyBUaGF0JiMzOTtzIGdvaW5nIHRvIGJlIGtleSB0byBkZWJ1Z2dpbmcgYW55IHBvcnRhYmlsaXR5IGlzc3VlcyBkb3duIHRoZSBsaW5lLiBJJiMzOTttIGFsc28ga2VlcGluZyBhbiBleWUgb3V0IGZvciBhbnkgY3VzdG9tIGJ1aWxkIHJ1bGVzIG9yIG1hY3JvcyB0aGF0IG1pZ2h0IGJlIHNwZWNpZmljIHRvIHRoaXMgZHJpdmVyIG9yIGl0cyBmYW1pbHkuIEtub3dpbmcgdGhlIGJ1aWxkIHN5c3RlbSBpcyBtb3JlIHRoYW4gaGFsZiB0aGUgYmF0dGxlLCByZWFsbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDExOjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3VzYiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L01ha2VmaWxlPTc4PW9iai0kKENPTkZJR19YRU5fTkVUREVWX0JBQ0tFTkQpICYjNDM7PSB4ZW4tbmV0YmFjay9cbmRyaXZlcnMvbmV0L01ha2VmaWxlLTc5LVxuZHJpdmVycy9uZXQvTWFrZWZpbGU6ODA6b2JqLSQoQ09ORklHX1VTQl9ORVRfRFJJVkVSUykgJiM0Mzs9IHVzYi9cbmRyaXZlcnMvbmV0L01ha2VmaWxlLTgxLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAxMToyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDk4MAoJCQkJCQkJb3V0cHV0OiAxMTgKCQkJCQkJCXRob3VnaHRzOiAxNjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUYXJnZXQgQXNzZXNzbWVudCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgbG9va2luZyBwcm9taXNpbmcuIFdlJiMzOTt2ZSBnb3QgYSB0YXJnZXQgcGF0Y2ggdGhhdCYjMzk7cyBmbGFnZ2VkIGFzIGBXb3J0aEZ1enppbmc6IHRydWVgLCB3aGljaCBpcyBhbHdheXMgYSBnb29kIHN0YXJ0LiBJdCBtb2RpZmllcyBwYWNrZXQgcGFyc2luZyBhbmQgYm91bmRhcnkgY2hlY2tzIHdpdGhpbiB0aGUgYGNhdGNfcnhfZG9uZWAgZnVuY3Rpb24uIENydWNpYWxseSwgdGhpcyByZXNpZGVzIGluIGEgVVNCIG5ldHdvcmsgZHJpdmVyIChgVVNCX0NBVENgIGFuZCBgVVNCX05FVF9EUklWRVJTYCksIG1ha2luZyBpdCByZWFjaGFibGUgZm9yIGZ1enppbmcgdGhyb3VnaCBlc3RhYmxpc2hlZCBtZXRob2RzIOKAkyBVU0IgZW11bGF0aW9uLCByYXcgZ2FkZ2V0IHNjZW5hcmlvcywgb3IgZXZlbiBzeXprYWxsZXImIzM5O3MgVVNCIGZ1enppbmcgY2FwYWJpbGl0aWVzLiBJIHNlZSB0aGF0IHRoZSBgRm9jdXNTeW1ib2xzYCBhcmUgc3BlY2lmaWNhbGx5IHplcm9pbmcgaW4gb24gYFsmIzM0O2NhdGNfcnhfZG9uZSYjMzQ7XWAsIHdoaWNoIGNvbmZpcm1zIG15IGluaXRpYWwgaW50dWl0aW9uOiB0aGlzIGlzIHRoZSBrZXkgYXJlYSBmb3IgZGVlcGVyIGFuYWx5c2lzLiBUaGUgYEVuYWJsZUNvbmZpZ3NgIGxpc3QsIG5hbWVseSBgWyYjMzQ7VVNCX0NBVEMmIzM0OywgJiMzNDtVU0JfTkVUX0RSSVZFUlMmIzM0OywgJiMzNDtVU0ImIzM0OywgJiMzNDtORVQmIzM0O11gLCBwcm92aWRlcyB0aGUgbmVjZXNzYXJ5IGJ1aWxkIGNvbmZpZ3VyYXRpb25zIHRvIHJlcHJvZHVjZSBhbmQgbGV2ZXJhZ2UgdGhlIHRhcmdldCBjb2RlLiBUaGUgcmVhc29uaW5nIGNvbmNpc2VseSBjbGFyaWZpZXMgdGhlIHdvcnRoaW5lc3MgYW5kIG1ldGhvZCBvZiBhcHByb2FjaC4gSXQgbG9va3MgbGlrZSB3ZSYjMzk7dmUgZ290IGEgc29saWQgY2FuZGlkYXRlIGhlcmUuIFRpbWUgdG8gbWFrZSBpdCBvZmZpY2lhbCBhbmQgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTE6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTQl9DQVRDJiMzNDssCiAgICAmIzM0O1VTQl9ORVRfRFJJVkVSUyYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OywKICAgICYjMzQ7TkVUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2F0Y19yeF9kb25lJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBwYWNrZXQgcmVjZXB0aW9uIGFuZCBsZW5ndGggdmFsaWRhdGlvbiBsb2dpYyBpbiBjYXRjX3J4X2RvbmUgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzIHdoZW4gcHJvY2Vzc2luZyBtYWxmb3JtZWQgVVNCIFJYIFVSQiBkYXRhLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGFuZCBmdXp6YWJsZSB2aWEgVVNCIGVtdWxhdGlvbiAvIHN5emthbGxlciBVU0IgcmF3LWdhZGdldCBzdXBwb3J0LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtVU0JfQ0FUQyYjMzQ7LAogICAgJiMzNDtVU0JfTkVUX0RSSVZFUlMmIzM0OywKICAgICYjMzQ7VVNCJiMzNDssCiAgICAmIzM0O05FVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2NhdGNfcnhfZG9uZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgcGFja2V0IHJlY2VwdGlvbiBhbmQgbGVuZ3RoIHZhbGlkYXRpb24gbG9naWMgaW4gY2F0Y19yeF9kb25lIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcyB3aGVuIHByb2Nlc3NpbmcgbWFsZm9ybWVkIFVTQiBSWCBVUkIgZGF0YS4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBhbmQgZnV6emFibGUgdmlhIFVTQiBlbXVsYXRpb24gLyBzeXprYWxsZXIgVVNCIHJhdy1nYWRnZXQgc3VwcG9ydC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTE6MjY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAxMToyNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIG91dC1vZi1ib3VuZHMgcmVhZCB2dWxuZXJhYmlsaXRpZXMgaW4gdGhlIENBVEMgVVNCIEV0aGVybmV0IGRyaXZlciYjMzk7cyByZWNlaXZlIHBhdGggKGBjYXRjX3J4X2RvbmVgKS4gU3BlY2lmaWNhbGx5LCBpdCBlbnN1cmVzIHRoYXQgYHJlbWFpbmluZ2AgdHJhbnNmZXIgYnVmZmVyIGJ5dGVzIGFyZSBzdWZmaWNpZW50IHRvIHJlYWQgdGhlIDItYnl0ZSBwYWNrZXQgbGVuZ3RoIGhlYWRlciAoYHJlbWFpbmluZyBcdTAwM2U9IHBrdF9vZmZzZXRgKSwgYW5kIHRoYXQgdGhlIGluZGljYXRlZCBwYWNrZXQgbGVuZ3RoIHBsdXMgb2Zmc2V0IGZpdHMgd2l0aGluIHRoZSByZW1haW5pbmcgcmVjZWl2ZWQgYnVmZmVyIChgcGt0X2xlbiAmIzQzOyBwa3Rfb2Zmc2V0IFx1MDAzYz0gcmVtYWluaW5nYCkuXG5cblRoZXNlIGNoYW5nZXMgcHJldmVudCBvdXQtb2YtYm91bmRzIG1lbW9yeSBhY2Nlc3NlcyBmcm9tIGB1cmItXHUwMDNldHJhbnNmZXJfYnVmZmVyYCBkdXJpbmcgcGFja2V0IHByb2Nlc3NpbmcgYW5kIGNvcHlpbmcgdG8gdGhlIFNLQi4gQnVmZmVyIG92ZXItcmVhZHMgYW5kIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgYXJlIG1lbW9yeSBzYWZldHkgdmlvbGF0aW9ucyBkZXRlY3RlZCBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIGluZm8tbGVha3MgdG8gdXNlciBzcGFjZSwgb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGEyNmMwODk1YWY2YzE2MmRmMmYxMzZhMTQ5MDMzZmQzOWMyMzgyMDIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIFNlcCA3IDExOjI1OjUzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdXNiL2NhdGMuYyBiL2RyaXZlcnMvbmV0L3VzYi9jYXRjLmMKaW5kZXggOTZlODJmOTRlZGNmOC4uZTRmOGI5YTBjYWYxOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdXNiL2NhdGMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC91c2IvY2F0Yy5jCkBAIC0yMzQsOCAmIzQzOzIzNCwxNiBAQCBzdGF0aWMgdm9pZCBjYXRjX3J4X2RvbmUoc3RydWN0IHVyYiAqdXJiKQogCiAJZG8gewogCQlpZighY2F0Yy0mZ3Q7aXNfZjV1MDExKSB7CiYjNDM7CQkJaW50IHJlbWFpbmluZyA9IHVyYi0mZ3Q7YWN0dWFsX2xlbmd0aCAtCiYjNDM7CQkJCQkocGt0X3N0YXJ0IC0gKHU4ICopdXJiLSZndDt0cmFuc2Zlcl9idWZmZXIpOwomIzQzOwomIzQzOwkJCWlmIChyZW1haW5pbmcgJmx0OyBwa3Rfb2Zmc2V0KSB7CiYjNDM7CQkJCWNhdGMtJmd0O25ldGRldi0mZ3Q7c3RhdHMucnhfbGVuZ3RoX2Vycm9ycyYjNDM7JiM0Mzs7CiYjNDM7CQkJCWNhdGMtJmd0O25ldGRldi0mZ3Q7c3RhdHMucnhfZXJyb3JzJiM0MzsmIzQzOzsKJiM0MzsJCQkJYnJlYWs7CiYjNDM7CQkJfQogCQkJcGt0X2xlbiA9IGxlMTZfdG9fY3B1cCgoX19sZTE2Kilwa3Rfc3RhcnQpOwotCQkJaWYgKHBrdF9sZW4gJmd0OyB1cmItJmd0O2FjdHVhbF9sZW5ndGgpIHsKJiM0MzsJCQlpZiAocGt0X2xlbiAmIzQzOyBwa3Rfb2Zmc2V0ICZndDsgcmVtYWluaW5nKSB7CiAJCQkJY2F0Yy0mZ3Q7bmV0ZGV2LSZndDtzdGF0cy5yeF9sZW5ndGhfZXJyb3JzJiM0MzsmIzQzOzsKIAkJCQljYXRjLSZndDtuZXRkZXYtJmd0O3N0YXRzLnJ4X2Vycm9ycyYjNDM7JiM0Mzs7CiAJCQkJYnJlYWs7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAxMToyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTk2CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIGNhdGMuYyBEcml2ZXIqKgoKQWxyaWdodCwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkgd2l0aCB0aGlzIGBjYXRjLmNgIGRyaXZlciBpbiB0aGUgYGRyaXZlcnMvbmV0L3VzYmAgZGlyZWN0b3J5LiBUaGUgZmlyc3QgdGhpbmcgSSBuZWVkIHRvIGRvIGlzIHJlYWxseSB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBwYXRjaC4gSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byB0aGUgc3Vycm91bmRpbmcgY29kZSB0byBncmFzcCB0aGUgY29udGV4dCBvZiB0aGUgY2hhbmdlLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gZ29pbmcgdG8gZm9jdXMgbXkgYXR0ZW50aW9uIGFyb3VuZCBsaW5lIDIzNCBpbiBgY2F0Yy5jYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgYW5jaG9yIEkgbmVlZCB0byBzdGFydCBteSBhbmFseXNpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTE6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvY2F0Yy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjEwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDYwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyMTA6XHQjZGVmaW5lIGNhdGNfd3JpdGVfbWVtX2FzeW5jKGNhdGMsIGFkZHIsIGJ1Ziwgc2l6ZSlcdGNhdGNfY3RybF9hc3luYyhjYXRjLCBVU0JfRElSX09VVCwgV3JpdGVNZW0sIDAsIGFkZHIsIGJ1Ziwgc2l6ZSwgTlVMTClcbiAyMTE6XHRcbiAyMTI6XHQvKlxuIDIxMzpcdCAqIFJlY2VpdmUgcm91dGluZXMuXG4gMjE0Olx0ICovXG4gMjE1Olx0XG4gMjE2Olx0c3RhdGljIHZvaWQgY2F0Y19yeF9kb25lKHN0cnVjdCB1cmIgKnVyYilcbiAyMTc6XHR7XG4gMjE4Olx0XHRzdHJ1Y3QgY2F0YyAqY2F0YyA9IHVyYi1cdTAwM2Vjb250ZXh0O1xuIDIxOTpcdFx0dTggKnBrdF9zdGFydCA9IHVyYi1cdTAwM2V0cmFuc2Zlcl9idWZmZXI7XG4gMjIwOlx0XHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuIDIyMTpcdFx0aW50IHBrdF9sZW4sIHBrdF9vZmZzZXQgPSAwO1xuIDIyMjpcdFx0aW50IHN0YXR1cyA9IHVyYi1cdTAwM2VzdGF0dXM7XG4gMjIzOlx0XG4gMjI0Olx0XHRpZiAoIWNhdGMtXHUwMDNlaXNfZjV1MDExKSB7XG4gMjI1Olx0XHRcdGNsZWFyX2JpdChSWF9SVU5OSU5HLCBcdTAwMjZjYXRjLVx1MDAzZWZsYWdzKTtcbiAyMjY6XHRcdFx0cGt0X29mZnNldCA9IDI7XG4gMjI3Olx0XHR9XG4gMjI4Olx0XG4gMjI5Olx0XHRpZiAoc3RhdHVzKSB7XG4gMjMwOlx0XHRcdGRldl9kYmcoXHUwMDI2dXJiLVx1MDAzZWRldi1cdTAwM2VkZXYsIFwmIzM0O3J4X2RvbmUsIHN0YXR1cyAlZCwgbGVuZ3RoICVkXFxuXCYjMzQ7LFxuIDIzMTpcdFx0XHRcdHN0YXR1cywgdXJiLVx1MDAzZWFjdHVhbF9sZW5ndGgpO1xuIDIzMjpcdFx0XHRyZXR1cm47XG4gMjMzOlx0XHR9XG4gMjM0Olx0XG4gMjM1Olx0XHRkbyB7XG4gMjM2Olx0XHRcdGlmKCFjYXRjLVx1MDAzZWlzX2Y1dTAxMSkge1xuIDIzNzpcdFx0XHRcdGludCByZW1haW5pbmcgPSB1cmItXHUwMDNlYWN0dWFsX2xlbmd0aCAtXG4gMjM4Olx0XHRcdFx0XHRcdChwa3Rfc3RhcnQgLSAodTggKil1cmItXHUwMDNldHJhbnNmZXJfYnVmZmVyKTtcbiAyMzk6XHRcbiAyNDA6XHRcdFx0XHRpZiAocmVtYWluaW5nIFx1MDAzYyBwa3Rfb2Zmc2V0KSB7XG4gMjQxOlx0XHRcdFx0XHRjYXRjLVx1MDAzZW5ldGRldi1cdTAwM2VzdGF0cy5yeF9sZW5ndGhfZXJyb3JzJiM0MzsmIzQzOztcbiAyNDI6XHRcdFx0XHRcdGNhdGMtXHUwMDNlbmV0ZGV2LVx1MDAzZXN0YXRzLnJ4X2Vycm9ycyYjNDM7JiM0Mzs7XG4gMjQzOlx0XHRcdFx0XHRicmVhaztcbiAyNDQ6XHRcdFx0XHR9XG4gMjQ1Olx0XHRcdFx0cGt0X2xlbiA9IGxlMTZfdG9fY3B1cCgoX19sZTE2Kilwa3Rfc3RhcnQpO1xuIDI0NjpcdFx0XHRcdGlmIChwa3RfbGVuICYjNDM7IHBrdF9vZmZzZXQgXHUwMDNlIHJlbWFpbmluZykge1xuIDI0NzpcdFx0XHRcdFx0Y2F0Yy1cdTAwM2VuZXRkZXYtXHUwMDNlc3RhdHMucnhfbGVuZ3RoX2Vycm9ycyYjNDM7JiM0Mzs7XG4gMjQ4Olx0XHRcdFx0XHRjYXRjLVx1MDAzZW5ldGRldi1cdTAwM2VzdGF0cy5yeF9lcnJvcnMmIzQzOyYjNDM7O1xuIDI0OTpcdFx0XHRcdFx0YnJlYWs7XG4gMjUwOlx0XHRcdFx0fVxuIDI1MTpcdFx0XHR9IGVsc2Uge1xuIDI1MjpcdFx0XHRcdHBrdF9sZW4gPSB1cmItXHUwMDNlYWN0dWFsX2xlbmd0aDtcbiAyNTM6XHRcdFx0fVxuIDI1NDpcdFxuIDI1NTpcdFx0XHRpZiAoIShza2IgPSBkZXZfYWxsb2Nfc2tiKHBrdF9sZW4pKSlcbiAyNTY6XHRcdFx0XHRyZXR1cm47XG4gMjU3Olx0XG4gMjU4Olx0XHRcdHNrYl9jb3B5X3RvX2xpbmVhcl9kYXRhKHNrYiwgcGt0X3N0YXJ0ICYjNDM7IHBrdF9vZmZzZXQsIHBrdF9sZW4pO1xuIDI1OTpcdFx0XHRza2JfcHV0KHNrYiwgcGt0X2xlbik7XG4gMjYwOlx0XG4gMjYxOlx0XHRcdHNrYi1cdTAwM2Vwcm90b2NvbCA9IGV0aF90eXBlX3RyYW5zKHNrYiwgY2F0Yy1cdTAwM2VuZXRkZXYpO1xuIDI2MjpcdFx0XHRuZXRpZl9yeChza2IpO1xuIDI2MzpcdFxuIDI2NDpcdFx0XHRjYXRjLVx1MDAzZW5ldGRldi1cdTAwM2VzdGF0cy5yeF9wYWNrZXRzJiM0MzsmIzQzOztcbiAyNjU6XHRcdFx0Y2F0Yy1cdTAwM2VuZXRkZXYtXHUwMDNlc3RhdHMucnhfYnl0ZXMgJiM0Mzs9IHBrdF9sZW47XG4gMjY2Olx0XG4gMjY3Olx0XHRcdC8qIEY1VTAxMSBvbmx5IGRvZXMgb25lIHBhY2tldCBwZXIgUlggKi9cbiAyNjg6XHRcdFx0aWYgKGNhdGMtXHUwMDNlaXNfZjV1MDExKVxuIDI2OTpcdFx0XHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAxMToyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzQ1CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkFuYWx5emluZyB0aGUgRnVuY3Rpb24mIzM5O3MgU3Vic2VxdWVudCBPcGVyYXRpb25zKioKClJpZ2h0LCBzbyBJJiMzOTt2ZSByZWFjaGVkIGEgcG9pbnQgaW4gbXkgYW5hbHlzaXMgd2hlcmUgSSBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgZnVuY3Rpb25hbGl0eSBvZiBgY2F0Y19yeF9kb25lYC4gSSBrbm93IHRoZSBpbml0aWFsIHBpZWNlcywgYnV0IHRvIGdyYXNwIGl0cyBmdWxsIGltcGFjdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBoYXBwZW5zICphZnRlciogdGhlIGluaXRpYWwgaGFuZGxpbmcuIFdoYXQgYXJlIHRoZSBzdWJzZXF1ZW50IG9wZXJhdGlvbnMgdHJpZ2dlcmVkIG9yIGluZmx1ZW5jZWQgYnkgdGhpcyBmdW5jdGlvbj8gQXJlIHRoZXJlIGFueSBkYXRhIHN0cnVjdHVyZXMgYmVpbmcgbW9kaWZpZWQsIG90aGVyIGZ1bmN0aW9ucyBiZWluZyBjYWxsZWQsIG9yIHN0YXRlIHRyYW5zaXRpb25zIG9jY3VycmluZyBhcyBhIHJlc3VsdD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bmN0aW9uJiMzOTtzIHNpZGUgZWZmZWN0cyBhbmQgaG93IGl0IGZpdHMgaW50byB0aGUgYnJvYWRlciBwaWN0dXJlIG9mIHRoZSBkYXRhIHJlY2VwdGlvbiBhbmQgcHJvY2Vzc2luZyBwaXBlbGluZS4gSSYjMzk7bGwgbmVlZCB0byBjYXJlZnVsbHkgZXhhbWluZSB0aGUgY29kZSBmb2xsb3dpbmcgYGNhdGNfcnhfZG9uZWAgdG8gcGFpbnQgYSBtb3JlIGNvbXBsZXRlIHBpY3R1cmUuIEl0JiMzOTtzIHRpbWUgdG8gZm9sbG93IHRoZSB0cmFpbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTE6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvY2F0Yy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjcwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyNzA6XHRcdFx0cGt0X3N0YXJ0ICYjNDM7PSAoKChwa3RfbGVuICYjNDM7IDEpIFx1MDAzZVx1MDAzZSA2KSAmIzQzOyAxKSBcdTAwM2NcdTAwM2MgNjtcbiAyNzE6XHRcbiAyNzI6XHRcdH0gd2hpbGUgKHBrdF9zdGFydCAtICh1OCAqKSB1cmItXHUwMDNldHJhbnNmZXJfYnVmZmVyIFx1MDAzYyB1cmItXHUwMDNlYWN0dWFsX2xlbmd0aCk7XG4gMjczOlx0XG4gMjc0Olx0XHRpZiAoY2F0Yy1cdTAwM2Vpc19mNXUwMTEpIHtcbiAyNzU6XHRcdFx0aWYgKGF0b21pY19yZWFkKFx1MDAyNmNhdGMtXHUwMDNlcmVjcV9zeikpIHtcbiAyNzY6XHRcdFx0XHRpbnQgc3RhdGU7XG4gMjc3Olx0XHRcdFx0YXRvbWljX2RlYyhcdTAwMjZjYXRjLVx1MDAzZXJlY3Ffc3opO1xuIDI3ODpcdFx0XHRcdG5ldGRldl9kYmcoY2F0Yy1cdTAwM2VuZXRkZXYsIFwmIzM0O2dldHRpbmcgZXh0cmEgcGFja2V0XFxuXCYjMzQ7KTtcbiAyNzk6XHRcdFx0XHR1cmItXHUwMDNlZGV2ID0gY2F0Yy1cdTAwM2V1c2JkZXY7XG4gMjgwOlx0XHRcdFx0aWYgKChzdGF0ZSA9IHVzYl9zdWJtaXRfdXJiKHVyYiwgR0ZQX0FUT01JQykpIFx1MDAzYyAwKSB7XG4gMjgxOlx0XHRcdFx0XHRuZXRkZXZfZGJnKGNhdGMtXHUwMDNlbmV0ZGV2LFxuIDI4MjpcdFx0XHRcdFx0XHQgICBcJiMzNDtzdWJtaXQocnhfdXJiKSBzdGF0dXMgJWRcXG5cJiMzNDssIHN0YXRlKTtcbiAyODM6XHRcdFx0XHR9XG4gMjg0Olx0XHRcdH0gZWxzZSB7XG4gMjg1Olx0XHRcdFx0Y2xlYXJfYml0KFJYX1JVTk5JTkcsIFx1MDAyNmNhdGMtXHUwMDNlZmxhZ3MpO1xuIDI4NjpcdFx0XHR9XG4gMjg3Olx0XHR9XG4gMjg4Olx0fVxuIDI4OTpcdFxuIDI5MDpcdHN0YXRpYyB2b2lkIGNhdGNfaXJxX2RvbmUoc3RydWN0IHVyYiAqdXJiKVxuIDI5MTpcdHtcbiAyOTI6XHRcdHN0cnVjdCBjYXRjICpjYXRjID0gdXJiLVx1MDAzZWNvbnRleHQ7XG4gMjkzOlx0XHR1OCAqZGF0YSA9IHVyYi1cdTAwM2V0cmFuc2Zlcl9idWZmZXI7XG4gMjk0Olx0XHRpbnQgc3RhdHVzID0gdXJiLVx1MDAzZXN0YXR1cztcbiAyOTU6XHRcdHVuc2lnbmVkIGludCBoYXNkYXRhLCBsaW5rc3RzID0gTGlua05vQ2hhbmdlO1xuIDI5NjpcdFx0aW50IHJlcztcbiAyOTc6XHRcbiAyOTg6XHRcdGlmICghY2F0Yy1cdTAwM2Vpc19mNXUwMTEpIHtcbiAyOTk6XHRcdFx0aGFzZGF0YSA9IGRhdGFbMV0gXHUwMDI2IDB4ODA7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDExOjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwODcKCQkJCQkJCW91dHB1dDogMTk3CgkJCQkJCQl0aG91Z2h0czogNzM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFVTQiBOZXR3b3JrIERyaXZlciBSZWNlaXZlIEhhbmRsZXIgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gVGhpcyBwYXRjaCBpcyB0YXJnZXRpbmcgYGNhdGNfcnhfZG9uZSgpYCwgdGhlIHJlY2VpdmUgaGFuZGxlciBmb3IgYSBVU0IgbmV0d29yayBkcml2ZXIuIEl0JiMzOTtzIGNsZWFybHkgYSBjcml0aWNhbCBhcmVhLCB3aGVyZSBwZXJmb3JtYW5jZSBpcyBwYXJhbW91bnQuIExvb2tpbmcgYXQgdGhlICYjMzQ7YmVmb3JlJiMzNDsgY29kZSwgdGhlIG9yaWdpbmFsIGxvZ2ljIGhhZCBzb21lIHNlcmlvdXMgZmxhd3MuIEl0IGFwcGVhcnMgd2Ugd2VyZSByZWx5aW5nIG9uIGB1cmItJmd0O2FjdHVhbF9sZW5ndGhgIGZvciBidWZmZXIgYm91bmRzLCBidXQgdGhlcmUgd2FzIGEgcG90ZW50aWFsIGZvciBvdXQtb2YtYm91bmRzIHJlYWRzLiBTcGVjaWZpY2FsbHksIGlmIHRoZSByZW1haW5pbmcgZGF0YSBpbiB0aGUgVVNCIHRyYW5zZmVyIGJ1ZmZlciAoYHVyYi0mZ3Q7dHJhbnNmZXJfYnVmZmVyYCkgd2FzIGxlc3MgdGhhbiBhIHBhY2tldCBvZmZzZXQgKGBwa3Rfb2Zmc2V0YCksIHdlJiMzOTtkIGJlIHJlYWRpbmcgcGFzdCB0aGUgZW5kIG9mIHRoZSBidWZmZXIgd2hlbiBjYWxsaW5nIGBsZTE2X3RvX2NwdXBgLiBTaW1pbGFybHksIGlmIHRoZSBwYWNrZXQgbGVuZ3RoIChgcGt0X2xlbmApIHBsdXMgdGhlIG9mZnNldCBleGNlZWRlZCB0aGUgcmVtYWluaW5nIGJ1ZmZlciBzaXplLCB3ZSB3b3VsZCBhbHNvIGJlIHJlYWRpbmcgT09CLiBUaGlzIGlzIGEgY2xhc3NpYyB2dWxuZXJhYmlsaXR5IQoKVGhlIGZpeCBpcyBzdHJhaWdodGZvcndhcmQsIHRoYW5rZnVsbHkuIFRoZXkmIzM5O3ZlIGFkZGVkIGV4cGxpY2l0IGJvdW5kcyBjaGVja2luZy4gTm93LCBiZWZvcmUgYW55IGF0dGVtcHQgdG8gYWNjZXNzIHRoZSBwYWNrZXQgZGF0YSwgd2UgY2FsY3VsYXRlIGByZW1haW5pbmdgIOKAkyB0aGUgYW1vdW50IG9mIGRhdGEgbGVmdCBpbiB0aGUgVVNCIGJ1ZmZlciDigJMgYW5kIHRoZW4gY29tcGFyZSB0aGF0IGFnYWluc3QgYm90aCB0aGUgb2Zmc2V0IGFuZCB0aGUgYW50aWNpcGF0ZWQgcGFja2V0IGxlbmd0aC4gSWYgZWl0aGVyIGNoZWNrIGZhaWxzLCB0aGUgcGFja2V0IGlzIGRpc2NhcmRlZCwgYW5kIHRoZSByZWxldmFudCBlcnJvciBjb3VudGVycyBhcmUgaW5jcmVtZW50ZWQuIFBlcmZlY3QuIE11Y2ggbW9yZSByb2J1c3QuCgpUaGUgaW1wb3J0YW50IG5leHQgc3RlcCBpcyB0byBhc3Nlc3MgZm9yIHBvdGVudGlhbCBLTVNBTiAoS2VybmVsIE1lbW9yeSBTYW5pdGl6ZXIpIGlzc3Vlcy4gSXMgdGhpcyBwYXRjaCBpbnRyb2R1Y2luZyBvciBleHBvc2luZyB1bmluaXRpYWxpemVkIG1lbW9yeT8gTm8sIG5vdCB0aGF0IEkgY2FuIHNlZS4gV2UgYXJlbiYjMzk7dCBjb3B5aW5nIGFueSBrZXJuZWwgc3RydWN0dXJlcyB0byB1c2Vyc3BhY2UsIGFuZCBubyBzdHJ1Y3R1cmVzIHdpdGggcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCBwYWRkaW5nLiBXZSBhcmVuJiMzOTt0IG1ha2luZyBkZWNpc2lvbnMgYmFzZWQgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIGFsbCBvZiB0aGUgdmFyaWFibGVzIHVzZWQgaW4gdGhlIGNhbGN1bGF0aW9ucyBhcmUgaW5pdGlhbGl6ZWQgZnJvbSB0aGUgVVNCIGNvcmUgYW5kIHRoZSBwYWNrZXQgaGVhZGVyLiBUaGVyZSYjMzk7cyBubyBhbGxvY2F0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIGVpdGhlci4gQ3J1Y2lhbGx5LCB0aGUgKnB1cnBvc2UqIG9mIHRoZSBwYXRjaCBpcyB0byAqcHJldmVudCogb3V0LW9mLWJvdW5kcyByZWFkcyEgU28sIGl0JiMzOTtzIHRpZ2h0ZW5pbmcgdXAgdGhlIGJ1ZmZlciBhY2Nlc3MsIG5vdCBsb29zZW5pbmcgaXQuIEtBU0FOIGlzIHRoZSB0b29sIHRoYXQgaXMgcmVhbGx5IGRlc2lnbmVkIGZvciBjYXRjaGluZyBPT0IgcmVhZHMvd3JpdGVzLiBUaGlzIHBhdGNoIGxvb2tzIGNsZWFuIGZyb20gYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgcGVyc3BlY3RpdmUuCgpMZXQmIzM5O3MgZG91YmxlLWNoZWNrIGFsbCB0aGUgcmVxdWlyZW1lbnRzOiAxLiBObyBrZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXJzcGFjZS4gMi4gTm8gY29uZGl0aW9uYWwgbG9naWMgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMuIDMuIE5vIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIGFsbG9jYXRpb24uIDQuIFRpZ2h0IGJvdW5kcyBjaGVja3MgdGhhdCBwcmV2ZW50IGFueSBhY2Nlc3MgdG8gdW5pbml0aWFsaXplZCBieXRlcy4gWXVwLCBhbGwgdGhlIGJveGVzIGFyZSB0aWNrZWQuIFRoaXMgbG9va3MgbGlrZSBhIHNvbGlkLCBzYWZlIGZpeC4gSSBjYW4gY29uZmlkZW50bHkgdGFnIHRoaXMgYXMgYE5lZWRzS01TQU4gPSBmYWxzZWAuIFRpbWUgdG8gY2FsbCB0aGF0IGBzZXQtcmVzdWx0c2AgdG9vbCBhbmQgbW92ZSBvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTE6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgb3V0LW9mLWJvdW5kcyByZWFkIHZ1bG5lcmFiaWxpdGllcyBpbiB0aGUgQ0FUQyBVU0IgRXRoZXJuZXQgZHJpdmVyJiMzOTtzIHJlY2VpdmUgcGF0aCAoYGNhdGNfcnhfZG9uZWApLiBTcGVjaWZpY2FsbHksIGl0IGVuc3VyZXMgdGhhdCBgcmVtYWluaW5nYCB0cmFuc2ZlciBidWZmZXIgYnl0ZXMgYXJlIHN1ZmZpY2llbnQgdG8gcmVhZCB0aGUgMi1ieXRlIHBhY2tldCBsZW5ndGggaGVhZGVyIChgcmVtYWluaW5nIFx1MDAzZT0gcGt0X29mZnNldGApLCBhbmQgdGhhdCB0aGUgaW5kaWNhdGVkIHBhY2tldCBsZW5ndGggcGx1cyBvZmZzZXQgZml0cyB3aXRoaW4gdGhlIHJlbWFpbmluZyByZWNlaXZlZCBidWZmZXIgKGBwa3RfbGVuICYjNDM7IHBrdF9vZmZzZXQgXHUwMDNjPSByZW1haW5pbmdgKS5cblxuVGhlc2UgY2hhbmdlcyBwcmV2ZW50IG91dC1vZi1ib3VuZHMgbWVtb3J5IGFjY2Vzc2VzIGZyb20gYHVyYi1cdTAwM2V0cmFuc2Zlcl9idWZmZXJgIGR1cmluZyBwYWNrZXQgcHJvY2Vzc2luZyBhbmQgY29weWluZyB0byB0aGUgU0tCLiBCdWZmZXIgb3Zlci1yZWFkcyBhbmQgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhcmUgbWVtb3J5IHNhZmV0eSB2aW9sYXRpb25zIGRldGVjdGVkIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcywgaW5mby1sZWFrcyB0byB1c2VyIHNwYWNlLCBvciB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgb3V0LW9mLWJvdW5kcyByZWFkIHZ1bG5lcmFiaWxpdGllcyBpbiB0aGUgQ0FUQyBVU0IgRXRoZXJuZXQgZHJpdmVyJiMzOTtzIHJlY2VpdmUgcGF0aCAoYGNhdGNfcnhfZG9uZWApLiBTcGVjaWZpY2FsbHksIGl0IGVuc3VyZXMgdGhhdCBgcmVtYWluaW5nYCB0cmFuc2ZlciBidWZmZXIgYnl0ZXMgYXJlIHN1ZmZpY2llbnQgdG8gcmVhZCB0aGUgMi1ieXRlIHBhY2tldCBsZW5ndGggaGVhZGVyIChgcmVtYWluaW5nIFx1MDAzZT0gcGt0X29mZnNldGApLCBhbmQgdGhhdCB0aGUgaW5kaWNhdGVkIHBhY2tldCBsZW5ndGggcGx1cyBvZmZzZXQgZml0cyB3aXRoaW4gdGhlIHJlbWFpbmluZyByZWNlaXZlZCBidWZmZXIgKGBwa3RfbGVuICYjNDM7IHBrdF9vZmZzZXQgXHUwMDNjPSByZW1haW5pbmdgKS5cblxuVGhlc2UgY2hhbmdlcyBwcmV2ZW50IG91dC1vZi1ib3VuZHMgbWVtb3J5IGFjY2Vzc2VzIGZyb20gYHVyYi1cdTAwM2V0cmFuc2Zlcl9idWZmZXJgIGR1cmluZyBwYWNrZXQgcHJvY2Vzc2luZyBhbmQgY29weWluZyB0byB0aGUgU0tCLiBCdWZmZXIgb3Zlci1yZWFkcyBhbmQgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhcmUgbWVtb3J5IHNhZmV0eSB2aW9sYXRpb25zIGRldGVjdGVkIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcywgaW5mby1sZWFrcyB0byB1c2VyIHNwYWNlLCBvciB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wN1QxMToyNTo1NC42NzIwNDQ3NjFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTg1Nzc3NzU5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJVU0JfQ0FUQ1wiLFxuICAgIFwiVVNCX05FVF9EUklWRVJTXCIsXG4gICAgXCJVU0JcIixcbiAgICBcIk5FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNhdGNfcnhfZG9uZVwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgb3V0LW9mLWJvdW5kcyByZWFkIHZ1bG5lcmFiaWxpdGllcyBpbiB0aGUgQ0FUQyBVU0IgRXRoZXJuZXQgZHJpdmVyJ3MgcmVjZWl2ZSBwYXRoIChgY2F0Y19yeF9kb25lYCkuIFNwZWNpZmljYWxseSwgaXQgZW5zdXJlcyB0aGF0IGByZW1haW5pbmdgIHRyYW5zZmVyIGJ1ZmZlciBieXRlcyBhcmUgc3VmZmljaWVudCB0byByZWFkIHRoZSAyLWJ5dGUgcGFja2V0IGxlbmd0aCBoZWFkZXIgKGByZW1haW5pbmcgXFx1MDAzZT0gcGt0X29mZnNldGApLCBhbmQgdGhhdCB0aGUgaW5kaWNhdGVkIHBhY2tldCBsZW5ndGggcGx1cyBvZmZzZXQgZml0cyB3aXRoaW4gdGhlIHJlbWFpbmluZyByZWNlaXZlZCBidWZmZXIgKGBwa3RfbGVuICsgcGt0X29mZnNldCBcXHUwMDNjPSByZW1haW5pbmdgKS5cXG5cXG5UaGVzZSBjaGFuZ2VzIHByZXZlbnQgb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzZXMgZnJvbSBgdXJiLVxcdTAwM2V0cmFuc2Zlcl9idWZmZXJgIGR1cmluZyBwYWNrZXQgcHJvY2Vzc2luZyBhbmQgY29weWluZyB0byB0aGUgU0tCLiBCdWZmZXIgb3Zlci1yZWFkcyBhbmQgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhcmUgbWVtb3J5IHNhZmV0eSB2aW9sYXRpb25zIGRldGVjdGVkIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcywgaW5mby1sZWFrcyB0byB1c2VyIHNwYWNlLCBvciB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBwYWNrZXQgcmVjZXB0aW9uIGFuZCBsZW5ndGggdmFsaWRhdGlvbiBsb2dpYyBpbiBjYXRjX3J4X2RvbmUgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzIHdoZW4gcHJvY2Vzc2luZyBtYWxmb3JtZWQgVVNCIFJYIFVSQiBkYXRhLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGFuZCBmdXp6YWJsZSB2aWEgVVNCIGVtdWxhdGlvbiAvIHN5emthbGxlciBVU0IgcmF3LWdhZGdldCBzdXBwb3J0LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QxMToyNTo1NC42NzIwNDk2OTFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0MTc0NDIwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGEyNmMwODk1YWY2YzE2MmRmMmYxMzZhMTQ5MDMzZmQzOWMyMzgyMDJcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBTZXAgNyAxMToyNTo1MyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC91c2IvY2F0Yy5jIGIvZHJpdmVycy9uZXQvdXNiL2NhdGMuY1xcbmluZGV4IDk2ZTgyZjk0ZWRjZjguLmU0ZjhiOWEwY2FmMTkgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvdXNiL2NhdGMuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3VzYi9jYXRjLmNcXG5AQCAtMjM0LDggKzIzNCwxNiBAQCBzdGF0aWMgdm9pZCBjYXRjX3J4X2RvbmUoc3RydWN0IHVyYiAqdXJiKVxcbiBcXG4gXFx0ZG8ge1xcbiBcXHRcXHRpZighY2F0Yy1cXHUwMDNlaXNfZjV1MDExKSB7XFxuK1xcdFxcdFxcdGludCByZW1haW5pbmcgPSB1cmItXFx1MDAzZWFjdHVhbF9sZW5ndGggLVxcbitcXHRcXHRcXHRcXHRcXHQocGt0X3N0YXJ0IC0gKHU4ICopdXJiLVxcdTAwM2V0cmFuc2Zlcl9idWZmZXIpO1xcbitcXG4rXFx0XFx0XFx0aWYgKHJlbWFpbmluZyBcXHUwMDNjIHBrdF9vZmZzZXQpIHtcXG4rXFx0XFx0XFx0XFx0Y2F0Yy1cXHUwMDNlbmV0ZGV2LVxcdTAwM2VzdGF0cy5yeF9sZW5ndGhfZXJyb3JzKys7XFxuK1xcdFxcdFxcdFxcdGNhdGMtXFx1MDAzZW5ldGRldi1cXHUwMDNlc3RhdHMucnhfZXJyb3JzKys7XFxuK1xcdFxcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHRcXHR9XFxuIFxcdFxcdFxcdHBrdF9sZW4gPSBsZTE2X3RvX2NwdXAoKF9fbGUxNiopcGt0X3N0YXJ0KTtcXG4tXFx0XFx0XFx0aWYgKHBrdF9sZW4gXFx1MDAzZSB1cmItXFx1MDAzZWFjdHVhbF9sZW5ndGgpIHtcXG4rXFx0XFx0XFx0aWYgKHBrdF9sZW4gKyBwa3Rfb2Zmc2V0IFxcdTAwM2UgcmVtYWluaW5nKSB7XFxuIFxcdFxcdFxcdFxcdGNhdGMtXFx1MDAzZW5ldGRldi1cXHUwMDNlc3RhdHMucnhfbGVuZ3RoX2Vycm9ycysrO1xcbiBcXHRcXHRcXHRcXHRjYXRjLVxcdTAwM2VuZXRkZXYtXFx1MDAzZXN0YXRzLnJ4X2Vycm9ycysrO1xcbiBcXHRcXHRcXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTE6MjU6NTUuMzE2OTE4NzI4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjozNzU2MDE4NTU2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJVU0JfQ0FUQ1wiLFxuICAgIFwiVVNCX05FVF9EUklWRVJTXCIsXG4gICAgXCJVU0JcIixcbiAgICBcIk5FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNhdGNfcnhfZG9uZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBwYWNrZXQgcmVjZXB0aW9uIGFuZCBsZW5ndGggdmFsaWRhdGlvbiBsb2dpYyBpbiBjYXRjX3J4X2RvbmUgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzIHdoZW4gcHJvY2Vzc2luZyBtYWxmb3JtZWQgVVNCIFJYIFVSQiBkYXRhLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGFuZCBmdXp6YWJsZSB2aWEgVVNCIGVtdWxhdGlvbiAvIHN5emthbGxlciBVU0IgcmF3LWdhZGdldCBzdXBwb3J0LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGEyNmMwODk1YWY2YzE2MmRmMmYxMzZhMTQ5MDMzZmQzOWMyMzgyMDJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIFNlcCA3IDExOjI1OjUzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdXNiL2NhdGMuYyBiL2RyaXZlcnMvbmV0L3VzYi9jYXRjLmNcbmluZGV4IDk2ZTgyZjk0ZWRjZjguLmU0ZjhiOWEwY2FmMTkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC91c2IvY2F0Yy5jXG4rKysgYi9kcml2ZXJzL25ldC91c2IvY2F0Yy5jXG5AQCAtMjM0LDggKzIzNCwxNiBAQCBzdGF0aWMgdm9pZCBjYXRjX3J4X2RvbmUoc3RydWN0IHVyYiAqdXJiKVxuIFxuIFx0ZG8ge1xuIFx0XHRpZighY2F0Yy1cdTAwM2Vpc19mNXUwMTEpIHtcbitcdFx0XHRpbnQgcmVtYWluaW5nID0gdXJiLVx1MDAzZWFjdHVhbF9sZW5ndGggLVxuK1x0XHRcdFx0XHQocGt0X3N0YXJ0IC0gKHU4ICopdXJiLVx1MDAzZXRyYW5zZmVyX2J1ZmZlcik7XG4rXG4rXHRcdFx0aWYgKHJlbWFpbmluZyBcdTAwM2MgcGt0X29mZnNldCkge1xuK1x0XHRcdFx0Y2F0Yy1cdTAwM2VuZXRkZXYtXHUwMDNlc3RhdHMucnhfbGVuZ3RoX2Vycm9ycysrO1xuK1x0XHRcdFx0Y2F0Yy1cdTAwM2VuZXRkZXYtXHUwMDNlc3RhdHMucnhfZXJyb3JzKys7XG4rXHRcdFx0XHRicmVhaztcbitcdFx0XHR9XG4gXHRcdFx0cGt0X2xlbiA9IGxlMTZfdG9fY3B1cCgoX19sZTE2Kilwa3Rfc3RhcnQpO1xuLVx0XHRcdGlmIChwa3RfbGVuIFx1MDAzZSB1cmItXHUwMDNlYWN0dWFsX2xlbmd0aCkge1xuK1x0XHRcdGlmIChwa3RfbGVuICsgcGt0X29mZnNldCBcdTAwM2UgcmVtYWluaW5nKSB7XG4gXHRcdFx0XHRjYXRjLVx1MDAzZW5ldGRldi1cdTAwM2VzdGF0cy5yeF9sZW5ndGhfZXJyb3JzKys7XG4gXHRcdFx0XHRjYXRjLVx1MDAzZW5ldGRldi1cdTAwM2VzdGF0cy5yeF9lcnJvcnMrKztcbiBcdFx0XHRcdGJyZWFrO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTE6MjU6NTUuMzE2OTIxNDE4WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTIxMjQyOTMzNjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXZhbHVhdGluZyBUaGlzIEtlcm5lbCBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGxhbmRlZCBvbiBteSBkZXNrLCBhbmQgbXkgZmlyc3QgdGhvdWdodCBpczogRG9lcyB0aGlzIHdhcnJhbnQgYSBkZWVwIGRpdmUgd2l0aCBzeXprYWxsZXI/IExldCdzIHRha2UgYSBtZXRob2RpY2FsIGFwcHJvYWNoLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wYWN0IG9mIHRoaXMgY2hhbmdlLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGRpZyBpbnRvIHRoZSBjb2RlIGFuZCBkZXRlcm1pbmUgaWYgdGhlIHBhdGNoIGludHJvZHVjZXMgYW55IG5ldyBrZXJuZWwgZnVuY3Rpb25hbGl0eSwgYWx0ZXJzIGV4aXN0aW5nIGludGVyZmFjZXMsIG9yIHRvdWNoZXMgY29kZSB0aGF0J3MgYWxyZWFkeSBrbm93biB0byBiZSBhIHNvdXJjZSBvZiBidWdzLlxuXG5JJ20gdGhpbmtpbmcgSSdsbCBzdGFydCB3aXRoIGBncmVwcGVyYCDigJMgdGhhdCdzIG9mdGVuIG15IGZpcnN0IHN0b3AgZm9yIGEgYnJvYWQgb3ZlcnZpZXcgb2YgdGhlIGFmZmVjdGVkIGFyZWFzLiBJIHdhbnQgdG8gc2VlIGEgZ2VuZXJhbCBwaWN0dXJlIG9mIHRoZSBzY29wZS4gSWYgdGhhdCdzIG5vdCB5aWVsZGluZyBlbm91Z2gsIG9yIGlmIGl0IGxvb2tzIGxpa2UgdGhlIGNoYW5nZSBpcyBoaWdobHkgbG9jYWxpemVkLCBJJ2xsIGdvIGRpcmVjdGx5IGZvciBgY2F0Yy5jYCBvciB0aGUgS2NvbmZpZyBmaWxlcy4gVGhpcyBzaG91bGQgcXVpY2tseSBnaXZlIG1lIGEgc2Vuc2Ugb2Ygd2hhdCdzIGJlaW5nIGVuYWJsZWQgb3IgbW9kaWZpZWQuIFVuZGVyc3RhbmRpbmcgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBpcyBjcnVjaWFsIOKAkyBpcyB0aGlzIGEgZmVhdHVyZSB0aGF0J3MgZGlzYWJsZWQgYnkgZGVmYXVsdCwgb3IgaXMgaXQgcG90ZW50aWFsbHkgYSBzaWduaWZpY2FudCBjaGFuZ2UgdGhhdCBpbXBhY3RzIGEgd2lkZSByYW5nZSBvZiBzeXN0ZW1zPyBUaGF0J2xsIGhlbHAgbWUgdG8gd2VpZ2ggaXRzIGltcG9ydGFuY2UgZm9yIGZ1enppbmcgcHVycG9zZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5ODQsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDExOjI2OjA3LjQ0MTIyNjc2MVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NzYzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC91c2IvY2F0Yy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIyMCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDIyMDpcXHRcXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xcbiAyMjE6XFx0XFx0aW50IHBrdF9sZW4sIHBrdF9vZmZzZXQgPSAwO1xcbiAyMjI6XFx0XFx0aW50IHN0YXR1cyA9IHVyYi1cXHUwMDNlc3RhdHVzO1xcbiAyMjM6XFx0XFxuIDIyNDpcXHRcXHRpZiAoIWNhdGMtXFx1MDAzZWlzX2Y1dTAxMSkge1xcbiAyMjU6XFx0XFx0XFx0Y2xlYXJfYml0KFJYX1JVTk5JTkcsIFxcdTAwMjZjYXRjLVxcdTAwM2VmbGFncyk7XFxuIDIyNjpcXHRcXHRcXHRwa3Rfb2Zmc2V0ID0gMjtcXG4gMjI3OlxcdFxcdH1cXG4gMjI4OlxcdFxcbiAyMjk6XFx0XFx0aWYgKHN0YXR1cykge1xcbiAyMzA6XFx0XFx0XFx0ZGV2X2RiZyhcXHUwMDI2dXJiLVxcdTAwM2VkZXYtXFx1MDAzZWRldiwgXFxcInJ4X2RvbmUsIHN0YXR1cyAlZCwgbGVuZ3RoICVkXFxcXG5cXFwiLFxcbiAyMzE6XFx0XFx0XFx0XFx0c3RhdHVzLCB1cmItXFx1MDAzZWFjdHVhbF9sZW5ndGgpO1xcbiAyMzI6XFx0XFx0XFx0cmV0dXJuO1xcbiAyMzM6XFx0XFx0fVxcbiAyMzQ6XFx0XFxuIDIzNTpcXHRcXHRkbyB7XFxuIDIzNjpcXHRcXHRcXHRpZighY2F0Yy1cXHUwMDNlaXNfZjV1MDExKSB7XFxuIDIzNzpcXHRcXHRcXHRcXHRpbnQgcmVtYWluaW5nID0gdXJiLVxcdTAwM2VhY3R1YWxfbGVuZ3RoIC1cXG4gMjM4OlxcdFxcdFxcdFxcdFxcdFxcdChwa3Rfc3RhcnQgLSAodTggKil1cmItXFx1MDAzZXRyYW5zZmVyX2J1ZmZlcik7XFxuIDIzOTpcXHRcXG4gMjQwOlxcdFxcdFxcdFxcdGlmIChyZW1haW5pbmcgXFx1MDAzYyBwa3Rfb2Zmc2V0KSB7XFxuIDI0MTpcXHRcXHRcXHRcXHRcXHRjYXRjLVxcdTAwM2VuZXRkZXYtXFx1MDAzZXN0YXRzLnJ4X2xlbmd0aF9lcnJvcnMrKztcXG4gMjQyOlxcdFxcdFxcdFxcdFxcdGNhdGMtXFx1MDAzZW5ldGRldi1cXHUwMDNlc3RhdHMucnhfZXJyb3JzKys7XFxuIDI0MzpcXHRcXHRcXHRcXHRcXHRicmVhaztcXG4gMjQ0OlxcdFxcdFxcdFxcdH1cXG4gMjQ1OlxcdFxcdFxcdFxcdHBrdF9sZW4gPSBsZTE2X3RvX2NwdXAoKF9fbGUxNiopcGt0X3N0YXJ0KTtcXG4gMjQ2OlxcdFxcdFxcdFxcdGlmIChwa3RfbGVuICsgcGt0X29mZnNldCBcXHUwMDNlIHJlbWFpbmluZykge1xcbiAyNDc6XFx0XFx0XFx0XFx0XFx0Y2F0Yy1cXHUwMDNlbmV0ZGV2LVxcdTAwM2VzdGF0cy5yeF9sZW5ndGhfZXJyb3JzKys7XFxuIDI0ODpcXHRcXHRcXHRcXHRcXHRjYXRjLVxcdTAwM2VuZXRkZXYtXFx1MDAzZXN0YXRzLnJ4X2Vycm9ycysrO1xcbiAyNDk6XFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuIDI1MDpcXHRcXHRcXHRcXHR9XFxuIDI1MTpcXHRcXHRcXHR9IGVsc2Uge1xcbiAyNTI6XFx0XFx0XFx0XFx0cGt0X2xlbiA9IHVyYi1cXHUwMDNlYWN0dWFsX2xlbmd0aDtcXG4gMjUzOlxcdFxcdFxcdH1cXG4gMjU0OlxcdFxcbiAyNTU6XFx0XFx0XFx0aWYgKCEoc2tiID0gZGV2X2FsbG9jX3NrYihwa3RfbGVuKSkpXFxuIDI1NjpcXHRcXHRcXHRcXHRyZXR1cm47XFxuIDI1NzpcXHRcXG4gMjU4OlxcdFxcdFxcdHNrYl9jb3B5X3RvX2xpbmVhcl9kYXRhKHNrYiwgcGt0X3N0YXJ0ICsgcGt0X29mZnNldCwgcGt0X2xlbik7XFxuIDI1OTpcXHRcXHRcXHRza2JfcHV0KHNrYiwgcGt0X2xlbik7XFxuIDI2MDpcXHRcXG4gMjYxOlxcdFxcdFxcdHNrYi1cXHUwMDNlcHJvdG9jb2wgPSBldGhfdHlwZV90cmFucyhza2IsIGNhdGMtXFx1MDAzZW5ldGRldik7XFxuIDI2MjpcXHRcXHRcXHRuZXRpZl9yeChza2IpO1xcbiAyNjM6XFx0XFxuIDI2NDpcXHRcXHRcXHRjYXRjLVxcdTAwM2VuZXRkZXYtXFx1MDAzZXN0YXRzLnJ4X3BhY2tldHMrKztcXG4gMjY1OlxcdFxcdFxcdGNhdGMtXFx1MDAzZW5ldGRldi1cXHUwMDNlc3RhdHMucnhfYnl0ZXMgKz0gcGt0X2xlbjtcXG4gMjY2OlxcdFxcbiAyNjc6XFx0XFx0XFx0LyogRjVVMDExIG9ubHkgZG9lcyBvbmUgcGFja2V0IHBlciBSWCAqL1xcbiAyNjg6XFx0XFx0XFx0aWYgKGNhdGMtXFx1MDAzZWlzX2Y1dTAxMSlcXG4gMjY5OlxcdFxcdFxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QxMToyNjowNy40NDE0MjgwOTFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMjgzNDc4MTU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGl2aW5nIERlZXBlciBpbnRvIHRoZSBDQVRDIERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBgY2F0Y19yeF9kb25lYCBmdW5jdGlvbiBhbmQgaXRzIGNvbmZpZ3VyYXRpb24uIEkgbmVlZCB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIGhvdyB0aGlzIENBVEMgVVNCIG5ldHdvcmsgZHJpdmVyIGlzIGhhbmRsaW5nIHJlY2VpdmUgY29tcGxldGlvbnMuIEkgd2FudCB0byBzZWUgdGhlIGNvbXBsZXRlIHBpY3R1cmU7IGhvdyBhcmUgdGhlc2UgUlggZXZlbnRzIHByb2Nlc3NlZCwgYW5kIHdoYXQncyB0aGUgd2hvbGUgZmxvdyBvZiBkYXRhPyBTZWVpbmcgdGhlIHJlc3Qgb2YgdGhlIGZ1bmN0aW9uIGlzIGNyaXRpY2FsIHRvIHVuZGVyc3RhbmRpbmcgaXRzIGNvbnRleHQuIFRoZW4sIEkgbmVlZCB0byBjaGVjayB0aGUgY29ycmVzcG9uZGluZyBLY29uZmlnIGZvciB0aGF0IGRyaXZlci4gVGhpcydsbCB0ZWxsIG1lIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgY29tcGlsZS10aW1lIG9wdGlvbnMgb3IgZGVwZW5kZW5jaWVzIHRoYXQgYWZmZWN0IGl0cyBiZWhhdmlvci4gVW5kZXJzdGFuZGluZyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGlzIGNydWNpYWwgdG8gdW5kZXJzdGFuZGluZyB3aGljaCBmZWF0dXJlcyBhcmUgZW5hYmxlZCBvciBkaXNhYmxlZCwgYW5kIGhvdyB0aGF0IGltcGFjdHMgdGhlIGRyaXZlcidzIG9wZXJhdGlvbi4gSSB3YW50IHRvIHNlZSBob3cgdGhlc2UgdHdvIHBpZWNlcyBvZiBpbmZvcm1hdGlvbiBmaXQgdG9nZXRoZXIg4oCTwqB0aGUgZXhlY3V0aW9uIHBhdGgsIGFuZCB0aGUgY29udHJvbCBwYXJhbWV0ZXJzLiBUaGlzIHdpbGwgaGVscCBtZSBkaWFnbm9zZSBpc3N1ZXMsIG9wdGltaXplIGl0LCBvciBzaW1wbHkgdW5kZXJzdGFuZCB0aGUgZGVzaWduIGJldHRlci5cblxuXG4iLCJJbnB1dFRva2VucyI6NDA5MSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTE6MjY6MDkuNzI0OTA4ODc2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA1ODkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3VzYi9jYXRjLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjcwLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjcwOlxcdFxcdFxcdHBrdF9zdGFydCArPSAoKChwa3RfbGVuICsgMSkgXFx1MDAzZVxcdTAwM2UgNikgKyAxKSBcXHUwMDNjXFx1MDAzYyA2O1xcbiAyNzE6XFx0XFxuIDI3MjpcXHRcXHR9IHdoaWxlIChwa3Rfc3RhcnQgLSAodTggKikgdXJiLVxcdTAwM2V0cmFuc2Zlcl9idWZmZXIgXFx1MDAzYyB1cmItXFx1MDAzZWFjdHVhbF9sZW5ndGgpO1xcbiAyNzM6XFx0XFxuIDI3NDpcXHRcXHRpZiAoY2F0Yy1cXHUwMDNlaXNfZjV1MDExKSB7XFxuIDI3NTpcXHRcXHRcXHRpZiAoYXRvbWljX3JlYWQoXFx1MDAyNmNhdGMtXFx1MDAzZXJlY3Ffc3opKSB7XFxuIDI3NjpcXHRcXHRcXHRcXHRpbnQgc3RhdGU7XFxuIDI3NzpcXHRcXHRcXHRcXHRhdG9taWNfZGVjKFxcdTAwMjZjYXRjLVxcdTAwM2VyZWNxX3N6KTtcXG4gMjc4OlxcdFxcdFxcdFxcdG5ldGRldl9kYmcoY2F0Yy1cXHUwMDNlbmV0ZGV2LCBcXFwiZ2V0dGluZyBleHRyYSBwYWNrZXRcXFxcblxcXCIpO1xcbiAyNzk6XFx0XFx0XFx0XFx0dXJiLVxcdTAwM2VkZXYgPSBjYXRjLVxcdTAwM2V1c2JkZXY7XFxuIDI4MDpcXHRcXHRcXHRcXHRpZiAoKHN0YXRlID0gdXNiX3N1Ym1pdF91cmIodXJiLCBHRlBfQVRPTUlDKSkgXFx1MDAzYyAwKSB7XFxuIDI4MTpcXHRcXHRcXHRcXHRcXHRuZXRkZXZfZGJnKGNhdGMtXFx1MDAzZW5ldGRldixcXG4gMjgyOlxcdFxcdFxcdFxcdFxcdFxcdCAgIFxcXCJzdWJtaXQocnhfdXJiKSBzdGF0dXMgJWRcXFxcblxcXCIsIHN0YXRlKTtcXG4gMjgzOlxcdFxcdFxcdFxcdH1cXG4gMjg0OlxcdFxcdFxcdH0gZWxzZSB7XFxuIDI4NTpcXHRcXHRcXHRcXHRjbGVhcl9iaXQoUlhfUlVOTklORywgXFx1MDAyNmNhdGMtXFx1MDAzZWZsYWdzKTtcXG4gMjg2OlxcdFxcdFxcdH1cXG4gMjg3OlxcdFxcdH1cXG4gMjg4OlxcdH1cXG4gMjg5OlxcdFxcbiAyOTA6XFx0c3RhdGljIHZvaWQgY2F0Y19pcnFfZG9uZShzdHJ1Y3QgdXJiICp1cmIpXFxuIDI5MTpcXHR7XFxuIDI5MjpcXHRcXHRzdHJ1Y3QgY2F0YyAqY2F0YyA9IHVyYi1cXHUwMDNlY29udGV4dDtcXG4gMjkzOlxcdFxcdHU4ICpkYXRhID0gdXJiLVxcdTAwM2V0cmFuc2Zlcl9idWZmZXI7XFxuIDI5NDpcXHRcXHRpbnQgc3RhdHVzID0gdXJiLVxcdTAwM2VzdGF0dXM7XFxuIDI5NTpcXHRcXHR1bnNpZ25lZCBpbnQgaGFzZGF0YSwgbGlua3N0cyA9IExpbmtOb0NoYW5nZTtcXG4gMjk2OlxcdFxcdGludCByZXM7XFxuIDI5NzpcXHRcXG4gMjk4OlxcdFxcdGlmICghY2F0Yy1cXHUwMDNlaXNfZjV1MDExKSB7XFxuIDI5OTpcXHRcXHRcXHRoYXNkYXRhID0gZGF0YVsxXSBcXHUwMDI2IDB4ODA7XFxuIDMwMDpcXHRcXHRcXHRpZiAoZGF0YVsxXSBcXHUwMDI2IDB4NDApXFxuIDMwMTpcXHRcXHRcXHRcXHRsaW5rc3RzID0gTGlua0dvb2Q7XFxuIDMwMjpcXHRcXHRcXHRlbHNlIGlmIChkYXRhWzFdIFxcdTAwMjYgMHgyMClcXG4gMzAzOlxcdFxcdFxcdFxcdGxpbmtzdHMgPSBMaW5rQmFkO1xcbiAzMDQ6XFx0XFx0fSBlbHNlIHtcXG4gMzA1OlxcdFxcdFxcdGhhc2RhdGEgPSAodW5zaWduZWQgaW50KShiZTE2X3RvX2NwdXAoKF9fYmUxNiopZGF0YSkgXFx1MDAyNiAweDBmZmYpO1xcbiAzMDY6XFx0XFx0XFx0aWYgKGRhdGFbMF0gPT0gMHg5MClcXG4gMzA3OlxcdFxcdFxcdFxcdGxpbmtzdHMgPSBMaW5rR29vZDtcXG4gMzA4OlxcdFxcdFxcdGVsc2UgaWYgKGRhdGFbMF0gPT0gMHhBMClcXG4gMzA5OlxcdFxcdFxcdFxcdGxpbmtzdHMgPSBMaW5rQmFkO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QxMToyNjowOS43MjUxMjUzMDZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNjgyMzE2OTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIGlzc3VlOlxuXG4qKktjb25maWcgSW5zcGVjdGlvbiBmb3IgYGNhdGMuY2AqKlxuXG5Pa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZyBmaWxlcy4gVGhlIGNvZGUncyBiZWhhdmlvciBoaW5nZXMgb24gdGhvc2UgY29uZmlndXJhdGlvbnMsIHNvIHVuZGVyc3RhbmRpbmcgdGhlIEtjb25maWcgc2V0dGluZ3MgcmVsYXRlZCB0byBgY2F0Yy5jYCBpcyBwYXJhbW91bnQuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgb3B0aW9ucyBjb250cm9sIGl0cyBpbmNsdXNpb24sIGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiwgYW5kIGRlcGVuZGVuY3kgaW1wbGljYXRpb25zLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIGxvY2F0aW5nIHRoZSByZWxldmFudCBLY29uZmlnIGZyYWdtZW50cywgcG90ZW50aWFsbHkgdXNpbmcgYSBnbG9iYWwgc2VhcmNoIHdpdGhpbiB0aGUgcHJvamVjdCdzIHNvdXJjZSB0cmVlIGlmIEkgZG9uJ3QgaW1tZWRpYXRlbHkga25vdyB0aGUgbW9kdWxlIG9yIGRpcmVjdG9yeSBzdHJ1Y3R1cmUuXG5cbkknbGwgYmUgbG9va2luZyBmb3IgY29uZmlndXJhdGlvbiBzeW1ib2xzIGRpcmVjdGx5IHRpZWQgdG8gYGNhdGMuY2Agb3IsIGFsdGVybmF0aXZlbHksIG1vcmUgZ2VuZXJhbCBmZWF0dXJlcyB0aGF0IG1pZ2h0IGluZGlyZWN0bHkgYWZmZWN0IGl0LiBGb3IgZXhhbXBsZSwgaXMgYENPTkZJR19DQVRDX0VOQUJMRURgIGEgc3ltYm9sPyBPciBwZXJoYXBzIGl0J3MgZW5hYmxlZCBieSBzb21lIGJyb2FkZXIgZmVhdHVyZSBsaWtlIGBDT05GSUdfTkVUV09SS19TVVBQT1JUYCBvciBhIG1vcmUgc3BlY2lmaWMgZHJpdmVyIGNvbmZpZ3VyYXRpb24uIEkgaGF2ZSB0byBrZWVwIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZSBvZiB0aGUgcHJvamVjdCBpbiBtaW5kOyBpdCBjb3VsZCBiZSBsYXllcmVkLCB3aXRoIGRpZmZlcmVudCBLY29uZmlnIGZpbGVzIGluZmx1ZW5jaW5nIHRoaXMgZmlsZS5cblxuTmV4dCwgSSBuZWVkIHRvIGFuYWx5emUgdGhlIGltcGxpY2F0aW9ucy4gSWYgYGNhdGMuY2AgaXMgb25seSBpbmNsdWRlZCB1bmRlciBjZXJ0YWluIGNvbmZpZ3VyYXRpb25zLCBJIG5lZWQgdG8ga25vdyAqd2h5Ki4gV2hhdCBhcmUgdGhlIGFzc3VtcHRpb25zIGJha2VkIGludG8gdGhhdCBjb25maWd1cmF0aW9uPyBEb2VzIGl0IG1lYW4gdGhlIGZpbGUgaXMgb25seSBuZWVkZWQgZm9yIHBhcnRpY3VsYXIgaGFyZHdhcmUsIHNwZWNpZmljIHVzZSBjYXNlcywgb3IgcGFydGljdWxhciBidWlsZCB0YXJnZXRzPyBBcmUgdGhlcmUgb3RoZXIgZmlsZXMgb3IgbW9kdWxlcyBpbXBhY3RlZCBieSB0aGlzIHNldHRpbmc/IEhvdyBkb2VzIHRoaXMgcG90ZW50aWFsbHkgYWZmZWN0IHRoZSBvdmVyYWxsIGJ1aWxkIHN5c3RlbSBhbmQgdGhlIHJlc3VsdGluZyBiaW5hcnkgc2l6ZT8gSXQncyByZWFsbHkgdGhlIG1vc3QgY3JpdGljYWwgZmlyc3Qgc3RlcDsgdW5kZXJzdGFuZGluZyB0aGVzZSBzZXR0aW5ncyBpcyBmb3VuZGF0aW9uYWwgZm9yIGFueXRoaW5nIGVsc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwNTIsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDExOjI2OjEyLjQwNzQ1MjQxNFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NDg0MzAyOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjYXRjXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3VzYlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDYyMCBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MTU9Y29uZmlnIFVTQl9DQVRDXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0zMS1cXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjMyOlxcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGNhdGMuXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMzMtXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvTWFrZWZpbGUtNS1cXG5kcml2ZXJzL25ldC91c2IvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfVVNCX0NBVEMpXFx0XFx0Kz0gY2F0Yy5vXFxuZHJpdmVycy9uZXQvdXNiL01ha2VmaWxlLTctb2JqLSQoQ09ORklHX1VTQl9LQVdFVEgpXFx0Kz0ga2F3ZXRoLm9cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM9NDU9TU9EVUxFX0xJQ0VOU0UoXFxcIkdQTFxcXCIpO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNDYtXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo0NzpzdGF0aWMgY29uc3QgY2hhciBkcml2ZXJfbmFtZVtdID0gXFxcImNhdGNcXFwiO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNDgtXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTY0LVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NjU6ZW51bSBjYXRjX3VzYl9lcCB7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02Ni1cXHRDQVRDX1VTQl9FUF9DT05UUk9MXFx0PSAwLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYz0xMzk9ZW51bSBsaW5rX3N0YXR1cyB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTE0NS0vKlxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MTQ2OiAqIFRoZSBjYXRjIHN0cnVjdC5cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTE0Ny0gKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMTUyLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MTUzOnN0cnVjdCBjYXRjIHtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTE1NC1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0xODItXFx0XFx0aW50IGxlbjtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjE4MzpcXHRcXHR2b2lkICgqY2FsbGJhY2spKHN0cnVjdCBjYXRjICpjYXRjLCBzdHJ1Y3QgY3RybF9xdWV1ZSAqcSk7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0xODQtXFx0fSBjdHJsX3F1ZXVlW0NUUkxfUVVFVUVdO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0xOTYtXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzoxOTc6I2RlZmluZSBjYXRjX2dldF9tYWMoY2F0YywgbWFjKVxcdFxcdFxcdFxcdGNhdGNfY3RybF9tc2coY2F0YywgVVNCX0RJUl9JTiwgIEdldE1hYywgMCwgMCwgbWFjLCAgNilcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjE5ODojZGVmaW5lIGNhdGNfcmVzZXQoY2F0YylcXHRcXHRcXHRcXHRjYXRjX2N0cmxfbXNnKGNhdGMsIFVTQl9ESVJfT1VULCBSZXNldCwgMCwgMCwgTlVMTCwgMClcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjE5OTojZGVmaW5lIGNhdGNfc2V0X3JlZyhjYXRjLCByZWcsIHZhbClcXHRcXHRcXHRjYXRjX2N0cmxfbXNnKGNhdGMsIFVTQl9ESVJfT1VULCBTZXRSZWcsIHZhbCwgcmVnLCBOVUxMLCAwKVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MjAwOiNkZWZpbmUgY2F0Y19nZXRfcmVnKGNhdGMsIHJlZywgYnVmKVxcdFxcdFxcdGNhdGNfY3RybF9tc2coY2F0YywgVVNCX0RJUl9JTiwgIEdldFJlZywgMCwgcmVnLCBidWYsIDEpXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzoyMDE6I2RlZmluZSBjYXRjX3dyaXRlX21lbShjYXRjLCBhZGRyLCBidWYsIHNpemUpXFx0XFx0Y2F0Y19jdHJsX21zZyhjYXRjLCBVU0JfRElSX09VVCwgV3JpdGVNZW0sIDAsIGFkZHIsIGJ1Ziwgc2l6ZSlcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjIwMjojZGVmaW5lIGNhdGNfcmVhZF9tZW0oY2F0YywgYWRkciwgYnVmLCBzaXplKVxcdFxcdGNhdGNfY3RybF9tc2coY2F0YywgVVNCX0RJUl9JTiwgIFJlYWRNZW0sIDAsIGFkZHIsIGJ1Ziwgc2l6ZSlcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTIwMy1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjIwNDojZGVmaW5lIGY1dTAxMV9yeG1vZGUoY2F0Yywgcnhtb2RlKVxcdFxcdFxcdGNhdGNfY3RybF9tc2coY2F0YywgVVNCX0RJUl9PVVQsIFNldFJ4TW9kZSwgMCwgMSwgcnhtb2RlLCAyKVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MjA1OiNkZWZpbmUgZjV1MDExX3J4bW9kZV9hc3luYyhjYXRjLCByeG1vZGUpXFx0XFx0Y2F0Y19jdHJsX2FzeW5jKGNhdGMsIFVTQl9ESVJfT1VULCBTZXRSeE1vZGUsIDAsIDEsIFxcdTAwMjZyeG1vZGUsIDIsIE5VTEwpXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzoyMDY6I2RlZmluZSBmNXUwMTFfbWNoYXNoX2FzeW5jKGNhdGMsIGhhc2gpXFx0XFx0XFx0Y2F0Y19jdHJsX2FzeW5jKGNhdGMsIFVTQl9ESVJfT1VULCBTZXRSeE1vZGUsIDAsIDIsIFxcdTAwMjZoYXNoLCA4LCBOVUxMKVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMjA3LVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MjA4OiNkZWZpbmUgY2F0Y19zZXRfcmVnX2FzeW5jKGNhdGMsIHJlZywgdmFsKVxcdFxcdGNhdGNfY3RybF9hc3luYyhjYXRjLCBVU0JfRElSX09VVCwgU2V0UmVnLCB2YWwsIHJlZywgTlVMTCwgMCwgTlVMTClcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjIwOTojZGVmaW5lIGNhdGNfZ2V0X3JlZ19hc3luYyhjYXRjLCByZWcsIGNiKVxcdFxcdGNhdGNfY3RybF9hc3luYyhjYXRjLCBVU0JfRElSX0lOLCBHZXRSZWcsIDAsIHJlZywgTlVMTCwgMSwgY2IpXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzoyMTA6I2RlZmluZSBjYXRjX3dyaXRlX21lbV9hc3luYyhjYXRjLCBhZGRyLCBidWYsIHNpemUpXFx0Y2F0Y19jdHJsX2FzeW5jKGNhdGMsIFVTQl9ESVJfT1VULCBXcml0ZU1lbSwgMCwgYWRkciwgYnVmLCBzaXplLCBOVUxMKVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMjExLVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0yMTUtXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzoyMTY6c3RhdGljIHZvaWQgY2F0Y19yeF9kb25lKHN0cnVjdCB1cmIgKnVyYilcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTIxNy17XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzoyMTg6XFx0c3RydWN0IGNhdGMgKmNhdGMgPSB1cmItXFx1MDAzZWNvbnRleHQ7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0yMTktXFx0dTggKnBrdF9zdGFydCA9IHVyYi1cXHUwMDNldHJhbnNmZXJfYnVmZmVyO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0yMjMtXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzoyMjQ6XFx0aWYgKCFjYXRjLVxcdTAwM2Vpc19mNXUwMTEpIHtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjIyNTpcXHRcXHRjbGVhcl9iaXQoUlhfUlVOTklORywgXFx1MDAyNmNhdGMtXFx1MDAzZWZsYWdzKTtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTIyNi1cXHRcXHRwa3Rfb2Zmc2V0ID0gMjtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMjM1LVxcdGRvIHtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjIzNjpcXHRcXHRpZighY2F0Yy1cXHUwMDNlaXNfZjV1MDExKSB7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0yMzctXFx0XFx0XFx0aW50IHJlbWFpbmluZyA9IHVyYi1cXHUwMDNlYWN0dWFsX2xlbmd0aCAtXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTI0MC1cXHRcXHRcXHRpZiAocmVtYWluaW5nIFxcdTAwM2MgcGt0X29mZnNldCkge1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MjQxOlxcdFxcdFxcdFxcdGNhdGMtXFx1MDAzZW5ldGRldi1cXHUwMDNlc3RhdHMucnhfbGVuZ3RoX2Vycm9ycysrO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MjQyOlxcdFxcdFxcdFxcdGNhdGMtXFx1MDAzZW5ldGRldi1cXHUwMDNlc3RhdHMucnhfZXJyb3JzKys7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0yNDMtXFx0XFx0XFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTI0Ni1cXHRcXHRcXHRpZiAocGt0X2xlbiArIHBrdF9vZmZzZXQgXFx1MDAzZSByZW1haW5pbmcpIHtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjI0NzpcXHRcXHRcXHRcXHRjYXRjLVxcdTAwM2VuZXRkZXYtXFx1MDAzZXN0YXRzLnJ4X2xlbmd0aF9lcnJvcnMrKztcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjI0ODpcXHRcXHRcXHRcXHRjYXRjLVxcdTAwM2VuZXRkZXYtXFx1MDAzZXN0YXRzLnJ4X2Vycm9ycysrO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMjQ5LVxcdFxcdFxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0yNjAtXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzoyNjE6XFx0XFx0c2tiLVxcdTAwM2Vwcm90b2NvbCA9IGV0aF90eXBlX3RyYW5zKHNrYiwgY2F0Yy1cXHUwMDNlbmV0ZGV2KTtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTI2Mi1cXHRcXHRuZXRpZl9yeChza2IpO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMjYzLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MjY0OlxcdFxcdGNhdGMtXFx1MDAzZW5ldGRldi1cXHUwMDNlc3RhdHMucnhfcGFja2V0cysrO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MjY1OlxcdFxcdGNhdGMtXFx1MDAzZW5ldGRldi1cXHUwMDNlc3RhdHMucnhfYnl0ZXMgKz0gcGt0X2xlbjtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTI2Ni1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTI2Ny1cXHRcXHQvKiBGNVUwMTEgb25seSBkb2VzIG9uZSBwYWNrZXQgcGVyIFJYICovXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzoyNjg6XFx0XFx0aWYgKGNhdGMtXFx1MDAzZWlzX2Y1dTAxMSlcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTI2OS1cXHRcXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMjczLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6Mjc0OlxcdGlmIChjYXRjLVxcdTAwM2Vpc19mNXUwMTEpIHtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjI3NTpcXHRcXHRpZiAoYXRvbWljX3JlYWQoXFx1MDAyNmNhdGMtXFx1MDAzZXJlY3Ffc3opKSB7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0yNzYtXFx0XFx0XFx0aW50IHN0YXRlO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6Mjc3OlxcdFxcdFxcdGF0b21pY19kZWMoXFx1MDAyNmNhdGMtXFx1MDAzZXJlY3Ffc3opO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6Mjc4OlxcdFxcdFxcdG5ldGRldl9kYmcoY2F0Yy1cXHUwMDNlbmV0ZGV2LCBcXFwiZ2V0dGluZyBleHRyYSBwYWNrZXRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6Mjc5OlxcdFxcdFxcdHVyYi1cXHUwMDNlZGV2ID0gY2F0Yy1cXHUwMDNldXNiZGV2O1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMjgwLVxcdFxcdFxcdGlmICgoc3RhdGUgPSB1c2Jfc3VibWl0X3VyYih1cmIsIEdGUF9BVE9NSUMpKSBcXHUwMDNjIDApIHtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjI4MTpcXHRcXHRcXHRcXHRuZXRkZXZfZGJnKGNhdGMtXFx1MDAzZW5ldGRldixcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTI4Mi1cXHRcXHRcXHRcXHRcXHQgICBcXFwic3VibWl0KHJ4X3VyYikgc3RhdHVzICVkXFxcXG5cXFwiLCBzdGF0ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTI4NC1cXHRcXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6Mjg1OlxcdFxcdFxcdGNsZWFyX2JpdChSWF9SVU5OSU5HLCBcXHUwMDI2Y2F0Yy1cXHUwMDNlZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMjg2LVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMjg5LVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MjkwOnN0YXRpYyB2b2lkIGNhdGNfaXJxX2RvbmUoc3RydWN0IHVyYiAqdXJiKVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMjkxLXtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjI5MjpcXHRzdHJ1Y3QgY2F0YyAqY2F0YyA9IHVyYi1cXHUwMDNlY29udGV4dDtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTI5My1cXHR1OCAqZGF0YSA9IHVyYi1cXHUwMDNldHJhbnNmZXJfYnVmZmVyO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0yOTctXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzoyOTg6XFx0aWYgKCFjYXRjLVxcdTAwM2Vpc19mNXUwMTEpIHtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTI5OS1cXHRcXHRoYXNkYXRhID0gZGF0YVsxXSBcXHUwMDI2IDB4ODA7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTMyNy1cXHRpZiAobGlua3N0cyA9PSBMaW5rR29vZCkge1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MzI4OlxcdFxcdG5ldGlmX2NhcnJpZXJfb24oY2F0Yy1cXHUwMDNlbmV0ZGV2KTtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjMyOTpcXHRcXHRuZXRkZXZfZGJnKGNhdGMtXFx1MDAzZW5ldGRldiwgXFxcImxpbmsgb2tcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMzMwLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMzMyLVxcdGlmIChsaW5rc3RzID09IExpbmtCYWQpIHtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjMzMzpcXHRcXHRuZXRpZl9jYXJyaWVyX29mZihjYXRjLVxcdTAwM2VuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MzM0OlxcdFxcdG5ldGRldl9kYmcoY2F0Yy1cXHUwMDNlbmV0ZGV2LCBcXFwibGluayBiYWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMzM1LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMzM3LVxcdGlmIChoYXNkYXRhKSB7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzozMzg6XFx0XFx0aWYgKHRlc3RfYW5kX3NldF9iaXQoUlhfUlVOTklORywgXFx1MDAyNmNhdGMtXFx1MDAzZWZsYWdzKSkge1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MzM5OlxcdFxcdFxcdGlmIChjYXRjLVxcdTAwM2Vpc19mNXUwMTEpXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzozNDA6XFx0XFx0XFx0XFx0YXRvbWljX2luYyhcXHUwMDI2Y2F0Yy1cXHUwMDNlcmVjcV9zeik7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0zNDEtXFx0XFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjM0MjpcXHRcXHRcXHRjYXRjLVxcdTAwM2VyeF91cmItXFx1MDAzZWRldiA9IGNhdGMtXFx1MDAzZXVzYmRldjtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjM0MzpcXHRcXHRcXHRpZiAoKHJlcyA9IHVzYl9zdWJtaXRfdXJiKGNhdGMtXFx1MDAzZXJ4X3VyYiwgR0ZQX0FUT01JQykpIFxcdTAwM2MgMCkge1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MzQ0OlxcdFxcdFxcdFxcdGRldl9lcnIoXFx1MDAyNmNhdGMtXFx1MDAzZXVzYmRldi1cXHUwMDNlZGV2LFxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMzQ1LVxcdFxcdFxcdFxcdFxcdFxcXCJzdWJtaXQocnhfdXJiKSBzdGF0dXMgJWRcXFxcblxcXCIsIHJlcyk7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTM1MS1cXHRpZiAocmVzKVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MzUyOlxcdFxcdGRldl9lcnIoXFx1MDAyNmNhdGMtXFx1MDAzZXVzYmRldi1cXHUwMDNlZGV2LFxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMzUzLVxcdFxcdFxcdFxcXCJjYW4ndCByZXN1Ym1pdCBpbnRyLCAlcy0lcywgc3RhdHVzICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MzU0OlxcdFxcdFxcdGNhdGMtXFx1MDAzZXVzYmRldi1cXHUwMDNlYnVzLVxcdTAwM2VidXNfbmFtZSxcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjM1NTpcXHRcXHRcXHRjYXRjLVxcdTAwM2V1c2JkZXYtXFx1MDAzZWRldnBhdGgsIHJlcyk7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0zNTYtfVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0zNjEtXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzozNjI6c3RhdGljIGludCBjYXRjX3R4X3J1bihzdHJ1Y3QgY2F0YyAqY2F0YylcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTM2My17XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTM2NS1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjM2NjpcXHRpZiAoY2F0Yy1cXHUwMDNlaXNfZjV1MDExKVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MzY3OlxcdFxcdGNhdGMtXFx1MDAzZXR4X3B0ciA9IChjYXRjLVxcdTAwM2V0eF9wdHIgKyA2MykgXFx1MDAyNiB+NjM7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0zNjgtXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzozNjk6XFx0Y2F0Yy1cXHUwMDNldHhfdXJiLVxcdTAwM2V0cmFuc2Zlcl9idWZmZXJfbGVuZ3RoID0gY2F0Yy1cXHUwMDNldHhfcHRyO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MzcwOlxcdGNhdGMtXFx1MDAzZXR4X3VyYi1cXHUwMDNldHJhbnNmZXJfYnVmZmVyID0gY2F0Yy1cXHUwMDNldHhfYnVmW2NhdGMtXFx1MDAzZXR4X2lkeF07XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzozNzE6XFx0Y2F0Yy1cXHUwMDNldHhfdXJiLVxcdTAwM2VkZXYgPSBjYXRjLVxcdTAwM2V1c2JkZXY7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0zNzItXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzozNzM6XFx0aWYgKChzdGF0dXMgPSB1c2Jfc3VibWl0X3VyYihjYXRjLVxcdTAwM2V0eF91cmIsIEdGUF9BVE9NSUMpKSBcXHUwMDNjIDApXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzozNzQ6XFx0XFx0ZGV2X2VycihcXHUwMDI2Y2F0Yy1cXHUwMDNldXNiZGV2LVxcdTAwM2VkZXYsIFxcXCJzdWJtaXQodHhfdXJiKSwgc3RhdHVzICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMzc1LVxcdFxcdFxcdHN0YXR1cyk7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0zNzYtXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzozNzc6XFx0Y2F0Yy1cXHUwMDNldHhfaWR4ID0gIWNhdGMtXFx1MDAzZXR4X2lkeDtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjM3ODpcXHRjYXRjLVxcdTAwM2V0eF9wdHIgPSAwO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMzc5LVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MzgwOlxcdG5ldGlmX3RyYW5zX3VwZGF0ZShjYXRjLVxcdTAwM2VuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMzgxLVxcdHJldHVybiBzdGF0dXM7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTM4My1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjM4NDpzdGF0aWMgdm9pZCBjYXRjX3R4X2RvbmUoc3RydWN0IHVyYiAqdXJiKVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMzg1LXtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjM4NjpcXHRzdHJ1Y3QgY2F0YyAqY2F0YyA9IHVyYi1cXHUwMDNlY29udGV4dDtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTM4Ny1cXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy0zOTItXFx0XFx0dXJiLVxcdTAwM2VzdGF0dXMgPSAwO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6MzkzOlxcdFxcdG5ldGlmX3RyYW5zX3VwZGF0ZShjYXRjLVxcdTAwM2VuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6Mzk0OlxcdFxcdGNhdGMtXFx1MDAzZW5ldGRldi1cXHUwMDNlc3RhdHMudHhfZXJyb3JzKys7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzozOTU6XFx0XFx0Y2xlYXJfYml0KFRYX1JVTk5JTkcsIFxcdTAwMjZjYXRjLVxcdTAwM2VmbGFncyk7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzozOTY6XFx0XFx0bmV0aWZfd2FrZV9xdWV1ZShjYXRjLVxcdTAwM2VuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMzk3LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNDA1LVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NDA2OlxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZjYXRjLVxcdTAwM2V0eF9sb2NrLCBmbGFncyk7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy00MDctXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo0MDg6XFx0aWYgKGNhdGMtXFx1MDAzZXR4X3B0cikge1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NDA5OlxcdFxcdHIgPSBjYXRjX3R4X3J1bihjYXRjKTtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTQxMC1cXHRcXHRpZiAodW5saWtlbHkociBcXHUwMDNjIDApKVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NDExOlxcdFxcdFxcdGNsZWFyX2JpdChUWF9SVU5OSU5HLCBcXHUwMDI2Y2F0Yy1cXHUwMDNlZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNDEyLVxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo0MTM6XFx0XFx0Y2xlYXJfYml0KFRYX1JVTk5JTkcsIFxcdTAwMjZjYXRjLVxcdTAwM2VmbGFncyk7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy00MTQtXFx0fVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNDE1LVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NDE2OlxcdG5ldGlmX3dha2VfcXVldWUoY2F0Yy1cXHUwMDNlbmV0ZGV2KTtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTQxNy1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjQxODpcXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZjYXRjLVxcdTAwM2V0eF9sb2NrLCBmbGFncyk7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy00MTktfVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNDIwLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NDIxOnN0YXRpYyBuZXRkZXZfdHhfdCBjYXRjX3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTQyMi1cXHRcXHRcXHRcXHRcXHQgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTQyMy17XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo0MjQ6XFx0c3RydWN0IGNhdGMgKmNhdGMgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNDI1LVxcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTQyOC1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjQyOTpcXHRzcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2Y2F0Yy1cXHUwMDNldHhfbG9jaywgZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNDMwLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NDMxOlxcdGNhdGMtXFx1MDAzZXR4X3B0ciA9ICgoKGNhdGMtXFx1MDAzZXR4X3B0ciAtIDEpIFxcdTAwM2VcXHUwMDNlIDYpICsgMSkgXFx1MDAzY1xcdTAwM2MgNjtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjQzMjpcXHR0eF9idWYgPSBjYXRjLVxcdTAwM2V0eF9idWZbY2F0Yy1cXHUwMDNldHhfaWR4XSArIGNhdGMtXFx1MDAzZXR4X3B0cjtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjQzMzpcXHRpZiAoY2F0Yy1cXHUwMDNlaXNfZjV1MDExKVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNDM0LVxcdFxcdCooX19iZTE2ICopdHhfYnVmID0gY3B1X3RvX2JlMTYoc2tiLVxcdTAwM2VsZW4pO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy00MzctXFx0c2tiX2NvcHlfZnJvbV9saW5lYXJfZGF0YShza2IsIHR4X2J1ZiArIDIsIHNrYi1cXHUwMDNlbGVuKTtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjQzODpcXHRjYXRjLVxcdTAwM2V0eF9wdHIgKz0gc2tiLVxcdTAwM2VsZW4gKyAyO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNDM5LVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NDQwOlxcdGlmICghdGVzdF9hbmRfc2V0X2JpdChUWF9SVU5OSU5HLCBcXHUwMDI2Y2F0Yy1cXHUwMDNlZmxhZ3MpKSB7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo0NDE6XFx0XFx0ciA9IGNhdGNfdHhfcnVuKGNhdGMpO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNDQyLVxcdFxcdGlmIChyIFxcdTAwM2MgMClcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjQ0MzpcXHRcXHRcXHRjbGVhcl9iaXQoVFhfUlVOTklORywgXFx1MDAyNmNhdGMtXFx1MDAzZWZsYWdzKTtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTQ0NC1cXHR9XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy00NDUtXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo0NDY6XFx0aWYgKChjYXRjLVxcdTAwM2Vpc19mNXUwMTEgXFx1MDAyNlxcdTAwMjYgY2F0Yy1cXHUwMDNldHhfcHRyKSB8fFxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NDQ3OlxcdCAgICAoY2F0Yy1cXHUwMDNldHhfcHRyIFxcdTAwM2U9ICgoVFhfTUFYX0JVUlNUIC0gMSkgKiAoUEtUX1NaICsgMikpKSlcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTQ0OC1cXHRcXHRuZXRpZl9zdG9wX3F1ZXVlKG5ldGRldik7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy00NDktXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo0NTA6XFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2Y2F0Yy1cXHUwMDNldHhfbG9jaywgZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNDUxLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNDUyLVxcdGlmIChyIFxcdTAwM2U9IDApIHtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjQ1MzpcXHRcXHRjYXRjLVxcdTAwM2VuZXRkZXYtXFx1MDAzZXN0YXRzLnR4X2J5dGVzICs9IHNrYi1cXHUwMDNlbGVuO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NDU0OlxcdFxcdGNhdGMtXFx1MDAzZW5ldGRldi1cXHUwMDNlc3RhdHMudHhfcGFja2V0cysrO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNDU1LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNDYxLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NDYyOnN0YXRpYyB2b2lkIGNhdGNfdHhfdGltZW91dChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCB1bnNpZ25lZCBpbnQgdHhxdWV1ZSlcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTQ2My17XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo0NjQ6XFx0c3RydWN0IGNhdGMgKmNhdGMgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNDY1LVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNDY2LVxcdGRldl93YXJuKFxcdTAwMjZuZXRkZXYtXFx1MDAzZWRldiwgXFxcIlRyYW5zbWl0IHRpbWVkIG91dC5cXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NDY3OlxcdHVzYl91bmxpbmtfdXJiKGNhdGMtXFx1MDAzZXR4X3VyYik7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy00NjgtfVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy00NzMtXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo0NzQ6c3RhdGljIGludCBjYXRjX2N0cmxfbXNnKHN0cnVjdCBjYXRjICpjYXRjLCB1OCBkaXIsIHU4IHJlcXVlc3QsIHUxNiB2YWx1ZSwgdTE2IGluZGV4LCB2b2lkICpidWYsIGludCBsZW4pXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy00NzUte1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NDc2OiAgICAgICAgaW50IHJldHZhbCA9IHVzYl9jb250cm9sX21zZyhjYXRjLVxcdTAwM2V1c2JkZXYsXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo0Nzc6XFx0XFx0ZGlyID8gdXNiX3JjdmN0cmxwaXBlKGNhdGMtXFx1MDAzZXVzYmRldiwgMCkgOiB1c2Jfc25kY3RybHBpcGUoY2F0Yy1cXHUwMDNldXNiZGV2LCAwKSxcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTQ3OC1cXHRcXHQgcmVxdWVzdCwgMHg0MCB8IGRpciwgdmFsdWUsIGluZGV4LCBidWYsIGxlbiwgMTAwMCk7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTQ4MS1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjQ4MjpzdGF0aWMgdm9pZCBjYXRjX2N0cmxfcnVuKHN0cnVjdCBjYXRjICpjYXRjKVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNDgzLXtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjQ4NDpcXHRzdHJ1Y3QgY3RybF9xdWV1ZSAqcSA9IGNhdGMtXFx1MDAzZWN0cmxfcXVldWUgKyBjYXRjLVxcdTAwM2VjdHJsX3RhaWw7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo0ODU6XFx0c3RydWN0IHVzYl9kZXZpY2UgKnVzYmRldiA9IGNhdGMtXFx1MDAzZXVzYmRldjtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjQ4NjpcXHRzdHJ1Y3QgdXJiICp1cmIgPSBjYXRjLVxcdTAwM2VjdHJsX3VyYjtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjQ4NzpcXHRzdHJ1Y3QgdXNiX2N0cmxyZXF1ZXN0ICpkciA9IFxcdTAwMjZjYXRjLVxcdTAwM2VjdHJsX2RyO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNDg4LVxcdGludCBzdGF0dXM7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTQ5Ny1cXHR1cmItXFx1MDAzZXRyYW5zZmVyX2J1ZmZlcl9sZW5ndGggPSBxLVxcdTAwM2VsZW47XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo0OTg6XFx0dXJiLVxcdTAwM2V0cmFuc2Zlcl9idWZmZXIgPSBjYXRjLVxcdTAwM2VjdHJsX2J1ZjtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTQ5OS1cXHR1cmItXFx1MDAzZXNldHVwX3BhY2tldCA9ICh2b2lkICopIGRyO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy01MDItXFx0aWYgKCFxLVxcdTAwM2VkaXIgXFx1MDAyNlxcdTAwMjYgcS1cXHUwMDNlYnVmIFxcdTAwMjZcXHUwMDI2IHEtXFx1MDAzZWxlbilcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjUwMzpcXHRcXHRtZW1jcHkoY2F0Yy1cXHUwMDNlY3RybF9idWYsIHEtXFx1MDAzZWJ1ZiwgcS1cXHUwMDNlbGVuKTtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTUwNC1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjUwNTpcXHRpZiAoKHN0YXR1cyA9IHVzYl9zdWJtaXRfdXJiKGNhdGMtXFx1MDAzZWN0cmxfdXJiLCBHRlBfQVRPTUlDKSkpXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo1MDY6XFx0XFx0ZGV2X2VycihcXHUwMDI2Y2F0Yy1cXHUwMDNldXNiZGV2LVxcdTAwM2VkZXYsIFxcXCJzdWJtaXQoY3RybF91cmIpIHN0YXR1cyAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTUwNy1cXHRcXHRcXHRzdGF0dXMpO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy01MDktXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo1MTA6c3RhdGljIHZvaWQgY2F0Y19jdHJsX2RvbmUoc3RydWN0IHVyYiAqdXJiKVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNTExLXtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjUxMjpcXHRzdHJ1Y3QgY2F0YyAqY2F0YyA9IHVyYi1cXHUwMDNlY29udGV4dDtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTUxMy1cXHRzdHJ1Y3QgY3RybF9xdWV1ZSAqcTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNTIwLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NTIxOlxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZjYXRjLVxcdTAwM2VjdHJsX2xvY2ssIGZsYWdzKTtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTUyMi1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjUyMzpcXHRxID0gY2F0Yy1cXHUwMDNlY3RybF9xdWV1ZSArIGNhdGMtXFx1MDAzZWN0cmxfdGFpbDtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTUyNC1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNTI2LVxcdFxcdGlmIChxLVxcdTAwM2VidWYgXFx1MDAyNlxcdTAwMjYgcS1cXHUwMDNlbGVuKVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NTI3OlxcdFxcdFxcdG1lbWNweShxLVxcdTAwM2VidWYsIGNhdGMtXFx1MDAzZWN0cmxfYnVmLCBxLVxcdTAwM2VsZW4pO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNTI4LVxcdFxcdGVsc2VcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjUyOTpcXHRcXHRcXHRxLVxcdTAwM2VidWYgPSBjYXRjLVxcdTAwM2VjdHJsX2J1ZjtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTUzMC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTUzMi1cXHRpZiAocS1cXHUwMDNlY2FsbGJhY2spXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo1MzM6XFx0XFx0cS1cXHUwMDNlY2FsbGJhY2soY2F0YywgcSk7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy01MzQtXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo1MzU6XFx0Y2F0Yy1cXHUwMDNlY3RybF90YWlsID0gKGNhdGMtXFx1MDAzZWN0cmxfdGFpbCArIDEpIFxcdTAwMjYgKENUUkxfUVVFVUUgLSAxKTtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTUzNi1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjUzNzpcXHRpZiAoY2F0Yy1cXHUwMDNlY3RybF9oZWFkICE9IGNhdGMtXFx1MDAzZWN0cmxfdGFpbClcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjUzODpcXHRcXHRjYXRjX2N0cmxfcnVuKGNhdGMpO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNTM5LVxcdGVsc2VcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjU0MDpcXHRcXHRjbGVhcl9iaXQoQ1RSTF9SVU5OSU5HLCBcXHUwMDI2Y2F0Yy1cXHUwMDNlZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNTQxLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NTQyOlxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNmNhdGMtXFx1MDAzZWN0cmxfbG9jaywgZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNTQzLX1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTU0NC1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjU0NTpzdGF0aWMgaW50IGNhdGNfY3RybF9hc3luYyhzdHJ1Y3QgY2F0YyAqY2F0YywgdTggZGlyLCB1OCByZXF1ZXN0LCB1MTYgdmFsdWUsXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo1NDY6XFx0dTE2IGluZGV4LCB2b2lkICpidWYsIGludCBsZW4sIHZvaWQgKCpjYWxsYmFjaykoc3RydWN0IGNhdGMgKmNhdGMsIHN0cnVjdCBjdHJsX3F1ZXVlICpxKSlcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTU0Ny17XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTU1MS1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjU1MjpcXHRzcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2Y2F0Yy1cXHUwMDNlY3RybF9sb2NrLCBmbGFncyk7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy01NTMtXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo1NTQ6XFx0cSA9IGNhdGMtXFx1MDAzZWN0cmxfcXVldWUgKyBjYXRjLVxcdTAwM2VjdHJsX2hlYWQ7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy01NTUtXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTU2My1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjU2NDpcXHRjYXRjLVxcdTAwM2VjdHJsX2hlYWQgPSAoY2F0Yy1cXHUwMDNlY3RybF9oZWFkICsgMSkgXFx1MDAyNiAoQ1RSTF9RVUVVRSAtIDEpO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNTY1LVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NTY2OlxcdGlmIChjYXRjLVxcdTAwM2VjdHJsX2hlYWQgPT0gY2F0Yy1cXHUwMDNlY3RybF90YWlsKSB7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo1Njc6XFx0XFx0ZGV2X2VycihcXHUwMDI2Y2F0Yy1cXHUwMDNldXNiZGV2LVxcdTAwM2VkZXYsIFxcXCJjdHJsIHF1ZXVlIGZ1bGxcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NTY4OlxcdFxcdGNhdGMtXFx1MDAzZWN0cmxfdGFpbCA9IChjYXRjLVxcdTAwM2VjdHJsX3RhaWwgKyAxKSBcXHUwMDI2IChDVFJMX1FVRVVFIC0gMSk7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy01NjktXFx0XFx0cmV0dmFsID0gLTE7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTU3MS1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjU3MjpcXHRpZiAoIXRlc3RfYW5kX3NldF9iaXQoQ1RSTF9SVU5OSU5HLCBcXHUwMDI2Y2F0Yy1cXHUwMDNlZmxhZ3MpKVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NTczOlxcdFxcdGNhdGNfY3RybF9ydW4oY2F0Yyk7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy01NzQtXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo1NzU6XFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2Y2F0Yy1cXHUwMDNlY3RybF9sb2NrLCBmbGFncyk7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy01NzYtXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTU4My1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjU4NDpzdGF0aWMgdm9pZCBjYXRjX3N0YXRzX2RvbmUoc3RydWN0IGNhdGMgKmNhdGMsIHN0cnVjdCBjdHJsX3F1ZXVlICpxKVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNTg1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNTg4LVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NTg5OlxcdGNhdGMtXFx1MDAzZXN0YXRzX2J1ZltpbmRleF0gPSAqKChjaGFyICopcS1cXHUwMDNlYnVmKTtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTU5MC1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNTkzLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NTk0OlxcdGRhdGEgPSAoKHUxNiljYXRjLVxcdTAwM2VzdGF0c19idWZbaW5kZXhdIFxcdTAwM2NcXHUwMDNjIDgpIHwgY2F0Yy1cXHUwMDNlc3RhdHNfYnVmW2luZGV4ICsgMV07XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo1OTU6XFx0bGFzdCA9IGNhdGMtXFx1MDAzZXN0YXRzX3ZhbHNbaW5kZXggXFx1MDAzZVxcdTAwM2UgMV07XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy01OTYtXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTU5OS1cXHRcXHRjYXNlIFR4TXVsdGlDb2xsOlxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NjAwOlxcdFxcdFxcdGNhdGMtXFx1MDAzZW5ldGRldi1cXHUwMDNlc3RhdHMuY29sbGlzaW9ucyArPSBkYXRhIC0gbGFzdDtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTYwMS1cXHRcXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTYwMi1cXHRcXHRjYXNlIFR4RXhjZXNzQ29sbDpcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjYwMzpcXHRcXHRcXHRjYXRjLVxcdTAwM2VuZXRkZXYtXFx1MDAzZXN0YXRzLnR4X2Fib3J0ZWRfZXJyb3JzICs9IGRhdGEgLSBsYXN0O1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NjA0OlxcdFxcdFxcdGNhdGMtXFx1MDAzZW5ldGRldi1cXHUwMDNlc3RhdHMudHhfZXJyb3JzICs9IGRhdGEgLSBsYXN0O1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNjA1LVxcdFxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNjA2LVxcdFxcdGNhc2UgUnhGcmFtRXJyOlxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NjA3OlxcdFxcdFxcdGNhdGMtXFx1MDAzZW5ldGRldi1cXHUwMDNlc3RhdHMucnhfZnJhbWVfZXJyb3JzICs9IGRhdGEgLSBsYXN0O1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NjA4OlxcdFxcdFxcdGNhdGMtXFx1MDAzZW5ldGRldi1cXHUwMDNlc3RhdHMucnhfZXJyb3JzICs9IGRhdGEgLSBsYXN0O1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNjA5LVxcdFxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02MTEtXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo2MTI6XFx0Y2F0Yy1cXHUwMDNlc3RhdHNfdmFsc1tpbmRleCBcXHUwMDNlXFx1MDAzZSAxXSA9IGRhdGE7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02MTMtfVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNjE0LVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NjE1OnN0YXRpYyB2b2lkIGNhdGNfc3RhdHNfdGltZXIoc3RydWN0IHRpbWVyX2xpc3QgKnQpXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02MTYte1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NjE3OlxcdHN0cnVjdCBjYXRjICpjYXRjID0gdGltZXJfY29udGFpbmVyX29mKGNhdGMsIHQsIHRpbWVyKTtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTYxOC1cXHRpbnQgaTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNjIwLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyA4OyBpKyspXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo2MjE6XFx0XFx0Y2F0Y19nZXRfcmVnX2FzeW5jKGNhdGMsIEV0aFN0YXRzICsgNyAtIGksIGNhdGNfc3RhdHNfZG9uZSk7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02MjItXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo2MjM6XFx0bW9kX3RpbWVyKFxcdTAwMjZjYXRjLVxcdTAwM2V0aW1lciwgamlmZmllcyArIFNUQVRTX1VQREFURSk7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02MjQtfVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02MjktXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo2MzA6c3RhdGljIHZvaWQgY2F0Y19tdWx0aWNhc3QoY29uc3QgdW5zaWduZWQgY2hhciAqYWRkciwgdTggKm11bHRpY2FzdClcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTYzMS17XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTYzNy1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjYzODpzdGF0aWMgdm9pZCBjYXRjX3NldF9tdWx0aWNhc3RfbGlzdChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNjM5LXtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjY0MDpcXHRzdHJ1Y3QgY2F0YyAqY2F0YyA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02NDEtXFx0c3RydWN0IG5ldGRldl9od19hZGRyICpoYTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNjQ1LVxcdGV0aF9icm9hZGNhc3RfYWRkcihicm9hZGNhc3QpO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NjQ2OlxcdG1lbXNldChjYXRjLVxcdTAwM2VtdWx0aWNhc3QsIDAsIDY0KTtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTY0Ny1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjY0ODpcXHRjYXRjX211bHRpY2FzdChicm9hZGNhc3QsIGNhdGMtXFx1MDAzZW11bHRpY2FzdCk7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo2NDk6XFx0Y2F0Y19tdWx0aWNhc3QobmV0ZGV2LVxcdTAwM2VkZXZfYWRkciwgY2F0Yy1cXHUwMDNlbXVsdGljYXN0KTtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTY1MC1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTY1MS1cXHRpZiAobmV0ZGV2LVxcdTAwM2VmbGFncyBcXHUwMDI2IElGRl9QUk9NSVNDKSB7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo2NTI6XFx0XFx0bWVtc2V0KGNhdGMtXFx1MDAzZW11bHRpY2FzdCwgMHhmZiwgNjQpO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NjUzOlxcdFxcdHJ4IHw9ICghY2F0Yy1cXHUwMDNlaXNfZjV1MDExKSA/IFJ4UHJvbWlzYyA6IEFsdFJ4UHJvbWlzYztcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTY1NC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTY1Ni1cXHRpZiAobmV0ZGV2LVxcdTAwM2VmbGFncyBcXHUwMDI2IElGRl9BTExNVUxUSSkge1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NjU3OlxcdFxcdG1lbXNldChjYXRjLVxcdTAwM2VtdWx0aWNhc3QsIDB4ZmYsIDY0KTtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTY1OC1cXHR9IGVsc2Uge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02NjAtXFx0XFx0XFx0dTMyIGNyYyA9IGV0aGVyX2NyY19sZSg2LCBoYS1cXHUwMDNlYWRkcik7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo2NjE6XFx0XFx0XFx0aWYgKCFjYXRjLVxcdTAwM2Vpc19mNXUwMTEpIHtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjY2MjpcXHRcXHRcXHRcXHRjYXRjLVxcdTAwM2VtdWx0aWNhc3RbKGNyYyBcXHUwMDNlXFx1MDAzZSAzKSBcXHUwMDI2IDB4M2ZdIHw9IDEgXFx1MDAzY1xcdTAwM2MgKGNyYyBcXHUwMDI2IDcpO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNjYzLVxcdFxcdFxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo2NjQ6XFx0XFx0XFx0XFx0Y2F0Yy1cXHUwMDNlbXVsdGljYXN0WzctKGNyYyBcXHUwMDNlXFx1MDAzZSAyOSldIHw9IDEgXFx1MDAzY1xcdTAwM2MgKChjcmMgXFx1MDAzZVxcdTAwM2UgMjYpIFxcdTAwMjYgNyk7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02NjUtXFx0XFx0XFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02NjctXFx0fVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NjY4OlxcdGlmICghY2F0Yy1cXHUwMDNlaXNfZjV1MDExKSB7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo2Njk6XFx0XFx0Y2F0Y19zZXRfcmVnX2FzeW5jKGNhdGMsIFJ4VW5pdCwgcngpO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NjcwOlxcdFxcdGNhdGNfd3JpdGVfbWVtX2FzeW5jKGNhdGMsIDB4ZmE4MCwgY2F0Yy1cXHUwMDNlbXVsdGljYXN0LCA2NCk7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02NzEtXFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjY3MjpcXHRcXHRmNXUwMTFfbWNoYXNoX2FzeW5jKGNhdGMsIGNhdGMtXFx1MDAzZW11bHRpY2FzdCk7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo2NzM6XFx0XFx0aWYgKGNhdGMtXFx1MDAzZXJ4bW9kZVswXSAhPSByeCkge1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6Njc0OlxcdFxcdFxcdGNhdGMtXFx1MDAzZXJ4bW9kZVswXSA9IHJ4O1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6Njc1OlxcdFxcdFxcdG5ldGRldl9kYmcoY2F0Yy1cXHUwMDNlbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNjc2LVxcdFxcdFxcdFxcdCAgIFxcXCJTZXR0aW5nIFJYIG1vZGUgdG8gJTIuMlggJTIuMlhcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo2Nzc6XFx0XFx0XFx0XFx0ICAgY2F0Yy1cXHUwMDNlcnhtb2RlWzBdLCBjYXRjLVxcdTAwM2VyeG1vZGVbMV0pO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6Njc4OlxcdFxcdFxcdGY1dTAxMV9yeG1vZGVfYXN5bmMoY2F0YywgY2F0Yy1cXHUwMDNlcnhtb2RlKTtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTY3OS1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTY4Mi1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjY4MzpzdGF0aWMgdm9pZCBjYXRjX2dldF9kcnZpbmZvKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02ODQtXFx0XFx0XFx0ICAgICBzdHJ1Y3QgZXRodG9vbF9kcnZpbmZvICppbmZvKVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNjg1LXtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjY4NjpcXHRzdHJ1Y3QgY2F0YyAqY2F0YyA9IG5ldGRldl9wcml2KGRldik7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02ODctXFx0c3Ryc2NweShpbmZvLVxcdTAwM2Vkcml2ZXIsIGRyaXZlcl9uYW1lLCBzaXplb2YoaW5mby1cXHUwMDNlZHJpdmVyKSk7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo2ODg6XFx0dXNiX21ha2VfcGF0aChjYXRjLVxcdTAwM2V1c2JkZXYsIGluZm8tXFx1MDAzZWJ1c19pbmZvLCBzaXplb2YoaW5mby1cXHUwMDNlYnVzX2luZm8pKTtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTY4OS19XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02OTAtXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo2OTE6c3RhdGljIGludCBjYXRjX2dldF9saW5rX2tzZXR0aW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNjkyLVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBldGh0b29sX2xpbmtfa3NldHRpbmdzICpjbWQpXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy02OTMte1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6Njk0OlxcdHN0cnVjdCBjYXRjICpjYXRjID0gbmV0ZGV2X3ByaXYoZGV2KTtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjY5NTpcXHRpZiAoIWNhdGMtXFx1MDAzZWlzX2Y1dTAxMSlcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTY5Ni1cXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jPTcxNT1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIG9wcyA9IHtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjcxNjpcXHQuZ2V0X2RydmluZm8gPSBjYXRjX2dldF9kcnZpbmZvLFxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNzE3LVxcdC5nZXRfbGluayA9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo3MTg6XFx0LmdldF9saW5rX2tzZXR0aW5ncyA9IGNhdGNfZ2V0X2xpbmtfa3NldHRpbmdzLFxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNzE5LX07XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTcyNC1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjcyNTpzdGF0aWMgaW50IGNhdGNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNzI2LXtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjcyNzpcXHRzdHJ1Y3QgY2F0YyAqY2F0YyA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy03MjgtXFx0aW50IHN0YXR1cztcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTcyOS1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjczMDpcXHRjYXRjLVxcdTAwM2VpcnFfdXJiLVxcdTAwM2VkZXYgPSBjYXRjLVxcdTAwM2V1c2JkZXY7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo3MzE6XFx0aWYgKChzdGF0dXMgPSB1c2Jfc3VibWl0X3VyYihjYXRjLVxcdTAwM2VpcnFfdXJiLCBHRlBfS0VSTkVMKSkgXFx1MDAzYyAwKSB7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo3MzI6XFx0XFx0ZGV2X2VycihcXHUwMDI2Y2F0Yy1cXHUwMDNldXNiZGV2LVxcdTAwM2VkZXYsIFxcXCJzdWJtaXQoaXJxX3VyYikgc3RhdHVzICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNzMzLVxcdFxcdFxcdHN0YXR1cyk7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTczOC1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjczOTpcXHRpZiAoIWNhdGMtXFx1MDAzZWlzX2Y1dTAxMSlcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjc0MDpcXHRcXHRtb2RfdGltZXIoXFx1MDAyNmNhdGMtXFx1MDAzZXRpbWVyLCBqaWZmaWVzICsgU1RBVFNfVVBEQVRFKTtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTc0MS1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNzQ0LVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NzQ1OnN0YXRpYyBpbnQgY2F0Y19zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy03NDYte1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NzQ3OlxcdHN0cnVjdCBjYXRjICpjYXRjID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTc0OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNzUwLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NzUxOlxcdGlmICghY2F0Yy1cXHUwMDNlaXNfZjV1MDExKVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NzUyOlxcdFxcdHRpbWVyX2RlbGV0ZV9zeW5jKFxcdTAwMjZjYXRjLVxcdTAwM2V0aW1lcik7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy03NTMtXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo3NTQ6XFx0dXNiX2tpbGxfdXJiKGNhdGMtXFx1MDAzZXJ4X3VyYik7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo3NTU6XFx0dXNiX2tpbGxfdXJiKGNhdGMtXFx1MDAzZXR4X3VyYik7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo3NTY6XFx0dXNiX2tpbGxfdXJiKGNhdGMtXFx1MDAzZWlycV91cmIpO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6NzU3OlxcdHVzYl9raWxsX3VyYihjYXRjLVxcdTAwM2VjdHJsX3VyYik7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy03NTgtXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTc2MS1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjc2MjpzdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGNhdGNfbmV0ZGV2X29wcyA9IHtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjc2MzpcXHQubmRvX29wZW5cXHRcXHQ9IGNhdGNfb3BlbixcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjc2NDpcXHQubmRvX3N0b3BcXHRcXHQ9IGNhdGNfc3RvcCxcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjc2NTpcXHQubmRvX3N0YXJ0X3htaXRcXHRcXHQ9IGNhdGNfc3RhcnRfeG1pdCxcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTc2Ni1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjc2NzpcXHQubmRvX3R4X3RpbWVvdXRcXHRcXHQ9IGNhdGNfdHhfdGltZW91dCxcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjc2ODpcXHQubmRvX3NldF9yeF9tb2RlXFx0PSBjYXRjX3NldF9tdWx0aWNhc3RfbGlzdCxcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTc2OS1cXHQubmRvX3NldF9tYWNfYWRkcmVzcyBcXHQ9IGV0aF9tYWNfYWRkcixcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNzc2LVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6Nzc3OnN0YXRpYyBpbnQgY2F0Y19wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNzc4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtNzgxLVxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo3ODI6XFx0c3RydWN0IGNhdGMgKmNhdGM7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy03ODMtXFx0dTggYnJvYWRjYXN0W0VUSF9BTEVOXTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtODEyLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6ODEzOlxcdG5ldGRldiA9IGFsbG9jX2V0aGVyZGV2KHNpemVvZihzdHJ1Y3QgY2F0YykpO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtODE0LVxcdGlmICghbmV0ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy04MTYtXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo4MTc6XFx0Y2F0YyA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy04MTgtXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo4MTk6XFx0bmV0ZGV2LVxcdTAwM2VuZXRkZXZfb3BzID0gXFx1MDAyNmNhdGNfbmV0ZGV2X29wcztcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTgyMC1cXHRuZXRkZXYtXFx1MDAzZXdhdGNoZG9nX3RpbWVvID0gVFhfVElNRU9VVDtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtODIyLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6ODIzOlxcdGNhdGMtXFx1MDAzZXVzYmRldiA9IHVzYmRldjtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjgyNDpcXHRjYXRjLVxcdTAwM2VuZXRkZXYgPSBuZXRkZXY7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy04MjUtXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo4MjY6XFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNmNhdGMtXFx1MDAzZXR4X2xvY2spO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6ODI3OlxcdHNwaW5fbG9ja19pbml0KFxcdTAwMjZjYXRjLVxcdTAwM2VjdHJsX2xvY2spO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtODI4LVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6ODI5OlxcdHRpbWVyX3NldHVwKFxcdTAwMjZjYXRjLVxcdTAwM2V0aW1lciwgY2F0Y19zdGF0c190aW1lciwgMCk7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy04MzAtXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo4MzE6XFx0Y2F0Yy1cXHUwMDNlY3RybF91cmIgPSB1c2JfYWxsb2NfdXJiKDAsIEdGUF9LRVJORUwpO1xcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6ODMyOlxcdGNhdGMtXFx1MDAzZXR4X3VyYiA9IHVzYl9hbGxvY191cmIoMCwgR0ZQX0tFUk5FTCk7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo4MzM6XFx0Y2F0Yy1cXHUwMDNlcnhfdXJiID0gdXNiX2FsbG9jX3VyYigwLCBHRlBfS0VSTkVMKTtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjgzNDpcXHRjYXRjLVxcdTAwM2VpcnFfdXJiID0gdXNiX2FsbG9jX3VyYigwLCBHRlBfS0VSTkVMKTtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjgzNTpcXHRpZiAoKCFjYXRjLVxcdTAwM2VjdHJsX3VyYikgfHwgKCFjYXRjLVxcdTAwM2V0eF91cmIpIHx8XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYzo4MzY6XFx0ICAgICghY2F0Yy1cXHUwMDNlcnhfdXJiKSB8fCAoIWNhdGMtXFx1MDAzZWlycV91cmIpKSB7XFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy04MzctXFx0XFx0ZGV2X2VycihcXHUwMDI2aW50Zi1cXHUwMDNlZGV2LCBcXFwiTm8gZnJlZSB1cmJzIGF2YWlsYWJsZS5cXFxcblxcXCIpO1xcbi0tXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDExOjI2OjEyLjQ4MjMwMDcwMloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI2MjA1MDkzODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgaW1tZWRpYXRlIHRob3VnaHQgcHJvY2VzcywgZm9jdXNpbmcgb24gd2hhdCBJJ2QgYmUgZG9pbmcgYW5kIHdoeSwgZ2l2ZW4gdGhlIGNvbnRleHQ6XG5cbioqSW52ZXN0aWdhdGluZyBVU0JfQ0FUQyBpbiB0aGUgS2VybmVsIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyB3ZSdyZSBsb29raW5nIGF0IHNvbWV0aGluZyByZWxhdGVkIHRvIGBVU0JfQ0FUQ2AuIE15IGluaXRpYWwgcmVhY3Rpb24gaXMgdG8gaGVhZCBzdHJhaWdodCB0byB0aGUgc291cmNlLCB0aGUgYEtjb25maWdgIGZpbGUgZm9yIFVTQiBuZXR3b3JraW5nIGRyaXZlcnMsIHNwZWNpZmljYWxseSBgZHJpdmVycy9uZXQvdXNiL0tjb25maWdgLiBUaGlzIGlzIHdoZXJlIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoYXQgYXJlYSBvZiB0aGUga2VybmVsIHdvdWxkIGJlIGRlZmluZWQuIEknbSBnb2luZyB0byBsb29rIGZvciB0aGUgZGVmaW5pdGlvbiBvZiBgVVNCX0NBVENgIGl0c2VsZiwgd2hpY2ggbGlrZWx5IG1lYW5zIGNoZWNraW5nIHRoZSBzeW1ib2wgbmFtZS4gSSdsbCBiZSBsb29raW5nIGZvciBpdHMgZGVwZW5kZW5jaWVzLCB0aGUgaGVscCB0ZXh0IGFzc29jaWF0ZWQgd2l0aCBpdCwgYW5kIHBvc3NpYmx5IGFueSBhc3NvY2lhdGVkIGRlZmF1bHQgc2V0dGluZ3MuIFRoZSBgS2NvbmZpZ2AgZmlsZSBpcyB0aGUgZ28tdG8gcGxhY2UgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoYXQgb3B0aW9uIGZpdHMgaW50byB0aGUgbGFyZ2VyIHBpY3R1cmUgb2YgVVNCIG5ldHdvcmtpbmcgc3VwcG9ydCBpbiB0aGUga2VybmVsLiBJIGV4cGVjdCBpdCB0byBnaXZlIG1lIGNsdWVzIGFib3V0IHdoYXQgQ0FUQyBpcywgd2hhdCBpdHMgcG90ZW50aWFsIGhhcmR3YXJlIHJlcXVpcmVtZW50cyBtaWdodCBiZSwgaG93IGl0IGludGVyYWN0cyB3aXRoIG90aGVyIFVTQiBuZXR3b3JraW5nIGZlYXR1cmVzLCBhbmQgd2hhdCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBpbXBsaWNhdGlvbnMgb2YgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIGl0IG1pZ2h0IGJlLiBUaGlzIGluZm9ybWF0aW9uIGlzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIHJvbGUgYW5kIHJlbGV2YW5jZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc0OTgsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QxMToyNjoxNS4xMDI4MTMzODFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcxOTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3VzYi9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIFVTQiBOZXR3b3JrIGRldmljZXMgY29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0Y29tbWVudCBcXFwiSG9zdC1zaWRlIFVTQiBzdXBwb3J0IGlzIG5lZWRlZCBmb3IgVVNCIE5ldHdvcmsgQWRhcHRlciBzdXBwb3J0XFxcIlxcbiAgIDY6XFx0XFx0ZGVwZW5kcyBvbiAhVVNCIFxcdTAwMjZcXHUwMDI2IE5FVFxcbiAgIDc6XFx0XFxuICAgODpcXHRtZW51Y29uZmlnIFVTQl9ORVRfRFJJVkVSU1xcbiAgIDk6XFx0XFx0dHJpc3RhdGUgXFxcIlVTQiBOZXR3b3JrIEFkYXB0ZXJzXFxcIlxcbiAgMTA6XFx0XFx0ZGVmYXVsdCBVU0IgaWYgVVNCXFxuICAxMTpcXHRcXHRkZXBlbmRzIG9uIFVTQiBcXHUwMDI2XFx1MDAyNiBORVRcXG4gIDEyOlxcdFxcbiAgMTM6XFx0aWYgVVNCX05FVF9EUklWRVJTXFxuICAxNDpcXHRcXG4gIDE1OlxcdGNvbmZpZyBVU0JfQ0FUQ1xcbiAgMTY6XFx0XFx0dHJpc3RhdGUgXFxcIlVTQiBDQVRDIE5ldE1hdGUtYmFzZWQgRXRoZXJuZXQgZGV2aWNlIHN1cHBvcnRcXFwiXFxuICAxNzpcXHRcXHRzZWxlY3QgQ1JDMzJcXG4gIDE4OlxcdFxcdGhlbHBcXG4gIDE5OlxcdFxcdCAgU2F5IFkgaWYgeW91IHdhbnQgdG8gdXNlIG9uZSBvZiB0aGUgZm9sbG93aW5nIDEwTWJwcyBVU0IgRXRoZXJuZXRcXG4gIDIwOlxcdFxcdCAgZGV2aWNlIGJhc2VkIG9uIHRoZSBFTDEyMTBBIGNoaXAuIFN1cHBvcnRlZCBkZXZpY2VzIGFyZTpcXG4gIDIxOlxcdFxcdCAgQmVsa2luIEY1VTAxMVxcbiAgMjI6XFx0XFx0ICBCZWxraW4gRjVVMTExXFxuICAyMzpcXHRcXHQgIENBVEMgTmV0TWF0ZVxcbiAgMjQ6XFx0XFx0ICBDQVRDIE5ldE1hdGUgSUlcXG4gIDI1OlxcdFxcdCAgc21hcnRCcmlkZ2VzIHNtYXJ0TklDXFxuICAyNjpcXHRcXG4gIDI3OlxcdFxcdCAgVGhpcyBkcml2ZXIgbWFrZXMgdGhlIGFkYXB0ZXIgYXBwZWFyIGFzIGEgbm9ybWFsIEV0aGVybmV0IGludGVyZmFjZSxcXG4gIDI4OlxcdFxcdCAgdHlwaWNhbGx5IG9uIGV0aDAsIGlmIGl0IGlzIHRoZSBvbmx5IGV0aGVybmV0IGRldmljZSwgb3IgcGVyaGFwcyBvblxcbiAgMjk6XFx0XFx0ICBldGgxLCBpZiB5b3UgaGF2ZSBhIFBDSSBvciBJU0EgZXRoZXJuZXQgY2FyZCBpbnN0YWxsZWQuXFxuICAzMDpcXHRcXG4gIDMxOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXFxuICAzMjpcXHRcXHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBjYXRjLlxcbiAgMzM6XFx0XFxuICAzNDpcXHRjb25maWcgVVNCX0tBV0VUSFxcbiAgMzU6XFx0XFx0dHJpc3RhdGUgXFxcIlVTQiBLTFNJIEtMNVVTQjEwMS1iYXNlZCBldGhlcm5ldCBkZXZpY2Ugc3VwcG9ydFxcXCJcXG4gIDM2OlxcdFxcdGhlbHBcXG4gIDM3OlxcdFxcdCAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byB1c2Ugb25lIG9mIHRoZSBmb2xsb3dpbmcgMTBNYnBzIG9ubHlcXG4gIDM4OlxcdFxcdCAgVVNCIEV0aGVybmV0IGFkYXB0ZXJzIGJhc2VkIG9uIHRoZSBLTFNJIEtMNUtVU0IxMDFCIGNoaXBzZXQ6XFxuICAzOTpcXHRcXHQgIDNDb20gM0MxOTI1MFxcbiAgNDA6XFx0XFx0ICBBRFMgVVNCLTEwQlRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTE6MjY6MTUuMTAyOTg5NjUxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ5NDQ3NTMwNjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUmVjZW50IFBhdGNoIGluIHRoZSBDQVRDIFVTQiBEcml2ZXIqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCdzIGJlZW4gYXBwbGllZCB0byBgZHJpdmVycy9uZXQvdXNiL2NhdGMuY2AsIHNwZWNpZmljYWxseSB0aGUgYGNhdGNfcnhfZG9uZWAgZnVuY3Rpb24uIEkgc2VlIHRoZXkndmUgYWRkZWQgYSBjaGVjayB0byBoYW5kbGUgcG90ZW50aWFsIGlzc3VlcyB3aXRoIHBhY2tldCBsZW5ndGhzIHdoZW4gZGVhbGluZyB3aXRoIHRoaXMgVVNCIG5ldHdvcmsgaW50ZXJmYWNlLlxuXG5Fc3NlbnRpYWxseSwgdGhleSdyZSBub3cgY2FsY3VsYXRpbmcgdGhlIGByZW1haW5pbmdgIGJ5dGVzIGluIHRoZSB0cmFuc2ZlciBidWZmZXIgYWZ0ZXIgY29uc2lkZXJpbmcgdGhlIGBwa3Rfb2Zmc2V0YC4gIFRoZSBvcmlnaW5hbCBjaGVjaywgYGlmIChwa3RfbGVuIFx1MDAzZSB1cmItXHUwMDNlYWN0dWFsX2xlbmd0aClgLCBoYWQgYSBwb3RlbnRpYWwgZmxhdy4gIFRoaXMgbmV3IGNvZGUgYWRkcmVzc2VzIGEgbW9yZSBwcmVjaXNlIHZhbGlkYXRpb246IGBpZiAocGt0X2xlbiArIHBrdF9vZmZzZXQgXHUwMDNlIHJlbWFpbmluZylgLiBJZiB0aGUgcmVwb3J0ZWQgcGFja2V0IGxlbmd0aCwgcGx1cyB0aGUgb2Zmc2V0IHdpdGhpbiB0aGUgYnVmZmVyLCBleGNlZWRzIHRoZSBhdmFpbGFibGUgZGF0YSwgdGhleSdyZSBpbmNyZW1lbnRpbmcgdGhlIGByeF9sZW5ndGhfZXJyb3JzYCBhbmQgYHJ4X2Vycm9yc2AgY291bnRlcnMsIGFuZCBicmVha2luZyBvdXQgb2YgdGhlIHByb2Nlc3NpbmcgbG9vcC4gVGhpcyBpcyBzbWFydDsgaXQgYXZvaWRzIHBvdGVudGlhbGx5IHJlYWRpbmcgcGFzdCB0aGUgZW5kIG9mIHRoZSBidWZmZXIsIHdoaWNoIGNvdWxkIGxlYWQgdG8gYWxsIHNvcnRzIG9mIG5hc3R5IGNvbnNlcXVlbmNlcy5cblxuTXkgbmV4dCBsaW5lIG9mIHRob3VnaHQgaXMgYWx3YXlzIGFib3V0IHJlYWNoYWJpbGl0eSBhbmQgZnV6emluZy4gIENhbiB3ZSB0cmlnZ2VyIHRoaXMgY29kZSB3aXRoIGZ1enppbmc/IERlZmluaXRlbHkuICBVU0IgZHJpdmVycywgbGlrZSB0aGlzIG9uZSwgYXJlIHByaW1lIHRhcmdldHMgZm9yIFVTQiBmdXp6aW5nLCBhbmQgSSBrbm93IFN5emthbGxlciBpcyBhIGZhbnRhc3RpYyB0b29sIGZvciB0aGlzLiAgSXQgY2FuIGVtdWxhdGUgVVNCIGRldmljZXMsIGFuZCBiYXNlZCBvbiB0aGUgZGV2aWNlIElEcyBkZWZpbmVkIHdpdGhpbiB0aGUgYGNhdGNfaWRfdGFibGVgLCBpdCBjYW4gYmluZCB0aGUgYGNhdGNgIGRyaXZlciBhbmQgc2VuZCB0aGUgbmVjZXNzYXJ5IHBhY2tldHMuICBUaGlzIHdvdWxkIGludm9rZSBgY2F0Y19yeF9kb25lYCwgbWFraW5nIHRoZSBwYXRjaGVkIGNvZGUgcGF0aCBkaXJlY3RseSBhY2Nlc3NpYmxlLlxuXG5TbywgaW4gdGVybXMgb2YgY29uZmlndXJhdGlvbiwgd2UncmUgbG9va2luZyBhdCBgVVNCX0NBVENgLCBgVVNCX05FVF9EUklWRVJTYCwgYFVTQmAsIGFuZCBgTkVUYC4gVGhvc2UgYXJlIHRoZSBjb3JlIGNvbXBvbmVudHMgbmVlZGVkIHRvIGJ1aWxkIHRoaXMgZHJpdmVyIGFuZCBtYWtlIGl0IGZ1bmN0aW9uYWwuIEknbSBmb2N1c2luZyBvbiBgY2F0Y19yeF9kb25lYCBhcyB0aGUga2V5IHN5bWJvbC4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBsb2dpYyBvZiB0aGUgcGF0Y2ggbGl2ZXMuXG5cbkkgbmVlZCB0byBjb25maXJtIGlmIHRoZXJlIGFyZSBvdGhlciBmdW5jdGlvbnMgaW4gYGNhdGMuY2AgdGhhdCBjYWxsIGBjYXRjX3J4X2RvbmVgIG9yIGFyZSBwcm9iZWQgYW5kIGFsc28gd29ydGggcmV2aWV3aW5nLiBJJ2xsIG5lZWQgdG8gZG8gYSB0aG9yb3VnaCBpbnNwZWN0aW9uIG9mIHRoZSBgY2F0Yy5jYCBzb3VyY2UgY29kZSwgbG9va2luZyBmb3Igb3RoZXIgZnVuY3Rpb25zIGFuZCBzeW1ib2xzLiBHb3R0YSBtYWtlIHN1cmUgd2UndmUgZ290IHRoZSBmdWxsIHBpY3R1cmUgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgzNTYsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MTMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QxMToyNjoyMC4wNDc3NDc2MTVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQwMjM1NTUyMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjYXRjX3J4X2RvbmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdXNiL2NhdGMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC91c2IvY2F0Yy5jPTE1Mz1zdHJ1Y3QgY2F0YyB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTIxNS1cXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jOjIxNjpzdGF0aWMgdm9pZCBjYXRjX3J4X2RvbmUoc3RydWN0IHVyYiAqdXJiKVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmMtMjE3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM9Nzc3PXN0YXRpYyBpbnQgY2F0Y19wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NhdGMuYy04NjAtXFx0dXNiX2ZpbGxfYnVsa191cmIoY2F0Yy1cXHUwMDNlcnhfdXJiLCB1c2JkZXYsIHVzYl9yY3ZidWxrcGlwZSh1c2JkZXYsIENBVENfVVNCX0VQX0JVTEspLFxcbmRyaXZlcnMvbmV0L3VzYi9jYXRjLmM6ODYxOlxcdFxcdFxcdCAgY2F0Yy1cXHUwMDNlcnhfYnVmLCBwa3RzeiwgY2F0Y19yeF9kb25lLCBjYXRjKTtcXG5kcml2ZXJzL25ldC91c2IvY2F0Yy5jLTg2Mi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTE6MjY6MjAuNDUwMTExMjA3WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU3NDczNTUwMTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIGBjYXRjX3J4X2RvbmVgIEZ1bmN0aW9uIGFuZCBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gRmlyc3QsIEkgbmVlZCB0byBjb25maXJtIHNvbWV0aGluZyBmdW5kYW1lbnRhbDogaXMgYGNhdGNfcnhfZG9uZWAganVzdCBhIHN0YXRpYyBmdW5jdGlvbiwgb3IgZG9lcyBpdCBoYXZlIGEgc3ltYm9sIEkgY2FuIGxldmVyYWdlPyBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQsIHdoaWxlIHN0YXRpYyBmdW5jdGlvbnMgKndpdGhpbiogYSBDIGZpbGUgZG8gaGF2ZSBzeW1ib2xzIGluIGB2bWxpbnV4YCwgdW5saWtlIHN0YXRpYyBpbmxpbmVzIHdpdGhpbiBoZWFkZXJzLCBJIG5lZWQgdG8gYmUgY2VydGFpbi4gU3BlY2lmaWNhbGx5LCB0aGlzIGBjYXRjX3J4X2RvbmVgIGZ1bmN0aW9uIGlzIHRoYXQgVVJCIGNvbXBsZXRpb24gaGFuZGxlciBmb3IgdGhlIFJYIGJ1bGsgVVJCLCBzbyBpdCdzIGNyaXRpY2FsIHRvIHVuZGVyc3RhbmQgaXRzIHZpc2liaWxpdHkgYW5kIGFueSBwb3RlbnRpYWwgc2NvcGUgZm9yIGludGVyYWN0aW9uLlxuXG5BbHJpZ2h0LCBzbyBgY2F0Y19yeF9kb25lYCBpcyB0aGUgcHJpbWFyeSBmb2N1cywgdGhlIG9uZSB0aGF0J3MgYmVlbiBwYXRjaGVkLiBIb3dldmVyLCB3aGlsZSBJJ20gaGVyZSwgSSB3YW50IHRvIHRha2UgYSBxdWljayBsb29rIGF0IG90aGVyIHBvdGVudGlhbGx5IHJlbGV2YW50IGZ1bmN0aW9ucyBpbiBgY2F0Yy5jYC4gSSBleHBlY3QgdG8gc2VlIHRoZSB1c3VhbCBzdXNwZWN0cyBsaWtlIGBjYXRjX3Byb2JlYCBhbG9uZ3NpZGUgYGNhdGNfcnhfZG9uZWAuIEJ1dCwgYWdhaW4sIG15IHBhdGNoLWFuYWx5c2lzIGxlbnMgaXMgZml4ZWQgb24gYGNhdGNfcnhfZG9uZWAuXG5cbk5vdywgdGhlIGNydWNpYWwgcGFydDogS2NvbmZpZyBkZXBlbmRlbmNpZXMuIFdoYXQgY29uZmlndXJhdGlvbnMgYXJlICpyZXF1aXJlZCogZm9yIHRoaXMgdG8gZXZlbiBjb21waWxlLCBtdWNoIGxlc3MgZnVuY3Rpb24gY29ycmVjdGx5PyBJbiBgZHJpdmVycy9uZXQvdXNiL0tjb25maWdgLCBJIGNhbiBzZWUgYSBjb3VwbGUgb2YgdGhpbmdzLCBhbmQgSSBoYXZlIHRvIG1ha2Ugc3VyZSB0aGV5IGFyZSBpbmNsdWRlZC5cblxuSSBjYW4gc2VlIHRoYXQgYFVTQl9ORVRfRFJJVkVSU2AgZGVwZW5kcyBvbiBgVVNCIFx1MDAyNlx1MDAyNiBORVRgLiBNYWtlcyBzZW5zZS4gVGhlbiBgVVNCX0NBVENgIGlzIGRlZmluZWQgYXMgYSB0cmlzdGF0ZSBvcHRpb24sIGVzc2VudGlhbGx5IFwiVVNCIENBVEMgTmV0TWF0ZS1iYXNlZCBFdGhlcm5ldCBkZXZpY2Ugc3VwcG9ydFwiLiBUaGUgYENSQzMyYCBrY29uZmlnIGFsc28gcmVxdWlyZXMgdG8gYmUgc2VsZWN0ZWQuIEltcG9ydGFudGx5LCBgVVNCX0NBVENgIGRlcGVuZHMgb24gYFVTQl9ORVRfRFJJVkVSU2AuXG5cblNvLCB0byBzdW1tYXJpemUsIHRoZSBjb25maWdzIG5lZWRlZCBhcmU6IGBVU0JfQ0FUQ2AsIGBVU0JfTkVUX0RSSVZFUlNgLCBgVVNCYCwgYW5kIGBORVRgLiBJJ2xsIGRvdWJsZS1jaGVjayB0aGF0IEkndmUgYWNjb3VudGVkIGZvciB0aGVzZSBkZXBlbmRlbmNpZXMgY29ycmVjdGx5LlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgdGhvcm91Z2gsIEknbSBnb2luZyB0byBxdWlja2x5IHNjYW4gdGhlIHdpZGVyIGBLY29uZmlnYCBhbmQgYE1ha2VmaWxlYCBzdHJ1Y3R1cmUsIHBhcnRpY3VsYXJseSBpbiB0aGUgYGRyaXZlcnMvbmV0YCBkaXJlY3RvcnksIHRvIGJlIGNlcnRhaW4gSSBoYXZlbid0IG1pc3NlZCBhbnkgaW5kaXJlY3QgZGVwZW5kZW5jaWVzIG9yIGJ1aWxkLXRpbWUgY29uc2lkZXJhdGlvbnMuIE5vIHN0b25lIGxlZnQgdW50dXJuZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5NjQ5LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzA1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDExOjI2OjI2LjE5NzQ2OTg1NFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUxMzgwMDQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlVTQl9DQVRDXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTEzPWlmIFVTQl9ORVRfRFJJVkVSU1xcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTE0LVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjE1OmNvbmZpZyBVU0JfQ0FUQ1xcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTE2LVxcdHRyaXN0YXRlIFxcXCJVU0IgQ0FUQyBOZXRNYXRlLWJhc2VkIEV0aGVybmV0IGRldmljZSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL01ha2VmaWxlLTUtXFxuZHJpdmVycy9uZXQvdXNiL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX1VTQl9DQVRDKVxcdFxcdCs9IGNhdGMub1xcbmRyaXZlcnMvbmV0L3VzYi9NYWtlZmlsZS03LW9iai0kKENPTkZJR19VU0JfS0FXRVRIKVxcdCs9IGthd2V0aC5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDExOjI2OjI2LjQ0ODg1NTkxOVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMzg2NTQyNDg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgTmV0d29yayBEcml2ZXIgTWFrZWZpbGUqKlxuXG5Pa2F5LCBzbyB0aGUgaW5pdGlhbCB0aG91Z2h0IGlzLCBcIkxldCdzIGNyYWNrIG9wZW4gdGhlIGBkcml2ZXJzL25ldC9NYWtlZmlsZWAuXCIgVGhhdCdzIGEgbmF0dXJhbCBzdGFydGluZyBwb2ludCB3aGVuIEknbSBkZWFsaW5nIHdpdGggbmV0d29yayBkcml2ZXIgY29kZS4gTXkgaW5zdGluY3QgaXMgYWx3YXlzIHRvIGNoZWNrIHRoZSBidWlsZCBzeXN0ZW0gZmlyc3QuIEknbSBwcm9iYWJseSBsb29raW5nIGZvciBhIGZldyBzcGVjaWZpYyB0aGluZ3MgcmlnaHQgb2ZmIHRoZSBiYXQuIEknbSB3b25kZXJpbmcgYWJvdXQgYnVpbGQgZGVwZW5kZW5jaWVzLCBvYnZpb3VzbHkuIFdoYXQgb3RoZXIga2VybmVsIGNvbXBvbmVudHMgb3IgbGlicmFyaWVzIGRvZXMgdGhpcyBwYXJ0aWN1bGFyIGRyaXZlciBuZWVkPyBBcmUgdGhlcmUgYW55IG1vZHVsZS1zcGVjaWZpYyBmbGFncyBvciBjb21waWxhdGlvbiB0YXJnZXRzIGRlZmluZWQ/IEknbSBob3BpbmcgSSBjYW4gZ2V0IGEgZGVjZW50IG92ZXJ2aWV3IG9mIHRoZSBkcml2ZXIncyBhcmNoaXRlY3R1cmUgYW5kIGhvdyBpdCBpbnRlZ3JhdGVzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIG5ldHdvcmtpbmcgc3RhY2sganVzdCBieSB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgYnVpbGQgcHJvY2VzcyBoYW5kbGVzIGl0LiBBcmUgdGhlcmUgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGVzIGJhc2VkIG9uIGtlcm5lbCB2ZXJzaW9ucywgaGFyZHdhcmUgY29uZmlndXJhdGlvbnMsIG9yIGZlYXR1cmVzPyBUaGF0J3MgZ29pbmcgdG8gYmUga2V5IHRvIGRlYnVnZ2luZyBhbnkgcG9ydGFiaWxpdHkgaXNzdWVzIGRvd24gdGhlIGxpbmUuIEknbSBhbHNvIGtlZXBpbmcgYW4gZXllIG91dCBmb3IgYW55IGN1c3RvbSBidWlsZCBydWxlcyBvciBtYWNyb3MgdGhhdCBtaWdodCBiZSBzcGVjaWZpYyB0byB0aGlzIGRyaXZlciBvciBpdHMgZmFtaWx5LiBLbm93aW5nIHRoZSBidWlsZCBzeXN0ZW0gaXMgbW9yZSB0aGFuIGhhbGYgdGhlIGJhdHRsZSwgcmVhbGx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDYyMSwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDExOjI2OjI4LjgzNTQwMjczM1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTU4MjQ0MzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidXNiXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L01ha2VmaWxlPTc4PW9iai0kKENPTkZJR19YRU5fTkVUREVWX0JBQ0tFTkQpICs9IHhlbi1uZXRiYWNrL1xcbmRyaXZlcnMvbmV0L01ha2VmaWxlLTc5LVxcbmRyaXZlcnMvbmV0L01ha2VmaWxlOjgwOm9iai0kKENPTkZJR19VU0JfTkVUX0RSSVZFUlMpICs9IHVzYi9cXG5kcml2ZXJzL25ldC9NYWtlZmlsZS04MS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTE6MjY6MjguODkxMjMxOTYyWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM4NDc1ODE3OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBUYXJnZXQgQXNzZXNzbWVudCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIGxvb2tpbmcgcHJvbWlzaW5nLiBXZSd2ZSBnb3QgYSB0YXJnZXQgcGF0Y2ggdGhhdCdzIGZsYWdnZWQgYXMgYFdvcnRoRnV6emluZzogdHJ1ZWAsIHdoaWNoIGlzIGFsd2F5cyBhIGdvb2Qgc3RhcnQuIEl0IG1vZGlmaWVzIHBhY2tldCBwYXJzaW5nIGFuZCBib3VuZGFyeSBjaGVja3Mgd2l0aGluIHRoZSBgY2F0Y19yeF9kb25lYCBmdW5jdGlvbi4gQ3J1Y2lhbGx5LCB0aGlzIHJlc2lkZXMgaW4gYSBVU0IgbmV0d29yayBkcml2ZXIgKGBVU0JfQ0FUQ2AgYW5kIGBVU0JfTkVUX0RSSVZFUlNgKSwgbWFraW5nIGl0IHJlYWNoYWJsZSBmb3IgZnV6emluZyB0aHJvdWdoIGVzdGFibGlzaGVkIG1ldGhvZHMg4oCTIFVTQiBlbXVsYXRpb24sIHJhdyBnYWRnZXQgc2NlbmFyaW9zLCBvciBldmVuIHN5emthbGxlcidzIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcy4gSSBzZWUgdGhhdCB0aGUgYEZvY3VzU3ltYm9sc2AgYXJlIHNwZWNpZmljYWxseSB6ZXJvaW5nIGluIG9uIGBbXCJjYXRjX3J4X2RvbmVcIl1gLCB3aGljaCBjb25maXJtcyBteSBpbml0aWFsIGludHVpdGlvbjogdGhpcyBpcyB0aGUga2V5IGFyZWEgZm9yIGRlZXBlciBhbmFseXNpcy4gVGhlIGBFbmFibGVDb25maWdzYCBsaXN0LCBuYW1lbHkgYFtcIlVTQl9DQVRDXCIsIFwiVVNCX05FVF9EUklWRVJTXCIsIFwiVVNCXCIsIFwiTkVUXCJdYCwgcHJvdmlkZXMgdGhlIG5lY2Vzc2FyeSBidWlsZCBjb25maWd1cmF0aW9ucyB0byByZXByb2R1Y2UgYW5kIGxldmVyYWdlIHRoZSB0YXJnZXQgY29kZS4gVGhlIHJlYXNvbmluZyBjb25jaXNlbHkgY2xhcmlmaWVzIHRoZSB3b3J0aGluZXNzIGFuZCBtZXRob2Qgb2YgYXBwcm9hY2guIEl0IGxvb2tzIGxpa2Ugd2UndmUgZ290IGEgc29saWQgY2FuZGlkYXRlIGhlcmUuIFRpbWUgdG8gbWFrZSBpdCBvZmZpY2lhbCBhbmQgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA5ODAsIk91dHB1dFRva2VucyI6MTE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDExOjI2OjMyLjczODgxNjQ5NloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzODI4MzkxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVVNCX0NBVENcIixcbiAgICBcIlVTQl9ORVRfRFJJVkVSU1wiLFxuICAgIFwiVVNCXCIsXG4gICAgXCJORVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjYXRjX3J4X2RvbmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgcGFja2V0IHJlY2VwdGlvbiBhbmQgbGVuZ3RoIHZhbGlkYXRpb24gbG9naWMgaW4gY2F0Y19yeF9kb25lIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcyB3aGVuIHByb2Nlc3NpbmcgbWFsZm9ybWVkIFVTQiBSWCBVUkIgZGF0YS4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBhbmQgZnV6emFibGUgdmlhIFVTQiBlbXVsYXRpb24gLyBzeXprYWxsZXIgVVNCIHJhdy1nYWRnZXQgc3VwcG9ydC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJVU0JfQ0FUQ1wiLFxuICAgIFwiVVNCX05FVF9EUklWRVJTXCIsXG4gICAgXCJVU0JcIixcbiAgICBcIk5FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNhdGNfcnhfZG9uZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBwYWNrZXQgcmVjZXB0aW9uIGFuZCBsZW5ndGggdmFsaWRhdGlvbiBsb2dpYyBpbiBjYXRjX3J4X2RvbmUgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzIHdoZW4gcHJvY2Vzc2luZyBtYWxmb3JtZWQgVVNCIFJYIFVSQiBkYXRhLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGFuZCBmdXp6YWJsZSB2aWEgVVNCIGVtdWxhdGlvbiAvIHN5emthbGxlciBVU0IgcmF3LWdhZGdldCBzdXBwb3J0LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QxMToyNjozMi44NzcxMDgzNjRaIiwiU2VxIjoxOSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNjUyNzAwNTgzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTE6MjY6MzIuODc3NjcyOTI0WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MTM2NTIxMjk5MTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIG91dC1vZi1ib3VuZHMgcmVhZCB2dWxuZXJhYmlsaXRpZXMgaW4gdGhlIENBVEMgVVNCIEV0aGVybmV0IGRyaXZlcidzIHJlY2VpdmUgcGF0aCAoYGNhdGNfcnhfZG9uZWApLiBTcGVjaWZpY2FsbHksIGl0IGVuc3VyZXMgdGhhdCBgcmVtYWluaW5nYCB0cmFuc2ZlciBidWZmZXIgYnl0ZXMgYXJlIHN1ZmZpY2llbnQgdG8gcmVhZCB0aGUgMi1ieXRlIHBhY2tldCBsZW5ndGggaGVhZGVyIChgcmVtYWluaW5nIFxcdTAwM2U9IHBrdF9vZmZzZXRgKSwgYW5kIHRoYXQgdGhlIGluZGljYXRlZCBwYWNrZXQgbGVuZ3RoIHBsdXMgb2Zmc2V0IGZpdHMgd2l0aGluIHRoZSByZW1haW5pbmcgcmVjZWl2ZWQgYnVmZmVyIChgcGt0X2xlbiArIHBrdF9vZmZzZXQgXFx1MDAzYz0gcmVtYWluaW5nYCkuXFxuXFxuVGhlc2UgY2hhbmdlcyBwcmV2ZW50IG91dC1vZi1ib3VuZHMgbWVtb3J5IGFjY2Vzc2VzIGZyb20gYHVyYi1cXHUwMDNldHJhbnNmZXJfYnVmZmVyYCBkdXJpbmcgcGFja2V0IHByb2Nlc3NpbmcgYW5kIGNvcHlpbmcgdG8gdGhlIFNLQi4gQnVmZmVyIG92ZXItcmVhZHMgYW5kIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgYXJlIG1lbW9yeSBzYWZldHkgdmlvbGF0aW9ucyBkZXRlY3RlZCBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIGluZm8tbGVha3MgdG8gdXNlciBzcGFjZSwgb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBhMjZjMDg5NWFmNmMxNjJkZjJmMTM2YTE0OTAzM2ZkMzljMjM4MjAyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBTZXAgNyAxMToyNTo1MyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3VzYi9jYXRjLmMgYi9kcml2ZXJzL25ldC91c2IvY2F0Yy5jXG5pbmRleCA5NmU4MmY5NGVkY2Y4Li5lNGY4YjlhMGNhZjE5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvdXNiL2NhdGMuY1xuKysrIGIvZHJpdmVycy9uZXQvdXNiL2NhdGMuY1xuQEAgLTIzNCw4ICsyMzQsMTYgQEAgc3RhdGljIHZvaWQgY2F0Y19yeF9kb25lKHN0cnVjdCB1cmIgKnVyYilcbiBcbiBcdGRvIHtcbiBcdFx0aWYoIWNhdGMtXHUwMDNlaXNfZjV1MDExKSB7XG4rXHRcdFx0aW50IHJlbWFpbmluZyA9IHVyYi1cdTAwM2VhY3R1YWxfbGVuZ3RoIC1cbitcdFx0XHRcdFx0KHBrdF9zdGFydCAtICh1OCAqKXVyYi1cdTAwM2V0cmFuc2Zlcl9idWZmZXIpO1xuK1xuK1x0XHRcdGlmIChyZW1haW5pbmcgXHUwMDNjIHBrdF9vZmZzZXQpIHtcbitcdFx0XHRcdGNhdGMtXHUwMDNlbmV0ZGV2LVx1MDAzZXN0YXRzLnJ4X2xlbmd0aF9lcnJvcnMrKztcbitcdFx0XHRcdGNhdGMtXHUwMDNlbmV0ZGV2LVx1MDAzZXN0YXRzLnJ4X2Vycm9ycysrO1xuK1x0XHRcdFx0YnJlYWs7XG4rXHRcdFx0fVxuIFx0XHRcdHBrdF9sZW4gPSBsZTE2X3RvX2NwdXAoKF9fbGUxNiopcGt0X3N0YXJ0KTtcbi1cdFx0XHRpZiAocGt0X2xlbiBcdTAwM2UgdXJiLVx1MDAzZWFjdHVhbF9sZW5ndGgpIHtcbitcdFx0XHRpZiAocGt0X2xlbiArIHBrdF9vZmZzZXQgXHUwMDNlIHJlbWFpbmluZykge1xuIFx0XHRcdFx0Y2F0Yy1cdTAwM2VuZXRkZXYtXHUwMDNlc3RhdHMucnhfbGVuZ3RoX2Vycm9ycysrO1xuIFx0XHRcdFx0Y2F0Yy1cdTAwM2VuZXRkZXYtXHUwMDNlc3RhdHMucnhfZXJyb3JzKys7XG4gXHRcdFx0XHRicmVhaztcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDExOjI2OjMyLjg3NzY3MzkxNFoiLCJTZXEiOjIxLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0MjE3NjQwNDc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgY2F0Yy5jIERyaXZlcioqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5IHdpdGggdGhpcyBgY2F0Yy5jYCBkcml2ZXIgaW4gdGhlIGBkcml2ZXJzL25ldC91c2JgIGRpcmVjdG9yeS4gVGhlIGZpcnN0IHRoaW5nIEkgbmVlZCB0byBkbyBpcyByZWFsbHkgdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgcGF0Y2guIEknbGwgbmVlZCB0byBkaWcgaW50byB0aGUgc3Vycm91bmRpbmcgY29kZSB0byBncmFzcCB0aGUgY29udGV4dCBvZiB0aGUgY2hhbmdlLiBTcGVjaWZpY2FsbHksIEknbSBnb2luZyB0byBmb2N1cyBteSBhdHRlbnRpb24gYXJvdW5kIGxpbmUgMjM0IGluIGBjYXRjLmNgLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBhbmNob3IgSSBuZWVkIHRvIHN0YXJ0IG15IGFuYWx5c2lzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTk2LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QxMToyNjozNy4wOTUzMTc5NDJaIiwiU2VxIjoyMiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc1MTQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3VzYi9jYXRjLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjEwLFxuICBcIkxpbmVDb3VudFwiOiA2MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjEwOlxcdCNkZWZpbmUgY2F0Y193cml0ZV9tZW1fYXN5bmMoY2F0YywgYWRkciwgYnVmLCBzaXplKVxcdGNhdGNfY3RybF9hc3luYyhjYXRjLCBVU0JfRElSX09VVCwgV3JpdGVNZW0sIDAsIGFkZHIsIGJ1Ziwgc2l6ZSwgTlVMTClcXG4gMjExOlxcdFxcbiAyMTI6XFx0LypcXG4gMjEzOlxcdCAqIFJlY2VpdmUgcm91dGluZXMuXFxuIDIxNDpcXHQgKi9cXG4gMjE1OlxcdFxcbiAyMTY6XFx0c3RhdGljIHZvaWQgY2F0Y19yeF9kb25lKHN0cnVjdCB1cmIgKnVyYilcXG4gMjE3OlxcdHtcXG4gMjE4OlxcdFxcdHN0cnVjdCBjYXRjICpjYXRjID0gdXJiLVxcdTAwM2Vjb250ZXh0O1xcbiAyMTk6XFx0XFx0dTggKnBrdF9zdGFydCA9IHVyYi1cXHUwMDNldHJhbnNmZXJfYnVmZmVyO1xcbiAyMjA6XFx0XFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4gMjIxOlxcdFxcdGludCBwa3RfbGVuLCBwa3Rfb2Zmc2V0ID0gMDtcXG4gMjIyOlxcdFxcdGludCBzdGF0dXMgPSB1cmItXFx1MDAzZXN0YXR1cztcXG4gMjIzOlxcdFxcbiAyMjQ6XFx0XFx0aWYgKCFjYXRjLVxcdTAwM2Vpc19mNXUwMTEpIHtcXG4gMjI1OlxcdFxcdFxcdGNsZWFyX2JpdChSWF9SVU5OSU5HLCBcXHUwMDI2Y2F0Yy1cXHUwMDNlZmxhZ3MpO1xcbiAyMjY6XFx0XFx0XFx0cGt0X29mZnNldCA9IDI7XFxuIDIyNzpcXHRcXHR9XFxuIDIyODpcXHRcXG4gMjI5OlxcdFxcdGlmIChzdGF0dXMpIHtcXG4gMjMwOlxcdFxcdFxcdGRldl9kYmcoXFx1MDAyNnVyYi1cXHUwMDNlZGV2LVxcdTAwM2VkZXYsIFxcXCJyeF9kb25lLCBzdGF0dXMgJWQsIGxlbmd0aCAlZFxcXFxuXFxcIixcXG4gMjMxOlxcdFxcdFxcdFxcdHN0YXR1cywgdXJiLVxcdTAwM2VhY3R1YWxfbGVuZ3RoKTtcXG4gMjMyOlxcdFxcdFxcdHJldHVybjtcXG4gMjMzOlxcdFxcdH1cXG4gMjM0OlxcdFxcbiAyMzU6XFx0XFx0ZG8ge1xcbiAyMzY6XFx0XFx0XFx0aWYoIWNhdGMtXFx1MDAzZWlzX2Y1dTAxMSkge1xcbiAyMzc6XFx0XFx0XFx0XFx0aW50IHJlbWFpbmluZyA9IHVyYi1cXHUwMDNlYWN0dWFsX2xlbmd0aCAtXFxuIDIzODpcXHRcXHRcXHRcXHRcXHRcXHQocGt0X3N0YXJ0IC0gKHU4ICopdXJiLVxcdTAwM2V0cmFuc2Zlcl9idWZmZXIpO1xcbiAyMzk6XFx0XFxuIDI0MDpcXHRcXHRcXHRcXHRpZiAocmVtYWluaW5nIFxcdTAwM2MgcGt0X29mZnNldCkge1xcbiAyNDE6XFx0XFx0XFx0XFx0XFx0Y2F0Yy1cXHUwMDNlbmV0ZGV2LVxcdTAwM2VzdGF0cy5yeF9sZW5ndGhfZXJyb3JzKys7XFxuIDI0MjpcXHRcXHRcXHRcXHRcXHRjYXRjLVxcdTAwM2VuZXRkZXYtXFx1MDAzZXN0YXRzLnJ4X2Vycm9ycysrO1xcbiAyNDM6XFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuIDI0NDpcXHRcXHRcXHRcXHR9XFxuIDI0NTpcXHRcXHRcXHRcXHRwa3RfbGVuID0gbGUxNl90b19jcHVwKChfX2xlMTYqKXBrdF9zdGFydCk7XFxuIDI0NjpcXHRcXHRcXHRcXHRpZiAocGt0X2xlbiArIHBrdF9vZmZzZXQgXFx1MDAzZSByZW1haW5pbmcpIHtcXG4gMjQ3OlxcdFxcdFxcdFxcdFxcdGNhdGMtXFx1MDAzZW5ldGRldi1cXHUwMDNlc3RhdHMucnhfbGVuZ3RoX2Vycm9ycysrO1xcbiAyNDg6XFx0XFx0XFx0XFx0XFx0Y2F0Yy1cXHUwMDNlbmV0ZGV2LVxcdTAwM2VzdGF0cy5yeF9lcnJvcnMrKztcXG4gMjQ5OlxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcbiAyNTA6XFx0XFx0XFx0XFx0fVxcbiAyNTE6XFx0XFx0XFx0fSBlbHNlIHtcXG4gMjUyOlxcdFxcdFxcdFxcdHBrdF9sZW4gPSB1cmItXFx1MDAzZWFjdHVhbF9sZW5ndGg7XFxuIDI1MzpcXHRcXHRcXHR9XFxuIDI1NDpcXHRcXG4gMjU1OlxcdFxcdFxcdGlmICghKHNrYiA9IGRldl9hbGxvY19za2IocGt0X2xlbikpKVxcbiAyNTY6XFx0XFx0XFx0XFx0cmV0dXJuO1xcbiAyNTc6XFx0XFxuIDI1ODpcXHRcXHRcXHRza2JfY29weV90b19saW5lYXJfZGF0YShza2IsIHBrdF9zdGFydCArIHBrdF9vZmZzZXQsIHBrdF9sZW4pO1xcbiAyNTk6XFx0XFx0XFx0c2tiX3B1dChza2IsIHBrdF9sZW4pO1xcbiAyNjA6XFx0XFxuIDI2MTpcXHRcXHRcXHRza2ItXFx1MDAzZXByb3RvY29sID0gZXRoX3R5cGVfdHJhbnMoc2tiLCBjYXRjLVxcdTAwM2VuZXRkZXYpO1xcbiAyNjI6XFx0XFx0XFx0bmV0aWZfcngoc2tiKTtcXG4gMjYzOlxcdFxcbiAyNjQ6XFx0XFx0XFx0Y2F0Yy1cXHUwMDNlbmV0ZGV2LVxcdTAwM2VzdGF0cy5yeF9wYWNrZXRzKys7XFxuIDI2NTpcXHRcXHRcXHRjYXRjLVxcdTAwM2VuZXRkZXYtXFx1MDAzZXN0YXRzLnJ4X2J5dGVzICs9IHBrdF9sZW47XFxuIDI2NjpcXHRcXG4gMjY3OlxcdFxcdFxcdC8qIEY1VTAxMSBvbmx5IGRvZXMgb25lIHBhY2tldCBwZXIgUlggKi9cXG4gMjY4OlxcdFxcdFxcdGlmIChjYXRjLVxcdTAwM2Vpc19mNXUwMTEpXFxuIDI2OTpcXHRcXHRcXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTE6MjY6MzcuMDk1NDk1NzIyWiIsIlNlcSI6MjMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIxMDQyNDgyOTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipBbmFseXppbmcgdGhlIEZ1bmN0aW9uJ3MgU3Vic2VxdWVudCBPcGVyYXRpb25zKipcblxuUmlnaHQsIHNvIEkndmUgcmVhY2hlZCBhIHBvaW50IGluIG15IGFuYWx5c2lzIHdoZXJlIEkgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGZ1bmN0aW9uYWxpdHkgb2YgYGNhdGNfcnhfZG9uZWAuIEkga25vdyB0aGUgaW5pdGlhbCBwaWVjZXMsIGJ1dCB0byBncmFzcCBpdHMgZnVsbCBpbXBhY3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgaGFwcGVucyAqYWZ0ZXIqIHRoZSBpbml0aWFsIGhhbmRsaW5nLiBXaGF0IGFyZSB0aGUgc3Vic2VxdWVudCBvcGVyYXRpb25zIHRyaWdnZXJlZCBvciBpbmZsdWVuY2VkIGJ5IHRoaXMgZnVuY3Rpb24/IEFyZSB0aGVyZSBhbnkgZGF0YSBzdHJ1Y3R1cmVzIGJlaW5nIG1vZGlmaWVkLCBvdGhlciBmdW5jdGlvbnMgYmVpbmcgY2FsbGVkLCBvciBzdGF0ZSB0cmFuc2l0aW9ucyBvY2N1cnJpbmcgYXMgYSByZXN1bHQ/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmdW5jdGlvbidzIHNpZGUgZWZmZWN0cyBhbmQgaG93IGl0IGZpdHMgaW50byB0aGUgYnJvYWRlciBwaWN0dXJlIG9mIHRoZSBkYXRhIHJlY2VwdGlvbiBhbmQgcHJvY2Vzc2luZyBwaXBlbGluZS4gSSdsbCBuZWVkIHRvIGNhcmVmdWxseSBleGFtaW5lIHRoZSBjb2RlIGZvbGxvd2luZyBgY2F0Y19yeF9kb25lYCB0byBwYWludCBhIG1vcmUgY29tcGxldGUgcGljdHVyZS4gSXQncyB0aW1lIHRvIGZvbGxvdyB0aGUgdHJhaWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzNDUsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDExOjI2OjM5LjE5OTc0OVoiLCJTZXEiOjI0LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjcyODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvdXNiL2NhdGMuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyNzAsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyNzA6XFx0XFx0XFx0cGt0X3N0YXJ0ICs9ICgoKHBrdF9sZW4gKyAxKSBcXHUwMDNlXFx1MDAzZSA2KSArIDEpIFxcdTAwM2NcXHUwMDNjIDY7XFxuIDI3MTpcXHRcXG4gMjcyOlxcdFxcdH0gd2hpbGUgKHBrdF9zdGFydCAtICh1OCAqKSB1cmItXFx1MDAzZXRyYW5zZmVyX2J1ZmZlciBcXHUwMDNjIHVyYi1cXHUwMDNlYWN0dWFsX2xlbmd0aCk7XFxuIDI3MzpcXHRcXG4gMjc0OlxcdFxcdGlmIChjYXRjLVxcdTAwM2Vpc19mNXUwMTEpIHtcXG4gMjc1OlxcdFxcdFxcdGlmIChhdG9taWNfcmVhZChcXHUwMDI2Y2F0Yy1cXHUwMDNlcmVjcV9zeikpIHtcXG4gMjc2OlxcdFxcdFxcdFxcdGludCBzdGF0ZTtcXG4gMjc3OlxcdFxcdFxcdFxcdGF0b21pY19kZWMoXFx1MDAyNmNhdGMtXFx1MDAzZXJlY3Ffc3opO1xcbiAyNzg6XFx0XFx0XFx0XFx0bmV0ZGV2X2RiZyhjYXRjLVxcdTAwM2VuZXRkZXYsIFxcXCJnZXR0aW5nIGV4dHJhIHBhY2tldFxcXFxuXFxcIik7XFxuIDI3OTpcXHRcXHRcXHRcXHR1cmItXFx1MDAzZWRldiA9IGNhdGMtXFx1MDAzZXVzYmRldjtcXG4gMjgwOlxcdFxcdFxcdFxcdGlmICgoc3RhdGUgPSB1c2Jfc3VibWl0X3VyYih1cmIsIEdGUF9BVE9NSUMpKSBcXHUwMDNjIDApIHtcXG4gMjgxOlxcdFxcdFxcdFxcdFxcdG5ldGRldl9kYmcoY2F0Yy1cXHUwMDNlbmV0ZGV2LFxcbiAyODI6XFx0XFx0XFx0XFx0XFx0XFx0ICAgXFxcInN1Ym1pdChyeF91cmIpIHN0YXR1cyAlZFxcXFxuXFxcIiwgc3RhdGUpO1xcbiAyODM6XFx0XFx0XFx0XFx0fVxcbiAyODQ6XFx0XFx0XFx0fSBlbHNlIHtcXG4gMjg1OlxcdFxcdFxcdFxcdGNsZWFyX2JpdChSWF9SVU5OSU5HLCBcXHUwMDI2Y2F0Yy1cXHUwMDNlZmxhZ3MpO1xcbiAyODY6XFx0XFx0XFx0fVxcbiAyODc6XFx0XFx0fVxcbiAyODg6XFx0fVxcbiAyODk6XFx0XFxuIDI5MDpcXHRzdGF0aWMgdm9pZCBjYXRjX2lycV9kb25lKHN0cnVjdCB1cmIgKnVyYilcXG4gMjkxOlxcdHtcXG4gMjkyOlxcdFxcdHN0cnVjdCBjYXRjICpjYXRjID0gdXJiLVxcdTAwM2Vjb250ZXh0O1xcbiAyOTM6XFx0XFx0dTggKmRhdGEgPSB1cmItXFx1MDAzZXRyYW5zZmVyX2J1ZmZlcjtcXG4gMjk0OlxcdFxcdGludCBzdGF0dXMgPSB1cmItXFx1MDAzZXN0YXR1cztcXG4gMjk1OlxcdFxcdHVuc2lnbmVkIGludCBoYXNkYXRhLCBsaW5rc3RzID0gTGlua05vQ2hhbmdlO1xcbiAyOTY6XFx0XFx0aW50IHJlcztcXG4gMjk3OlxcdFxcbiAyOTg6XFx0XFx0aWYgKCFjYXRjLVxcdTAwM2Vpc19mNXUwMTEpIHtcXG4gMjk5OlxcdFxcdFxcdGhhc2RhdGEgPSBkYXRhWzFdIFxcdTAwMjYgMHg4MDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTE6MjY6MzkuMTk5OTE5M1oiLCJTZXEiOjI1LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo3MzI5ODU0Njc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFVTQiBOZXR3b3JrIERyaXZlciBSZWNlaXZlIEhhbmRsZXIgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoaXMgcGF0Y2ggaXMgdGFyZ2V0aW5nIGBjYXRjX3J4X2RvbmUoKWAsIHRoZSByZWNlaXZlIGhhbmRsZXIgZm9yIGEgVVNCIG5ldHdvcmsgZHJpdmVyLiBJdCdzIGNsZWFybHkgYSBjcml0aWNhbCBhcmVhLCB3aGVyZSBwZXJmb3JtYW5jZSBpcyBwYXJhbW91bnQuIExvb2tpbmcgYXQgdGhlIFwiYmVmb3JlXCIgY29kZSwgdGhlIG9yaWdpbmFsIGxvZ2ljIGhhZCBzb21lIHNlcmlvdXMgZmxhd3MuIEl0IGFwcGVhcnMgd2Ugd2VyZSByZWx5aW5nIG9uIGB1cmItXHUwMDNlYWN0dWFsX2xlbmd0aGAgZm9yIGJ1ZmZlciBib3VuZHMsIGJ1dCB0aGVyZSB3YXMgYSBwb3RlbnRpYWwgZm9yIG91dC1vZi1ib3VuZHMgcmVhZHMuIFNwZWNpZmljYWxseSwgaWYgdGhlIHJlbWFpbmluZyBkYXRhIGluIHRoZSBVU0IgdHJhbnNmZXIgYnVmZmVyIChgdXJiLVx1MDAzZXRyYW5zZmVyX2J1ZmZlcmApIHdhcyBsZXNzIHRoYW4gYSBwYWNrZXQgb2Zmc2V0IChgcGt0X29mZnNldGApLCB3ZSdkIGJlIHJlYWRpbmcgcGFzdCB0aGUgZW5kIG9mIHRoZSBidWZmZXIgd2hlbiBjYWxsaW5nIGBsZTE2X3RvX2NwdXBgLiBTaW1pbGFybHksIGlmIHRoZSBwYWNrZXQgbGVuZ3RoIChgcGt0X2xlbmApIHBsdXMgdGhlIG9mZnNldCBleGNlZWRlZCB0aGUgcmVtYWluaW5nIGJ1ZmZlciBzaXplLCB3ZSB3b3VsZCBhbHNvIGJlIHJlYWRpbmcgT09CLiBUaGlzIGlzIGEgY2xhc3NpYyB2dWxuZXJhYmlsaXR5IVxuXG5UaGUgZml4IGlzIHN0cmFpZ2h0Zm9yd2FyZCwgdGhhbmtmdWxseS4gVGhleSd2ZSBhZGRlZCBleHBsaWNpdCBib3VuZHMgY2hlY2tpbmcuIE5vdywgYmVmb3JlIGFueSBhdHRlbXB0IHRvIGFjY2VzcyB0aGUgcGFja2V0IGRhdGEsIHdlIGNhbGN1bGF0ZSBgcmVtYWluaW5nYCDigJMgdGhlIGFtb3VudCBvZiBkYXRhIGxlZnQgaW4gdGhlIFVTQiBidWZmZXIg4oCTIGFuZCB0aGVuIGNvbXBhcmUgdGhhdCBhZ2FpbnN0IGJvdGggdGhlIG9mZnNldCBhbmQgdGhlIGFudGljaXBhdGVkIHBhY2tldCBsZW5ndGguIElmIGVpdGhlciBjaGVjayBmYWlscywgdGhlIHBhY2tldCBpcyBkaXNjYXJkZWQsIGFuZCB0aGUgcmVsZXZhbnQgZXJyb3IgY291bnRlcnMgYXJlIGluY3JlbWVudGVkLiBQZXJmZWN0LiBNdWNoIG1vcmUgcm9idXN0LlxuXG5UaGUgaW1wb3J0YW50IG5leHQgc3RlcCBpcyB0byBhc3Nlc3MgZm9yIHBvdGVudGlhbCBLTVNBTiAoS2VybmVsIE1lbW9yeSBTYW5pdGl6ZXIpIGlzc3Vlcy4gSXMgdGhpcyBwYXRjaCBpbnRyb2R1Y2luZyBvciBleHBvc2luZyB1bmluaXRpYWxpemVkIG1lbW9yeT8gTm8sIG5vdCB0aGF0IEkgY2FuIHNlZS4gV2UgYXJlbid0IGNvcHlpbmcgYW55IGtlcm5lbCBzdHJ1Y3R1cmVzIHRvIHVzZXJzcGFjZSwgYW5kIG5vIHN0cnVjdHVyZXMgd2l0aCBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHBhZGRpbmcuIFdlIGFyZW4ndCBtYWtpbmcgZGVjaXNpb25zIGJhc2VkIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLCBhbGwgb2YgdGhlIHZhcmlhYmxlcyB1c2VkIGluIHRoZSBjYWxjdWxhdGlvbnMgYXJlIGluaXRpYWxpemVkIGZyb20gdGhlIFVTQiBjb3JlIGFuZCB0aGUgcGFja2V0IGhlYWRlci4gVGhlcmUncyBubyBhbGxvY2F0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIGVpdGhlci4gQ3J1Y2lhbGx5LCB0aGUgKnB1cnBvc2UqIG9mIHRoZSBwYXRjaCBpcyB0byAqcHJldmVudCogb3V0LW9mLWJvdW5kcyByZWFkcyEgU28sIGl0J3MgdGlnaHRlbmluZyB1cCB0aGUgYnVmZmVyIGFjY2Vzcywgbm90IGxvb3NlbmluZyBpdC4gS0FTQU4gaXMgdGhlIHRvb2wgdGhhdCBpcyByZWFsbHkgZGVzaWduZWQgZm9yIGNhdGNoaW5nIE9PQiByZWFkcy93cml0ZXMuIFRoaXMgcGF0Y2ggbG9va3MgY2xlYW4gZnJvbSBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSBwZXJzcGVjdGl2ZS5cblxuTGV0J3MgZG91YmxlLWNoZWNrIGFsbCB0aGUgcmVxdWlyZW1lbnRzOiAxLiBObyBrZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXJzcGFjZS4gMi4gTm8gY29uZGl0aW9uYWwgbG9naWMgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMuIDMuIE5vIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIGFsbG9jYXRpb24uIDQuIFRpZ2h0IGJvdW5kcyBjaGVja3MgdGhhdCBwcmV2ZW50IGFueSBhY2Nlc3MgdG8gdW5pbml0aWFsaXplZCBieXRlcy4gWXVwLCBhbGwgdGhlIGJveGVzIGFyZSB0aWNrZWQuIFRoaXMgbG9va3MgbGlrZSBhIHNvbGlkLCBzYWZlIGZpeC4gSSBjYW4gY29uZmlkZW50bHkgdGFnIHRoaXMgYXMgYE5lZWRzS01TQU4gPSBmYWxzZWAuIFRpbWUgdG8gY2FsbCB0aGF0IGBzZXQtcmVzdWx0c2AgdG9vbCBhbmQgbW92ZSBvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDA4NywiT3V0cHV0VG9rZW5zIjoxOTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MzksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QxMToyNjo0Ni41Mjk3NzY2MjdaIiwiU2VxIjoyNiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzc5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIG91dC1vZi1ib3VuZHMgcmVhZCB2dWxuZXJhYmlsaXRpZXMgaW4gdGhlIENBVEMgVVNCIEV0aGVybmV0IGRyaXZlcidzIHJlY2VpdmUgcGF0aCAoYGNhdGNfcnhfZG9uZWApLiBTcGVjaWZpY2FsbHksIGl0IGVuc3VyZXMgdGhhdCBgcmVtYWluaW5nYCB0cmFuc2ZlciBidWZmZXIgYnl0ZXMgYXJlIHN1ZmZpY2llbnQgdG8gcmVhZCB0aGUgMi1ieXRlIHBhY2tldCBsZW5ndGggaGVhZGVyIChgcmVtYWluaW5nIFxcdTAwM2U9IHBrdF9vZmZzZXRgKSwgYW5kIHRoYXQgdGhlIGluZGljYXRlZCBwYWNrZXQgbGVuZ3RoIHBsdXMgb2Zmc2V0IGZpdHMgd2l0aGluIHRoZSByZW1haW5pbmcgcmVjZWl2ZWQgYnVmZmVyIChgcGt0X2xlbiArIHBrdF9vZmZzZXQgXFx1MDAzYz0gcmVtYWluaW5nYCkuXFxuXFxuVGhlc2UgY2hhbmdlcyBwcmV2ZW50IG91dC1vZi1ib3VuZHMgbWVtb3J5IGFjY2Vzc2VzIGZyb20gYHVyYi1cXHUwMDNldHJhbnNmZXJfYnVmZmVyYCBkdXJpbmcgcGFja2V0IHByb2Nlc3NpbmcgYW5kIGNvcHlpbmcgdG8gdGhlIFNLQi4gQnVmZmVyIG92ZXItcmVhZHMgYW5kIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgYXJlIG1lbW9yeSBzYWZldHkgdmlvbGF0aW9ucyBkZXRlY3RlZCBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIGluZm8tbGVha3MgdG8gdXNlciBzcGFjZSwgb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBvdXQtb2YtYm91bmRzIHJlYWQgdnVsbmVyYWJpbGl0aWVzIGluIHRoZSBDQVRDIFVTQiBFdGhlcm5ldCBkcml2ZXIncyByZWNlaXZlIHBhdGggKGBjYXRjX3J4X2RvbmVgKS4gU3BlY2lmaWNhbGx5LCBpdCBlbnN1cmVzIHRoYXQgYHJlbWFpbmluZ2AgdHJhbnNmZXIgYnVmZmVyIGJ5dGVzIGFyZSBzdWZmaWNpZW50IHRvIHJlYWQgdGhlIDItYnl0ZSBwYWNrZXQgbGVuZ3RoIGhlYWRlciAoYHJlbWFpbmluZyBcXHUwMDNlPSBwa3Rfb2Zmc2V0YCksIGFuZCB0aGF0IHRoZSBpbmRpY2F0ZWQgcGFja2V0IGxlbmd0aCBwbHVzIG9mZnNldCBmaXRzIHdpdGhpbiB0aGUgcmVtYWluaW5nIHJlY2VpdmVkIGJ1ZmZlciAoYHBrdF9sZW4gKyBwa3Rfb2Zmc2V0IFxcdTAwM2M9IHJlbWFpbmluZ2ApLlxcblxcblRoZXNlIGNoYW5nZXMgcHJldmVudCBvdXQtb2YtYm91bmRzIG1lbW9yeSBhY2Nlc3NlcyBmcm9tIGB1cmItXFx1MDAzZXRyYW5zZmVyX2J1ZmZlcmAgZHVyaW5nIHBhY2tldCBwcm9jZXNzaW5nIGFuZCBjb3B5aW5nIHRvIHRoZSBTS0IuIEJ1ZmZlciBvdmVyLXJlYWRzIGFuZCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGFyZSBtZW1vcnkgc2FmZXR5IHZpb2xhdGlvbnMgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLCBpbmZvLWxlYWtzIHRvIHVzZXIgc3BhY2UsIG9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowmcb8q[1] Phase: Succeeded StartedAt: 2026-09-07 11:26:58 +0000 UTC FinishedAt: 2026-09-07 11:26:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmcb8q[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-09-07 11:26:58 +0000 UTC FinishedAt: 2026-09-07 11:26:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmcb8q[2] Phase: Succeeded StartedAt: 2026-09-07 11:26:58 +0000 UTC FinishedAt: 2026-09-07 13:03:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmcb8q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CATC","USB_NET_DRIVERS","USB","NET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["catc_rx_done"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CATC","USB_NET_DRIVERS","USB","NET"],"series_id":"aec6bc7e-eebf-4623-9f26-04574067334f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-09-07 11:26:58 +0000 UTC FinishedAt: 2026-09-07 13:03:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CATC","USB_NET_DRIVERS","USB","NET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["catc_rx_done"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CATC","USB_NET_DRIVERS","USB","NET"],"series_id":"aec6bc7e-eebf-4623-9f26-04574067334f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowmcb8q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CATC","USB_NET_DRIVERS","USB","NET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["catc_rx_done"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CATC","USB_NET_DRIVERS","USB","NET"],"series_id":"aec6bc7e-eebf-4623-9f26-04574067334f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-09-07 11:26:58 +0000 UTC FinishedAt: 2026-09-07 11:27:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmcb8q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CATC","USB_NET_DRIVERS","USB","NET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["catc_rx_done"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CATC","USB_NET_DRIVERS","USB","NET"],"series_id":"aec6bc7e-eebf-4623-9f26-04574067334f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-09-07 11:26:58 +0000 UTC FinishedAt: 2026-09-07 11:27:04 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CATC","USB_NET_DRIVERS","USB","NET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmcb8q/series-workflowmcb8q-convert-artifact-2998156362/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmcb8q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CATC","USB_NET_DRIVERS","USB","NET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["catc_rx_done"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CATC","USB_NET_DRIVERS","USB","NET"],"series_id":"aec6bc7e-eebf-4623-9f26-04574067334f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-09-07 11:27:19 +0000 UTC FinishedAt: 2026-09-07 11:43:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmcb8q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CATC","USB_NET_DRIVERS","USB","NET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["catc_rx_done"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CATC","USB_NET_DRIVERS","USB","NET"],"series_id":"aec6bc7e-eebf-4623-9f26-04574067334f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-09-07 11:27:19 +0000 UTC FinishedAt: 2026-09-07 11:43:21 +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:*79e4131b-b471-49c0-8b38-04bf998bb56b,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-workflowmcb8q/series-workflowmcb8q-convert-artifact-2998156362/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": "7cc00adc-9627-4b75-96e1-af8182c9a0c9", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmcb8q/series-workflowmcb8q-build-action-3859338296/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmcb8q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CATC","USB_NET_DRIVERS","USB","NET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["catc_rx_done"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CATC","USB_NET_DRIVERS","USB","NET"],"series_id":"aec6bc7e-eebf-4623-9f26-04574067334f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-09-07 11:27:19 +0000 UTC FinishedAt: 2026-09-07 11:43:11 +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:*79e4131b-b471-49c0-8b38-04bf998bb56b,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-workflowmcb8q/series-workflowmcb8q-convert-artifact-2998156362/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": "7cc00adc-9627-4b75-96e1-af8182c9a0c9", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmcb8q/series-workflowmcb8q-build-action-3859338296/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmcb8q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CATC","USB_NET_DRIVERS","USB","NET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["catc_rx_done"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CATC","USB_NET_DRIVERS","USB","NET"],"series_id":"aec6bc7e-eebf-4623-9f26-04574067334f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-09-07 11:43:21 +0000 UTC FinishedAt: 2026-09-07 11:43:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmcb8q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CATC","USB_NET_DRIVERS","USB","NET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["catc_rx_done"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CATC","USB_NET_DRIVERS","USB","NET"],"series_id":"aec6bc7e-eebf-4623-9f26-04574067334f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-09-07 11:43:21 +0000 UTC FinishedAt: 2026-09-07 11:43:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmcb8q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CATC","USB_NET_DRIVERS","USB","NET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["catc_rx_done"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CATC","USB_NET_DRIVERS","USB","NET"],"series_id":"aec6bc7e-eebf-4623-9f26-04574067334f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-09-07 11:43:21 +0000 UTC FinishedAt: 2026-09-07 11:43:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmcb8q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CATC","USB_NET_DRIVERS","USB","NET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["catc_rx_done"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CATC","USB_NET_DRIVERS","USB","NET"],"series_id":"aec6bc7e-eebf-4623-9f26-04574067334f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-09-07 11:43:21 +0000 UTC FinishedAt: 2026-09-07 11:43:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CATC","USB_NET_DRIVERS","USB","NET"],"series_id":"aec6bc7e-eebf-4623-9f26-04574067334f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmcb8q/series-workflowmcb8q-convert-artifact-2515320293/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmcb8q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CATC","USB_NET_DRIVERS","USB","NET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["catc_rx_done"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CATC","USB_NET_DRIVERS","USB","NET"],"series_id":"aec6bc7e-eebf-4623-9f26-04574067334f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-09-07 11:43:31 +0000 UTC FinishedAt: 2026-09-07 11:45:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmcb8q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CATC","USB_NET_DRIVERS","USB","NET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["catc_rx_done"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CATC","USB_NET_DRIVERS","USB","NET"],"series_id":"aec6bc7e-eebf-4623-9f26-04574067334f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-09-07 11:43:31 +0000 UTC FinishedAt: 2026-09-07 11:45:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*7cc00adc-9627-4b75-96e1-af8182c9a0c9,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmcb8q/series-workflowmcb8q-build-action-3859338296/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowmcb8q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CATC","USB_NET_DRIVERS","USB","NET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["catc_rx_done"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CATC","USB_NET_DRIVERS","USB","NET"],"series_id":"aec6bc7e-eebf-4623-9f26-04574067334f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-09-07 11:45:29 +0000 UTC FinishedAt: 2026-09-07 11:45:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmcb8q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CATC","USB_NET_DRIVERS","USB","NET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["catc_rx_done"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CATC","USB_NET_DRIVERS","USB","NET"],"series_id":"aec6bc7e-eebf-4623-9f26-04574067334f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-09-07 11:45:29 +0000 UTC FinishedAt: 2026-09-07 11:45:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmcb8q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CATC","USB_NET_DRIVERS","USB","NET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["catc_rx_done"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CATC","USB_NET_DRIVERS","USB","NET"],"series_id":"aec6bc7e-eebf-4623-9f26-04574067334f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-09-07 11:45:29 +0000 UTC FinishedAt: 2026-09-07 12:02:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmcb8q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CATC","USB_NET_DRIVERS","USB","NET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["catc_rx_done"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CATC","USB_NET_DRIVERS","USB","NET"],"series_id":"aec6bc7e-eebf-4623-9f26-04574067334f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-09-07 11:45:29 +0000 UTC FinishedAt: 2026-09-07 12:02:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*79e4131b-b471-49c0-8b38-04bf998bb56b,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-workflowmcb8q/series-workflowmcb8q-convert-artifact-2515320293/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": "3575a4a4-1c0d-4965-b605-f4bd1be8ab52", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmcb8q/series-workflowmcb8q-build-action-841978417/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmcb8q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CATC","USB_NET_DRIVERS","USB","NET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["catc_rx_done"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CATC","USB_NET_DRIVERS","USB","NET"],"series_id":"aec6bc7e-eebf-4623-9f26-04574067334f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-09-07 11:45:29 +0000 UTC FinishedAt: 2026-09-07 12:02:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*79e4131b-b471-49c0-8b38-04bf998bb56b,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-workflowmcb8q/series-workflowmcb8q-convert-artifact-2515320293/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": "3575a4a4-1c0d-4965-b605-f4bd1be8ab52", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmcb8q/series-workflowmcb8q-build-action-841978417/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmcb8q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CATC","USB_NET_DRIVERS","USB","NET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["catc_rx_done"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CATC","USB_NET_DRIVERS","USB","NET"],"series_id":"aec6bc7e-eebf-4623-9f26-04574067334f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-09-07 12:02:40 +0000 UTC FinishedAt: 2026-09-07 12:02:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmcb8q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CATC","USB_NET_DRIVERS","USB","NET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["catc_rx_done"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CATC","USB_NET_DRIVERS","USB","NET"],"series_id":"aec6bc7e-eebf-4623-9f26-04574067334f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-09-07 12:02:40 +0000 UTC FinishedAt: 2026-09-07 12:02:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmcb8q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CATC","USB_NET_DRIVERS","USB","NET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["catc_rx_done"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CATC","USB_NET_DRIVERS","USB","NET"],"series_id":"aec6bc7e-eebf-4623-9f26-04574067334f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-09-07 12:02:40 +0000 UTC FinishedAt: 2026-09-07 12:04:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmcb8q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CATC","USB_NET_DRIVERS","USB","NET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["catc_rx_done"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CATC","USB_NET_DRIVERS","USB","NET"],"series_id":"aec6bc7e-eebf-4623-9f26-04574067334f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-09-07 12:02:40 +0000 UTC FinishedAt: 2026-09-07 12:04:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3575a4a4-1c0d-4965-b605-f4bd1be8ab52,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmcb8q/series-workflowmcb8q-build-action-841978417/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowmcb8q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CATC","USB_NET_DRIVERS","USB","NET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["catc_rx_done"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CATC","USB_NET_DRIVERS","USB","NET"],"series_id":"aec6bc7e-eebf-4623-9f26-04574067334f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-09-07 12:04:40 +0000 UTC FinishedAt: 2026-09-07 13:03:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmcb8q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CATC","USB_NET_DRIVERS","USB","NET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["catc_rx_done"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CATC","USB_NET_DRIVERS","USB","NET"],"series_id":"aec6bc7e-eebf-4623-9f26-04574067334f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-09-07 12:04:40 +0000 UTC FinishedAt: 2026-09-07 13:03:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["catc_rx_done"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*7cc00adc-9627-4b75-96e1-af8182c9a0c9,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3575a4a4-1c0d-4965-b605-f4bd1be8ab52,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmcb8q/series-workflowmcb8q-build-action-3859338296/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmcb8q/series-workflowmcb8q-build-action-841978417/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowmcb8q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CATC","USB_NET_DRIVERS","USB","NET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["catc_rx_done"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CATC","USB_NET_DRIVERS","USB","NET"],"series_id":"aec6bc7e-eebf-4623-9f26-04574067334f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-09-07 12:04:40 +0000 UTC FinishedAt: 2026-09-07 12:04:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmcb8q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CATC","USB_NET_DRIVERS","USB","NET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["catc_rx_done"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CATC","USB_NET_DRIVERS","USB","NET"],"series_id":"aec6bc7e-eebf-4623-9f26-04574067334f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-09-07 12:04:40 +0000 UTC FinishedAt: 2026-09-07 12:04:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["catc_rx_done"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmcb8q/series-workflowmcb8q-convert-artifact-822417514/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmcb8q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CATC","USB_NET_DRIVERS","USB","NET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["catc_rx_done"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CATC","USB_NET_DRIVERS","USB","NET"],"series_id":"aec6bc7e-eebf-4623-9f26-04574067334f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-09-07 12:04:40 +0000 UTC FinishedAt: 2026-09-07 12:04:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmcb8q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CATC","USB_NET_DRIVERS","USB","NET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["catc_rx_done"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CATC","USB_NET_DRIVERS","USB","NET"],"series_id":"aec6bc7e-eebf-4623-9f26-04574067334f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-09-07 12:04:40 +0000 UTC FinishedAt: 2026-09-07 12:04:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmcb8q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CATC","USB_NET_DRIVERS","USB","NET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["catc_rx_done"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CATC","USB_NET_DRIVERS","USB","NET"],"series_id":"aec6bc7e-eebf-4623-9f26-04574067334f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-09-07 12:04:40 +0000 UTC FinishedAt: 2026-09-07 12:04:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmcb8q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CATC","USB_NET_DRIVERS","USB","NET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["catc_rx_done"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CATC","USB_NET_DRIVERS","USB","NET"],"series_id":"aec6bc7e-eebf-4623-9f26-04574067334f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-09-07 12:04:50 +0000 UTC FinishedAt: 2026-09-07 13:03:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmcb8q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CATC","USB_NET_DRIVERS","USB","NET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["catc_rx_done"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31f961de2f90fbf52eb2d4e15b3eeaa09f9b4fc2","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CATC","USB_NET_DRIVERS","USB","NET"],"series_id":"aec6bc7e-eebf-4623-9f26-04574067334f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-09-07 12:04:50 +0000 UTC FinishedAt: 2026-09-07 13:03:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*7cc00adc-9627-4b75-96e1-af8182c9a0c9,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3575a4a4-1c0d-4965-b605-f4bd1be8ab52,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmcb8q/series-workflowmcb8q-build-action-3859338296/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmcb8q/series-workflowmcb8q-build-action-841978417/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmcb8q/series-workflowmcb8q-convert-artifact-822417514/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}