Name: series-workflow85dxk Phase: Succeeded StartedAt: 2026-07-01 07:53:57 +0000 UTC FinishedAt: 2026-07-01 10:09:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow85dxk[0] Phase: Succeeded StartedAt: 2026-07-01 07:53:57 +0000 UTC FinishedAt: 2026-07-01 08:21:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflow85dxk[0].run-triage Phase: Succeeded StartedAt: 2026-07-01 07:53:57 +0000 UTC FinishedAt: 2026-07-01 08:21:02 +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": "f456c1922c49e6be5ce407ddb74a6e61af5b65cf", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "USB_USBNET", "USB_NET_AX8817X", "USB_LAN78XX" ], "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": "f456c1922c49e6be5ce407ddb74a6e61af5b65cf", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "USB_USBNET", "USB_NET_AX8817X", "USB_LAN78XX" ], "series_id": "d16b0cb9-d7a7-409c-9cdf-0dcc16f65c0a" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "phylink_ethtool_ksettings_set" ], "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+CgkJCTx0ZD4yMDI2LzA3LzAxIDA4OjE5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTQl9VU0JORVQmIzM0OywKICAgICYjMzQ7VVNCX05FVF9BWDg4MTdYJiMzNDssCiAgICAmIzM0O1VTQl9MQU43OFhYJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIHZhbGlkYXRpb24gY2hlY2sgaW4gcGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXQgdG8gZW5zdXJlIHRoYXQgdGhlIHJlcXVlc3RlZCBzcGVlZCBhbmQgZHVwbGV4IHNldHRpbmdzIGFyZSBzdXBwb3J0ZWQgYnkgdGhlIFBIWSBjYXBhYmlsaXRpZXMgYmVmb3JlIGFwcGx5aW5nIHRoZW0uIFRoaXMgcHJldmVudHMgaW52YWxpZCBjb25maWd1cmF0aW9ucyBmcm9tIGJlaW5nIHNldCB2aWEgZXRodG9vbC4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB0aHJvdWdoIFVTQiBuZXR3b3JrIGRyaXZlcnMgdGhhdCB1c2UgcGh5bGluayAoZS5nLiwgQVNJWCwgTEFONzhYWCkgd2hpY2ggY2FuIGJlIGVtdWxhdGVkIHZpYSBVU0IgZ2FkZ2V0L2R1bW15X2hjZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwODoxOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDY2MjAzYTEyYzRjODE3YzcxNzFhMjJiOGI3YTIwZWI5OTI1YmMyZjRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAxIDA4OjE5OjI2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXG5pbmRleCAwODdhYzYzZjkxOTNkNy4uMjJmOWJiZDM4MWJkNzIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXG5AQCAtMjk4OSw2ICYjNDM7Mjk4OSwxMCBAQCBpbnQgcGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXQoc3RydWN0IHBoeWxpbmsgKnBsLFxuIFx0aWYgKHBsLVx1MDAzZXBoeWRldikge1xuIFx0XHRzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyBwaHlfa3NldCA9ICprc2V0O1xuIFxuJiM0MztcdFx0aWYgKCFwaHlfY2Fwc19sb29rdXAoa3NldC1cdTAwM2ViYXNlLnNwZWVkLCBrc2V0LVx1MDAzZWJhc2UuZHVwbGV4LFxuJiM0MztcdFx0XHRcdCAgICAgcGwtXHUwMDNlc3VwcG9ydGVkLCB0cnVlKSlcbiYjNDM7XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1xuIFx0XHRsaW5rbW9kZV9hbmQocGh5X2tzZXQubGlua19tb2Rlcy5hZHZlcnRpc2luZyxcbiBcdFx0XHQgICAgIHBoeV9rc2V0LmxpbmtfbW9kZXMuYWR2ZXJ0aXNpbmcsXG4gXHRcdFx0ICAgICBwbC1cdTAwM2VzdXBwb3J0ZWQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA4OjE5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTQl9VU0JORVQmIzM0OywKICAgICYjMzQ7VVNCX05FVF9BWDg4MTdYJiMzNDssCiAgICAmIzM0O1VTQl9MQU43OFhYJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIHZhbGlkYXRpb24gY2hlY2sgaW4gcGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXQgdG8gZW5zdXJlIHRoYXQgdGhlIHJlcXVlc3RlZCBzcGVlZCBhbmQgZHVwbGV4IHNldHRpbmdzIGFyZSBzdXBwb3J0ZWQgYnkgdGhlIFBIWSBjYXBhYmlsaXRpZXMgYmVmb3JlIGFwcGx5aW5nIHRoZW0uIFRoaXMgcHJldmVudHMgaW52YWxpZCBjb25maWd1cmF0aW9ucyBmcm9tIGJlaW5nIHNldCB2aWEgZXRodG9vbC4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB0aHJvdWdoIFVTQiBuZXR3b3JrIGRyaXZlcnMgdGhhdCB1c2UgcGh5bGluayAoZS5nLiwgQVNJWCwgTEFONzhYWCkgd2hpY2ggY2FuIGJlIGVtdWxhdGVkIHZpYSBVU0IgZ2FkZ2V0L2R1bW15X2hjZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNjYyMDNhMTJjNGM4MTdjNzE3MWEyMmI4YjdhMjBlYjk5MjViYzJmNApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgSnVsIDEgMDg6MTk6MjYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYwppbmRleCAwODdhYzYzZjkxOTNkNy4uMjJmOWJiZDM4MWJkNzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYwpAQCAtMjk4OSw2ICYjNDM7Mjk4OSwxMCBAQCBpbnQgcGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXQoc3RydWN0IHBoeWxpbmsgKnBsLAogCWlmIChwbC0mZ3Q7cGh5ZGV2KSB7CiAJCXN0cnVjdCBldGh0b29sX2xpbmtfa3NldHRpbmdzIHBoeV9rc2V0ID0gKmtzZXQ7CiAKJiM0MzsJCWlmICghcGh5X2NhcHNfbG9va3VwKGtzZXQtJmd0O2Jhc2Uuc3BlZWQsIGtzZXQtJmd0O2Jhc2UuZHVwbGV4LAomIzQzOwkJCQkgICAgIHBsLSZndDtzdXBwb3J0ZWQsIHRydWUpKQomIzQzOwkJCXJldHVybiAtRUlOVkFMOwomIzQzOwogCQlsaW5rbW9kZV9hbmQocGh5X2tzZXQubGlua19tb2Rlcy5hZHZlcnRpc2luZywKIAkJCSAgICAgcGh5X2tzZXQubGlua19tb2Rlcy5hZHZlcnRpc2luZywKIAkJCSAgICAgcGwtJmd0O3N1cHBvcnRlZCk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA4OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4NzYKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUEhZTGluayBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNgLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIHNlZW1zIHRvIGJlIGluIHRoZSBgcGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXRgIGZ1bmN0aW9uLiBUaGV5JiMzOTt2ZSBhZGRlZCBhIHZhbGlkYXRpb24gY2hlY2sgcmlnaHQgaGVyZToKCmBgYGMKCQlpZiAoIXBoeV9jYXBzX2xvb2t1cChrc2V0LSZndDtiYXNlLnNwZWVkLCBrc2V0LSZndDtiYXNlLmR1cGxleCwKCQkJCSAgICAgcGwtJmd0O3N1cHBvcnRlZCwgdHJ1ZSkpCgkJCXJldHVybiAtRUlOVkFMOwpgYGAKCkVzc2VudGlhbGx5LCB0aGV5JiMzOTtyZSBpbnRyb2R1Y2luZyBhIGNoZWNrIHRvIGVuc3VyZSB0aGUgcmVxdWVzdGVkIHNwZWVkIGFuZCBkdXBsZXggc2V0dGluZ3MgYXJlIGFjdHVhbGx5ICpzdXBwb3J0ZWQqIGJ5IHRoZSBQSFkgYmVmb3JlIGFwcGx5aW5nIHRoZSBldGh0b29sIGtzZXR0aW5ncy4gVGhpcyBpcyBhIGNsZWFyIGZ1bmN0aW9uYWwgZW5oYW5jZW1lbnQuICBUaGV5JiMzOTtyZSB1c2luZyBgcGh5X2NhcHNfbG9va3VwYCB0byBwZXJmb3JtIHRoaXMgdmFsaWRhdGlvbiwgd2hpY2ggSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50by4gSXQmIzM5O3MgZ29vZCBwcmFjdGljZSB0byB2YWxpZGF0ZSB0aGVzZSBzZXR0aW5ncywgcHJldmVudGluZyB1bmV4cGVjdGVkIGJlaGF2aW9yIG9yIGVycm9ycyBsYXRlciBvbi4gSSYjMzk7bGwgbmVlZCB0byBjb25maXJtIHdoYXQgYHBsLSZndDtzdXBwb3J0ZWRgIHJlZmVycyB0byBpbiB0aGlzIGNvbnRleHQuIElzIGl0IHRoZSBpbnRlcnNlY3Rpb24gb2YgY2FwYWJpbGl0aWVzIGFkdmVydGlzZWQgYnkgYm90aCBQSFkgYW5kIE1BQz8gT3IgdGhlIGNhcGFiaWxpdGllcyBmcm9tIG9uZSBzaWRlPyBMZXQgbWUgZGl2ZSBkZWVwZXIgdG8gZW5zdXJlIHRoaXMgd29ya3MgYXMgZXhwZWN0ZWQgYW5kIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgcmVncmVzc2lvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDg6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5bGluay5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9Mjk1NT1zdGF0aWMgYm9vbCBwaHlsaW5rX3ZhbGlkYXRlX3Bjc19pbmJhbmRfYXV0b25lZyhzdHJ1Y3QgcGh5bGluayAqcGwsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yOTc1LS8qKlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyOTc2OiAqIHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0KCkgLSBzZXQgdGhlIGxpbmsgc2V0dGluZ3NcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjk3Ny0gKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjk3OS0gKi9cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6Mjk4MDppbnQgcGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXQoc3RydWN0IHBoeWxpbmsgKnBsLFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yOTgxLVx0XHRcdFx0ICBjb25zdCBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqa3NldClcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNDYtfVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMTQ3OkVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0KTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE0OC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwODoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjA3CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkFuYWx5emluZyB0aGUgUGh5bGluayBhbmQgRXRodG9vbCBSZWxhdGlvbnNoaXAqKgoKQWxyaWdodCwgc28gYHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0YCBpcyBhIGtleSBmdW5jdGlvbiwgYW4gZXhwb3J0ZWQgc3ltYm9sLCByaWdodD8gVGhhdCBtZWFucyBpdCYjMzk7cyBkZXNpZ25lZCB0byBiZSB1c2VkIGV4dGVybmFsbHksIHByaW1hcmlseSBieSBuZXR3b3JrIGRldmljZSBkcml2ZXJzIHRvIGludGVyZmFjZSB3aXRoIGV0aHRvb2wmIzM5O3Mgc2V0dGluZ3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gYHBoeWxpbmsuY2AuIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBmaWd1cmUgb3V0IHdoaWNoIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhY3R1YWxseSAqZW5hYmxlKiBgcGh5bGluay5jYCBpbiB0aGUgZmlyc3QgcGxhY2UuIEtub3dpbmcgdGhlIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHdoZW4gYW5kIGhvdyB0aGlzIGZ1bmN0aW9uIGlzIGFjdHVhbGx5IHJlbGV2YW50IGluIHRoZSBicm9hZGVyIG5ldHdvcmsgc3RhY2suIEl0JiMzOTtzIHRpbWUgdG8gZGlnIGludG8gdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb25zIGFuZCBzZWUgd2hhdCB0cmlnZ2VycyB0aGUgaW5jbHVzaW9uIG9mIHRoYXQgYHBoeWxpbmtgIG1vZHVsZS4gVGhpcyBpcyBhbGwgYWJvdXQgdHJhY2luZyB0aGUgZGVwZW5kZW5jeSBjaGFpbiwgYW5kIHVuZGVyc3RhbmRpbmcgd2hlcmUgdGhpcyBldGh0b29sIGZ1bmN0aW9uIGZhbGxzIGluIHRoZSBncmFuZCBzY2hlbWUgb2YgdGhpbmdzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA4OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BoeWxpbmsubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvTWFrZWZpbGU9MTg9b2JqLSQoQ09ORklHX1BIWUxJQilcdFx0JiM0Mzs9IG1kaW9fYnVzLm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZToxOTpvYmotJChDT05GSUdfUEhZTElOSylcdFx0JiM0Mzs9IHBoeWxpbmsub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTIwLW9iai0kKENPTkZJR19QSFlMSUIpXHRcdCYjNDM7PSBsaWJwaHkub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA4OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5NzgKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczoKCioqRGl2aW5nIGludG8gUEhZTElOSyBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24gSSYjMzk7bSB3b3JraW5nIHdpdGggaXMgYFBIWUxJTktgLiBSaWdodCwgZ290IGl0LiBOb3csIGdpdmVuIHRoYXQgaXQmIzM5O3MgYFBIWUxJTktgLCBJIG5lZWQgdG8gaW1tZWRpYXRlbHkgdW5kZXJzdGFuZCBpdHMgY2FwYWJpbGl0aWVzLiBNeSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBjb25zdWx0IGBwaHlfY2Fwc19sb29rdXBgLiBUaGF0IGZ1bmN0aW9uIGlzIGNyaXRpY2FsIGluIHByb3ZpZGluZyBtZSB3aXRoIGEgc3BlY2lmaWMsIGNvbmNpc2UgYW5kIGZvY3VzZWQgdmlldyBvZiBhbGwgdGhlIGZlYXR1cmVzIGFuZCBsaW1pdGF0aW9ucyB0aGlzIGBQSFlMSU5LYCBjb25maWd1cmF0aW9uIGVudGFpbHMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgdGhvcm91Z2hseSwgZXNwZWNpYWxseSBnaXZlbiB0aGF0IFBIWUxJTksgd2lsbCBkZWZpbmUgbXkgZnVydGhlciBkZWNpc2lvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDg6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGh5X2NhcHNfbG9va3VwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHktY2Fwcy5oPTU1PWNvbnN0IHN0cnVjdCBsaW5rX2NhcGFiaWxpdGllcyAqXG5kcml2ZXJzL25ldC9waHkvcGh5LWNhcHMuaDo1NjpwaHlfY2Fwc19sb29rdXBfYnlfbGlua21vZGUoY29uc3QgdW5zaWduZWQgbG9uZyAqbGlua21vZGVzKTtcbmRyaXZlcnMvbmV0L3BoeS9waHktY2Fwcy5oLTU3LVxuZHJpdmVycy9uZXQvcGh5L3BoeS1jYXBzLmg9NTg9Y29uc3Qgc3RydWN0IGxpbmtfY2FwYWJpbGl0aWVzICpcbmRyaXZlcnMvbmV0L3BoeS9waHktY2Fwcy5oOjU5OnBoeV9jYXBzX2xvb2t1cF9ieV9saW5rbW9kZV9yZXYoY29uc3QgdW5zaWduZWQgbG9uZyAqbGlua21vZGVzLCBib29sIGZkeF9vbmx5KTtcbmRyaXZlcnMvbmV0L3BoeS9waHktY2Fwcy5oLTYwLVxuZHJpdmVycy9uZXQvcGh5L3BoeS1jYXBzLmg9NjE9Y29uc3Qgc3RydWN0IGxpbmtfY2FwYWJpbGl0aWVzICpcbmRyaXZlcnMvbmV0L3BoeS9waHktY2Fwcy5oOjYyOnBoeV9jYXBzX2xvb2t1cChpbnQgc3BlZWQsIHVuc2lnbmVkIGludCBkdXBsZXgsIGNvbnN0IHVuc2lnbmVkIGxvbmcgKnN1cHBvcnRlZCxcbmRyaXZlcnMvbmV0L3BoeS9waHktY2Fwcy5oLTYzLVx0XHRib29sIGV4YWN0KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYz0zNDI9dm9pZCBwaHlfcmVzb2x2ZV9hbmVnX2xpbmttb2RlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmMtMzQ4LVxuZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmM6MzQ5Olx0YyA9IHBoeV9jYXBzX2xvb2t1cF9ieV9saW5rbW9kZShjb21tb24pO1xuZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmMtMzUwLVx0aWYgKGMpIHtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYz0zNjg9dm9pZCBwaHlfY2hlY2tfZG93bnNoaWZ0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmMtMzgxLVxuZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmM6MzgyOlx0YyA9IHBoeV9jYXBzX2xvb2t1cF9ieV9saW5rbW9kZShjb21tb24pO1xuZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmMtMzgzLVx0aWYgKGMpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmM9Mzk1PXN0YXRpYyBpbnQgcGh5X3Jlc29sdmVfbWluX3NwZWVkKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGJvb2wgZmR4X29ubHkpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmMtNDAxLVxuZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmM6NDAyOlx0YyA9IHBoeV9jYXBzX2xvb2t1cF9ieV9saW5rbW9kZV9yZXYoY29tbW9uLCBmZHhfb25seSk7XG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYy00MDMtXHRpZiAoYylcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5LmM9MjU2PXN0YXRpYyB2b2lkIHBoeV9zYW5pdGl6ZV9zZXR0aW5ncyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHkuYy0yNTktXG5kcml2ZXJzL25ldC9waHkvcGh5LmM6MjYwOlx0YyA9IHBoeV9jYXBzX2xvb2t1cChwaHlkZXYtXHUwMDNlc3BlZWQsIHBoeWRldi1cdTAwM2VkdXBsZXgsIHBoeWRldi1cdTAwM2VzdXBwb3J0ZWQsXG5kcml2ZXJzL25ldC9waHkvcGh5LmMtMjYxLVx0XHRcdCAgICBmYWxzZSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmM9MTIyPXNpemVfdCBwaHlfY2Fwc19zcGVlZHModW5zaWduZWQgaW50ICpzcGVlZHMsIHNpemVfdCBzaXplLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jLTE0MC0vKipcbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jOjE0MTogKiBwaHlfY2Fwc19sb29rdXBfYnlfbGlua21vZGUoKSAtIExvb2t1cCB0aGUgZmFzdGVzdCBtYXRjaGluZyBsaW5rX2NhcGFiaWxpdGllc1xuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmMtMTQyLSAqIEBsaW5rbW9kZXM6IExpbmttb2RlcyB0byBtYXRjaCBhZ2FpbnN0XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmM9MTQ4PWNvbnN0IHN0cnVjdCBsaW5rX2NhcGFiaWxpdGllcyAqXG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYzoxNDk6cGh5X2NhcHNfbG9va3VwX2J5X2xpbmttb2RlKGNvbnN0IHVuc2lnbmVkIGxvbmcgKmxpbmttb2RlcylcbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jLTE1MC17XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmMtMTYwLS8qKlxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmM6MTYxOiAqIHBoeV9jYXBzX2xvb2t1cF9ieV9saW5rbW9kZV9yZXYoKSAtIExvb2t1cCB0aGUgc2xvd2VzdCBtYXRjaGluZyBsaW5rX2NhcGFiaWxpdGllc1xuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmMtMTYyLSAqIEBsaW5rbW9kZXM6IExpbmttb2RlcyB0byBtYXRjaCBhZ2FpbnN0XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmM9MTY5PWNvbnN0IHN0cnVjdCBsaW5rX2NhcGFiaWxpdGllcyAqXG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYzoxNzA6cGh5X2NhcHNfbG9va3VwX2J5X2xpbmttb2RlX3Jldihjb25zdCB1bnNpZ25lZCBsb25nICpsaW5rbW9kZXMsIGJvb2wgZmR4X29ubHkpXG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYy0xNzEte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jLTE4NS0vKipcbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jOjE4NjogKiBwaHlfY2Fwc19sb29rdXAoKSAtIExvb2t1cCBjYXBhYmlsaXRpZXMgYnkgc3BlZWQvZHVwbGV4IHRoYXQgbWF0Y2hlcyBhIG1hc2tcbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jLTE4Ny0gKiBAc3BlZWQ6IFNwZWVkIHRvIG1hdGNoXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmM9MjA5PWNvbnN0IHN0cnVjdCBsaW5rX2NhcGFiaWxpdGllcyAqXG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYzoyMTA6cGh5X2NhcHNfbG9va3VwKGludCBzcGVlZCwgdW5zaWduZWQgaW50IGR1cGxleCwgY29uc3QgdW5zaWduZWQgbG9uZyAqc3VwcG9ydGVkLFxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmMtMjExLVx0XHRib29sIGV4YWN0KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jLTIzNS19XG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYzoyMzY6RVhQT1JUX1NZTUJPTF9HUEwocGh5X2NhcHNfbG9va3VwKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jLTIzNy1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTIzMDk9aW50IF9fZ2VucGh5X2NvbmZpZ19hbmVnKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGJvb2wgY2hhbmdlZClcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTIzMzctXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjIzMzg6XHRcdGMgPSBwaHlfY2Fwc19sb29rdXAocGh5ZGV2LVx1MDAzZXNwZWVkLCBwaHlkZXYtXHUwMDNlZHVwbGV4LFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0yMzM5LVx0XHRcdFx0ICAgIHBoeWRldi1cdTAwM2VzdXBwb3J0ZWQsIHRydWUpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NjYwPXN0YXRpYyBpbnQgcGh5bGlua19wYXJzZV9maXhlZGxpbmsoc3RydWN0IHBoeWxpbmsgKnBsLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNzQyLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo3NDM6XHRjID0gcGh5X2NhcHNfbG9va3VwKHBsLVx1MDAzZWxpbmtfY29uZmlnLnNwZWVkLCBwbC1cdTAwM2VsaW5rX2NvbmZpZy5kdXBsZXgsXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTc0NC1cdFx0XHQgICAgcGwtXHUwMDNlc3VwcG9ydGVkLCB0cnVlKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTE4MDE9aW50IHBoeWxpbmtfc2V0X2ZpeGVkX2xpbmsoc3RydWN0IHBoeWxpbmsgKnBsLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTgxMC1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTgxMTpcdGMgPSBwaHlfY2Fwc19sb29rdXAoc3RhdGUtXHUwMDNlc3BlZWQsIHN0YXRlLVx1MDAzZWR1cGxleCxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTgxMi1cdFx0XHQgICAgcGwtXHUwMDNlc3VwcG9ydGVkLCB0cnVlKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI5ODA9aW50IHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0KHN0cnVjdCBwaHlsaW5rICpwbCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI5OTEtXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI5OTI6XHRcdGlmICghcGh5X2NhcHNfbG9va3VwKGtzZXQtXHUwMDNlYmFzZS5zcGVlZCwga3NldC1cdTAwM2ViYXNlLmR1cGxleCxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjk5My1cdFx0XHRcdCAgICAgcGwtXHUwMDNlc3VwcG9ydGVkLCB0cnVlKSlcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMwMzEtXHRcdCAqL1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMDMyOlx0XHRjID0gcGh5X2NhcHNfbG9va3VwKGtzZXQtXHUwMDNlYmFzZS5zcGVlZCwga3NldC1cdTAwM2ViYXNlLmR1cGxleCxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzAzMy1cdFx0XHRcdCAgICBwbC1cdTAwM2VzdXBwb3J0ZWQsIGZhbHNlKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwODoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDIzCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMTE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0YCBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBgcGh5X2NhcHNfbG9va3VwYCBjaGVjayB3aXRoaW4gYHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0YC4gVGhpcyBmdW5jdGlvbiBpcywgb2YgY291cnNlLCBhY2Nlc3NpYmxlIHRocm91Z2ggZXRodG9vbCYjMzk7cyBpb2N0bHMgYW5kIG5ldGxpbmsgY29tbWFuZHMsIHNwZWNpZmljYWxseSBmb3IgbmV0d29yayBkZXZpY2VzIHRoYXQgbGV2ZXJhZ2UgcGh5bGluay4gTXkgaW1tZWRpYXRlIGNvbmNlcm4sIGFzIGFsd2F5cyB3aGVuIGRlYWxpbmcgd2l0aCBrZXJuZWwtbGV2ZWwgY2hhbmdlcywgaXMgdGhlIHNjb3BlIG9mIHRoaXMuIEkgbmVlZCB0byB0aGluayBhYm91dCBwb3RlbnRpYWwgYXR0YWNrIHN1cmZhY2VzIGFuZCB3aGV0aGVyIHRoaXMgbmV3IGNoZWNrIGludHJvZHVjZXMgYW55IG5ldyB2dWxuZXJhYmlsaXRpZXMgb3Igd2Vha25lc3Nlcy4KCkNvdWxkIHRoaXMgYmUgdHJpZ2dlcmVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cz8gSG1tLCBpdCYjMzk7cyBjZXJ0YWlubHkgcGxhdXNpYmxlLiBXZSBoYXZlIHZpcnR1YWwgbmV0d29yayBkcml2ZXJzIGFuZCBwZXJoYXBzIGV2ZW4gZHVtbXkgZHJpdmVycyB0aGF0IG1pZ2h0IGludGVncmF0ZSBwaHlsaW5rIGluIHRoZWlyIGRlc2lnbi4gSSBuZWVkIHRvIGNvbnNpZGVyIHRoYXQsIG9yIHdlIGNvdWxkIGFsd2F5cyBmdXp6IHRoZSBldGh0b29sIG5ldGxpbmsvaW9jdGwgaW50ZXJmYWNlIG9uIHZhcmlvdXMgZGV2aWNlcyBhbmQgc2VlIGlmIHdlIGNhbiB0cmlnZ2VyIHRoZSBjaGVjay4KClRoZSBuZXh0IHBvaW50IEkgbmVlZCB0byBjb25zaWRlciBpcyB3aGV0aGVyIGEgdmlydHVhbCBkcml2ZXIgY3VycmVudGx5IHVzZXMgcGh5bGluay4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IEkgdW5kZXJzdGFuZCB0aGUgaW1wbGVtZW50YXRpb24gY29ycmVjdGx5LiBJIHdpbGwgaGF2ZSB0byBzdGFydCBieSBjaGVja2luZyB3aGljaCBkcml2ZXJzIGFyZSBjdXJyZW50bHkgdXNpbmcgcGh5bGluaywgdG8gZGV0ZXJtaW5lIHRoZSBsaWtlbGlob29kIG9mIGEgdmlydHVhbCBkcml2ZXIgYmVpbmcgaW5jbHVkZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA4OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BoeWxpbmtfY3JlYXRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYz0xMTI4PXN0YXRpYyBpbnQgYWx0ZXJhX3RzZV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYy0xNDE1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jOjE0MTY6XHRwcml2LVx1MDAzZXBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZwcml2LVx1MDAzZXBoeWxpbmtfY29uZmlnLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jLTE0MTctXHRcdFx0XHQgICAgICAgb2ZfZndub2RlX2hhbmRsZShwcml2LVx1MDAzZWRldmljZS1cdTAwM2VvZl9ub2RlKSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jPTEwNzQ9c3RhdGljIGludCBhZzcxeHhfcGh5bGlua19zZXR1cChzdHJ1Y3QgYWc3MXh4ICphZylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTExMDgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjExMDk6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2YWctXHUwMDNlcGh5bGlua19jb25maWcsIGFnLVx1MDAzZXBkZXYtXHUwMDNlZGV2LmZ3bm9kZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMTExMC1cdFx0XHRcdCBhZy1cdTAwM2VwaHlfaWZfbW9kZSwgXHUwMDI2YWc3MXh4X3BoeWxpbmtfbWFjX29wcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz0xMDIzPXN0YXRpYyBpbnQgbWFjYl9taWlfcHJvYmUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTEwODUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjEwODY6XHRicC1cdTAwM2VwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2YnAtXHUwMDNlcGh5bGlua19jb25maWcsIGJwLVx1MDAzZXBkZXYtXHUwMDNlZGV2LmZ3bm9kZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTA4Ny1cdFx0XHRcdCAgICAgYnAtXHUwMDNlcGh5X2ludGVyZmFjZSwgXHUwMDI2bWFjYl9waHlsaW5rX29wcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvZHBhYV9ldGguYz0yMDI9c3RhdGljIGludCBkcGFhX25ldGRldl9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRfZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL2RwYWFfZXRoLmMtMjc1LVx0bWFjX2Rldi1cdTAwM2V1cGRhdGVfc3BlZWQgPSBkcGFhX2V0aF9jZ3Jfc2V0X3NwZWVkO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvZHBhYV9ldGguYzoyNzY6XHRtYWNfZGV2LVx1MDAzZXBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZtYWNfZGV2LVx1MDAzZXBoeWxpbmtfY29uZmlnLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvZHBhYV9ldGguYy0yNzctXHRcdFx0XHRcdCAgZGV2X2Z3bm9kZShtYWNfZGV2LVx1MDAzZWRldiksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jPTU2MD1pbnQgZHBhYTJfbWFjX2Nvbm5lY3Qoc3RydWN0IGRwYWEyX21hYyAqbWFjKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYy02MjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmM6NjI1Olx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNm1hYy1cdTAwM2VwaHlsaW5rX2NvbmZpZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYy02MjYtXHRcdFx0XHQgZHBtYWNfbm9kZSwgbWFjLVx1MDAzZWlmX21vZGUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jPTk3MT1zdGF0aWMgaW50IGVuZXRjNF9saW5rX2luaXQoc3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtOTg5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jOjk5MDpcdGVyciA9IGVuZXRjX3BoeWxpbmtfY3JlYXRlKHByaXYsIG5vZGUsIFx1MDAyNmVuZXRjX3BsX21hY19vcHMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk5MS1cdGlmIChlcnIpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy05OTItXHRcdGRldl9lcnIoZGV2LCBcJiMzNDtGYWlsZWQgdG8gY3JlYXRlIHBoeWxpbmtcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jOjk5MzpcdFx0Z290byBlcnJfcGh5bGlua19jcmVhdGU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtOTk0LVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy05OTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM6OTk4OmVycl9waHlsaW5rX2NyZWF0ZTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy05OTktXHRlbmV0Y19tZGlvYnVzX2Rlc3Ryb3kocGYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jPTg0Nz1zdGF0aWMgaW50IGVuZXRjX3BmX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTkyOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jOjkzMDpcdGVyciA9IGVuZXRjX3BoeWxpbmtfY3JlYXRlKHByaXYsIG5vZGUsIFx1MDAyNmVuZXRjX21hY19waHlsaW5rX29wcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy05MzEtXHRpZiAoZXJyKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM6OTMyOlx0XHRnb3RvIGVycl9waHlsaW5rX2NyZWF0ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTkzMy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy05NDEtXHRlbmV0Y19waHlsaW5rX2Rlc3Ryb3kocHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYzo5NDI6ZXJyX3BoeWxpbmtfY3JlYXRlOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtOTQzLVx0ZW5ldGNfbWRpb2J1c19kZXN0cm95KHBmKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM9MzEyPUVYUE9SVF9TWU1CT0xfR1BMKGVuZXRjX21kaW9idXNfZGVzdHJveSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMzEzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jOjMxNDppbnQgZW5ldGNfcGh5bGlua19jcmVhdGUoc3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdiwgc3RydWN0IGRldmljZV9ub2RlICpub2RlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTMxNS1cdFx0XHQgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyAqb3BzKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0zMzctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM6MzM4Olx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNnBmLVx1MDAzZXBoeWxpbmtfY29uZmlnLCBvZl9md25vZGVfaGFuZGxlKG5vZGUpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTMzOS1cdFx0XHRcdCBwZi1cdTAwM2VpZl9tb2RlLCBvcHMpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0zNDgtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jOjM0OTpFWFBPUlRfU1lNQk9MX0dQTChlbmV0Y19waHlsaW5rX2NyZWF0ZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMzUwLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uaD0xMj12b2lkIGVuZXRjX21kaW9idXNfZGVzdHJveShzdHJ1Y3QgZW5ldGNfcGYgKnBmKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uaDoxMzppbnQgZW5ldGNfcGh5bGlua19jcmVhdGUoc3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdiwgc3RydWN0IGRldmljZV9ub2RlICpub2RlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5oLTE0LVx0XHRcdCBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzICpvcHMpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L2ZzX2VuZXQtbWFpbi5jPTg1Mz1zdGF0aWMgaW50IGZzX2VuZXRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvZnNfZW5ldC1tYWluLmMtOTMyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvZnNfZW5ldC1tYWluLmM6OTMzOlx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNmZlcC1cdTAwM2VwaHlsaW5rX2NvbmZpZywgZGV2X2Z3bm9kZShmZXAtXHUwMDNlZGV2KSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L2ZzX2VuZXQtbWFpbi5jLTkzNC1cdFx0XHRcdCBwaHlfbW9kZSwgXHUwMDI2ZnNfZW5ldF9waHlsaW5rX21hY19vcHMpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS91Y2NfZ2V0aC5jPTM0MTk9c3RhdGljIGludCB1Y2NfZ2V0aF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlKiBvZmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvdWNjX2dldGguYy0zNTczLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3VjY19nZXRoLmM6MzU3NDpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZ1Z2V0aC1cdTAwM2VwaHlsaW5rX2NvbmZpZywgZGV2X2Z3bm9kZShcdTAwMjZkZXYtXHUwMDNlZGV2KSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS91Y2NfZ2V0aC5jLTM1NzUtXHRcdFx0XHQgcGh5X2ludGVyZmFjZSwgXHUwMDI2dWdldGhfbWFjX29wcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm5ldGEuYz01NDgwPXN0YXRpYyBpbnQgbXZuZXRhX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm5ldGEuYy01NTk4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm5ldGEuYzo1NTk5Olx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNnBwLVx1MDAzZXBoeWxpbmtfY29uZmlnLCBwZGV2LVx1MDAzZWRldi5md25vZGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bmV0YS5jLTU2MDAtXHRcdFx0XHQgcGh5X21vZGUsIFx1MDAyNm12bmV0YV9waHlsaW5rX29wcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMl9tYWluLmM9Njg0MD1zdGF0aWMgaW50IG12cHAyX3BvcnRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYy03MTQ3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMl9tYWluLmM6NzE0ODpcdFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNnBvcnQtXHUwMDNlcGh5bGlua19jb25maWcsIHBvcnRfZndub2RlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMl9tYWluLmMtNzE0OS1cdFx0XHRcdFx0IHBoeV9tb2RlLCBcdTAwMjZtdnBwMl9waHlsaW5rX29wcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9tYWluLmM9MzcwPXN0YXRpYyBpbnQgcHJlc3RlcmFfcG9ydF9zZnBfYmluZChzdHJ1Y3QgcHJlc3RlcmFfcG9ydCAqcG9ydClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX21haW4uYy00MTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX21haW4uYzo0MTc6XHRcdHBoeV9saW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2cG9ydC1cdTAwM2VwaHlfY29uZmlnLCBmd25vZGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX21haW4uYy00MTgtXHRcdFx0XHRcdCAgUEhZX0lOVEVSRkFDRV9NT0RFX0lOVEVSTkFMLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmM9NDgyMz1zdGF0aWMgaW50IG10a19hZGRfbWFjKHN0cnVjdCBtdGtfZXRoICpldGgsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYy00OTY3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYzo0OTY4Olx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNm1hYy1cdTAwM2VwaHlsaW5rX2NvbmZpZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMtNDk2OS1cdFx0XHRcdCBvZl9md25vZGVfaGFuZGxlKG1hYy1cdTAwM2VvZl9ub2RlKSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5jPTc0Nj1zdHJ1Y3QgbmV0X2RldmljZSAqZmJuaWNfbmV0ZGV2X2FsbG9jKHN0cnVjdCBmYm5pY19kZXYgKmZiZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5jLTgzNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmM6ODM1Olx0aWYgKGZibmljX3BoeWxpbmtfY3JlYXRlKG5ldGRldikpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmMtODM2LVx0XHRmcmVlX25ldGRldihuZXRkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2Lmg9MTExPWludCBmYm5pY19waHlsaW5rX2dldF9mZWNwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuaC0xMTItXHRcdFx0ICAgICAgIHN0cnVjdCBldGh0b29sX2ZlY3BhcmFtICpmZWNwYXJhbSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5oOjExMzppbnQgZmJuaWNfcGh5bGlua19jcmVhdGUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5oLTExNC12b2lkIGZibmljX3BoeWxpbmtfZGVzdHJveShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYz0xNzc9c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgZmJuaWNfcGh5bGlua19tYWNfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jLTE4Ni0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jOjE4NzogKiBmYm5pY19waHlsaW5rX2NyZWF0ZSAtIFBoeWxpbmsgZGV2aWNlIGNyZWF0aW9uXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYy0xODgtICogQG5ldGRldjogTmV0d29yayBEZXZpY2Ugc3RydWN0IHRvIGF0dGFjaCBwaHlsaW5rIGRldmljZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jLTE5Ni0gKiovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYzoxOTc6aW50IGZibmljX3BoeWxpbmtfY3JlYXRlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYy0xOTgte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jLTIzMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jOjIzMjpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZmYm4tXHUwMDNlcGh5bGlua19jb25maWcsIE5VTEwsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYy0yMzMtXHRcdFx0XHQgZmJuaWNfcGh5bGlua19zZWxlY3RfaW50ZXJmYWNlKGZibi1cdTAwM2VhdWkpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYz0zMTQyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzIGxhbjc0M3hfcGh5bGlua19tYWNfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zMTQ5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjMxNTA6c3RhdGljIGludCBsYW43NDN4X3BoeWxpbmtfY3JlYXRlKHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzE1MS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMxOTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MzE5MzpcdHBsID0gcGh5bGlua19jcmVhdGUoXHUwMDI2YWRhcHRlci1cdTAwM2VwaHlsaW5rX2NvbmZpZywgTlVMTCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zMTk0LVx0XHRcdCAgICBhZGFwdGVyLVx1MDAzZXBoeV9pbnRlcmZhY2UsIFx1MDAyNmxhbjc0M3hfcGh5bGlua19tYWNfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9MzY2ND1zdGF0aWMgaW50IGxhbjc0M3hfcGNpZGV2X3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zNzIzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjM3MjQ6XHRyZXQgPSBsYW43NDN4X3BoeWxpbmtfY3JlYXRlKGFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTM3MjUtXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9tYWluLmM9NzkxPXN0YXRpYyBpbnQgbGFuOTY2eF9wcm9iZV9wb3J0KHN0cnVjdCBsYW45NjZ4ICpsYW45NjZ4LCB1MzIgcCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X21haW4uYy04NTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X21haW4uYzo4NTY6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2cG9ydC1cdTAwM2VwaHlsaW5rX2NvbmZpZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfbWFpbi5jLTg1Ny1cdFx0XHRcdCBwb3J0bnAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbi5jPTMxMj1zdGF0aWMgaW50IHNwYXJ4NV9jcmVhdGVfcG9ydChzdHJ1Y3Qgc3Bhcng1ICpzcGFyeDUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbi5jLTM4OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X21haW4uYzozODk6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2c3B4NV9wb3J0LVx1MDAzZXBoeWxpbmtfY29uZmlnLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbi5jLTM5MC1cdFx0XHRcdCBvZl9md25vZGVfaGFuZGxlKGNvbmZpZy1cdTAwM2Vub2RlKSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYz0xNzc0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzIG9jZWxvdF9waHlsaW5rX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYy0xNzc5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmM6MTc4MDpzdGF0aWMgaW50IG9jZWxvdF9wb3J0X3BoeWxpbmtfY3JlYXRlKHN0cnVjdCBvY2Vsb3QgKm9jZWxvdCwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYy0xNzgxLVx0XHRcdFx0ICAgICAgc3RydWN0IGRldmljZV9ub2RlICpwb3J0bnApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmMtMTgyMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jOjE4MjE6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2cHJpdi1cdTAwM2VwaHlsaW5rX2NvbmZpZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE4MjItXHRcdFx0XHQgb2ZfZndub2RlX2hhbmRsZShwb3J0bnApLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jPTE4NDM9aW50IG9jZWxvdF9wcm9iZV9wb3J0KHN0cnVjdCBvY2Vsb3QgKm9jZWxvdCwgaW50IHBvcnQsIHN0cnVjdCByZWdtYXAgKnRhcmdldCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYy0xODc5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmM6MTg4MDpcdGVyciA9IG9jZWxvdF9wb3J0X3BoeWxpbmtfY3JlYXRlKG9jZWxvdCwgcG9ydCwgcG9ydG5wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE4ODEtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MTM4Nz1zdGF0aWMgaW50IHN0bW1hY19waHlsaW5rX3NldHVwKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTE0NzgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjE0Nzk6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoY29uZmlnLCBkZXZfZndub2RlKHByaXYtXHUwMDNlZGV2aWNlKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTQ4MC1cdFx0XHRcdCBwcml2LVx1MDAzZXBsYXQtXHUwMDNlcGh5X2ludGVyZmFjZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvdG40MF9waHkuYz00NT1pbnQgdG40MF9waHlfcmVnaXN0ZXIoc3RydWN0IHRuNDBfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvdG40MF9waHkuYy02Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS90bjQwX3BoeS5jOjYzOlx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKGNvbmZpZywgTlVMTCwgUEhZX0lOVEVSRkFDRV9NT0RFX1hBVUksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvdG40MF9waHkuYy02NC1cdFx0XHRcdCBcdTAwMjZ0bjQwX21hY19vcHMpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2FtNjUtY3Bzdy1udXNzLmM9Mjc1Nz1hbTY1X2Nwc3dfbnVzc19pbml0X3BvcnRfbmRldihzdHJ1Y3QgYW02NV9jcHN3X2NvbW1vbiAqY29tbW9uLCB1MzIgcG9ydF9pZHgpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvYW02NS1jcHN3LW51c3MuYy0yODQxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvYW02NS1jcHN3LW51c3MuYzoyODQyOlx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNnBvcnQtXHUwMDNlc2xhdmUucGh5bGlua19jb25maWcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9hbTY1LWNwc3ctbnVzcy5jLTI4NDMtXHRcdFx0XHQgb2ZfZndub2RlX2hhbmRsZShwb3J0LVx1MDAzZXNsYXZlLnBvcnRfbnApLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21kaW8uYz0xMzA9c3RhdGljIGludCBuZ2JlX3BoeWxpbmtfaW5pdChzdHJ1Y3Qgd3ggKnd4KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21kaW8uYy0xNDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tZGlvLmM6MTUwOlx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKGNvbmZpZywgTlVMTCwgcGh5X21vZGUsIFx1MDAyNm5nYmVfbWFjX29wcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tZGlvLmMtMTUxLVx0aWYgKElTX0VSUihwaHlsaW5rKSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5jPTQ4MD1pbnQgdHhnYmVfcGh5bGlua19pbml0X2FtbChzdHJ1Y3QgdHhnYmUgKnR4Z2JlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmMtNTEwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9hbWwuYzo1MTE6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoY29uZmlnLCBOVUxMLCBwaHlfbW9kZSwgXHUwMDI2dHhnYmVfbWFjX29wc19hbWwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9hbWwuYy01MTItXHRpZiAoSVNfRVJSKHBoeWxpbmspKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfcGh5LmM9MjY4PXN0YXRpYyBpbnQgdHhnYmVfcGh5bGlua19pbml0KHN0cnVjdCB0eGdiZSAqdHhnYmUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9waHkuYy0yOTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX3BoeS5jOjI5MzpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShjb25maWcsIGZ3bm9kZSwgcGh5X21vZGUsIFx1MDAyNnR4Z2JlX21hY19vcHMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9waHkuYy0yOTQtXHRpZiAoSVNfRVJSKHBoeWxpbmspKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM9Mjc5NT1zdGF0aWMgaW50IGF4aWVuZXRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMxMTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjMxMTg6XHRscC1cdTAwM2VwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2bHAtXHUwMDNlcGh5bGlua19jb25maWcsIHBkZXYtXHUwMDNlZGV2LmZ3bm9kZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzExOS1cdFx0XHRcdCAgICAgbHAtXHUwMDNlcGh5X21vZGUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zMTIyLVx0XHRyZXQgPSBQVFJfRVJSKGxwLVx1MDAzZXBoeWxpbmspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzozMTIzOlx0XHRkZXZfZXJyKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBcJiMzNDtwaHlsaW5rX2NyZWF0ZSBlcnJvciAoJWkpXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zMTI0LVx0XHRnb3RvIGNsZWFudXBfbWRpbztcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTUxNj1zdGF0aWMgaW50IHBoeWxpbmtfdmFsaWRhdGVfbWFjX2FuZF9wY3Moc3RydWN0IHBoeWxpbmsgKnBsLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNTMxLVx0aWYgKHBjcykge1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo1MzI6XHRcdC8qIFRoZSBQQ1MsIGlmIHByZXNlbnQsIG11c3QgYmUgc2V0dXAgYmVmb3JlIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNTMzLVx0XHQgKiBoYXMgYmVlbiBjYWxsZWQuIElmIHRoZSBvcHMgaXMgbm90IGluaXRpYWxpc2VkLCBwcmludCBhblxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTAzOT1zdGF0aWMgZW51bSBpbmJhbmRfdHlwZSBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZShwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTA3MC0gKiBwaHlsaW5rX3Bjc19uZWdfbW9kZSgpIC0gaGVscGVyIHRvIGRldGVybWluZSBQQ1MgaW5iYW5kIG1vZGVcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTA3MTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDcyLSAqIEBwY3M6IGEgcG9pbnRlciB0byBcdTAwMjZzdHJ1Y3QgcGh5bGlua19wY3Ncbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTE3Njg9c3RhdGljIGludCBwaHlsaW5rX3JlZ2lzdGVyX3NmcChzdHJ1Y3QgcGh5bGluayAqcGwsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNzkyLSAqIHBoeWxpbmtfc2V0X2ZpeGVkX2xpbmsoKSAtIHNldCB0aGUgZml4ZWQgbGlua1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxNzkzOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE3OTQtICogQHN0YXRlOiBhIHBvaW50ZXIgdG8gYSBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlLlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTgzMD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3NldF9maXhlZF9saW5rKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE4MzItLyoqXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE4MzM6ICogcGh5bGlua19jcmVhdGUoKSAtIGNyZWF0ZSBhIHBoeWxpbmsgaW5zdGFuY2VcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTgzNC0gKiBAY29uZmlnOiBhIHBvaW50ZXIgdG8gdGhlIHRhcmdldCBcdTAwMjZzdHJ1Y3QgcGh5bGlua19jb25maWdcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE4NDctICovXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE4NDg6c3RydWN0IHBoeWxpbmsgKnBoeWxpbmtfY3JlYXRlKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODQ5LVx0XHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTkzNC19XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE5MzU6RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19jcmVhdGUpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTM2LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTkzOC0gKiBwaHlsaW5rX2Rlc3Ryb3koKSAtIGNsZWFudXAgYW5kIGRlc3Ryb3kgdGhlIHBoeWxpbmsgaW5zdGFuY2VcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTkzOTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTQwLSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xOTU1PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZGVzdHJveSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTU4LSAqIHBoeWxpbmtfZXhwZWN0c19waHkoKSAtIERldGVybWluZSBpZiBwaHlsaW5rIGV4cGVjdHMgYSBwaHkgdG8gYmUgYXR0YWNoZWRcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTk1OTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTYwLSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMjA0PXN0YXRpYyBpbnQgcGh5bGlua19hdHRhY2hfcGh5KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyMjQtICogcGh5bGlua19jb25uZWN0X3BoeSgpIC0gY29ubmVjdCBhIFBIWSB0byB0aGUgcGh5bGluayBpbnN0YW5jZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMjI1OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyMjYtICogQHBoeTogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeV9kZXZpY2UuXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMjU4PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfY29ubmVjdF9waHkpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI2MS0gKiBwaHlsaW5rX29mX3BoeV9jb25uZWN0KCkgLSBjb25uZWN0IHRoZSBQSFkgc3BlY2lmaWVkIGluIHRoZSBEVCBtb2RlLlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMjYyOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyNjMtICogQGRuOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgZGV2aWNlX25vZGUuXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMjc3PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3QpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI4MC0gKiBwaHlsaW5rX2Z3bm9kZV9waHlfY29ubmVjdCgpIC0gY29ubmVjdCB0aGUgUEhZIHNwZWNpZmllZCBpbiB0aGUgZndub2RlLlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMjgxOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyODItICogQGZ3bm9kZTogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGZ3bm9kZV9oYW5kbGUuXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMzM2PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzNDAtICogICBpbnN0YW5jZS5cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjM0MTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMzQyLSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMzcxPXN0YXRpYyB2b2lkIHBoeWxpbmtfbGlua19jaGFuZ2VkKHN0cnVjdCBwaHlsaW5rICpwbCwgYm9vbCB1cCwgY29uc3QgY2hhciAqd2hhdClcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzODAtICogcGh5bGlua19tYWNfY2hhbmdlKCkgLSBub3RpZnkgcGh5bGluayBvZiBhIGNoYW5nZSBpbiBNQUMgc3RhdGVcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjM4MTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMzgyLSAqIEB1cDogaW5kaWNhdGVzIHdoZXRoZXIgdGhlIGxpbmsgaXMgY3VycmVudGx5IHVwLlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjQxMz1zdGF0aWMgaXJxcmV0dXJuX3QgcGh5bGlua19saW5rX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqZGF0YSlcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI0MjMtICogcGh5bGlua19zdGFydCgpIC0gc3RhcnQgYSBwaHlsaW5rIGluc3RhbmNlXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI0MjQ6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQyNS0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjQ4Nj1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3N0YXJ0KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI0ODktICogcGh5bGlua19zdG9wKCkgLSBzdG9wIGEgcGh5bGluayBpbnN0YW5jZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNDkwOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI0OTEtICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI1MjA9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19zdG9wKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1MjMtICogcGh5bGlua19yeF9jbGtfc3RvcF9ibG9jaygpIC0gYmxvY2sgUEhZIGFiaWxpdHkgdG8gc3RvcCByZWNlaXZlIGNsb2NrIGluIExQSVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNTI0OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1MjUtICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI1NDk9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19yeF9jbGtfc3RvcF9ibG9jayk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNTUyLSAqIHBoeWxpbmtfcnhfY2xrX3N0b3BfdW5ibG9jaygpIC0gdW5ibG9jayBQSFkgYWJpbGl0eSB0byBzdG9wIHJlY2VpdmUgY2xvY2tcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjU1MzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNTU0LSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNTkxPXN0YXRpYyBib29sIHBoeWxpbmtfcGh5X3BtX3NwZWVkX2N0cmwoc3RydWN0IHBoeWxpbmsgKnBsKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjU5OC0gKiBwaHlsaW5rX3N1c3BlbmQoKSAtIGhhbmRsZSBhIG5ldHdvcmsgZGV2aWNlIHN1c3BlbmQgZXZlbnRcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjU5OTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjAwLSAqIEBtYWNfd29sOiB0cnVlIGlmIHRoZSBNQUMgbmVlZHMgdG8gcmVjZWl2ZSBwYWNrZXRzIGZvciBXYWtlLW9uLUxhblxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjY1MD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3N1c3BlbmQpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjY1My0gKiBwaHlsaW5rX3ByZXBhcmVfcmVzdW1lKCkgLSBwcmVwYXJlIHRvIHJlc3VtZSBhIG5ldHdvcmsgZGV2aWNlXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI2NTQ6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjY1NS0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjY3NT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3ByZXBhcmVfcmVzdW1lKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI2NzgtICogcGh5bGlua19yZXN1bWUoKSAtIGhhbmRsZSBhIG5ldHdvcmsgZGV2aWNlIHJlc3VtZSBldmVudFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNjc5OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI2ODAtICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI3MTg9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19yZXN1bWUpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjcyMS0gKiBwaHlsaW5rX2V0aHRvb2xfZ2V0X3dvbCgpIC0gZ2V0IHRoZSB3YWtlIG9uIGxhbiBwYXJhbWV0ZXJzIGZvciB0aGUgUEhZXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI3MjI6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjcyMy0gKiBAd29sOiBhIHBvaW50ZXIgdG8gXHUwMDI2c3RydWN0IGV0aHRvb2xfd29saW5mbyB0byBob2xkIHRoZSByZWFkIHBhcmFtZXRlcnNcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI3NTU9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19ldGh0b29sX2dldF93b2wpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjc1OC0gKiBwaHlsaW5rX2V0aHRvb2xfc2V0X3dvbCgpIC0gc2V0IHdha2Ugb24gbGFuIHBhcmFtZXRlcnNcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6Mjc1OTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNzYwLSAqIEB3b2w6IGEgcG9pbnRlciB0byBcdTAwMjZzdHJ1Y3QgZXRodG9vbF93b2xpbmZvIGZvciB0aGUgZGVzaXJlZCBwYXJhbWV0ZXJzXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yODg3PXN0YXRpYyB2b2lkIHBoeWxpbmtfZ2V0X2tzZXR0aW5ncyhjb25zdCBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI5MDItICogcGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19nZXQoKSAtIGdldCB0aGUgY3VycmVudCBsaW5rIHNldHRpbmdzXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI5MDM6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjkwNC0gKiBAa3NldDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgdG8gaG9sZCBsaW5rIHNldHRpbmdzXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yOTU1PXN0YXRpYyBib29sIHBoeWxpbmtfdmFsaWRhdGVfcGNzX2luYmFuZF9hdXRvbmVnKHN0cnVjdCBwaHlsaW5rICpwbCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI5NzYtICogcGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXQoKSAtIHNldCB0aGUgbGluayBzZXR0aW5nc1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyOTc3OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI5NzgtICogQGtzZXQ6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBldGh0b29sX2xpbmtfa3NldHRpbmdzIGZvciB0aGUgZGVzaXJlZCBtb2Rlc1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzE0Nz1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTUwLSAqIHBoeWxpbmtfZXRodG9vbF9ud2F5X3Jlc2V0KCkgLSByZXN0YXJ0IG5lZ290aWF0aW9uXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMxNTE6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE1Mi0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzE3Mj1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfbndheV9yZXNldCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTc1LSAqIHBoeWxpbmtfZXRodG9vbF9nZXRfcGF1c2VwYXJhbSgpIC0gZ2V0IHRoZSBjdXJyZW50IHBhdXNlIHBhcmFtZXRlcnNcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzE3NjogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTc3LSAqIEBwYXVzZTogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGV0aHRvb2xfcGF1c2VwYXJhbVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzE4OD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfZ2V0X3BhdXNlcGFyYW0pO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE5MS0gKiBwaHlsaW5rX2V0aHRvb2xfc2V0X3BhdXNlcGFyYW0oKSAtIHNldCB0aGUgY3VycmVudCBwYXVzZSBwYXJhbWV0ZXJzXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMxOTI6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE5My0gKiBAcGF1c2U6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBldGh0b29sX3BhdXNlcGFyYW1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTMyNzQ9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19ldGh0b29sX3NldF9wYXVzZXBhcmFtKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMyNzgtICogICBjb3VudGVyXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMyNzk6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKCkuXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMyODAtICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTMyOTc9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19nZXRfZWVlX2Vycik7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMzAwLSAqIHBoeWxpbmtfZXRodG9vbF9nZXRfZWVlKCkgLSByZWFkIHRoZSBlbmVyZ3kgZWZmaWNpZW50IGV0aGVybmV0IHBhcmFtZXRlcnNcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzMwMTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMzAyLSAqIEBlZWU6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBldGh0b29sX2tlZWUgZm9yIHRoZSByZWFkIHBhcmFtZXRlcnNcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTMzMjM9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19ldGh0b29sX2dldF9lZWUpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzMyNi0gKiBwaHlsaW5rX2V0aHRvb2xfc2V0X2VlZSgpIC0gc2V0IHRoZSBlbmVyZ3kgZWZmaWNpZW50IGV0aGVybmV0IHBhcmFtZXRlcnNcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzMyNzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMzI4LSAqIEBlZWU6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBldGh0b29sX2tlZWUgZm9yIHRoZSBkZXNpcmVkIHBhcmFtZXRlcnNcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTM0OTc9c3RhdGljIGludCBwaHlsaW5rX21paV93cml0ZShzdHJ1Y3QgcGh5bGluayAqcGwsIHVuc2lnbmVkIGludCBwaHlfaWQsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNTE1LSAqIHBoeWxpbmtfbWlpX2lvY3RsKCkgLSBnZW5lcmljIG1paSBpb2N0bCBpbnRlcmZhY2VcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzUxNjogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNTE3LSAqIEBpZnI6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBpZnJlcSBmb3Igc29ja2V0IGlvY3Rsc1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzU5MD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX21paV9pb2N0bCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNTk0LSAqICAgbGluayBwYXJ0bmVyc1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozNTk1OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1OTYtICogQHN5bmM6IHBlcmZvcm0gYWN0aW9uIHN5bmNocm9ub3VzbHlcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTM2MTU9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19zcGVlZF9kb3duKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM2MTktICogICBwaHlsaW5rX3NwZWVkX2Rvd24oKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozNjIwOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM2MjEtICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTQzNzI9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19taWlfYzQ1X3Bjc19nZXRfc3RhdGUpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDM3Ni0gKlx0XHRcdFx0IHdoaWNoIGxvc2VzIHN0YXRlXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjQzNzc6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDM3OC0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NDM5Mz1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3JlcGxheV9saW5rX2JlZ2luKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQzOTctICpcdFx0XHQgICAgICAgd2hpY2ggbG9zdCBzdGF0ZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo0Mzk4OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQzOTktICpcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9Nzk5PXN0YXRpYyBpbnQgYXg4ODc3Ml9waHlsaW5rX3NldHVwKHN0cnVjdCB1c2JuZXQgKmRldilcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODE5LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgyMDpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZwcml2LVx1MDAzZXBoeWxpbmtfY29uZmlnLCBkZXYtXHUwMDNlbmV0LVx1MDAzZWRldi5md25vZGUsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODIxLVx0XHRcdFx0IHBoeV9pZl9tb2RlLCBcdTAwMjZheDg4NzcyX3BoeWxpbmtfbWFjX29wcyk7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz0yNzg2PXN0YXRpYyBpbnQgbGFuNzh4eF9waHlsaW5rX3NldHVwKHN0cnVjdCBsYW43OHh4X25ldCAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjgyNS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjgyNjpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShwYywgZGV2LVx1MDAzZW5ldC1cdTAwM2VkZXYuZndub2RlLFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yODI3LVx0XHRcdFx0IGRldi1cdTAwM2VpbnRlcmZhY2UsIFx1MDAyNmxhbjc4eHhfcGh5bGlua19tYWNfb3BzKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDg6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTYzNjIKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUmVhY2hpbmcgTmV0d29yayBEcml2ZXIgRnVuY3Rpb25hbGl0eSBpbiBhIFZpcnR1YWxpemVkIEVudmlyb25tZW50KioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBhdCBuZXR3b3JrIGRyaXZlcnMsIHNwZWNpZmljYWxseSB0aGUgYGFzaXhfZGV2aWNlcy5jYCBhbmQgYGxhbjc4eHguY2AgZmlsZXMgaW4gYGRyaXZlcnMvbmV0L3VzYi9gLiBBaGEsIHRoZXkmIzM5O3JlIGJvdGggdXNpbmcgcGh5bGluayEgVGhhdCYjMzk7cyBpbnRlcmVzdGluZywgYW5kIGl0IG1lYW5zIHRoZXkmIzM5O3JlIGhhbmRsaW5nIFBIWSBpbnRlcmFjdGlvbnMgZm9yIFVTQiBuZXR3b3JrIGludGVyZmFjZXMuIFRoaXMgaXMgZ29vZCBuZXdzIGJlY2F1c2UgdGhlc2UgZHJpdmVycyBhcmUgcHJpbWUgY2FuZGlkYXRlcyBmb3IgdGVzdGluZyB3aXRoaW4gYSB2aXJ0dWFsaXplZCBzZXR1cC4gV2l0aCBzeXprYWxsZXIsIEkgc2hvdWxkIGJlIGFibGUgdG8gZW11bGF0ZSB0aGUgVVNCIGhvc3QgY29udHJvbGxlciB1c2luZyBlaXRoZXIgYSBkdW1teSBIQ0Qgb3IgdGhlIHZoY2lfaGNkLCBtYWtpbmcgdGhlc2UgZHJpdmVycyBlYXNpbHkgcmVhY2hhYmxlLgoKVGhlIGtleSBmdW5jdGlvbiBJIHdhbnQgdG8gZm9jdXMgb24gaXMgYHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0YC4gVGhpcyBpcyB0cmlnZ2VyZWQgd2hlbiBzb21lb25lIGF0dGVtcHRzIHRvIGNvbmZpZ3VyZSB0aGUgbGluayBzZXR0aW5ncyB1c2luZyBldGh0b29sLiBJIGtub3cgdGhhdCBmdW5jdGlvbiBpcyByZWFjaGFibGUgd2l0aGluIHRoZXNlIGRyaXZlcnMsIGFzIGl0JiMzOTtzIGEga25vd24gY2FsbCBwb2ludCBmb3IgZXRodG9vbCBzZXR0aW5ncy4KCk5vdywgbGV0IG1lIGdvIGJhY2sgdG8gYGFzaXhfZGV2aWNlcy5jYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggY29uZmlndXJhdGlvbiBvcHRpb25zIG9yIHBhcmFtZXRlcnMgc3BlY2lmaWNhbGx5IGVuYWJsZSB0aGUgZnVuY3Rpb25hbGl0eSB0aGF0IGxlYWRzIHRvIGNhbGxpbmcgYHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0YC4gVGhpcyB3aWxsIGd1aWRlIG15IGZ1enppbmcgZWZmb3J0cyBhbmQgaGVscCBtZSB1bmRlcnN0YW5kIHRoZSBjb2RlIHBhdGggdGhhdCYjMzk7cyBtb3N0IGxpa2VseSB0byBiZSBleHBvc2VkIHRvIHZ1bG5lcmFiaWxpdGllcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDg6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXNpeF9kZXZpY2VzLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL01ha2VmaWxlPTEzPW9iai0kKENPTkZJR19VU0JfTkVUX0FYODgxN1gpXHQmIzQzOz0gYXNpeC5vXG5kcml2ZXJzL25ldC91c2IvTWFrZWZpbGU6MTQ6YXNpeC15IDo9IGFzaXhfZGV2aWNlcy5vIGFzaXhfY29tbW9uLm8gYXg4ODE3MmEub1xuZHJpdmVycy9uZXQvdXNiL01ha2VmaWxlLTE1LW9iai0kKENPTkZJR19VU0JfTkVUX0FYODgxNzlfMTc4QSkgICAgICAmIzQzOz0gYXg4ODE3OV8xNzhhLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDg6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTY5MjcKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IHdlbnQ6CgoqKkV4YW1pbmluZyBOZXR3b3JrIERyaXZlciBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIHRoZSBhY3RpdmUgY29uZmlndXJhdGlvbiBpcyBgVVNCX05FVF9BWDg4MTdYYC4gUmlnaHQsIHRoYXQmIzM5O3MgdGhlIGRyaXZlciBmb3IgYSBzcGVjaWZpYyBVU0ItdG8tRXRoZXJuZXQgYWRhcHRlciwgbGlrZWx5IGJhc2VkIG9uIHRoZSBBU0lYIEFYODgxN3ggY2hpcHNldC4gTXkgbmV4dCBzdGVwLCBhcyBhbHdheXMsIGlzIHRvIGRpdmUgaW50byB0aGUgY29yZSBpbXBsZW1lbnRhdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgZHJpdmVyIGhhbmRsZXMgaXRzIGludGVyZmFjZSB3aXRoIHRoZSBVU0Igc3RhY2sgYW5kIHRoZSBuZXR3b3JrIHN1YnN5c3RlbS4gVGhlcmVmb3JlLCBJIG5lZWQgdG8gY2hlY2sgYGxhbjc4eHguY2AuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIGNyaXRpY2FsIGZ1bmN0aW9uYWxpdHkgd2lsbCBiZSBkZWZpbmVkLiBJJiMzOTtsbCBuZWVkIHRvIHNjcnV0aW5pemUgdGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlcywgZGF0YSB0cmFuc2ZlciBtZWNoYW5pc21zLCBhbmQgaW50ZXJydXB0IGhhbmRsaW5nIHdpdGhpbiB0aGF0IGZpbGUgdG8gc2VlIHRoZSBkZXRhaWxzIG9mIGl0cyBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDg6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bGFuNzh4eC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9NYWtlZmlsZT0xMT1vYmotJChDT05GSUdfVVNCX0hTTylcdFx0JiM0Mzs9IGhzby5vXG5kcml2ZXJzL25ldC91c2IvTWFrZWZpbGU6MTI6b2JqLSQoQ09ORklHX1VTQl9MQU43OFhYKVx0JiM0Mzs9IGxhbjc4eHgub1xuZHJpdmVycy9uZXQvdXNiL01ha2VmaWxlLTEzLW9iai0kKENPTkZJR19VU0JfTkVUX0FYODgxN1gpXHQmIzQzOz0gYXNpeC5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA4OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3MjU0CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgdGhlIGBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldGAgRnVuY3Rpb24qKgoKT2theSwgc28gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBpcyBzZXQgdG8gYFVTQl9MQU43OFhYYC4gTXkgdGFzayBpcyB0byBmaWd1cmUgb3V0IHRoZSBiZXN0IHdheSB0byBmdXp6IHRoaXMuIEl0IGxvb2tzIGxpa2UgdGhlIHBhdGNoIGluIHF1ZXN0aW9uIGZvY3VzZXMgb24gYHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0YC4gVGhpcyBpcyBpbnRlcmVzdGluZyBiZWNhdXNlIHRoaXMgZnVuY3Rpb24gaXMgYWNjZXNzaWJsZSB0aHJvdWdoIGV0aHRvb2wgaW9jdGxzLiBUaGF0IG1lYW5zIGl04oCZcyBhbiBpZGVhbCB0YXJnZXQgZm9yIGZ1enppbmcuCgpNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGZvY3VzIGZ1enppbmcgZWZmb3J0cyBvbiB0aGlzIGZ1bmN0aW9uLCBidXQgdGhlbiBpdCBkYXduZWQgb24gbWUuLi4gYHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0YCBpcyBhICpnZW5lcmljKiBmdW5jdGlvbi4gUGVyaGFwcyBpdCB3b3VsZCBiZSBtb3JlIGZydWl0ZnVsIHRvIGV4cGFuZCBteSBzY29wZSB0byB0aGUgZnVuY3Rpb24gaXRzZWxmLiBBbmQgaXMgdGhlcmUgYW55dGhpbmcgc3BlY2lmaWMgdG8gdGhlIHBoeWxpbmsgY29uZmlndXJhdGlvbj8gSSBrbm93IGBQSFlMSU5LYCBpcyBzZWxlY3RlZCBieSB2YXJpb3VzIGRyaXZlcnM7IEkgc2hvdWxkIHByb2JhYmx5IGxvb2sgaW50byB0aGF0IGZ1cnRoZXIuIExldCBtZSBjaGVjayB0aGUgYGRyaXZlcnMvbmV0L3BoeS9LY29uZmlnYCBmaWxlIHRvIHNlZSB3aGF0IGRldGFpbHMgSSBjYW4gZmluZCBvbiBgUEhZTElOS2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA4OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBQSFlMSU5LJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L0tjb25maWctNS1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjY6Y29uZmlnIFBIWUxJTktcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTctXHR0cmlzdGF0ZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwODoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzY5MAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDEwOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFbmFibGluZyBVU0IgTmV0d29yayBEcml2ZXJzIGZvciBQaHlsaW5rIEludGVncmF0aW9uKioKCk9rYXksIHNvIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSB0cmlzdGF0ZSBjb25maWd1cmF0aW9uIGhlcmUsIG1lYW5pbmcgdGhlIHNlbGVjdGlvbiBpcyBiYXNlZCBvbiBzb21lIGRyaXZlciBpbnB1dC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGVuc3VyZSB0aGUgbmVjZXNzYXJ5IFVTQiBuZXR3b3JrIGRyaXZlcnMgYXJlIGF2YWlsYWJsZSBmb3IgcGh5bGluay4gVGhlcmVmb3JlLCBJIG5lZWQgdG8gZW5hYmxlIGJvdGggYFVTQl9ORVRfQVg4ODE3WGAgYW5kIGBVU0JfTEFONzhYWGAuIFRoaXMgc2hvdWxkIGd1YXJhbnRlZSB0aGF0IHBoeWxpbmsgY2FuIGJlIHByb3Blcmx5IGNvbXBpbGVkIGFuZCBhY2Nlc3NpYmxlIHRocm91Z2ggdGhlIFVTQiBuZXR3b3JrIGRyaXZlciBzdWJzeXN0ZW0uCgpMZXQgbWUganVzdCBkb3VibGUtY2hlY2sgdGhhdCB2YXJpYWJsZeKApiBhaCwgcmlnaHQsIGl0JiMzOTtzIGBDT05GSUdfVVNCX05FVF9BWDg4MTdYYC4gQWx3YXlzIGdvb2QgdG8gYmUgcHJlY2lzZSB3aGVuIGRlYWxpbmcgd2l0aCB0aGVzZSBrZXJuZWwgY29uZmlncy4gT2theSwgSSBuZWVkIHRvIGNvbmZpcm0gdGhlIEtjb25maWcmIzM5O3MgcHJlc2VuY2Ugc28gSSB3aWxsIGNoZWNrIGBkcml2ZXJzL25ldC91c2IvS2NvbmZpZ2AgdG8gY29uZmlybSB0aGVzZSBzZXR0aW5ncyBhcmUgcHJlc2VudCBhbmQgd2hlcmUgdGhleSBzaXQgaW4gdGhlIG92ZXJhbGwgZHJpdmVyIGxhbmRzY2FwZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDg6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFVTQl9ORVRfQVg4ODE3WCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTEzMj1jb25maWcgVVNCX1VTQk5FVFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTE2NS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjE2Njpjb25maWcgVVNCX05FVF9BWDg4MTdYXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xNjctXHR0cmlzdGF0ZSBcJiMzNDtBU0lYIEFYODh4eHggQmFzZWQgVVNCIDIuMCBFdGhlcm5ldCBBZGFwdGVyc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwODoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODEzMQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBkZWxpdmVyZWQgYXMgYSBmaXJzdC1wZXJzb24gc3VtbWFyeToKCioqRGlnZ2luZyBpbnRvIGBVU0JfTEFONzhYWGAqKgoKQWxyaWdodCwgdGltZSB0byBnZXQgdG8gaXQuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGhlcmUg4oCTIGxldCYjMzk7cyBzcGVjaWZpY2FsbHkgemVybyBpbiBvbiB0aGF0IGBVU0JfTEFONzhYWGAgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBjdXJyZW50IHN0YXR1cyBvZiB0aGlzIHBhcnRpY3VsYXIgaW50ZWdyYXRpb24uIEl0JiMzOTtzIHRpbWUgdG8gYXNzZXNzIHRoZSBjdXJyZW50IHN0YXRlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwODoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVVNCX0xBTjc4WFgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvS2NvbmZpZz05OT1jb25maWcgVVNCX1JUTDgxNTJcbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xMTItXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzoxMTM6Y29uZmlnIFVTQl9MQU43OFhYXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xMTQtXHR0cmlzdGF0ZSBcJiMzNDtNaWNyb2NoaXAgTEFONzhYWCBCYXNlZCBVU0IgRXRoZXJuZXQgQWRhcHRlcnNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDg6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgzODUKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA4OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGhpcyBuZXR3b3JrIGRyaXZlciBjb25maWd1cmF0aW9uOgoKKipOZXR3b3JrIERyaXZlciBDb25maWd1cmF0aW9uIC0gQSBEZWVwIERpdmUqKgoKT2theSwgc28gd2UmIzM5O3JlIGxvb2tpbmcgYXQgZW5hYmxpbmcgYSBjb3VwbGUgb2YgVVNCIG5ldHdvcmsgZHJpdmVycyBoZXJlOiBzcGVjaWZpY2FsbHksIGBVU0JfTkVUX0FYODgxN1hgIGFuZCBgVVNCX0xBTjc4WFhgLiBUaG9zZSBhcmUgcHJldHR5IHN0YW5kYXJkIGNob2ljZXMgZm9yIFVTQi10by1FdGhlcm5ldCBhZGFwdGVycywgSSBrbm93IHRoZW0gd2VsbC4gR2l2ZW4gdGhhdCwgKipQSFlMSU5LKiogaXMgdGhlIG9idmlvdXMgY2hvaWNlIHRvIGJlIHNlbGVjdGVkIGZvciBpdHMgdW5kZXJseWluZyBoYXJkd2FyZSBhYnN0cmFjdGlvbiBsYXllci4gTm93LCBiZWZvcmUgSSBjb21taXQgdG8gYW55dGhpbmcsIEkgbmVlZCB0byBtYWtlIHN1cmUgd2UmIzM5O3JlIG5vdCBpbmFkdmVydGVudGx5IHN0ZXBwaW5nIG9uIGFueSBvdGhlciBkcml2ZXJzIHRoYXQgbWlnaHQgYWxzbyBkZXBlbmQgb24gcGh5bGluaywganVzdCB0byBhdm9pZCBhbnkgdW5leHBlY3RlZCBjb25mbGljdHMuIExldCYjMzk7cyBzZWUuLi4gbm90aGluZyBpbW1lZGlhdGVseSBzcHJpbmdzIHRvIG1pbmQsIGFuZCBJIGNhbiYjMzk7dCB0aGluayBvZiBhbnkgb3RoZXIgZHJpdmVycyB0aGF0IGZpdCB0aGF0IHBhdHRlcm4gb2ZmIHRoZSB0b3Agb2YgbXkgaGVhZCwgYnV0IGxldCYjMzk7cyBkbyBhIHF1aWNrIHNjYW4uIFdpcmVsZXNzIGlzIHVzdWFsbHkgaGFuZGxlZCBieSBgbWFjODAyMTFgLCBzbyBJJiMzOTtsbCBza2lwIG92ZXIgdGhhdCAtIEkgZG9uJiMzOTt0IHNlZSBhbnkgb2J2aW91cyBjb25uZWN0aW9uLiBPa2F5LCBsZXQmIzM5O3MgdHJ5IGEgc2NhbiBvZiB0aGUgdmlydHVhbCBkcml2ZXJzLiBBaCwgeWVzLCB0aGUgYGR1bW15YCBkcml2ZXIgaW4gYGRyaXZlcnMvbmV0L2R1bW15LmNgLiBUaGF0JiMzOTtzIG5vdCB0aGUgc2FtZSB0aGluZy4gSSYjMzk7bGwgbWFrZSBzdXJlIHRvIGRvdWJsZSBjaGVjayB0aGF0IEkgaGF2ZW4mIzM5O3QgZm9yZ290dGVuIGFueXRoaW5nIGVsc2UuLi5idXQgSSB0aGluayB3ZSYjMzk7cmUgZ29vZCB0byBnby4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDg6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHlsaW5rJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHVtbXkuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA4OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4Nzk3CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipOYXZpZ2F0aW5nIHRoZSBMYWJ5cmludGggb2YgQ29kZSoqCgpIbW0sIGp1c3QgJiMzNDtOby4mIzM0OyBkb2VzbiYjMzk7dCBnaXZlIG1lIG11Y2ggdG8gZ28gb24uIE15IGludGVybmFsIGNvbXBpbGVyIGlzIGFscmVhZHkgZmlyaW5nIHVwLCB0cnlpbmcgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dC4uLiBXaGF0JiMzOTtzIHRoZSBwcm9ibGVtPyBXaGF0JiMzOTtzIHRoZSBhcmVhIG9mIGludGVyZXN0PyBJIG5lZWQgbW9yZSBpbmZvcm1hdGlvbiB0byBmb3JtdWxhdGUgYSBwcm9wZXIgcmVzcG9uc2Ugb3IgcGxhbiBvZiBhY3Rpb24uCgpUaGVuLCB0aGVyZSYjMzk7cyBhIHNwZWNpZmljIGZpbGUgbWVudGlvbmVkLiBBaCwgb2theSwgc28gd2UgYXJlIHRhbGtpbmcgYWJvdXQgbmV0d29ya2luZywgc3BlY2lmaWNhbGx5IHRoZSBUVU4gZGV2aWNlLCBhbmQgdGhlIEMgY29kZSB0aGF0IGltcGxlbWVudHMgaXQuIE15IG1pbmQgaW1tZWRpYXRlbHkgc3RhcnRzIHB1bGxpbmcgdXAgYXNzb2NpYXRpb25zOiBLZXJuZWwtbGV2ZWwgb3BlcmF0aW9ucywgcGFja2V0IGhhbmRsaW5nLCBtYXliZSBzb21ldGhpbmcgcmVsYXRlZCB0byB2aXJ0dWFsIGludGVyZmFjZXMsIG9yIG1heWJlIHNvbWUgaXNzdWUgaW4gdXNlciBzcGFjZSBpbnRlcmFjdGlvbi4gVGhlIHF1ZXN0aW9uICYjMzQ7V2hhdCBhYm91dCBgZHJpdmVycy9uZXQvdHVuLmNgPyYjMzQ7IGlzIGxpa2VseSByZWZlcnJpbmcgdG8gc29tZSBzcGVjaWZpYyBpc3N1ZSwgYnVnLCBvciBhcmVhIG9mIGNvbmNlcm4uIEkmIzM5O2QgYmUgbG9va2luZyBhdCBpdHMgY29kZSB0byBmaW5kIG91dC4gV2UmIzM5O3ZlIGhvbmVkIGluLiBUaGlzIHdpbGwgYmUgdGhlIGZvY3VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwODoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BoeWxpbmsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC90dW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA4OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5MDY5CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgZXhwcmVzc2VkIGFzIHRob3VnaCBJJiMzOTttIHRoZSBvbmUgdGhpbmtpbmcgaXQ6CgoqKkZvY3VzaW5nIE15IEF0dGVudGlvbioqCgpObywgdGhhdCYjMzk7cyBub3QgcXVpdGUgcmlnaHQuIFdhaXQuLi4gd2hhdCBhYm91dCB0aGF0IGBkcml2ZXJzL25ldC92ZXRoLmNgIGZpbGU/IEkmIzM5O20gcHJldHR5IHN1cmUgaXQmIzM5O3MgcmVsZXZhbnQgdG8gdGhpcy4gSXQmIzM5O3MgdGltZSB0byB0YWtlIGEgbG9vayBhdCB0aGUgdmV0aCBkcml2ZXIuIEkgbmVlZCB0byBmb2N1cyB0aGVyZSwgYW5kIG1ha2Ugc3VyZSB0aGF0IHRoaXMgaXMgdGhlIGJlc3QgcGF0aCB0byBmb2xsb3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA4OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGh5bGluayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3ZldGguYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA4OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5MjI3CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMTYzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgdGhlIGBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldGAgRnVuY3Rpb24qKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyB0aGUgYmVzdCB3YXkgdG8gYXBwcm9hY2ggZnV6emluZyB0aGlzIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGlzIHRocm91Z2ggVVNCIG5ldHdvcmsgZHJpdmVycywgZ2l2ZW4gc3l6a2FsbGVyJiMzOTtzIGFiaWxpdHkgdG8gZW11bGF0ZSBVU0IgZGV2aWNlcyB1c2luZyBgZHVtbXlfaGNkYC4gQnV0IGhvbGQgb24sIGxldCYjMzk7cyByZWZvY3VzLiBUaGUgbW9kaWZpY2F0aW9uIHNlZW1zIHRvIGJlIHNwZWNpZmljYWxseSBpbiB0aGUgYHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0YCBmdW5jdGlvbi4KCk5vdywgc2hvdWxkIEkgZXhwYW5kIHRoZSBzY29wZSBvciBmb2N1cz8gTGV0JiMzOTtzIHF1aWNrbHkgc2VlIGlmIGBwaHlfY2Fwc19sb29rdXBgIGlzIHdvcnRoIGEgbG9vayB0b28uIEl0JiMzOTtzIGp1c3QgYSBsb29rdXAsIHNvIHByb2JhYmx5IG5vdCB0aGUgcHJpbWFyeSB0YXJnZXQgcmlnaHQgbm93LgoKUmlnaHQsIHRoZSBwYXRjaCBhZGRyZXNzZXMgYSB2YWxpZGF0aW9uIGlzc3VlIGluIGBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldGAgY29uY2VybmluZyBzcGVlZCBhbmQgZHVwbGV4LiBQZXJmZWN0ISBUaGF0IGNvbmZpcm1zIGl0OiBgcGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXRgIGlzICpkZWZpbml0ZWx5KiB0aGUgZnVuY3Rpb24gdG8gZnV6ei4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgdnVsbmVyYWJpbGl0eSBsaWVzLgoKTGV0JiMzOTtzIGdvIHN0cmFpZ2h0IHRvIHRoZSBzb3VyY2UsIGFuZCB2ZXJpZnkgdGhhdCBmdW5jdGlvbiBpbiBgZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgY29kZSBwcm9wZXJseSBiZWZvcmUgc3RhcnRpbmcgdGhlIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA4OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI5NTU9c3RhdGljIGJvb2wgcGh5bGlua192YWxpZGF0ZV9wY3NfaW5iYW5kX2F1dG9uZWcoc3RydWN0IHBoeWxpbmsgKnBsLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjk3NS0vKipcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6Mjk3NjogKiBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldCgpIC0gc2V0IHRoZSBsaW5rIHNldHRpbmdzXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI5NzctICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI5NzktICovXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI5ODA6aW50IHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0KHN0cnVjdCBwaHlsaW5rICpwbCxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjk4MS1cdFx0XHRcdCAgY29uc3Qgc3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgKmtzZXQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTQ2LX1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzE0NzpFWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldCk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNDgtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA4OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5OTgwCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNDg2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGh5bGluayBQYXRjaCoqCgpPa2F5LCBzbyB0aGUgbWFpbiBmdW5jdGlvbiB0aGlzIHBhdGNoIGlzIHRhcmdldGluZyBpcyBgcGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXRgLiBUaGF0IHNlZW1zIGxpa2UgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZS4gSXMgdGhlcmUgYW55dGhpbmcgZWxzZT8gQWgsIGBwaHlfY2Fwc19sb29rdXBgIGlzIGFsc28gbWVudGlvbmVkLCBidXQgaXQmIzM5O3MganVzdCBiZWluZyAqY2FsbGVkKiB3aXRoaW4gdGhlIG1vZGlmaWVkIGZ1bmN0aW9uLCBub3QgZGlyZWN0bHkgYWx0ZXJlZC4gTGV0JiMzOTtzIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGludGVudCBvZiB0aGlzIHBhdGNoLgoKUmlnaHQsIHRoZSBwYXRjaCBhZGRzIGEgdmFsaWRhdGlvbiBzdGVwIHdpdGhpbiBgcGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXRgLiBCZWZvcmUgYXBwbHlpbmcgdGhlIHJlcXVlc3RlZCBzcGVlZCBhbmQgZHVwbGV4IHNldHRpbmdzLCBpdCYjMzk7cyBjaGVja2luZyB3aXRoIGBwaHlfY2Fwc19sb29rdXBgIHRvIHNlZSBpZiB0aGUgUEhZIGFjdHVhbGx5IHN1cHBvcnRzIHRoZW0uIFRoaXMgbWFrZXMgc2Vuc2U7IGl0JiMzOTtzIGEgZ3VhcmQgYWdhaW5zdCBzZXR0aW5nIHVwIGNvbmZpZ3VyYXRpb25zIHRoYXQgdGhlIGhhcmR3YXJlIGNhbiYjMzk7dCBoYW5kbGUuIFByZXZlbnRzIGludmFsaWQgY29uZmlndXJhdGlvbnMuCgpUaGUgY29kZSBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBTcGVjaWZpY2FsbHksIHRoZSBwYXRjaCBtZW50aW9ucyBVU0IgbmV0d29yayBkcml2ZXJzIGxldmVyYWdpbmcgcGh5bGluayDigJMgdGhpbmdzIGxpa2UgQVNJWCBhbmQgTEFONzhYWCwgYW5kIHRoZWlyIGVtdWxhdGVkIGNvdW50ZXJwYXJ0cyB2aWEgVVNCIGdhZGdldCBhbmQgZHVtbXlfaGNkLiBUaGVzZSBhcmUgZ29vZCB0YXJnZXRzIGZvciB0ZXN0aW5nIGFuZCB2YWxpZGF0aW9uLgoKU28sIGxldCYjMzk7cyBrZWVwIHRoZSBmb2N1cyBvbiBgcGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXRgLiBLZXkgc3ltYm9sczogYHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0YC4KCkkgbmVlZCB0byBtYWtlIHN1cmUgbXkgdGVzdGluZyBzZXR1cCBpbmNsdWRlcyB0aG9zZSBkcml2ZXJzIHRoYXQgdXNlIHRoaXMgZnVuY3Rpb24uIExldCYjMzk7cyBzZWUuLi4gYFVTQl9ORVRfQVg4ODE3WGAg4oCTIGl0IGxvb2tzIGxpa2UgYGRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuY2AgZG9lcyBpbmRlZWQgY2FsbCBgcGh5bGlua19jcmVhdGVgLCBzbyB0aGF0JiMzOTtzIGdvb2QuIEFuZCBgVVNCX0xBTjc4WFhgIOKAkyB5ZXAsIGBkcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jYCBpcyBhbHNvIGNhbGxpbmcgYHBoeWxpbmtfY3JlYXRlYC4KCkFueXRoaW5nIGVsc2UgSSBzaG91bGQgY29uc2lkZXI/IEFoLCBgVVNCX1VTQk5FVGAuIFNpbmNlIGBVU0JfTkVUX0FYODgxN1hgIGRlcGVuZHMgb24gdGhhdCwgaXQgbWFrZXMgc2Vuc2UgdG8gaW5jbHVkZSBpdCBpbiB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiBmb3IgdGVzdGluZyBhbmQgY292ZXJhZ2UuIFN5emthbGxlciB1c3VhbGx5IGhhcyBgVVNCX1VTQk5FVGAgZW5hYmxlZCwgYnV0IEkmIzM5O2xsIG1ha2Ugc3VyZSB0byBleHBsaWNpdGx5IGluY2x1ZGUgaXQuIE9rYXksIHRoYXQgc2hvdWxkIGJlIGVub3VnaCBmb3Igbm93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwODoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXBlbmRzIG9uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NT1jb21tZW50IFwmIzM0O0hvc3Qtc2lkZSBVU0Igc3VwcG9ydCBpcyBuZWVkZWQgZm9yIFVTQiBOZXR3b3JrIEFkYXB0ZXIgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6NjpcdGRlcGVuZHMgb24gIVVTQiBcdTAwMjZcdTAwMjYgTkVUXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy03LVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9OD1tZW51Y29uZmlnIFVTQl9ORVRfRFJJVkVSU1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTEwLVx0ZGVmYXVsdCBVU0IgaWYgVVNCXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzoxMTpcdGRlcGVuZHMgb24gVVNCIFx1MDAyNlx1MDAyNiBORVRcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTEyLVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTE2Nj1jb25maWcgVVNCX05FVF9BWDg4MTdYXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xNjctXHR0cmlzdGF0ZSBcJiMzNDtBU0lYIEFYODh4eHggQmFzZWQgVVNCIDIuMCBFdGhlcm5ldCBBZGFwdGVyc1wmIzM0O1xuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MTY4Olx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xNjktXHRzZWxlY3QgQ1JDMzJcbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xOTQtXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzoxOTU6XHQgIFRoaXMgZHJpdmVyIGNyZWF0ZXMgYW4gaW50ZXJmYWNlIG5hbWVkIFwmIzM0O2V0aFhcJiMzNDssIHdoZXJlIFggZGVwZW5kcyBvblxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTk2LVx0ICB3aGF0IG90aGVyIG5ldHdvcmtpbmcgZGV2aWNlcyB5b3UgaGF2ZSBpbiB1c2UuXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MTk4PWNvbmZpZyBVU0JfTkVUX0FYODgxNzlfMTc4QVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTk5LVx0dHJpc3RhdGUgXCYjMzQ7QVNJWCBBWDg4MTc5LzE3OEEgVVNCIDMuMC8yLjAgdG8gR2lnYWJpdCBFdGhlcm5ldFwmIzM0O1xuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MjAwOlx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0yMDEtXHRzZWxlY3QgQ1JDMzJcbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0yMTItXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzoyMTM6XHQgIFRoaXMgZHJpdmVyIGNyZWF0ZXMgYW4gaW50ZXJmYWNlIG5hbWVkIFwmIzM0O2V0aFhcJiMzNDssIHdoZXJlIFggZGVwZW5kcyBvblxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMjE0LVx0ICB3aGF0IG90aGVyIG5ldHdvcmtpbmcgZGV2aWNlcyB5b3UgaGF2ZSBpbiB1c2UuXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MjE2PWNvbmZpZyBVU0JfTkVUX0NEQ0VUSEVSXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0yMTctXHR0cmlzdGF0ZSBcJiMzNDtDREMgRXRoZXJuZXQgc3VwcG9ydCAoc21hcnQgZGV2aWNlcyBzdWNoIGFzIGNhYmxlIG1vZGVtcylcJiMzNDtcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjIxODpcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMjE5LVx0ZGVmYXVsdCB5XG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMjM4LVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MjM5Olx0ICBUaGlzIGRyaXZlciBjcmVhdGVzIGFuIGludGVyZmFjZSBuYW1lZCBcJiMzNDtldGhYXCYjMzQ7LCB3aGVyZSBYIGRlcGVuZHMgb25cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTI0MC1cdCAgd2hhdCBvdGhlciBuZXR3b3JraW5nIGRldmljZXMgeW91IGhhdmUgaW4gdXNlLiAgSG93ZXZlciwgaWYgdGhlXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MjQ0PWNvbmZpZyBVU0JfTkVUX0NEQ19FRU1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTI0NS1cdHRyaXN0YXRlIFwmIzM0O0NEQyBFRU0gc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MjQ2Olx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0yNDctXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMjUyLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MjUzOlx0ICBUaGlzIGRyaXZlciBjcmVhdGVzIGFuIGludGVyZmFjZSBuYW1lZCBcJiMzNDtldGhYXCYjMzQ7LCB3aGVyZSBYIGRlcGVuZHMgb25cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTI1NC1cdCAgd2hhdCBvdGhlciBuZXR3b3JraW5nIGRldmljZXMgeW91IGhhdmUgaW4gdXNlLiAgSG93ZXZlciwgaWYgdGhlXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MjU4PWNvbmZpZyBVU0JfTkVUX0NEQ19OQ01cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTI1OS1cdHRyaXN0YXRlIFwmIzM0O0NEQyBOQ00gc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MjYwOlx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0yNjEtXHRzZWxlY3QgVVNCX05FVF9DRENFVEhFUlxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTI3OD1jb25maWcgVVNCX05FVF9IVUFXRUlfQ0RDX05DTVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMjc5LVx0dHJpc3RhdGUgXCYjMzQ7SHVhd2VpIE5DTSBlbWJlZGRlZCBBVCBjaGFubmVsIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjI4MDpcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMjgxLVx0c2VsZWN0IFVTQl9XRE1cbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz0yOTM9Y29uZmlnIFVTQl9ORVRfQ0RDX01CSU1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTI5NC1cdHRyaXN0YXRlIFwmIzM0O0NEQyBNQklNIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjI5NTpcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMjk2LVx0c2VsZWN0IFVTQl9XRE1cbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz0zMTE9Y29uZmlnIFVTQl9ORVRfRE05NjAxXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0zMTItXHR0cmlzdGF0ZSBcJiMzNDtEYXZpY29tIERNOTZ4eCBiYXNlZCBVU0IgMTAvMTAwIGV0aGVybmV0IGRldmljZXNcJiMzNDtcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjMxMzpcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMzE0LVx0c2VsZWN0IENSQzMyXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MzE5PWNvbmZpZyBVU0JfTkVUX1NSOTcwMFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMzIwLVx0dHJpc3RhdGUgXCYjMzQ7Q29yZUNoaXAtc3ogU1I5NzAwIGJhc2VkIFVTQiAxLjEgMTAvMTAwIGV0aGVybmV0IGRldmljZXNcJiMzNDtcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjMyMTpcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMzIyLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTMyNj1jb25maWcgVVNCX05FVF9TUjk4MDBcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTMyNy1cdHRyaXN0YXRlIFwmIzM0O0NvcmVDaGlwLXN6IFNSOTgwMCBiYXNlZCBVU0IgMi4wIDEwLzEwMCBldGhlcm5ldCBkZXZpY2VzXCYjMzQ7XG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzozMjg6XHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTMyOS1cdHNlbGVjdCBDUkMzMlxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTM0MT1jb25maWcgVVNCX05FVF9TTVNDNzVYWFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMzQyLVx0dHJpc3RhdGUgXCYjMzQ7U01TQyBMQU43NVhYIGJhc2VkIFVTQiAyLjAgZ2lnYWJpdCBldGhlcm5ldCBkZXZpY2VzXCYjMzQ7XG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzozNDM6XHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTM0NC1cdHNlbGVjdCBCSVRSRVZFUlNFXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MzUxPWNvbmZpZyBVU0JfTkVUX1NNU0M5NVhYXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0zNTItXHR0cmlzdGF0ZSBcJiMzNDtTTVNDIExBTjk1WFggYmFzZWQgVVNCIDIuMCAxMC8xMDAgZXRoZXJuZXQgZGV2aWNlc1wmIzM0O1xuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MzUzOlx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0zNTQtXHRzZWxlY3QgUEhZTElCXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MzY0PWNvbmZpZyBVU0JfTkVUX0dMNjIwQVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMzY1LVx0dHJpc3RhdGUgXCYjMzQ7R2VuZVN5cyBHTDYyMFVTQi1BIGJhc2VkIGNhYmxlc1wmIzM0O1xuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MzY2Olx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0zNjctXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MzczPWNvbmZpZyBVU0JfTkVUX05FVDEwODBcbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0zNzUtXHRkZWZhdWx0IHlcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjM3NjpcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMzc3LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTM4Mj1jb25maWcgVVNCX05FVF9QTFVTQlxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTM4NS1cdCMgYXJlIGV2ZXIgcmVzb2x2ZWQgLi4uIHRoZW4gcmVtb3ZlIFwmIzM0O2V4cGVyaW1lbnRhbFwmIzM0O1xuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6Mzg2Olx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0zODctXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MzkxPWNvbmZpZyBVU0JfTkVUX01DUzc4MzBcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTM5Mi1cdHRyaXN0YXRlIFwmIzM0O01vc0NoaXAgTUNTNzgzMCBiYXNlZCBFdGhlcm5ldCBhZGFwdGVyc1wmIzM0O1xuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MzkzOlx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0zOTQtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9Mzk5PWNvbmZpZyBVU0JfTkVUX1JORElTX0hPU1RcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTQwMC1cdHRyaXN0YXRlIFwmIzM0O0hvc3QgZm9yIFJORElTIGFuZCBBY3RpdmVTeW5jIGRldmljZXNcJiMzNDtcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjQwMTpcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNDAyLVx0c2VsZWN0IFVTQl9ORVRfQ0RDRVRIRVJcbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz00MTQ9Y29uZmlnIFVTQl9ORVRfQ0RDX1NVQlNFVF9FTkFCTEVcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTQxNS1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo0MTY6XHRkZXBlbmRzIG9uIFVTQl9ORVRfQ0RDX1NVQlNFVFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNDE3LVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NDE4PWNvbmZpZyBVU0JfTkVUX0NEQ19TVUJTRVRcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTQxOS1cdHRyaXN0YXRlIFwmIzM0O1NpbXBsZSBVU0IgTmV0d29yayBMaW5rcyAoQ0RDIEV0aGVybmV0IHN1YnNldClcJiMzNDtcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjQyMDpcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNDIxLVx0ZGVmYXVsdCB5XG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NDMzPWNvbmZpZyBVU0JfQUxJX001NjMyXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy00MzQtXHRib29sIFwmIzM0O0FMaSBNNTYzMiBiYXNlZCAmIzM5O1VTQiAyLjAgRGF0YSBMaW5rJiMzOTsgY2FibGVzXCYjMzQ7XG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo0MzU6XHRkZXBlbmRzIG9uIFVTQl9ORVRfQ0RDX1NVQlNFVFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNDM2LVx0c2VsZWN0IFVTQl9ORVRfQ0RDX1NVQlNFVF9FTkFCTEVcbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz00NDE9Y29uZmlnIFVTQl9BTjI3MjBcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTQ0Mi1cdGJvb2wgXCYjMzQ7QW5jaG9yQ2hpcHMgMjcyMCBiYXNlZCBjYWJsZXMgKFhpcmNvbSBQR1VORVQsIC4uLilcJiMzNDtcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjQ0MzpcdGRlcGVuZHMgb24gVVNCX05FVF9DRENfU1VCU0VUXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy00NDQtXHRzZWxlY3QgVVNCX05FVF9DRENfU1VCU0VUX0VOQUJMRVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTQ1MD1jb25maWcgVVNCX0JFTEtJTlxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNDUxLVx0Ym9vbCBcJiMzNDtlVEVLIGJhc2VkIGhvc3QtdG8taG9zdCBjYWJsZXMgKEFkdmFuY2UsIEJlbGtpbiwgLi4uKVwmIzM0O1xuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6NDUyOlx0ZGVwZW5kcyBvbiBVU0JfTkVUX0NEQ19TVUJTRVRcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTQ1My1cdHNlbGVjdCBVU0JfTkVUX0NEQ19TVUJTRVRfRU5BQkxFXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NDYwPWNvbmZpZyBVU0JfQVJNTElOVVhcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTQ2MS1cdGJvb2wgXCYjMzQ7RW1iZWRkZWQgQVJNIExpbnV4IGxpbmtzIChpUGFxLCAuLi4pXCYjMzQ7XG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo0NjI6XHRkZXBlbmRzIG9uIFVTQl9ORVRfQ0RDX1NVQlNFVFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNDYzLVx0c2VsZWN0IFVTQl9ORVRfQ0RDX1NVQlNFVF9FTkFCTEVcbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz00Nzg9Y29uZmlnIFVTQl9FUFNPTjI4ODhcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTQ3OS1cdGJvb2wgXCYjMzQ7RXBzb24gMjg4OCBiYXNlZCBmaXJtd2FyZSAoREVWRUxPUE1FTlQpXCYjMzQ7XG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo0ODA6XHRkZXBlbmRzIG9uIFVTQl9ORVRfQ0RDX1NVQlNFVFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNDgxLVx0c2VsZWN0IFVTQl9ORVRfQ0RDX1NVQlNFVF9FTkFCTEVcbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz00ODY9Y29uZmlnIFVTQl9LQzIxOTBcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTQ4Ny1cdGJvb2wgXCYjMzQ7S1QgVGVjaG5vbG9neSBLQzIxOTAgYmFzZWQgY2FibGVzIChJbnN0YU5ldClcJiMzNDtcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjQ4ODpcdGRlcGVuZHMgb24gVVNCX05FVF9DRENfU1VCU0VUXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy00ODktXHRzZWxlY3QgVVNCX05FVF9DRENfU1VCU0VUX0VOQUJMRVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTQ5ND1jb25maWcgVVNCX05FVF9aQVVSVVNcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTQ5NS1cdHRyaXN0YXRlIFwmIzM0O1NoYXJwIFphdXJ1cyAoc3RvY2sgUk9NcykgYW5kIGNvbXBhdGlibGVcJiMzNDtcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjQ5NjpcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNDk3LVx0c2VsZWN0IFVTQl9ORVRfQ0RDRVRIRVJcbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz01MTI9Y29uZmlnIFVTQl9ORVRfQ1g4MjMxMF9FVEhcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTUxMy1cdHRyaXN0YXRlIFwmIzM0O0NvbmV4YW50IENYODIzMTAgVVNCIGV0aGVybmV0IHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjUxNDpcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNTE1LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTUyMD1jb25maWcgVVNCX05FVF9LQUxNSUFcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTUyMS1cdHRyaXN0YXRlIFwmIzM0O1NhbXN1bmcgS2FsbWlhIGJhc2VkIExURSBVU0IgbW9kZW1cJiMzNDtcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjUyMjpcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNTIzLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTUzMD1jb25maWcgVVNCX05FVF9RTUlfV1dBTlxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNTMxLVx0dHJpc3RhdGUgXCYjMzQ7UU1JIFdXQU4gZHJpdmVyIGZvciBRdWFsY29tbSBNU00gYmFzZWQgM0cgYW5kIExURSBtb2RlbXNcJiMzNDtcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjUzMjpcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNTMzLVx0c2VsZWN0IFVTQl9XRE1cbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz01NTI9Y29uZmlnIFVTQl9IU09cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTU1My1cdHRyaXN0YXRlIFwmIzM0O09wdGlvbiBVU0IgSGlnaCBTcGVlZCBNb2JpbGUgRGV2aWNlc1wmIzM0O1xuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6NTU0Olx0ZGVwZW5kcyBvbiBVU0IgXHUwMDI2XHUwMDI2IFJGS0lMTCBcdTAwMjZcdTAwMjYgVFRZXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy01NTUtXHRkZWZhdWx0IG5cbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz01NjM9Y29uZmlnIFVTQl9ORVRfSU5UNTFYMVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNTY0LVx0dHJpc3RhdGUgXCYjMzQ7SW50ZWxsb24gUExDIGJhc2VkIHVzYiBhZGFwdGVyXCYjMzQ7XG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo1NjU6XHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTU2Ni1cdHNlbGVjdCBVU0JfTkVUX0NEQ0VUSEVSXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NTcyPWNvbmZpZyBVU0JfQ0RDX1BIT05FVFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNTczLVx0dHJpc3RhdGUgXCYjMzQ7Q0RDIFBob25ldCBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo1NzQ6XHRkZXBlbmRzIG9uIFBIT05FVCBcdTAwMjZcdTAwMjYgVVNCX1VTQk5FVFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNTc1LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTU5MD1jb25maWcgVVNCX1NJRVJSQV9ORVRcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTU5MS1cdHRyaXN0YXRlIFwmIzM0O1VTQi10by1XV0FOIERyaXZlciBmb3IgU2llcnJhIFdpcmVsZXNzIG1vZGVtc1wmIzM0O1xuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6NTkyOlx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy01OTMtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NTk5PWNvbmZpZyBVU0JfVkw2MDBcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTYwMC1cdHRyaXN0YXRlIFwmIzM0O0xHIFZMNjAwIG1vZGVtIGRvbmdsZVwmIzM0O1xuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6NjAxOlx0ZGVwZW5kcyBvbiBVU0JfTkVUX0NEQ0VUSEVSIFx1MDAyNlx1MDAyNiBUVFlcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTYwMi1cdHNlbGVjdCBVU0JfQUNNXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NjE0PWNvbmZpZyBVU0JfTkVUX0NIOTIwMFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNjE1LVx0dHJpc3RhdGUgXCYjMzQ7UWluZ0hlbmcgQ0g5MjAwIFVTQiBldGhlcm5ldCBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo2MTY6XHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTYxNy1cdHNlbGVjdCBNSUlcbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz02MjU9Y29uZmlnIFVTQl9ORVRfQVFDMTExXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy02MjYtXHR0cmlzdGF0ZSBcJiMzNDtBcXVhbnRpYSBBUXRpb24gVVNCIHRvIDUvMi41R2JFIENvbnRyb2xsZXJzIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjYyNzpcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNjI4LVx0c2VsZWN0IENSQzMyXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NjM2PWNvbmZpZyBVU0JfUlRMODE1M19FQ01cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTYzNy1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo2Mzg6XHRkZXBlbmRzIG9uIFVTQl9ORVRfQ0RDRVRIRVIgXHUwMDI2XHUwMDI2IChVU0JfUlRMODE1MiB8fCBVU0JfUlRMODE1Mj1uKVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNjM5LVx0ZGVmYXVsdCB5XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA4OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1MDM4CgkJCQkJCQlvdXRwdXQ6IDE2NQoJCQkJCQkJdGhvdWdodHM6IDQyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBVU0IgTmV0d29yayBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgaXQgbG9va3MgbGlrZSB0aGUgYFVTQl9MQU43OFhYYCBkcml2ZXIgZm9yIE1pY3JvY2hpcCBMQU43OFhYLWJhc2VkIFVTQiBFdGhlcm5ldCBhZGFwdGVycyBpcyBpbmRlcGVuZGVudCBvZiBgVVNCX1VTQk5FVGAuIEhvd2V2ZXIsIHRoZSBgVVNCX05FVF9BWDg4MTdYYCBkcml2ZXIsIGZvciBBU0lYIEFYODh4eHgtYmFzZWQgVVNCIDIuMCBFdGhlcm5ldCBhZGFwdGVycywgKmRvZXMqIGRlcGVuZCBvbiBgVVNCX1VTQk5FVGAuCgpUaGVyZWZvcmUsIHRvIGVuc3VyZSBib3RoIHR5cGVzIG9mIGFkYXB0ZXJzIGFyZSBlbmFibGVkIGFuZCBmdW5jdGlvbmFsLCBhbmQgZ2l2ZW4gdGhhdCB0aGUgY29kZSBwYXRocyBwb3RlbnRpYWxseSBpbnRlcnNlY3QsIEkgc2hvdWxkIGVuYWJsZSBgVVNCX1VTQk5FVGAsIGFsb25nIHdpdGggYFVTQl9ORVRfQVg4ODE3WGAgYW5kIGBVU0JfTEFONzhYWGAuIFRoYXQgc2VlbXMgbGlrZSBhIGxvZ2ljYWwgZmlyc3Qgc3RlcC4KCk5vdywgdGhlIGludGVyZXN0aW5nIGJpdC4gVGhlIHBhdGNoIHNlZW1zIHRvIGZvY3VzIG9uIGBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldGAuIEl0JiMzOTtzIGFuIGV4cG9ydGVkIHN5bWJvbCwgd2hpY2ggc3VnZ2VzdHMgaXQmIzM5O3Mgd2lkZWx5IHVzZWQgYnkgbmV0d29yayBkcml2ZXJzLiBUaGF0IG1lYW5zIGl0JiMzOTtzIGRlZmluaXRlbHkgcmVhY2hhYmxlIGNvZGUuIE15IGludHVpdGlvbiBpcyB0aGF0IHRoaXMgaXMgdGhlIGtleSB0byBmb2N1cyBvbiwgYW5kIHRoaXMgbmVlZHMgdG8gYmUgaW52ZXN0aWdhdGVkIGR1cmluZyBmdXp6aW5nLgoKTGV0IG1lIHN1bW1hcml6ZSBteSBmaW5kaW5ncywgbWFraW5nIGl0IGNsZWFyIHdoYXQgYWN0aW9ucyBJIG5lZWQgdG8gdGFrZToKCiogICAqKldvcnRoRnV6emluZzoqKiBUcnVlIC0gdGhpcyBpcyBkZWZpbml0ZWx5IHdvcnRoIG91ciBhdHRlbnRpb24uCiogICAqKkZvY3VzU3ltYm9sczoqKiBcWyYjMzQ7cGh5bGlua1xfZXRodG9vbFxfa3NldHRpbmdzXF9zZXQmIzM0O1xdIC0gdGhhdCYjMzk7cyB0aGUgcHJpbWFyeSB0YXJnZXQuCiogICAqKkVuYWJsZUNvbmZpZ3M6KiogXFsmIzM0O1VTQlxfVVNCTkVUJiMzNDssICYjMzQ7VVNCXF9ORVRcX0FYODgxN1gmIzM0OywgJiMzNDtVU0JcX0xBTjc4WFgmIzM0O1xdIC0gdG8gZW5zdXJlIHRoZSByZWxldmFudCBjb2RlIHBhdGhzIGFyZSBhY3RpdmUuCiogICAqKlJlYXNvbmluZzoqKiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIHZhbGlkYXRpb24gY2hlY2sgd2l0aGluIGBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldGAgdG8gcHJldmVudCBzZXR0aW5nIGludmFsaWQgc3BlZWQgYW5kIGR1cGxleCBzZXR0aW5ncyB2aWEgYGV0aHRvb2xgLCB3aGljaCBpcyBhIGdvb2QgcHJvdGVjdGlvbiBzdHJhdGVneSBmb3IgdGhvc2UgZGV2aWNlcy4gVGhpcyBjb2RlIGNhbiBiZSByZWFjaGVkIHZpYSBVU0IgbmV0d29yayBkcml2ZXJzIHRoYXQgdXRpbGl6ZSBwaHlsaW5rIChzdWNoIGFzIEFTSVgsIExBTjc4WFgpIGFuZCB0aGlzIGNvZGUgY2FuIGJlIHJlYWNoZWQgdW5kZXIgdmlydHVhbGl6YXRpb24gYXMgd2VsbC4KCk9rYXksIHdpdGggdGhhdCBjbGVhciwgSSYjMzk7bSByZWFkeSB0byBwcm9jZWVkLiBJJiMzOTtsbCBjYWxsIGBzZXQtcmVzdWx0c2Agbm93IGFuZCBtb3ZlIG9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwODoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VVNCX1VTQk5FVCYjMzQ7LAogICAgJiMzNDtVU0JfTkVUX0FYODgxN1gmIzM0OywKICAgICYjMzQ7VVNCX0xBTjc4WFgmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgdmFsaWRhdGlvbiBjaGVjayBpbiBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldCB0byBlbnN1cmUgdGhhdCB0aGUgcmVxdWVzdGVkIHNwZWVkIGFuZCBkdXBsZXggc2V0dGluZ3MgYXJlIHN1cHBvcnRlZCBieSB0aGUgUEhZIGNhcGFiaWxpdGllcyBiZWZvcmUgYXBwbHlpbmcgdGhlbS4gVGhpcyBwcmV2ZW50cyBpbnZhbGlkIGNvbmZpZ3VyYXRpb25zIGZyb20gYmVpbmcgc2V0IHZpYSBldGh0b29sLiBUaGUgY29kZSBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHRocm91Z2ggVVNCIG5ldHdvcmsgZHJpdmVycyB0aGF0IHVzZSBwaHlsaW5rIChlLmcuLCBBU0lYLCBMQU43OFhYKSB3aGljaCBjYW4gYmUgZW11bGF0ZWQgdmlhIFVTQiBnYWRnZXQvZHVtbXlfaGNkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtVU0JfVVNCTkVUJiMzNDssCiAgICAmIzM0O1VTQl9ORVRfQVg4ODE3WCYjMzQ7LAogICAgJiMzNDtVU0JfTEFONzhYWCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSB2YWxpZGF0aW9uIGNoZWNrIGluIHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0IHRvIGVuc3VyZSB0aGF0IHRoZSByZXF1ZXN0ZWQgc3BlZWQgYW5kIGR1cGxleCBzZXR0aW5ncyBhcmUgc3VwcG9ydGVkIGJ5IHRoZSBQSFkgY2FwYWJpbGl0aWVzIGJlZm9yZSBhcHBseWluZyB0aGVtLiBUaGlzIHByZXZlbnRzIGludmFsaWQgY29uZmlndXJhdGlvbnMgZnJvbSBiZWluZyBzZXQgdmlhIGV0aHRvb2wuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdGhyb3VnaCBVU0IgbmV0d29yayBkcml2ZXJzIHRoYXQgdXNlIHBoeWxpbmsgKGUuZy4sIEFTSVgsIExBTjc4WFgpIHdoaWNoIGNhbiBiZSBlbXVsYXRlZCB2aWEgVVNCIGdhZGdldC9kdW1teV9oY2QuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwODoxOToyOC40MzA1MDk5NzhaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MjA0NTA4ODc5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJVU0JfVVNCTkVUXCIsXG4gICAgXCJVU0JfTkVUX0FYODgxN1hcIixcbiAgICBcIlVTQl9MQU43OFhYXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgdmFsaWRhdGlvbiBjaGVjayBpbiBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldCB0byBlbnN1cmUgdGhhdCB0aGUgcmVxdWVzdGVkIHNwZWVkIGFuZCBkdXBsZXggc2V0dGluZ3MgYXJlIHN1cHBvcnRlZCBieSB0aGUgUEhZIGNhcGFiaWxpdGllcyBiZWZvcmUgYXBwbHlpbmcgdGhlbS4gVGhpcyBwcmV2ZW50cyBpbnZhbGlkIGNvbmZpZ3VyYXRpb25zIGZyb20gYmVpbmcgc2V0IHZpYSBldGh0b29sLiBUaGUgY29kZSBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHRocm91Z2ggVVNCIG5ldHdvcmsgZHJpdmVycyB0aGF0IHVzZSBwaHlsaW5rIChlLmcuLCBBU0lYLCBMQU43OFhYKSB3aGljaCBjYW4gYmUgZW11bGF0ZWQgdmlhIFVTQiBnYWRnZXQvZHVtbXlfaGNkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwODoxOToyOC40MzA1MjM4MThaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxMDk3NDkwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDY2MjAzYTEyYzRjODE3YzcxNzFhMjJiOGI3YTIwZWI5OTI1YmMyZjRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgMSAwODoxOToyNiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xcbmluZGV4IDA4N2FjNjNmOTE5M2Q3Li4yMmY5YmJkMzgxYmQ3MiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXFxuKysrIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xcbkBAIC0yOTg5LDYgKzI5ODksMTAgQEAgaW50IHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0KHN0cnVjdCBwaHlsaW5rICpwbCxcXG4gXFx0aWYgKHBsLVxcdTAwM2VwaHlkZXYpIHtcXG4gXFx0XFx0c3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgcGh5X2tzZXQgPSAqa3NldDtcXG4gXFxuK1xcdFxcdGlmICghcGh5X2NhcHNfbG9va3VwKGtzZXQtXFx1MDAzZWJhc2Uuc3BlZWQsIGtzZXQtXFx1MDAzZWJhc2UuZHVwbGV4LFxcbitcXHRcXHRcXHRcXHQgICAgIHBsLVxcdTAwM2VzdXBwb3J0ZWQsIHRydWUpKVxcbitcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFxuIFxcdFxcdGxpbmttb2RlX2FuZChwaHlfa3NldC5saW5rX21vZGVzLmFkdmVydGlzaW5nLFxcbiBcXHRcXHRcXHQgICAgIHBoeV9rc2V0LmxpbmtfbW9kZXMuYWR2ZXJ0aXNpbmcsXFxuIFxcdFxcdFxcdCAgICAgcGwtXFx1MDAzZXN1cHBvcnRlZCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA4OjE5OjI4Ljk0NTA0NjMzOFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODE1MzA1MjQ0NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVVNCX1VTQk5FVFwiLFxuICAgIFwiVVNCX05FVF9BWDg4MTdYXCIsXG4gICAgXCJVU0JfTEFONzhYWFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHZhbGlkYXRpb24gY2hlY2sgaW4gcGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXQgdG8gZW5zdXJlIHRoYXQgdGhlIHJlcXVlc3RlZCBzcGVlZCBhbmQgZHVwbGV4IHNldHRpbmdzIGFyZSBzdXBwb3J0ZWQgYnkgdGhlIFBIWSBjYXBhYmlsaXRpZXMgYmVmb3JlIGFwcGx5aW5nIHRoZW0uIFRoaXMgcHJldmVudHMgaW52YWxpZCBjb25maWd1cmF0aW9ucyBmcm9tIGJlaW5nIHNldCB2aWEgZXRodG9vbC4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB0aHJvdWdoIFVTQiBuZXR3b3JrIGRyaXZlcnMgdGhhdCB1c2UgcGh5bGluayAoZS5nLiwgQVNJWCwgTEFONzhYWCkgd2hpY2ggY2FuIGJlIGVtdWxhdGVkIHZpYSBVU0IgZ2FkZ2V0L2R1bW15X2hjZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA2NjIwM2ExMmM0YzgxN2M3MTcxYTIyYjhiN2EyMGViOTkyNWJjMmY0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMSAwODoxOToyNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXG5pbmRleCAwODdhYzYzZjkxOTNkNy4uMjJmOWJiZDM4MWJkNzIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXG4rKysgYi9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXG5AQCAtMjk4OSw2ICsyOTg5LDEwIEBAIGludCBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldChzdHJ1Y3QgcGh5bGluayAqcGwsXG4gXHRpZiAocGwtXHUwMDNlcGh5ZGV2KSB7XG4gXHRcdHN0cnVjdCBldGh0b29sX2xpbmtfa3NldHRpbmdzIHBoeV9rc2V0ID0gKmtzZXQ7XG4gXG4rXHRcdGlmICghcGh5X2NhcHNfbG9va3VwKGtzZXQtXHUwMDNlYmFzZS5zcGVlZCwga3NldC1cdTAwM2ViYXNlLmR1cGxleCxcbitcdFx0XHRcdCAgICAgcGwtXHUwMDNlc3VwcG9ydGVkLCB0cnVlKSlcbitcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbitcbiBcdFx0bGlua21vZGVfYW5kKHBoeV9rc2V0LmxpbmtfbW9kZXMuYWR2ZXJ0aXNpbmcsXG4gXHRcdFx0ICAgICBwaHlfa3NldC5saW5rX21vZGVzLmFkdmVydGlzaW5nLFxuIFx0XHRcdCAgICAgcGwtXHUwMDNlc3VwcG9ydGVkKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA4OjE5OjI4Ljk0NTA1MDE1OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMTcyMzIxNTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUEhZTGluayBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL25ldC9waHkvcGh5bGluay5jYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBpbiB0aGUgYHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0YCBmdW5jdGlvbi4gVGhleSd2ZSBhZGRlZCBhIHZhbGlkYXRpb24gY2hlY2sgcmlnaHQgaGVyZTpcblxuYGBgY1xuXHRcdGlmICghcGh5X2NhcHNfbG9va3VwKGtzZXQtXHUwMDNlYmFzZS5zcGVlZCwga3NldC1cdTAwM2ViYXNlLmR1cGxleCxcblx0XHRcdFx0ICAgICBwbC1cdTAwM2VzdXBwb3J0ZWQsIHRydWUpKVxuXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG5gYGBcblxuRXNzZW50aWFsbHksIHRoZXkncmUgaW50cm9kdWNpbmcgYSBjaGVjayB0byBlbnN1cmUgdGhlIHJlcXVlc3RlZCBzcGVlZCBhbmQgZHVwbGV4IHNldHRpbmdzIGFyZSBhY3R1YWxseSAqc3VwcG9ydGVkKiBieSB0aGUgUEhZIGJlZm9yZSBhcHBseWluZyB0aGUgZXRodG9vbCBrc2V0dGluZ3MuIFRoaXMgaXMgYSBjbGVhciBmdW5jdGlvbmFsIGVuaGFuY2VtZW50LiAgVGhleSdyZSB1c2luZyBgcGh5X2NhcHNfbG9va3VwYCB0byBwZXJmb3JtIHRoaXMgdmFsaWRhdGlvbiwgd2hpY2ggSSdsbCBuZWVkIHRvIGRpZyBpbnRvLiBJdCdzIGdvb2QgcHJhY3RpY2UgdG8gdmFsaWRhdGUgdGhlc2Ugc2V0dGluZ3MsIHByZXZlbnRpbmcgdW5leHBlY3RlZCBiZWhhdmlvciBvciBlcnJvcnMgbGF0ZXIgb24uIEknbGwgbmVlZCB0byBjb25maXJtIHdoYXQgYHBsLVx1MDAzZXN1cHBvcnRlZGAgcmVmZXJzIHRvIGluIHRoaXMgY29udGV4dC4gSXMgaXQgdGhlIGludGVyc2VjdGlvbiBvZiBjYXBhYmlsaXRpZXMgYWR2ZXJ0aXNlZCBieSBib3RoIFBIWSBhbmQgTUFDPyBPciB0aGUgY2FwYWJpbGl0aWVzIGZyb20gb25lIHNpZGU/IExldCBtZSBkaXZlIGRlZXBlciB0byBlbnN1cmUgdGhpcyB3b3JrcyBhcyBleHBlY3RlZCBhbmQgZG9lc24ndCBpbnRyb2R1Y2UgYW55IHJlZ3Jlc3Npb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODc2LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTM0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDg6MTk6MzMuMDYyMjg4ODA3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4Mjg5NDMzMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5bGluay5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9Mjk1NT1zdGF0aWMgYm9vbCBwaHlsaW5rX3ZhbGlkYXRlX3Bjc19pbmJhbmRfYXV0b25lZyhzdHJ1Y3QgcGh5bGluayAqcGwsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI5NzUtLyoqXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyOTc2OiAqIHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0KCkgLSBzZXQgdGhlIGxpbmsgc2V0dGluZ3NcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI5NzctICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI5NzktICovXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyOTgwOmludCBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldChzdHJ1Y3QgcGh5bGluayAqcGwsXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yOTgxLVxcdFxcdFxcdFxcdCAgY29uc3Qgc3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgKmtzZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNDYtfVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzE0NzpFWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldCk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTQ4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwODoxOTozMy40NDUxOTg0NVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMzEzNTk0NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipBbmFseXppbmcgdGhlIFBoeWxpbmsgYW5kIEV0aHRvb2wgUmVsYXRpb25zaGlwKipcblxuQWxyaWdodCwgc28gYHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0YCBpcyBhIGtleSBmdW5jdGlvbiwgYW4gZXhwb3J0ZWQgc3ltYm9sLCByaWdodD8gVGhhdCBtZWFucyBpdCdzIGRlc2lnbmVkIHRvIGJlIHVzZWQgZXh0ZXJuYWxseSwgcHJpbWFyaWx5IGJ5IG5ldHdvcmsgZGV2aWNlIGRyaXZlcnMgdG8gaW50ZXJmYWNlIHdpdGggZXRodG9vbCdzIHNldHRpbmdzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcmVsYXRpb25zaGlwIHRvIGBwaHlsaW5rLmNgLiBUaGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZmlndXJlIG91dCB3aGljaCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYWN0dWFsbHkgKmVuYWJsZSogYHBoeWxpbmsuY2AgaW4gdGhlIGZpcnN0IHBsYWNlLiBLbm93aW5nIHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB3aGVuIGFuZCBob3cgdGhpcyBmdW5jdGlvbiBpcyBhY3R1YWxseSByZWxldmFudCBpbiB0aGUgYnJvYWRlciBuZXR3b3JrIHN0YWNrLiBJdCdzIHRpbWUgdG8gZGlnIGludG8gdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb25zIGFuZCBzZWUgd2hhdCB0cmlnZ2VycyB0aGUgaW5jbHVzaW9uIG9mIHRoYXQgYHBoeWxpbmtgIG1vZHVsZS4gVGhpcyBpcyBhbGwgYWJvdXQgdHJhY2luZyB0aGUgZGVwZW5kZW5jeSBjaGFpbiwgYW5kIHVuZGVyc3RhbmRpbmcgd2hlcmUgdGhpcyBldGh0b29sIGZ1bmN0aW9uIGZhbGxzIGluIHRoZSBncmFuZCBzY2hlbWUgb2YgdGhpbmdzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjA3LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDg6MTk6MzYuNjc2NTYyNTA1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMzcxNTg5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHlsaW5rLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZT0xOD1vYmotJChDT05GSUdfUEhZTElCKVxcdFxcdCs9IG1kaW9fYnVzLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6MTk6b2JqLSQoQ09ORklHX1BIWUxJTkspXFx0XFx0Kz0gcGh5bGluay5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTIwLW9iai0kKENPTkZJR19QSFlMSUIpXFx0XFx0Kz0gbGlicGh5Lm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDg6MTk6MzYuODgwMjg4NTU1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjQ5MjA3NDU2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gUEhZTElOSyBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBJJ20gd29ya2luZyB3aXRoIGlzIGBQSFlMSU5LYC4gUmlnaHQsIGdvdCBpdC4gTm93LCBnaXZlbiB0aGF0IGl0J3MgYFBIWUxJTktgLCBJIG5lZWQgdG8gaW1tZWRpYXRlbHkgdW5kZXJzdGFuZCBpdHMgY2FwYWJpbGl0aWVzLiBNeSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBjb25zdWx0IGBwaHlfY2Fwc19sb29rdXBgLiBUaGF0IGZ1bmN0aW9uIGlzIGNyaXRpY2FsIGluIHByb3ZpZGluZyBtZSB3aXRoIGEgc3BlY2lmaWMsIGNvbmNpc2UgYW5kIGZvY3VzZWQgdmlldyBvZiBhbGwgdGhlIGZlYXR1cmVzIGFuZCBsaW1pdGF0aW9ucyB0aGlzIGBQSFlMSU5LYCBjb25maWd1cmF0aW9uIGVudGFpbHMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgdGhvcm91Z2hseSwgZXNwZWNpYWxseSBnaXZlbiB0aGF0IFBIWUxJTksgd2lsbCBkZWZpbmUgbXkgZnVydGhlciBkZWNpc2lvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5NzgsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwODoxOTozOS4zNzIzNjcwNTNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzQ1MjQyMzI0NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHlfY2Fwc19sb29rdXBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHktY2Fwcy5oPTU1PWNvbnN0IHN0cnVjdCBsaW5rX2NhcGFiaWxpdGllcyAqXFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jYXBzLmg6NTY6cGh5X2NhcHNfbG9va3VwX2J5X2xpbmttb2RlKGNvbnN0IHVuc2lnbmVkIGxvbmcgKmxpbmttb2Rlcyk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jYXBzLmgtNTctXFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jYXBzLmg9NTg9Y29uc3Qgc3RydWN0IGxpbmtfY2FwYWJpbGl0aWVzICpcXG5kcml2ZXJzL25ldC9waHkvcGh5LWNhcHMuaDo1OTpwaHlfY2Fwc19sb29rdXBfYnlfbGlua21vZGVfcmV2KGNvbnN0IHVuc2lnbmVkIGxvbmcgKmxpbmttb2RlcywgYm9vbCBmZHhfb25seSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jYXBzLmgtNjAtXFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jYXBzLmg9NjE9Y29uc3Qgc3RydWN0IGxpbmtfY2FwYWJpbGl0aWVzICpcXG5kcml2ZXJzL25ldC9waHkvcGh5LWNhcHMuaDo2MjpwaHlfY2Fwc19sb29rdXAoaW50IHNwZWVkLCB1bnNpZ25lZCBpbnQgZHVwbGV4LCBjb25zdCB1bnNpZ25lZCBsb25nICpzdXBwb3J0ZWQsXFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jYXBzLmgtNjMtXFx0XFx0Ym9vbCBleGFjdCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYz0zNDI9dm9pZCBwaHlfcmVzb2x2ZV9hbmVnX2xpbmttb2RlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYy0zNDgtXFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmM6MzQ5OlxcdGMgPSBwaHlfY2Fwc19sb29rdXBfYnlfbGlua21vZGUoY29tbW9uKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYy0zNTAtXFx0aWYgKGMpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jPTM2OD12b2lkIHBoeV9jaGVja19kb3duc2hpZnQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jLTM4MS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYzozODI6XFx0YyA9IHBoeV9jYXBzX2xvb2t1cF9ieV9saW5rbW9kZShjb21tb24pO1xcbmRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jLTM4My1cXHRpZiAoYylcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jPTM5NT1zdGF0aWMgaW50IHBoeV9yZXNvbHZlX21pbl9zcGVlZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBib29sIGZkeF9vbmx5KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmMtNDAxLVxcbmRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jOjQwMjpcXHRjID0gcGh5X2NhcHNfbG9va3VwX2J5X2xpbmttb2RlX3Jldihjb21tb24sIGZkeF9vbmx5KTtcXG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYy00MDMtXFx0aWYgKGMpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LmM9MjU2PXN0YXRpYyB2b2lkIHBoeV9zYW5pdGl6ZV9zZXR0aW5ncyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTI1OS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LmM6MjYwOlxcdGMgPSBwaHlfY2Fwc19sb29rdXAocGh5ZGV2LVxcdTAwM2VzcGVlZCwgcGh5ZGV2LVxcdTAwM2VkdXBsZXgsIHBoeWRldi1cXHUwMDNlc3VwcG9ydGVkLFxcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy0yNjEtXFx0XFx0XFx0ICAgIGZhbHNlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jPTEyMj1zaXplX3QgcGh5X2NhcHNfc3BlZWRzKHVuc2lnbmVkIGludCAqc3BlZWRzLCBzaXplX3Qgc2l6ZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jLTE0MC0vKipcXG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYzoxNDE6ICogcGh5X2NhcHNfbG9va3VwX2J5X2xpbmttb2RlKCkgLSBMb29rdXAgdGhlIGZhc3Rlc3QgbWF0Y2hpbmcgbGlua19jYXBhYmlsaXRpZXNcXG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYy0xNDItICogQGxpbmttb2RlczogTGlua21vZGVzIHRvIG1hdGNoIGFnYWluc3RcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jPTE0OD1jb25zdCBzdHJ1Y3QgbGlua19jYXBhYmlsaXRpZXMgKlxcbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jOjE0OTpwaHlfY2Fwc19sb29rdXBfYnlfbGlua21vZGUoY29uc3QgdW5zaWduZWQgbG9uZyAqbGlua21vZGVzKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jLTE1MC17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYy0xNjAtLyoqXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmM6MTYxOiAqIHBoeV9jYXBzX2xvb2t1cF9ieV9saW5rbW9kZV9yZXYoKSAtIExvb2t1cCB0aGUgc2xvd2VzdCBtYXRjaGluZyBsaW5rX2NhcGFiaWxpdGllc1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jLTE2Mi0gKiBAbGlua21vZGVzOiBMaW5rbW9kZXMgdG8gbWF0Y2ggYWdhaW5zdFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmM9MTY5PWNvbnN0IHN0cnVjdCBsaW5rX2NhcGFiaWxpdGllcyAqXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmM6MTcwOnBoeV9jYXBzX2xvb2t1cF9ieV9saW5rbW9kZV9yZXYoY29uc3QgdW5zaWduZWQgbG9uZyAqbGlua21vZGVzLCBib29sIGZkeF9vbmx5KVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jLTE3MS17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYy0xODUtLyoqXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmM6MTg2OiAqIHBoeV9jYXBzX2xvb2t1cCgpIC0gTG9va3VwIGNhcGFiaWxpdGllcyBieSBzcGVlZC9kdXBsZXggdGhhdCBtYXRjaGVzIGEgbWFza1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jLTE4Ny0gKiBAc3BlZWQ6IFNwZWVkIHRvIG1hdGNoXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYz0yMDk9Y29uc3Qgc3RydWN0IGxpbmtfY2FwYWJpbGl0aWVzICpcXG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYzoyMTA6cGh5X2NhcHNfbG9va3VwKGludCBzcGVlZCwgdW5zaWduZWQgaW50IGR1cGxleCwgY29uc3QgdW5zaWduZWQgbG9uZyAqc3VwcG9ydGVkLFxcbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jLTIxMS1cXHRcXHRib29sIGV4YWN0KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmMtMjM1LX1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYzoyMzY6RVhQT1JUX1NZTUJPTF9HUEwocGh5X2NhcHNfbG9va3VwKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYy0yMzctXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTIzMDk9aW50IF9fZ2VucGh5X2NvbmZpZ19hbmVnKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGJvb2wgY2hhbmdlZClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMjMzNy1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjIzMzg6XFx0XFx0YyA9IHBoeV9jYXBzX2xvb2t1cChwaHlkZXYtXFx1MDAzZXNwZWVkLCBwaHlkZXYtXFx1MDAzZWR1cGxleCxcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTIzMzktXFx0XFx0XFx0XFx0ICAgIHBoeWRldi1cXHUwMDNlc3VwcG9ydGVkLCB0cnVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NjYwPXN0YXRpYyBpbnQgcGh5bGlua19wYXJzZV9maXhlZGxpbmsoc3RydWN0IHBoeWxpbmsgKnBsLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy03NDItXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo3NDM6XFx0YyA9IHBoeV9jYXBzX2xvb2t1cChwbC1cXHUwMDNlbGlua19jb25maWcuc3BlZWQsIHBsLVxcdTAwM2VsaW5rX2NvbmZpZy5kdXBsZXgsXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy03NDQtXFx0XFx0XFx0ICAgIHBsLVxcdTAwM2VzdXBwb3J0ZWQsIHRydWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xODAxPWludCBwaHlsaW5rX3NldF9maXhlZF9saW5rKHN0cnVjdCBwaHlsaW5rICpwbCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTgxMC1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE4MTE6XFx0YyA9IHBoeV9jYXBzX2xvb2t1cChzdGF0ZS1cXHUwMDNlc3BlZWQsIHN0YXRlLVxcdTAwM2VkdXBsZXgsXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODEyLVxcdFxcdFxcdCAgICBwbC1cXHUwMDNlc3VwcG9ydGVkLCB0cnVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9Mjk4MD1pbnQgcGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXQoc3RydWN0IHBoeWxpbmsgKnBsLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yOTkxLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6Mjk5MjpcXHRcXHRpZiAoIXBoeV9jYXBzX2xvb2t1cChrc2V0LVxcdTAwM2ViYXNlLnNwZWVkLCBrc2V0LVxcdTAwM2ViYXNlLmR1cGxleCxcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI5OTMtXFx0XFx0XFx0XFx0ICAgICBwbC1cXHUwMDNlc3VwcG9ydGVkLCB0cnVlKSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzAzMS1cXHRcXHQgKi9cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMwMzI6XFx0XFx0YyA9IHBoeV9jYXBzX2xvb2t1cChrc2V0LVxcdTAwM2ViYXNlLnNwZWVkLCBrc2V0LVxcdTAwM2ViYXNlLmR1cGxleCxcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMwMzMtXFx0XFx0XFx0XFx0ICAgIHBsLVxcdTAwM2VzdXBwb3J0ZWQsIGZhbHNlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDg6MTk6NDIuODI0Nzk5NzE2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDEzNTQ4MDQ3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldGAgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBgcGh5X2NhcHNfbG9va3VwYCBjaGVjayB3aXRoaW4gYHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0YC4gVGhpcyBmdW5jdGlvbiBpcywgb2YgY291cnNlLCBhY2Nlc3NpYmxlIHRocm91Z2ggZXRodG9vbCdzIGlvY3RscyBhbmQgbmV0bGluayBjb21tYW5kcywgc3BlY2lmaWNhbGx5IGZvciBuZXR3b3JrIGRldmljZXMgdGhhdCBsZXZlcmFnZSBwaHlsaW5rLiBNeSBpbW1lZGlhdGUgY29uY2VybiwgYXMgYWx3YXlzIHdoZW4gZGVhbGluZyB3aXRoIGtlcm5lbC1sZXZlbCBjaGFuZ2VzLCBpcyB0aGUgc2NvcGUgb2YgdGhpcy4gSSBuZWVkIHRvIHRoaW5rIGFib3V0IHBvdGVudGlhbCBhdHRhY2sgc3VyZmFjZXMgYW5kIHdoZXRoZXIgdGhpcyBuZXcgY2hlY2sgaW50cm9kdWNlcyBhbnkgbmV3IHZ1bG5lcmFiaWxpdGllcyBvciB3ZWFrbmVzc2VzLlxuXG5Db3VsZCB0aGlzIGJlIHRyaWdnZXJlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHM/IEhtbSwgaXQncyBjZXJ0YWlubHkgcGxhdXNpYmxlLiBXZSBoYXZlIHZpcnR1YWwgbmV0d29yayBkcml2ZXJzIGFuZCBwZXJoYXBzIGV2ZW4gZHVtbXkgZHJpdmVycyB0aGF0IG1pZ2h0IGludGVncmF0ZSBwaHlsaW5rIGluIHRoZWlyIGRlc2lnbi4gSSBuZWVkIHRvIGNvbnNpZGVyIHRoYXQsIG9yIHdlIGNvdWxkIGFsd2F5cyBmdXp6IHRoZSBldGh0b29sIG5ldGxpbmsvaW9jdGwgaW50ZXJmYWNlIG9uIHZhcmlvdXMgZGV2aWNlcyBhbmQgc2VlIGlmIHdlIGNhbiB0cmlnZ2VyIHRoZSBjaGVjay5cblxuVGhlIG5leHQgcG9pbnQgSSBuZWVkIHRvIGNvbnNpZGVyIGlzIHdoZXRoZXIgYSB2aXJ0dWFsIGRyaXZlciBjdXJyZW50bHkgdXNlcyBwaHlsaW5rLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgSSB1bmRlcnN0YW5kIHRoZSBpbXBsZW1lbnRhdGlvbiBjb3JyZWN0bHkuIEkgd2lsbCBoYXZlIHRvIHN0YXJ0IGJ5IGNoZWNraW5nIHdoaWNoIGRyaXZlcnMgYXJlIGN1cnJlbnRseSB1c2luZyBwaHlsaW5rLCB0byBkZXRlcm1pbmUgdGhlIGxpa2VsaWhvb2Qgb2YgYSB2aXJ0dWFsIGRyaXZlciBiZWluZyBpbmNsdWRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTAyMywiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwODoxOTo0Ni45NjAyODM4ODNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxODA2NDM0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHlsaW5rX2NyZWF0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jPTExMjg9c3RhdGljIGludCBhbHRlcmFfdHNlX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmMtMTQxNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmM6MTQxNjpcXHRwcml2LVxcdTAwM2VwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnByaXYtXFx1MDAzZXBoeWxpbmtfY29uZmlnLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYy0xNDE3LVxcdFxcdFxcdFxcdCAgICAgICBvZl9md25vZGVfaGFuZGxlKHByaXYtXFx1MDAzZWRldmljZS1cXHUwMDNlb2Zfbm9kZSksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jPTEwNzQ9c3RhdGljIGludCBhZzcxeHhfcGh5bGlua19zZXR1cChzdHJ1Y3QgYWc3MXh4ICphZylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMTEwOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjExMDk6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZhZy1cXHUwMDNlcGh5bGlua19jb25maWcsIGFnLVxcdTAwM2VwZGV2LVxcdTAwM2VkZXYuZndub2RlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMTExMC1cXHRcXHRcXHRcXHQgYWctXFx1MDAzZXBoeV9pZl9tb2RlLCBcXHUwMDI2YWc3MXh4X3BoeWxpbmtfbWFjX29wcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTEwMjM9c3RhdGljIGludCBtYWNiX21paV9wcm9iZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMDg1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTA4NjpcXHRicC1cXHUwMDNlcGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZicC1cXHUwMDNlcGh5bGlua19jb25maWcsIGJwLVxcdTAwM2VwZGV2LVxcdTAwM2VkZXYuZndub2RlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTA4Ny1cXHRcXHRcXHRcXHQgICAgIGJwLVxcdTAwM2VwaHlfaW50ZXJmYWNlLCBcXHUwMDI2bWFjYl9waHlsaW5rX29wcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jPTIwMj1zdGF0aWMgaW50IGRwYWFfbmV0ZGV2X2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldF9kZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jLTI3NS1cXHRtYWNfZGV2LVxcdTAwM2V1cGRhdGVfc3BlZWQgPSBkcGFhX2V0aF9jZ3Jfc2V0X3NwZWVkO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL2RwYWFfZXRoLmM6Mjc2OlxcdG1hY19kZXYtXFx1MDAzZXBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2bWFjX2Rldi1cXHUwMDNlcGh5bGlua19jb25maWcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvZHBhYV9ldGguYy0yNzctXFx0XFx0XFx0XFx0XFx0ICBkZXZfZndub2RlKG1hY19kZXYtXFx1MDAzZWRldiksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmM9NTYwPWludCBkcGFhMl9tYWNfY29ubmVjdChzdHJ1Y3QgZHBhYTJfbWFjICptYWMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmMtNjI0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYzo2MjU6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZtYWMtXFx1MDAzZXBoeWxpbmtfY29uZmlnLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYy02MjYtXFx0XFx0XFx0XFx0IGRwbWFjX25vZGUsIG1hYy1cXHUwMDNlaWZfbW9kZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYz05NzE9c3RhdGljIGludCBlbmV0YzRfbGlua19pbml0KHN0cnVjdCBlbmV0Y19uZGV2X3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtOTg5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYzo5OTA6XFx0ZXJyID0gZW5ldGNfcGh5bGlua19jcmVhdGUocHJpdiwgbm9kZSwgXFx1MDAyNmVuZXRjX3BsX21hY19vcHMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy05OTEtXFx0aWYgKGVycikge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy05OTItXFx0XFx0ZGV2X2VycihkZXYsIFxcXCJGYWlsZWQgdG8gY3JlYXRlIHBoeWxpbmtcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYzo5OTM6XFx0XFx0Z290byBlcnJfcGh5bGlua19jcmVhdGU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk5NC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtOTk3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYzo5OTg6ZXJyX3BoeWxpbmtfY3JlYXRlOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy05OTktXFx0ZW5ldGNfbWRpb2J1c19kZXN0cm95KHBmKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jPTg0Nz1zdGF0aWMgaW50IGVuZXRjX3BmX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtOTI5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jOjkzMDpcXHRlcnIgPSBlbmV0Y19waHlsaW5rX2NyZWF0ZShwcml2LCBub2RlLCBcXHUwMDI2ZW5ldGNfbWFjX3BoeWxpbmtfb3BzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy05MzEtXFx0aWYgKGVycilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYzo5MzI6XFx0XFx0Z290byBlcnJfcGh5bGlua19jcmVhdGU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtOTMzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtOTQxLVxcdGVuZXRjX3BoeWxpbmtfZGVzdHJveShwcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYzo5NDI6ZXJyX3BoeWxpbmtfY3JlYXRlOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTk0My1cXHRlbmV0Y19tZGlvYnVzX2Rlc3Ryb3kocGYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jPTMxMj1FWFBPUlRfU1lNQk9MX0dQTChlbmV0Y19tZGlvYnVzX2Rlc3Ryb3kpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0zMTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jOjMxNDppbnQgZW5ldGNfcGh5bGlua19jcmVhdGUoc3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdiwgc3RydWN0IGRldmljZV9ub2RlICpub2RlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0zMTUtXFx0XFx0XFx0IGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgKm9wcylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0zMzctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jOjMzODpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnBmLVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgb2ZfZndub2RlX2hhbmRsZShub2RlKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMzM5LVxcdFxcdFxcdFxcdCBwZi1cXHUwMDNlaWZfbW9kZSwgb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0zNDgtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYzozNDk6RVhQT1JUX1NZTUJPTF9HUEwoZW5ldGNfcGh5bGlua19jcmVhdGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0zNTAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmg9MTI9dm9pZCBlbmV0Y19tZGlvYnVzX2Rlc3Ryb3koc3RydWN0IGVuZXRjX3BmICpwZik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5oOjEzOmludCBlbmV0Y19waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5oLTE0LVxcdFxcdFxcdCBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzICpvcHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvZnNfZW5ldC1tYWluLmM9ODUzPXN0YXRpYyBpbnQgZnNfZW5ldF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L2ZzX2VuZXQtbWFpbi5jLTkzMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9mc19lbmV0LW1haW4uYzo5MzM6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZmZXAtXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBkZXZfZndub2RlKGZlcC1cXHUwMDNlZGV2KSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9mc19lbmV0LW1haW4uYy05MzQtXFx0XFx0XFx0XFx0IHBoeV9tb2RlLCBcXHUwMDI2ZnNfZW5ldF9waHlsaW5rX21hY19vcHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3VjY19nZXRoLmM9MzQxOT1zdGF0aWMgaW50IHVjY19nZXRoX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UqIG9mZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3VjY19nZXRoLmMtMzU3My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvdWNjX2dldGguYzozNTc0OlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2dWdldGgtXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBkZXZfZndub2RlKFxcdTAwMjZkZXYtXFx1MDAzZWRldiksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3VjY19nZXRoLmMtMzU3NS1cXHRcXHRcXHRcXHQgcGh5X2ludGVyZmFjZSwgXFx1MDAyNnVnZXRoX21hY19vcHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm5ldGEuYz01NDgwPXN0YXRpYyBpbnQgbXZuZXRhX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bmV0YS5jLTU1OTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm5ldGEuYzo1NTk5OlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2cHAtXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBwZGV2LVxcdTAwM2VkZXYuZndub2RlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZuZXRhLmMtNTYwMC1cXHRcXHRcXHRcXHQgcGh5X21vZGUsIFxcdTAwMjZtdm5ldGFfcGh5bGlua19vcHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMl9tYWluLmM9Njg0MD1zdGF0aWMgaW50IG12cHAyX3BvcnRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDJfbWFpbi5jLTcxNDctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMl9tYWluLmM6NzE0ODpcXHRcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnBvcnQtXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBwb3J0X2Z3bm9kZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYy03MTQ5LVxcdFxcdFxcdFxcdFxcdCBwaHlfbW9kZSwgXFx1MDAyNm12cHAyX3BoeWxpbmtfb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfbWFpbi5jPTM3MD1zdGF0aWMgaW50IHByZXN0ZXJhX3BvcnRfc2ZwX2JpbmQoc3RydWN0IHByZXN0ZXJhX3BvcnQgKnBvcnQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX21haW4uYy00MTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9tYWluLmM6NDE3OlxcdFxcdHBoeV9saW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnBvcnQtXFx1MDAzZXBoeV9jb25maWcsIGZ3bm9kZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX21haW4uYy00MTgtXFx0XFx0XFx0XFx0XFx0ICBQSFlfSU5URVJGQUNFX01PREVfSU5URVJOQUwsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jPTQ4MjM9c3RhdGljIGludCBtdGtfYWRkX21hYyhzdHJ1Y3QgbXRrX2V0aCAqZXRoLCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYy00OTY3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmM6NDk2ODpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNm1hYy1cXHUwMDNlcGh5bGlua19jb25maWcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYy00OTY5LVxcdFxcdFxcdFxcdCBvZl9md25vZGVfaGFuZGxlKG1hYy1cXHUwMDNlb2Zfbm9kZSksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5jPTc0Nj1zdHJ1Y3QgbmV0X2RldmljZSAqZmJuaWNfbmV0ZGV2X2FsbG9jKHN0cnVjdCBmYm5pY19kZXYgKmZiZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmMtODM0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmM6ODM1OlxcdGlmIChmYm5pY19waHlsaW5rX2NyZWF0ZShuZXRkZXYpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuYy04MzYtXFx0XFx0ZnJlZV9uZXRkZXYobmV0ZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2Lmg9MTExPWludCBmYm5pY19waHlsaW5rX2dldF9mZWNwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmgtMTEyLVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgZXRodG9vbF9mZWNwYXJhbSAqZmVjcGFyYW0pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2Lmg6MTEzOmludCBmYm5pY19waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5oLTExNC12b2lkIGZibmljX3BoeWxpbmtfZGVzdHJveShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jPTE3Nz1zdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyBmYm5pY19waHlsaW5rX21hY19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYy0xODYtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmM6MTg3OiAqIGZibmljX3BoeWxpbmtfY3JlYXRlIC0gUGh5bGluayBkZXZpY2UgY3JlYXRpb25cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYy0xODgtICogQG5ldGRldjogTmV0d29yayBEZXZpY2Ugc3RydWN0IHRvIGF0dGFjaCBwaHlsaW5rIGRldmljZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmMtMTk2LSAqKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYzoxOTc6aW50IGZibmljX3BoeWxpbmtfY3JlYXRlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmMtMTk4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jLTIzMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYzoyMzI6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZmYm4tXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBOVUxMLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jLTIzMy1cXHRcXHRcXHRcXHQgZmJuaWNfcGh5bGlua19zZWxlY3RfaW50ZXJmYWNlKGZibi1cXHUwMDNlYXVpKSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYz0zMTQyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzIGxhbjc0M3hfcGh5bGlua19tYWNfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMxNDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjMxNTA6c3RhdGljIGludCBsYW43NDN4X3BoeWxpbmtfY3JlYXRlKHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMxNTEte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMxOTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjMxOTM6XFx0cGwgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2YWRhcHRlci1cXHUwMDNlcGh5bGlua19jb25maWcsIE5VTEwsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMxOTQtXFx0XFx0XFx0ICAgIGFkYXB0ZXItXFx1MDAzZXBoeV9pbnRlcmZhY2UsIFxcdTAwMjZsYW43NDN4X3BoeWxpbmtfbWFjX29wcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9MzY2ND1zdGF0aWMgaW50IGxhbjc0M3hfcGNpZGV2X3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTM3MjMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjM3MjQ6XFx0cmV0ID0gbGFuNzQzeF9waHlsaW5rX2NyZWF0ZShhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzcyNS1cXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9tYWluLmM9NzkxPXN0YXRpYyBpbnQgbGFuOTY2eF9wcm9iZV9wb3J0KHN0cnVjdCBsYW45NjZ4ICpsYW45NjZ4LCB1MzIgcCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfbWFpbi5jLTg1NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X21haW4uYzo4NTY6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZwb3J0LVxcdTAwM2VwaHlsaW5rX2NvbmZpZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X21haW4uYy04NTctXFx0XFx0XFx0XFx0IHBvcnRucCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X21haW4uYz0zMTI9c3RhdGljIGludCBzcGFyeDVfY3JlYXRlX3BvcnQoc3RydWN0IHNwYXJ4NSAqc3Bhcng1LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbi5jLTM4OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmM6Mzg5OlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2c3B4NV9wb3J0LVxcdTAwM2VwaHlsaW5rX2NvbmZpZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmMtMzkwLVxcdFxcdFxcdFxcdCBvZl9md25vZGVfaGFuZGxlKGNvbmZpZy1cXHUwMDNlbm9kZSksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYz0xNzc0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzIG9jZWxvdF9waHlsaW5rX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE3NzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmM6MTc4MDpzdGF0aWMgaW50IG9jZWxvdF9wb3J0X3BoeWxpbmtfY3JlYXRlKHN0cnVjdCBvY2Vsb3QgKm9jZWxvdCwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmMtMTc4MS1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKnBvcnRucClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE4MjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmM6MTgyMTpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnByaXYtXFx1MDAzZXBoeWxpbmtfY29uZmlnLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE4MjItXFx0XFx0XFx0XFx0IG9mX2Z3bm9kZV9oYW5kbGUocG9ydG5wKSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jPTE4NDM9aW50IG9jZWxvdF9wcm9iZV9wb3J0KHN0cnVjdCBvY2Vsb3QgKm9jZWxvdCwgaW50IHBvcnQsIHN0cnVjdCByZWdtYXAgKnRhcmdldCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE4NzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmM6MTg4MDpcXHRlcnIgPSBvY2Vsb3RfcG9ydF9waHlsaW5rX2NyZWF0ZShvY2Vsb3QsIHBvcnQsIHBvcnRucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmMtMTg4MS1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0xMzg3PXN0YXRpYyBpbnQgc3RtbWFjX3BoeWxpbmtfc2V0dXAoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xNDc4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MTQ3OTpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoY29uZmlnLCBkZXZfZndub2RlKHByaXYtXFx1MDAzZWRldmljZSksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xNDgwLVxcdFxcdFxcdFxcdCBwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2VwaHlfaW50ZXJmYWNlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL3RuNDBfcGh5LmM9NDU9aW50IHRuNDBfcGh5X3JlZ2lzdGVyKHN0cnVjdCB0bjQwX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvdG40MF9waHkuYy02Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvdG40MF9waHkuYzo2MzpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoY29uZmlnLCBOVUxMLCBQSFlfSU5URVJGQUNFX01PREVfWEFVSSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvdG40MF9waHkuYy02NC1cXHRcXHRcXHRcXHQgXFx1MDAyNnRuNDBfbWFjX29wcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9hbTY1LWNwc3ctbnVzcy5jPTI3NTc9YW02NV9jcHN3X251c3NfaW5pdF9wb3J0X25kZXYoc3RydWN0IGFtNjVfY3Bzd19jb21tb24gKmNvbW1vbiwgdTMyIHBvcnRfaWR4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvYW02NS1jcHN3LW51c3MuYy0yODQxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2FtNjUtY3Bzdy1udXNzLmM6Mjg0MjpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnBvcnQtXFx1MDAzZXNsYXZlLnBoeWxpbmtfY29uZmlnLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2FtNjUtY3Bzdy1udXNzLmMtMjg0My1cXHRcXHRcXHRcXHQgb2ZfZndub2RlX2hhbmRsZShwb3J0LVxcdTAwM2VzbGF2ZS5wb3J0X25wKSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21kaW8uYz0xMzA9c3RhdGljIGludCBuZ2JlX3BoeWxpbmtfaW5pdChzdHJ1Y3Qgd3ggKnd4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWRpby5jLTE0OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tZGlvLmM6MTUwOlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShjb25maWcsIE5VTEwsIHBoeV9tb2RlLCBcXHUwMDI2bmdiZV9tYWNfb3BzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tZGlvLmMtMTUxLVxcdGlmIChJU19FUlIocGh5bGluaykpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5jPTQ4MD1pbnQgdHhnYmVfcGh5bGlua19pbml0X2FtbChzdHJ1Y3QgdHhnYmUgKnR4Z2JlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9hbWwuYy01MTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9hbWwuYzo1MTE6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKGNvbmZpZywgTlVMTCwgcGh5X21vZGUsIFxcdTAwMjZ0eGdiZV9tYWNfb3BzX2FtbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9hbWwuYy01MTItXFx0aWYgKElTX0VSUihwaHlsaW5rKSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfcGh5LmM9MjY4PXN0YXRpYyBpbnQgdHhnYmVfcGh5bGlua19pbml0KHN0cnVjdCB0eGdiZSAqdHhnYmUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX3BoeS5jLTI5Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX3BoeS5jOjI5MzpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoY29uZmlnLCBmd25vZGUsIHBoeV9tb2RlLCBcXHUwMDI2dHhnYmVfbWFjX29wcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9waHkuYy0yOTQtXFx0aWYgKElTX0VSUihwaHlsaW5rKSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM9Mjc5NT1zdGF0aWMgaW50IGF4aWVuZXRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzExNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjMxMTg6XFx0bHAtXFx1MDAzZXBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2bHAtXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBwZGV2LVxcdTAwM2VkZXYuZndub2RlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzExOS1cXHRcXHRcXHRcXHQgICAgIGxwLVxcdTAwM2VwaHlfbW9kZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzEyMi1cXHRcXHRyZXQgPSBQVFJfRVJSKGxwLVxcdTAwM2VwaHlsaW5rKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjMxMjM6XFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXFwicGh5bGlua19jcmVhdGUgZXJyb3IgKCVpKVxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMxMjQtXFx0XFx0Z290byBjbGVhbnVwX21kaW87XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTUxNj1zdGF0aWMgaW50IHBoeWxpbmtfdmFsaWRhdGVfbWFjX2FuZF9wY3Moc3RydWN0IHBoeWxpbmsgKnBsLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy01MzEtXFx0aWYgKHBjcykge1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NTMyOlxcdFxcdC8qIFRoZSBQQ1MsIGlmIHByZXNlbnQsIG11c3QgYmUgc2V0dXAgYmVmb3JlIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTUzMy1cXHRcXHQgKiBoYXMgYmVlbiBjYWxsZWQuIElmIHRoZSBvcHMgaXMgbm90IGluaXRpYWxpc2VkLCBwcmludCBhblxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xMDM5PXN0YXRpYyBlbnVtIGluYmFuZF90eXBlIHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwNzAtICogcGh5bGlua19wY3NfbmVnX21vZGUoKSAtIGhlbHBlciB0byBkZXRlcm1pbmUgUENTIGluYmFuZCBtb2RlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMDcxOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTA3Mi0gKiBAcGNzOiBhIHBvaW50ZXIgdG8gXFx1MDAyNnN0cnVjdCBwaHlsaW5rX3Bjc1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xNzY4PXN0YXRpYyBpbnQgcGh5bGlua19yZWdpc3Rlcl9zZnAoc3RydWN0IHBoeWxpbmsgKnBsLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNzkyLSAqIHBoeWxpbmtfc2V0X2ZpeGVkX2xpbmsoKSAtIHNldCB0aGUgZml4ZWQgbGlua1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTc5MzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE3OTQtICogQHN0YXRlOiBhIHBvaW50ZXIgdG8gYSBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlLlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xODMwPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc2V0X2ZpeGVkX2xpbmspO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODMyLS8qKlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTgzMzogKiBwaHlsaW5rX2NyZWF0ZSgpIC0gY3JlYXRlIGEgcGh5bGluayBpbnN0YW5jZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTgzNC0gKiBAY29uZmlnOiBhIHBvaW50ZXIgdG8gdGhlIHRhcmdldCBcXHUwMDI2c3RydWN0IHBoeWxpbmtfY29uZmlnXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE4NDctICovXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxODQ4OnN0cnVjdCBwaHlsaW5rICpwaHlsaW5rX2NyZWF0ZShzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE4NDktXFx0XFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5MzQtfVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTkzNTpFWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2NyZWF0ZSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTM2LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTM4LSAqIHBoeWxpbmtfZGVzdHJveSgpIC0gY2xlYW51cCBhbmQgZGVzdHJveSB0aGUgcGh5bGluayBpbnN0YW5jZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTkzOTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5NDAtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTk1NT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2Rlc3Ryb3kpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTU4LSAqIHBoeWxpbmtfZXhwZWN0c19waHkoKSAtIERldGVybWluZSBpZiBwaHlsaW5rIGV4cGVjdHMgYSBwaHkgdG8gYmUgYXR0YWNoZWRcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE5NTk6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTYwLSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyMDQ9c3RhdGljIGludCBwaHlsaW5rX2F0dGFjaF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjI0LSAqIHBoeWxpbmtfY29ubmVjdF9waHkoKSAtIGNvbm5lY3QgYSBQSFkgdG8gdGhlIHBoeWxpbmsgaW5zdGFuY2VcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyMjU6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjI2LSAqIEBwaHk6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5X2RldmljZS5cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjI1OD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2Nvbm5lY3RfcGh5KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI2MS0gKiBwaHlsaW5rX29mX3BoeV9jb25uZWN0KCkgLSBjb25uZWN0IHRoZSBQSFkgc3BlY2lmaWVkIGluIHRoZSBEVCBtb2RlLlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjI2MjogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyNjMtICogQGRuOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IGRldmljZV9ub2RlLlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMjc3PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3QpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjgwLSAqIHBoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0KCkgLSBjb25uZWN0IHRoZSBQSFkgc3BlY2lmaWVkIGluIHRoZSBmd25vZGUuXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMjgxOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI4Mi0gKiBAZndub2RlOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IGZ3bm9kZV9oYW5kbGUuXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIzMzY9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19md25vZGVfcGh5X2Nvbm5lY3QpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMzQwLSAqICAgaW5zdGFuY2UuXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMzQxOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjM0Mi0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMzcxPXN0YXRpYyB2b2lkIHBoeWxpbmtfbGlua19jaGFuZ2VkKHN0cnVjdCBwaHlsaW5rICpwbCwgYm9vbCB1cCwgY29uc3QgY2hhciAqd2hhdClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjM4MC0gKiBwaHlsaW5rX21hY19jaGFuZ2UoKSAtIG5vdGlmeSBwaHlsaW5rIG9mIGEgY2hhbmdlIGluIE1BQyBzdGF0ZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjM4MTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzODItICogQHVwOiBpbmRpY2F0ZXMgd2hldGhlciB0aGUgbGluayBpcyBjdXJyZW50bHkgdXAuXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI0MTM9c3RhdGljIGlycXJldHVybl90IHBoeWxpbmtfbGlua19oYW5kbGVyKGludCBpcnEsIHZvaWQgKmRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI0MjMtICogcGh5bGlua19zdGFydCgpIC0gc3RhcnQgYSBwaHlsaW5rIGluc3RhbmNlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNDI0OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQyNS0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNDg2PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc3RhcnQpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNDg5LSAqIHBoeWxpbmtfc3RvcCgpIC0gc3RvcCBhIHBoeWxpbmsgaW5zdGFuY2VcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI0OTA6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNDkxLSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI1MjA9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19zdG9wKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjUyMy0gKiBwaHlsaW5rX3J4X2Nsa19zdG9wX2Jsb2NrKCkgLSBibG9jayBQSFkgYWJpbGl0eSB0byBzdG9wIHJlY2VpdmUgY2xvY2sgaW4gTFBJXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNTI0OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjUyNS0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNTQ5PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfcnhfY2xrX3N0b3BfYmxvY2spO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNTUyLSAqIHBoeWxpbmtfcnhfY2xrX3N0b3BfdW5ibG9jaygpIC0gdW5ibG9jayBQSFkgYWJpbGl0eSB0byBzdG9wIHJlY2VpdmUgY2xvY2tcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI1NTM6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNTU0LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI1OTE9c3RhdGljIGJvb2wgcGh5bGlua19waHlfcG1fc3BlZWRfY3RybChzdHJ1Y3QgcGh5bGluayAqcGwpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1OTgtICogcGh5bGlua19zdXNwZW5kKCkgLSBoYW5kbGUgYSBuZXR3b3JrIGRldmljZSBzdXNwZW5kIGV2ZW50XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNTk5OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjYwMC0gKiBAbWFjX3dvbDogdHJ1ZSBpZiB0aGUgTUFDIG5lZWRzIHRvIHJlY2VpdmUgcGFja2V0cyBmb3IgV2FrZS1vbi1MYW5cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjY1MD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3N1c3BlbmQpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjUzLSAqIHBoeWxpbmtfcHJlcGFyZV9yZXN1bWUoKSAtIHByZXBhcmUgdG8gcmVzdW1lIGEgbmV0d29yayBkZXZpY2VcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI2NTQ6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjU1LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI2NzU9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19wcmVwYXJlX3Jlc3VtZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI2NzgtICogcGh5bGlua19yZXN1bWUoKSAtIGhhbmRsZSBhIG5ldHdvcmsgZGV2aWNlIHJlc3VtZSBldmVudFxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjY3OTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI2ODAtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjcxOD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3Jlc3VtZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI3MjEtICogcGh5bGlua19ldGh0b29sX2dldF93b2woKSAtIGdldCB0aGUgd2FrZSBvbiBsYW4gcGFyYW1ldGVycyBmb3IgdGhlIFBIWVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjcyMjogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI3MjMtICogQHdvbDogYSBwb2ludGVyIHRvIFxcdTAwMjZzdHJ1Y3QgZXRodG9vbF93b2xpbmZvIHRvIGhvbGQgdGhlIHJlYWQgcGFyYW1ldGVyc1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNzU1PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9nZXRfd29sKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjc1OC0gKiBwaHlsaW5rX2V0aHRvb2xfc2V0X3dvbCgpIC0gc2V0IHdha2Ugb24gbGFuIHBhcmFtZXRlcnNcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI3NTk6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNzYwLSAqIEB3b2w6IGEgcG9pbnRlciB0byBcXHUwMDI2c3RydWN0IGV0aHRvb2xfd29saW5mbyBmb3IgdGhlIGRlc2lyZWQgcGFyYW1ldGVyc1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yODg3PXN0YXRpYyB2b2lkIHBoeWxpbmtfZ2V0X2tzZXR0aW5ncyhjb25zdCBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjkwMi0gKiBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX2dldCgpIC0gZ2V0IHRoZSBjdXJyZW50IGxpbmsgc2V0dGluZ3NcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI5MDM6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yOTA0LSAqIEBrc2V0OiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgdG8gaG9sZCBsaW5rIHNldHRpbmdzXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI5NTU9c3RhdGljIGJvb2wgcGh5bGlua192YWxpZGF0ZV9wY3NfaW5iYW5kX2F1dG9uZWcoc3RydWN0IHBoeWxpbmsgKnBsLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yOTc2LSAqIHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0KCkgLSBzZXQgdGhlIGxpbmsgc2V0dGluZ3NcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI5Nzc6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yOTc4LSAqIEBrc2V0OiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgZm9yIHRoZSBkZXNpcmVkIG1vZGVzXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTMxNDc9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTUwLSAqIHBoeWxpbmtfZXRodG9vbF9ud2F5X3Jlc2V0KCkgLSByZXN0YXJ0IG5lZ290aWF0aW9uXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMTUxOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE1Mi0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTcyPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9ud2F5X3Jlc2V0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE3NS0gKiBwaHlsaW5rX2V0aHRvb2xfZ2V0X3BhdXNlcGFyYW0oKSAtIGdldCB0aGUgY3VycmVudCBwYXVzZSBwYXJhbWV0ZXJzXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMTc2OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE3Ny0gKiBAcGF1c2U6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgZXRodG9vbF9wYXVzZXBhcmFtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTMxODg9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19ldGh0b29sX2dldF9wYXVzZXBhcmFtKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE5MS0gKiBwaHlsaW5rX2V0aHRvb2xfc2V0X3BhdXNlcGFyYW0oKSAtIHNldCB0aGUgY3VycmVudCBwYXVzZSBwYXJhbWV0ZXJzXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMTkyOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE5My0gKiBAcGF1c2U6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgZXRodG9vbF9wYXVzZXBhcmFtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTMyNzQ9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19ldGh0b29sX3NldF9wYXVzZXBhcmFtKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzI3OC0gKiAgIGNvdW50ZXJcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMyNzk6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpLlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzI4MC0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMjk3PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZ2V0X2VlZV9lcnIpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMzAwLSAqIHBoeWxpbmtfZXRodG9vbF9nZXRfZWVlKCkgLSByZWFkIHRoZSBlbmVyZ3kgZWZmaWNpZW50IGV0aGVybmV0IHBhcmFtZXRlcnNcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMzMDE6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMzAyLSAqIEBlZWU6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgZXRodG9vbF9rZWVlIGZvciB0aGUgcmVhZCBwYXJhbWV0ZXJzXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTMzMjM9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19ldGh0b29sX2dldF9lZWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMzI2LSAqIHBoeWxpbmtfZXRodG9vbF9zZXRfZWVlKCkgLSBzZXQgdGhlIGVuZXJneSBlZmZpY2llbnQgZXRoZXJuZXQgcGFyYW1ldGVyc1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzMyNzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMzMjgtICogQGVlZTogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBldGh0b29sX2tlZWUgZm9yIHRoZSBkZXNpcmVkIHBhcmFtZXRlcnNcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzQ5Nz1zdGF0aWMgaW50IHBoeWxpbmtfbWlpX3dyaXRlKHN0cnVjdCBwaHlsaW5rICpwbCwgdW5zaWduZWQgaW50IHBoeV9pZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzUxNS0gKiBwaHlsaW5rX21paV9pb2N0bCgpIC0gZ2VuZXJpYyBtaWkgaW9jdGwgaW50ZXJmYWNlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozNTE2OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzUxNy0gKiBAaWZyOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IGlmcmVxIGZvciBzb2NrZXQgaW9jdGxzXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTM1OTA9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19taWlfaW9jdGwpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNTk0LSAqICAgbGluayBwYXJ0bmVyc1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzU5NTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1OTYtICogQHN5bmM6IHBlcmZvcm0gYWN0aW9uIHN5bmNocm9ub3VzbHlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzYxNT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3NwZWVkX2Rvd24pO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNjE5LSAqICAgcGh5bGlua19zcGVlZF9kb3duKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM2MjA6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNjIxLSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTQzNzI9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19taWlfYzQ1X3Bjc19nZXRfc3RhdGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00Mzc2LSAqXFx0XFx0XFx0XFx0IHdoaWNoIGxvc2VzIHN0YXRlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo0Mzc3OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDM3OC0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz00MzkzPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfcmVwbGF5X2xpbmtfYmVnaW4pO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00Mzk3LSAqXFx0XFx0XFx0ICAgICAgIHdoaWNoIGxvc3Qgc3RhdGVcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjQzOTg6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00Mzk5LSAqXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9Nzk5PXN0YXRpYyBpbnQgYXg4ODc3Ml9waHlsaW5rX3NldHVwKHN0cnVjdCB1c2JuZXQgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04MTktXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgyMDpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnByaXYtXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBkZXYtXFx1MDAzZW5ldC1cXHUwMDNlZGV2LmZ3bm9kZSxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODIxLVxcdFxcdFxcdFxcdCBwaHlfaWZfbW9kZSwgXFx1MDAyNmF4ODg3NzJfcGh5bGlua19tYWNfb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM9Mjc4Nj1zdGF0aWMgaW50IGxhbjc4eHhfcGh5bGlua19zZXR1cChzdHJ1Y3QgbGFuNzh4eF9uZXQgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjgyNS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjI4MjY6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKHBjLCBkZXYtXFx1MDAzZW5ldC1cXHUwMDNlZGV2LmZ3bm9kZSxcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI4MjctXFx0XFx0XFx0XFx0IGRldi1cXHUwMDNlaW50ZXJmYWNlLCBcXHUwMDI2bGFuNzh4eF9waHlsaW5rX21hY19vcHMpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwODoxOTo0Ny41NzgzNTgzMDNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDY5NTcxODg4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipSZWFjaGluZyBOZXR3b3JrIERyaXZlciBGdW5jdGlvbmFsaXR5IGluIGEgVmlydHVhbGl6ZWQgRW52aXJvbm1lbnQqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGJlZW4gbG9va2luZyBhdCBuZXR3b3JrIGRyaXZlcnMsIHNwZWNpZmljYWxseSB0aGUgYGFzaXhfZGV2aWNlcy5jYCBhbmQgYGxhbjc4eHguY2AgZmlsZXMgaW4gYGRyaXZlcnMvbmV0L3VzYi9gLiBBaGEsIHRoZXkncmUgYm90aCB1c2luZyBwaHlsaW5rISBUaGF0J3MgaW50ZXJlc3RpbmcsIGFuZCBpdCBtZWFucyB0aGV5J3JlIGhhbmRsaW5nIFBIWSBpbnRlcmFjdGlvbnMgZm9yIFVTQiBuZXR3b3JrIGludGVyZmFjZXMuIFRoaXMgaXMgZ29vZCBuZXdzIGJlY2F1c2UgdGhlc2UgZHJpdmVycyBhcmUgcHJpbWUgY2FuZGlkYXRlcyBmb3IgdGVzdGluZyB3aXRoaW4gYSB2aXJ0dWFsaXplZCBzZXR1cC4gV2l0aCBzeXprYWxsZXIsIEkgc2hvdWxkIGJlIGFibGUgdG8gZW11bGF0ZSB0aGUgVVNCIGhvc3QgY29udHJvbGxlciB1c2luZyBlaXRoZXIgYSBkdW1teSBIQ0Qgb3IgdGhlIHZoY2lfaGNkLCBtYWtpbmcgdGhlc2UgZHJpdmVycyBlYXNpbHkgcmVhY2hhYmxlLlxuXG5UaGUga2V5IGZ1bmN0aW9uIEkgd2FudCB0byBmb2N1cyBvbiBpcyBgcGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXRgLiBUaGlzIGlzIHRyaWdnZXJlZCB3aGVuIHNvbWVvbmUgYXR0ZW1wdHMgdG8gY29uZmlndXJlIHRoZSBsaW5rIHNldHRpbmdzIHVzaW5nIGV0aHRvb2wuIEkga25vdyB0aGF0IGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB3aXRoaW4gdGhlc2UgZHJpdmVycywgYXMgaXQncyBhIGtub3duIGNhbGwgcG9pbnQgZm9yIGV0aHRvb2wgc2V0dGluZ3MuXG5cbk5vdywgbGV0IG1lIGdvIGJhY2sgdG8gYGFzaXhfZGV2aWNlcy5jYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggY29uZmlndXJhdGlvbiBvcHRpb25zIG9yIHBhcmFtZXRlcnMgc3BlY2lmaWNhbGx5IGVuYWJsZSB0aGUgZnVuY3Rpb25hbGl0eSB0aGF0IGxlYWRzIHRvIGNhbGxpbmcgYHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0YC4gVGhpcyB3aWxsIGd1aWRlIG15IGZ1enppbmcgZWZmb3J0cyBhbmQgaGVscCBtZSB1bmRlcnN0YW5kIHRoZSBjb2RlIHBhdGggdGhhdCdzIG1vc3QgbGlrZWx5IHRvIGJlIGV4cG9zZWQgdG8gdnVsbmVyYWJpbGl0aWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjM2MiwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwODoxOTo1Mi4yNzQwODExMTZaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwMTE2NDUxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhc2l4X2RldmljZXMub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC91c2IvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdXNiL01ha2VmaWxlPTEzPW9iai0kKENPTkZJR19VU0JfTkVUX0FYODgxN1gpXFx0Kz0gYXNpeC5vXFxuZHJpdmVycy9uZXQvdXNiL01ha2VmaWxlOjE0OmFzaXgteSA6PSBhc2l4X2RldmljZXMubyBhc2l4X2NvbW1vbi5vIGF4ODgxNzJhLm9cXG5kcml2ZXJzL25ldC91c2IvTWFrZWZpbGUtMTUtb2JqLSQoQ09ORklHX1VTQl9ORVRfQVg4ODE3OV8xNzhBKSAgICAgICs9IGF4ODgxNzlfMTc4YS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA4OjE5OjUyLjU3NTMwNDcyN1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzMyMzQ4NDM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCB3ZW50OlxuXG4qKkV4YW1pbmluZyBOZXR3b3JrIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gdGhlIGFjdGl2ZSBjb25maWd1cmF0aW9uIGlzIGBVU0JfTkVUX0FYODgxN1hgLiBSaWdodCwgdGhhdCdzIHRoZSBkcml2ZXIgZm9yIGEgc3BlY2lmaWMgVVNCLXRvLUV0aGVybmV0IGFkYXB0ZXIsIGxpa2VseSBiYXNlZCBvbiB0aGUgQVNJWCBBWDg4MTd4IGNoaXBzZXQuIE15IG5leHQgc3RlcCwgYXMgYWx3YXlzLCBpcyB0byBkaXZlIGludG8gdGhlIGNvcmUgaW1wbGVtZW50YXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGRyaXZlciBoYW5kbGVzIGl0cyBpbnRlcmZhY2Ugd2l0aCB0aGUgVVNCIHN0YWNrIGFuZCB0aGUgbmV0d29yayBzdWJzeXN0ZW0uIFRoZXJlZm9yZSwgSSBuZWVkIHRvIGNoZWNrIGBsYW43OHh4LmNgLiBUaGF0J3Mgd2hlcmUgdGhlIGNyaXRpY2FsIGZ1bmN0aW9uYWxpdHkgd2lsbCBiZSBkZWZpbmVkLiBJJ2xsIG5lZWQgdG8gc2NydXRpbml6ZSB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2VzLCBkYXRhIHRyYW5zZmVyIG1lY2hhbmlzbXMsIGFuZCBpbnRlcnJ1cHQgaGFuZGxpbmcgd2l0aGluIHRoYXQgZmlsZSB0byBzZWUgdGhlIGRldGFpbHMgb2YgaXRzIHNwZWNpZmljIGltcGxlbWVudGF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjkyNywiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA4OjE5OjU1LjkwNzY1NzI2MloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE2Njg2MDU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImxhbjc4eHgub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC91c2IvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdXNiL01ha2VmaWxlPTExPW9iai0kKENPTkZJR19VU0JfSFNPKVxcdFxcdCs9IGhzby5vXFxuZHJpdmVycy9uZXQvdXNiL01ha2VmaWxlOjEyOm9iai0kKENPTkZJR19VU0JfTEFONzhYWClcXHQrPSBsYW43OHh4Lm9cXG5kcml2ZXJzL25ldC91c2IvTWFrZWZpbGUtMTMtb2JqLSQoQ09ORklHX1VTQl9ORVRfQVg4ODE3WClcXHQrPSBhc2l4Lm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDg6MTk6NTYuMDI0MzU1MDExWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxNjY4NjgyNDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgYHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0YCBGdW5jdGlvbioqXG5cbk9rYXksIHNvIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24gaXMgc2V0IHRvIGBVU0JfTEFONzhYWGAuIE15IHRhc2sgaXMgdG8gZmlndXJlIG91dCB0aGUgYmVzdCB3YXkgdG8gZnV6eiB0aGlzLiBJdCBsb29rcyBsaWtlIHRoZSBwYXRjaCBpbiBxdWVzdGlvbiBmb2N1c2VzIG9uIGBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldGAuIFRoaXMgaXMgaW50ZXJlc3RpbmcgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIGlzIGFjY2Vzc2libGUgdGhyb3VnaCBldGh0b29sIGlvY3Rscy4gVGhhdCBtZWFucyBpdOKAmXMgYW4gaWRlYWwgdGFyZ2V0IGZvciBmdXp6aW5nLlxuXG5NeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGZvY3VzIGZ1enppbmcgZWZmb3J0cyBvbiB0aGlzIGZ1bmN0aW9uLCBidXQgdGhlbiBpdCBkYXduZWQgb24gbWUuLi4gYHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0YCBpcyBhICpnZW5lcmljKiBmdW5jdGlvbi4gUGVyaGFwcyBpdCB3b3VsZCBiZSBtb3JlIGZydWl0ZnVsIHRvIGV4cGFuZCBteSBzY29wZSB0byB0aGUgZnVuY3Rpb24gaXRzZWxmLiBBbmQgaXMgdGhlcmUgYW55dGhpbmcgc3BlY2lmaWMgdG8gdGhlIHBoeWxpbmsgY29uZmlndXJhdGlvbj8gSSBrbm93IGBQSFlMSU5LYCBpcyBzZWxlY3RlZCBieSB2YXJpb3VzIGRyaXZlcnM7IEkgc2hvdWxkIHByb2JhYmx5IGxvb2sgaW50byB0aGF0IGZ1cnRoZXIuIExldCBtZSBjaGVjayB0aGUgYGRyaXZlcnMvbmV0L3BoeS9LY29uZmlnYCBmaWxlIHRvIHNlZSB3aGF0IGRldGFpbHMgSSBjYW4gZmluZCBvbiBgUEhZTElOS2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3MjU0LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA4OjIwOjAxLjE5MTIyNzMyOFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA2ODI0MTM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBQSFlMSU5LXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTUtXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6Njpjb25maWcgUEhZTElOS1xcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTctXFx0dHJpc3RhdGVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDg6MjA6MDEuMzk4MDYwNzE3WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2NjQyMTkyMjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRW5hYmxpbmcgVVNCIE5ldHdvcmsgRHJpdmVycyBmb3IgUGh5bGluayBJbnRlZ3JhdGlvbioqXG5cbk9rYXksIHNvIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIHRyaXN0YXRlIGNvbmZpZ3VyYXRpb24gaGVyZSwgbWVhbmluZyB0aGUgc2VsZWN0aW9uIGlzIGJhc2VkIG9uIHNvbWUgZHJpdmVyIGlucHV0LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZW5zdXJlIHRoZSBuZWNlc3NhcnkgVVNCIG5ldHdvcmsgZHJpdmVycyBhcmUgYXZhaWxhYmxlIGZvciBwaHlsaW5rLiBUaGVyZWZvcmUsIEkgbmVlZCB0byBlbmFibGUgYm90aCBgVVNCX05FVF9BWDg4MTdYYCBhbmQgYFVTQl9MQU43OFhYYC4gVGhpcyBzaG91bGQgZ3VhcmFudGVlIHRoYXQgcGh5bGluayBjYW4gYmUgcHJvcGVybHkgY29tcGlsZWQgYW5kIGFjY2Vzc2libGUgdGhyb3VnaCB0aGUgVVNCIG5ldHdvcmsgZHJpdmVyIHN1YnN5c3RlbS5cblxuTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoYXQgdmFyaWFibGXigKYgYWgsIHJpZ2h0LCBpdCdzIGBDT05GSUdfVVNCX05FVF9BWDg4MTdYYC4gQWx3YXlzIGdvb2QgdG8gYmUgcHJlY2lzZSB3aGVuIGRlYWxpbmcgd2l0aCB0aGVzZSBrZXJuZWwgY29uZmlncy4gT2theSwgSSBuZWVkIHRvIGNvbmZpcm0gdGhlIEtjb25maWcncyBwcmVzZW5jZSBzbyBJIHdpbGwgY2hlY2sgYGRyaXZlcnMvbmV0L3VzYi9LY29uZmlnYCB0byBjb25maXJtIHRoZXNlIHNldHRpbmdzIGFyZSBwcmVzZW50IGFuZCB3aGVyZSB0aGV5IHNpdCBpbiB0aGUgb3ZlcmFsbCBkcml2ZXIgbGFuZHNjYXBlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzY5MCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwODoyMDowNi4wNjIyODQwNjNaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0ODgzNDYxNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVVNCX05FVF9BWDg4MTdYXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3VzYi9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTEzMj1jb25maWcgVVNCX1VTQk5FVFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTY1LVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjE2Njpjb25maWcgVVNCX05FVF9BWDg4MTdYXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTY3LVxcdHRyaXN0YXRlIFxcXCJBU0lYIEFYODh4eHggQmFzZWQgVVNCIDIuMCBFdGhlcm5ldCBBZGFwdGVyc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDg6MjA6MDYuMjExMTI5MjQ4WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4NjY2MjUyMzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgZGVsaXZlcmVkIGFzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnk6XG5cbioqRGlnZ2luZyBpbnRvIGBVU0JfTEFONzhYWGAqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCB0byBpdC4gTGV0J3Mgc2VlIHdoYXQgd2UncmUgZGVhbGluZyB3aXRoIGhlcmUg4oCTIGxldCdzIHNwZWNpZmljYWxseSB6ZXJvIGluIG9uIHRoYXQgYFVTQl9MQU43OFhYYCBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGN1cnJlbnQgc3RhdHVzIG9mIHRoaXMgcGFydGljdWxhciBpbnRlZ3JhdGlvbi4gSXQncyB0aW1lIHRvIGFzc2VzcyB0aGUgY3VycmVudCBzdGF0ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgxMzEsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwODoyMDoxMS4wNzc3NjA0NzRaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0OTMxNjUwNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVVNCX0xBTjc4WFhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdXNiL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdXNiL0tjb25maWc9OTk9Y29uZmlnIFVTQl9SVEw4MTUyXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xMTItXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MTEzOmNvbmZpZyBVU0JfTEFONzhYWFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTExNC1cXHR0cmlzdGF0ZSBcXFwiTWljcm9jaGlwIExBTjc4WFggQmFzZWQgVVNCIEV0aGVybmV0IEFkYXB0ZXJzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwODoyMDoxMS41MjcwOTAxMjFaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTc1NTc2ODMyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcyBvbiB0aGlzIG5ldHdvcmsgZHJpdmVyIGNvbmZpZ3VyYXRpb246XG5cbioqTmV0d29yayBEcml2ZXIgQ29uZmlndXJhdGlvbiAtIEEgRGVlcCBEaXZlKipcblxuT2theSwgc28gd2UncmUgbG9va2luZyBhdCBlbmFibGluZyBhIGNvdXBsZSBvZiBVU0IgbmV0d29yayBkcml2ZXJzIGhlcmU6IHNwZWNpZmljYWxseSwgYFVTQl9ORVRfQVg4ODE3WGAgYW5kIGBVU0JfTEFONzhYWGAuIFRob3NlIGFyZSBwcmV0dHkgc3RhbmRhcmQgY2hvaWNlcyBmb3IgVVNCLXRvLUV0aGVybmV0IGFkYXB0ZXJzLCBJIGtub3cgdGhlbSB3ZWxsLiBHaXZlbiB0aGF0LCAqKlBIWUxJTksqKiBpcyB0aGUgb2J2aW91cyBjaG9pY2UgdG8gYmUgc2VsZWN0ZWQgZm9yIGl0cyB1bmRlcmx5aW5nIGhhcmR3YXJlIGFic3RyYWN0aW9uIGxheWVyLiBOb3csIGJlZm9yZSBJIGNvbW1pdCB0byBhbnl0aGluZywgSSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSdyZSBub3QgaW5hZHZlcnRlbnRseSBzdGVwcGluZyBvbiBhbnkgb3RoZXIgZHJpdmVycyB0aGF0IG1pZ2h0IGFsc28gZGVwZW5kIG9uIHBoeWxpbmssIGp1c3QgdG8gYXZvaWQgYW55IHVuZXhwZWN0ZWQgY29uZmxpY3RzLiBMZXQncyBzZWUuLi4gbm90aGluZyBpbW1lZGlhdGVseSBzcHJpbmdzIHRvIG1pbmQsIGFuZCBJIGNhbid0IHRoaW5rIG9mIGFueSBvdGhlciBkcml2ZXJzIHRoYXQgZml0IHRoYXQgcGF0dGVybiBvZmYgdGhlIHRvcCBvZiBteSBoZWFkLCBidXQgbGV0J3MgZG8gYSBxdWljayBzY2FuLiBXaXJlbGVzcyBpcyB1c3VhbGx5IGhhbmRsZWQgYnkgYG1hYzgwMjExYCwgc28gSSdsbCBza2lwIG92ZXIgdGhhdCAtIEkgZG9uJ3Qgc2VlIGFueSBvYnZpb3VzIGNvbm5lY3Rpb24uIE9rYXksIGxldCdzIHRyeSBhIHNjYW4gb2YgdGhlIHZpcnR1YWwgZHJpdmVycy4gQWgsIHllcywgdGhlIGBkdW1teWAgZHJpdmVyIGluIGBkcml2ZXJzL25ldC9kdW1teS5jYC4gVGhhdCdzIG5vdCB0aGUgc2FtZSB0aGluZy4gSSdsbCBtYWtlIHN1cmUgdG8gZG91YmxlIGNoZWNrIHRoYXQgSSBoYXZlbid0IGZvcmdvdHRlbiBhbnl0aGluZyBlbHNlLi4uYnV0IEkgdGhpbmsgd2UncmUgZ29vZCB0byBnby5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgzODUsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwODoyMDoxNy4yODI4NjI5MloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQwNTU0MTM2LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHlsaW5rXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2R1bW15LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA4OjIwOjE3LjUyMzQ0MjYxN1oiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTU5OTQ5NTA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKk5hdmlnYXRpbmcgdGhlIExhYnlyaW50aCBvZiBDb2RlKipcblxuSG1tLCBqdXN0IFwiTm8uXCIgZG9lc24ndCBnaXZlIG1lIG11Y2ggdG8gZ28gb24uIE15IGludGVybmFsIGNvbXBpbGVyIGlzIGFscmVhZHkgZmlyaW5nIHVwLCB0cnlpbmcgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dC4uLiBXaGF0J3MgdGhlIHByb2JsZW0/IFdoYXQncyB0aGUgYXJlYSBvZiBpbnRlcmVzdD8gSSBuZWVkIG1vcmUgaW5mb3JtYXRpb24gdG8gZm9ybXVsYXRlIGEgcHJvcGVyIHJlc3BvbnNlIG9yIHBsYW4gb2YgYWN0aW9uLlxuXG5UaGVuLCB0aGVyZSdzIGEgc3BlY2lmaWMgZmlsZSBtZW50aW9uZWQuIEFoLCBva2F5LCBzbyB3ZSBhcmUgdGFsa2luZyBhYm91dCBuZXR3b3JraW5nLCBzcGVjaWZpY2FsbHkgdGhlIFRVTiBkZXZpY2UsIGFuZCB0aGUgQyBjb2RlIHRoYXQgaW1wbGVtZW50cyBpdC4gTXkgbWluZCBpbW1lZGlhdGVseSBzdGFydHMgcHVsbGluZyB1cCBhc3NvY2lhdGlvbnM6IEtlcm5lbC1sZXZlbCBvcGVyYXRpb25zLCBwYWNrZXQgaGFuZGxpbmcsIG1heWJlIHNvbWV0aGluZyByZWxhdGVkIHRvIHZpcnR1YWwgaW50ZXJmYWNlcywgb3IgbWF5YmUgc29tZSBpc3N1ZSBpbiB1c2VyIHNwYWNlIGludGVyYWN0aW9uLiBUaGUgcXVlc3Rpb24gXCJXaGF0IGFib3V0IGBkcml2ZXJzL25ldC90dW4uY2A/XCIgaXMgbGlrZWx5IHJlZmVycmluZyB0byBzb21lIHNwZWNpZmljIGlzc3VlLCBidWcsIG9yIGFyZWEgb2YgY29uY2Vybi4gSSdkIGJlIGxvb2tpbmcgYXQgaXRzIGNvZGUgdG8gZmluZCBvdXQuIFdlJ3ZlIGhvbmVkIGluLiBUaGlzIHdpbGwgYmUgdGhlIGZvY3VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODc5NywiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA4OjIwOjIyLjY4MzM5NTcxNFoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTczNjgyMTIzLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHlsaW5rXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3R1bi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwODoyMDoyMi44NTcwOTYzMDdaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg1ODc0NDk1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIGV4cHJlc3NlZCBhcyB0aG91Z2ggSSdtIHRoZSBvbmUgdGhpbmtpbmcgaXQ6XG5cbioqRm9jdXNpbmcgTXkgQXR0ZW50aW9uKipcblxuTm8sIHRoYXQncyBub3QgcXVpdGUgcmlnaHQuIFdhaXQuLi4gd2hhdCBhYm91dCB0aGF0IGBkcml2ZXJzL25ldC92ZXRoLmNgIGZpbGU/IEknbSBwcmV0dHkgc3VyZSBpdCdzIHJlbGV2YW50IHRvIHRoaXMuIEl0J3MgdGltZSB0byB0YWtlIGEgbG9vayBhdCB0aGUgdmV0aCBkcml2ZXIuIEkgbmVlZCB0byBmb2N1cyB0aGVyZSwgYW5kIG1ha2Ugc3VyZSB0aGF0IHRoaXMgaXMgdGhlIGJlc3QgcGF0aCB0byBmb2xsb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5MDY5LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDg6MjA6MjYuNzE1ODQ1MjkxWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTY2NDgwNDUsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBoeWxpbmtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdmV0aC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwODoyMDoyNi44NzI1MDk1NDZaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjA2Mzk0NzM2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBgcGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXRgIEZ1bmN0aW9uKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIHRoZSBiZXN0IHdheSB0byBhcHByb2FjaCBmdXp6aW5nIHRoaXMgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgaXMgdGhyb3VnaCBVU0IgbmV0d29yayBkcml2ZXJzLCBnaXZlbiBzeXprYWxsZXIncyBhYmlsaXR5IHRvIGVtdWxhdGUgVVNCIGRldmljZXMgdXNpbmcgYGR1bW15X2hjZGAuIEJ1dCBob2xkIG9uLCBsZXQncyByZWZvY3VzLiBUaGUgbW9kaWZpY2F0aW9uIHNlZW1zIHRvIGJlIHNwZWNpZmljYWxseSBpbiB0aGUgYHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0YCBmdW5jdGlvbi5cblxuTm93LCBzaG91bGQgSSBleHBhbmQgdGhlIHNjb3BlIG9yIGZvY3VzPyBMZXQncyBxdWlja2x5IHNlZSBpZiBgcGh5X2NhcHNfbG9va3VwYCBpcyB3b3J0aCBhIGxvb2sgdG9vLiBJdCdzIGp1c3QgYSBsb29rdXAsIHNvIHByb2JhYmx5IG5vdCB0aGUgcHJpbWFyeSB0YXJnZXQgcmlnaHQgbm93LlxuXG5SaWdodCwgdGhlIHBhdGNoIGFkZHJlc3NlcyBhIHZhbGlkYXRpb24gaXNzdWUgaW4gYHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0YCBjb25jZXJuaW5nIHNwZWVkIGFuZCBkdXBsZXguIFBlcmZlY3QhIFRoYXQgY29uZmlybXMgaXQ6IGBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldGAgaXMgKmRlZmluaXRlbHkqIHRoZSBmdW5jdGlvbiB0byBmdXp6LiBUaGF0J3Mgd2hlcmUgdGhlIHZ1bG5lcmFiaWxpdHkgbGllcy5cblxuTGV0J3MgZ28gc3RyYWlnaHQgdG8gdGhlIHNvdXJjZSwgYW5kIHZlcmlmeSB0aGF0IGZ1bmN0aW9uIGluIGBkcml2ZXJzL25ldC9waHkvcGh5bGluay5jYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBjb2RlIHByb3Blcmx5IGJlZm9yZSBzdGFydGluZyB0aGUgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkyMjcsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDg6MjA6MzIuOTM2NDYxNTM2WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjg4OTUzMzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI5NTU9c3RhdGljIGJvb2wgcGh5bGlua192YWxpZGF0ZV9wY3NfaW5iYW5kX2F1dG9uZWcoc3RydWN0IHBoeWxpbmsgKnBsLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yOTc1LS8qKlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6Mjk3NjogKiBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldCgpIC0gc2V0IHRoZSBsaW5rIHNldHRpbmdzXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yOTc3LSAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yOTc5LSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6Mjk4MDppbnQgcGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXQoc3RydWN0IHBoeWxpbmsgKnBsLFxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjk4MS1cXHRcXHRcXHRcXHQgIGNvbnN0IHN0cnVjdCBldGh0b29sX2xpbmtfa3NldHRpbmdzICprc2V0KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTQ2LX1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMxNDc6RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXQpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE0OC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDg6MjA6MzMuMTY1NDE0MzQzWiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgwMDA4MTIxMDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQaHlsaW5rIFBhdGNoKipcblxuT2theSwgc28gdGhlIG1haW4gZnVuY3Rpb24gdGhpcyBwYXRjaCBpcyB0YXJnZXRpbmcgaXMgYHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0YC4gVGhhdCBzZWVtcyBsaWtlIHRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UuIElzIHRoZXJlIGFueXRoaW5nIGVsc2U/IEFoLCBgcGh5X2NhcHNfbG9va3VwYCBpcyBhbHNvIG1lbnRpb25lZCwgYnV0IGl0J3MganVzdCBiZWluZyAqY2FsbGVkKiB3aXRoaW4gdGhlIG1vZGlmaWVkIGZ1bmN0aW9uLCBub3QgZGlyZWN0bHkgYWx0ZXJlZC4gTGV0J3MgbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgaW50ZW50IG9mIHRoaXMgcGF0Y2guXG5cblJpZ2h0LCB0aGUgcGF0Y2ggYWRkcyBhIHZhbGlkYXRpb24gc3RlcCB3aXRoaW4gYHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0YC4gQmVmb3JlIGFwcGx5aW5nIHRoZSByZXF1ZXN0ZWQgc3BlZWQgYW5kIGR1cGxleCBzZXR0aW5ncywgaXQncyBjaGVja2luZyB3aXRoIGBwaHlfY2Fwc19sb29rdXBgIHRvIHNlZSBpZiB0aGUgUEhZIGFjdHVhbGx5IHN1cHBvcnRzIHRoZW0uIFRoaXMgbWFrZXMgc2Vuc2U7IGl0J3MgYSBndWFyZCBhZ2FpbnN0IHNldHRpbmcgdXAgY29uZmlndXJhdGlvbnMgdGhhdCB0aGUgaGFyZHdhcmUgY2FuJ3QgaGFuZGxlLiBQcmV2ZW50cyBpbnZhbGlkIGNvbmZpZ3VyYXRpb25zLlxuXG5UaGUgY29kZSBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBTcGVjaWZpY2FsbHksIHRoZSBwYXRjaCBtZW50aW9ucyBVU0IgbmV0d29yayBkcml2ZXJzIGxldmVyYWdpbmcgcGh5bGluayDigJMgdGhpbmdzIGxpa2UgQVNJWCBhbmQgTEFONzhYWCwgYW5kIHRoZWlyIGVtdWxhdGVkIGNvdW50ZXJwYXJ0cyB2aWEgVVNCIGdhZGdldCBhbmQgZHVtbXlfaGNkLiBUaGVzZSBhcmUgZ29vZCB0YXJnZXRzIGZvciB0ZXN0aW5nIGFuZCB2YWxpZGF0aW9uLlxuXG5TbywgbGV0J3Mga2VlcCB0aGUgZm9jdXMgb24gYHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0YC4gS2V5IHN5bWJvbHM6IGBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldGAuXG5cbkkgbmVlZCB0byBtYWtlIHN1cmUgbXkgdGVzdGluZyBzZXR1cCBpbmNsdWRlcyB0aG9zZSBkcml2ZXJzIHRoYXQgdXNlIHRoaXMgZnVuY3Rpb24uIExldCdzIHNlZS4uLiBgVVNCX05FVF9BWDg4MTdYYCDigJMgaXQgbG9va3MgbGlrZSBgZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jYCBkb2VzIGluZGVlZCBjYWxsIGBwaHlsaW5rX2NyZWF0ZWAsIHNvIHRoYXQncyBnb29kLiBBbmQgYFVTQl9MQU43OFhYYCDigJMgeWVwLCBgZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguY2AgaXMgYWxzbyBjYWxsaW5nIGBwaHlsaW5rX2NyZWF0ZWAuXG5cbkFueXRoaW5nIGVsc2UgSSBzaG91bGQgY29uc2lkZXI/IEFoLCBgVVNCX1VTQk5FVGAuIFNpbmNlIGBVU0JfTkVUX0FYODgxN1hgIGRlcGVuZHMgb24gdGhhdCwgaXQgbWFrZXMgc2Vuc2UgdG8gaW5jbHVkZSBpdCBpbiB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiBmb3IgdGVzdGluZyBhbmQgY292ZXJhZ2UuIFN5emthbGxlciB1c3VhbGx5IGhhcyBgVVNCX1VTQk5FVGAgZW5hYmxlZCwgYnV0IEknbGwgbWFrZSBzdXJlIHRvIGV4cGxpY2l0bHkgaW5jbHVkZSBpdC4gT2theSwgdGhhdCBzaG91bGQgYmUgZW5vdWdoIGZvciBub3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5OTgwLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDg2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA4OjIwOjQxLjE2NjIzMjc3NFoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY0Mzc5Njg0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlcGVuZHMgb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdXNiL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NT1jb21tZW50IFxcXCJIb3N0LXNpZGUgVVNCIHN1cHBvcnQgaXMgbmVlZGVkIGZvciBVU0IgTmV0d29yayBBZGFwdGVyIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6NjpcXHRkZXBlbmRzIG9uICFVU0IgXFx1MDAyNlxcdTAwMjYgTkVUXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNy1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz04PW1lbnVjb25maWcgVVNCX05FVF9EUklWRVJTXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xMC1cXHRkZWZhdWx0IFVTQiBpZiBVU0JcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzoxMTpcXHRkZXBlbmRzIG9uIFVTQiBcXHUwMDI2XFx1MDAyNiBORVRcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xMi1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTE2Nj1jb25maWcgVVNCX05FVF9BWDg4MTdYXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTY3LVxcdHRyaXN0YXRlIFxcXCJBU0lYIEFYODh4eHggQmFzZWQgVVNCIDIuMCBFdGhlcm5ldCBBZGFwdGVyc1xcXCJcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzoxNjg6XFx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTY5LVxcdHNlbGVjdCBDUkMzMlxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTk0LVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjE5NTpcXHQgIFRoaXMgZHJpdmVyIGNyZWF0ZXMgYW4gaW50ZXJmYWNlIG5hbWVkIFxcXCJldGhYXFxcIiwgd2hlcmUgWCBkZXBlbmRzIG9uXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTk2LVxcdCAgd2hhdCBvdGhlciBuZXR3b3JraW5nIGRldmljZXMgeW91IGhhdmUgaW4gdXNlLlxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MTk4PWNvbmZpZyBVU0JfTkVUX0FYODgxNzlfMTc4QVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTE5OS1cXHR0cmlzdGF0ZSBcXFwiQVNJWCBBWDg4MTc5LzE3OEEgVVNCIDMuMC8yLjAgdG8gR2lnYWJpdCBFdGhlcm5ldFxcXCJcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzoyMDA6XFx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMjAxLVxcdHNlbGVjdCBDUkMzMlxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMjEyLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjIxMzpcXHQgIFRoaXMgZHJpdmVyIGNyZWF0ZXMgYW4gaW50ZXJmYWNlIG5hbWVkIFxcXCJldGhYXFxcIiwgd2hlcmUgWCBkZXBlbmRzIG9uXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMjE0LVxcdCAgd2hhdCBvdGhlciBuZXR3b3JraW5nIGRldmljZXMgeW91IGhhdmUgaW4gdXNlLlxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MjE2PWNvbmZpZyBVU0JfTkVUX0NEQ0VUSEVSXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMjE3LVxcdHRyaXN0YXRlIFxcXCJDREMgRXRoZXJuZXQgc3VwcG9ydCAoc21hcnQgZGV2aWNlcyBzdWNoIGFzIGNhYmxlIG1vZGVtcylcXFwiXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MjE4OlxcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTIxOS1cXHRkZWZhdWx0IHlcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTIzOC1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzoyMzk6XFx0ICBUaGlzIGRyaXZlciBjcmVhdGVzIGFuIGludGVyZmFjZSBuYW1lZCBcXFwiZXRoWFxcXCIsIHdoZXJlIFggZGVwZW5kcyBvblxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTI0MC1cXHQgIHdoYXQgb3RoZXIgbmV0d29ya2luZyBkZXZpY2VzIHlvdSBoYXZlIGluIHVzZS4gIEhvd2V2ZXIsIGlmIHRoZVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MjQ0PWNvbmZpZyBVU0JfTkVUX0NEQ19FRU1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0yNDUtXFx0dHJpc3RhdGUgXFxcIkNEQyBFRU0gc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzoyNDY6XFx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMjQ3LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTI1Mi1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzoyNTM6XFx0ICBUaGlzIGRyaXZlciBjcmVhdGVzIGFuIGludGVyZmFjZSBuYW1lZCBcXFwiZXRoWFxcXCIsIHdoZXJlIFggZGVwZW5kcyBvblxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTI1NC1cXHQgIHdoYXQgb3RoZXIgbmV0d29ya2luZyBkZXZpY2VzIHlvdSBoYXZlIGluIHVzZS4gIEhvd2V2ZXIsIGlmIHRoZVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MjU4PWNvbmZpZyBVU0JfTkVUX0NEQ19OQ01cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0yNTktXFx0dHJpc3RhdGUgXFxcIkNEQyBOQ00gc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzoyNjA6XFx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMjYxLVxcdHNlbGVjdCBVU0JfTkVUX0NEQ0VUSEVSXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz0yNzg9Y29uZmlnIFVTQl9ORVRfSFVBV0VJX0NEQ19OQ01cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0yNzktXFx0dHJpc3RhdGUgXFxcIkh1YXdlaSBOQ00gZW1iZWRkZWQgQVQgY2hhbm5lbCBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjI4MDpcXHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0yODEtXFx0c2VsZWN0IFVTQl9XRE1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTI5Mz1jb25maWcgVVNCX05FVF9DRENfTUJJTVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTI5NC1cXHR0cmlzdGF0ZSBcXFwiQ0RDIE1CSU0gc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzoyOTU6XFx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMjk2LVxcdHNlbGVjdCBVU0JfV0RNXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz0zMTE9Y29uZmlnIFVTQl9ORVRfRE05NjAxXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMzEyLVxcdHRyaXN0YXRlIFxcXCJEYXZpY29tIERNOTZ4eCBiYXNlZCBVU0IgMTAvMTAwIGV0aGVybmV0IGRldmljZXNcXFwiXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MzEzOlxcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTMxNC1cXHRzZWxlY3QgQ1JDMzJcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTMxOT1jb25maWcgVVNCX05FVF9TUjk3MDBcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0zMjAtXFx0dHJpc3RhdGUgXFxcIkNvcmVDaGlwLXN6IFNSOTcwMCBiYXNlZCBVU0IgMS4xIDEwLzEwMCBldGhlcm5ldCBkZXZpY2VzXFxcIlxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjMyMTpcXHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0zMjItXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MzI2PWNvbmZpZyBVU0JfTkVUX1NSOTgwMFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTMyNy1cXHR0cmlzdGF0ZSBcXFwiQ29yZUNoaXAtc3ogU1I5ODAwIGJhc2VkIFVTQiAyLjAgMTAvMTAwIGV0aGVybmV0IGRldmljZXNcXFwiXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MzI4OlxcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTMyOS1cXHRzZWxlY3QgQ1JDMzJcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTM0MT1jb25maWcgVVNCX05FVF9TTVNDNzVYWFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTM0Mi1cXHR0cmlzdGF0ZSBcXFwiU01TQyBMQU43NVhYIGJhc2VkIFVTQiAyLjAgZ2lnYWJpdCBldGhlcm5ldCBkZXZpY2VzXFxcIlxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjM0MzpcXHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0zNDQtXFx0c2VsZWN0IEJJVFJFVkVSU0VcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTM1MT1jb25maWcgVVNCX05FVF9TTVNDOTVYWFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTM1Mi1cXHR0cmlzdGF0ZSBcXFwiU01TQyBMQU45NVhYIGJhc2VkIFVTQiAyLjAgMTAvMTAwIGV0aGVybmV0IGRldmljZXNcXFwiXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MzUzOlxcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTM1NC1cXHRzZWxlY3QgUEhZTElCXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz0zNjQ9Y29uZmlnIFVTQl9ORVRfR0w2MjBBXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMzY1LVxcdHRyaXN0YXRlIFxcXCJHZW5lU3lzIEdMNjIwVVNCLUEgYmFzZWQgY2FibGVzXFxcIlxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjM2NjpcXHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0zNjctXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MzczPWNvbmZpZyBVU0JfTkVUX05FVDEwODBcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTM3NS1cXHRkZWZhdWx0IHlcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzozNzY6XFx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMzc3LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTM4Mj1jb25maWcgVVNCX05FVF9QTFVTQlxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMzg1LVxcdCMgYXJlIGV2ZXIgcmVzb2x2ZWQgLi4uIHRoZW4gcmVtb3ZlIFxcXCJleHBlcmltZW50YWxcXFwiXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6Mzg2OlxcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTM4Ny1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz0zOTE9Y29uZmlnIFVTQl9ORVRfTUNTNzgzMFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTM5Mi1cXHR0cmlzdGF0ZSBcXFwiTW9zQ2hpcCBNQ1M3ODMwIGJhc2VkIEV0aGVybmV0IGFkYXB0ZXJzXFxcIlxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjM5MzpcXHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0zOTQtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9Mzk5PWNvbmZpZyBVU0JfTkVUX1JORElTX0hPU1RcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy00MDAtXFx0dHJpc3RhdGUgXFxcIkhvc3QgZm9yIFJORElTIGFuZCBBY3RpdmVTeW5jIGRldmljZXNcXFwiXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6NDAxOlxcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTQwMi1cXHRzZWxlY3QgVVNCX05FVF9DRENFVEhFUlxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NDE0PWNvbmZpZyBVU0JfTkVUX0NEQ19TVUJTRVRfRU5BQkxFXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNDE1LVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6NDE2OlxcdGRlcGVuZHMgb24gVVNCX05FVF9DRENfU1VCU0VUXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNDE3LVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTQxOD1jb25maWcgVVNCX05FVF9DRENfU1VCU0VUXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNDE5LVxcdHRyaXN0YXRlIFxcXCJTaW1wbGUgVVNCIE5ldHdvcmsgTGlua3MgKENEQyBFdGhlcm5ldCBzdWJzZXQpXFxcIlxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjQyMDpcXHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy00MjEtXFx0ZGVmYXVsdCB5XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz00MzM9Y29uZmlnIFVTQl9BTElfTTU2MzJcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy00MzQtXFx0Ym9vbCBcXFwiQUxpIE01NjMyIGJhc2VkICdVU0IgMi4wIERhdGEgTGluaycgY2FibGVzXFxcIlxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjQzNTpcXHRkZXBlbmRzIG9uIFVTQl9ORVRfQ0RDX1NVQlNFVFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTQzNi1cXHRzZWxlY3QgVVNCX05FVF9DRENfU1VCU0VUX0VOQUJMRVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NDQxPWNvbmZpZyBVU0JfQU4yNzIwXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNDQyLVxcdGJvb2wgXFxcIkFuY2hvckNoaXBzIDI3MjAgYmFzZWQgY2FibGVzIChYaXJjb20gUEdVTkVULCAuLi4pXFxcIlxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjQ0MzpcXHRkZXBlbmRzIG9uIFVTQl9ORVRfQ0RDX1NVQlNFVFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTQ0NC1cXHRzZWxlY3QgVVNCX05FVF9DRENfU1VCU0VUX0VOQUJMRVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NDUwPWNvbmZpZyBVU0JfQkVMS0lOXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNDUxLVxcdGJvb2wgXFxcImVURUsgYmFzZWQgaG9zdC10by1ob3N0IGNhYmxlcyAoQWR2YW5jZSwgQmVsa2luLCAuLi4pXFxcIlxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjQ1MjpcXHRkZXBlbmRzIG9uIFVTQl9ORVRfQ0RDX1NVQlNFVFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTQ1My1cXHRzZWxlY3QgVVNCX05FVF9DRENfU1VCU0VUX0VOQUJMRVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NDYwPWNvbmZpZyBVU0JfQVJNTElOVVhcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy00NjEtXFx0Ym9vbCBcXFwiRW1iZWRkZWQgQVJNIExpbnV4IGxpbmtzIChpUGFxLCAuLi4pXFxcIlxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjQ2MjpcXHRkZXBlbmRzIG9uIFVTQl9ORVRfQ0RDX1NVQlNFVFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTQ2My1cXHRzZWxlY3QgVVNCX05FVF9DRENfU1VCU0VUX0VOQUJMRVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NDc4PWNvbmZpZyBVU0JfRVBTT04yODg4XFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNDc5LVxcdGJvb2wgXFxcIkVwc29uIDI4ODggYmFzZWQgZmlybXdhcmUgKERFVkVMT1BNRU5UKVxcXCJcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo0ODA6XFx0ZGVwZW5kcyBvbiBVU0JfTkVUX0NEQ19TVUJTRVRcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy00ODEtXFx0c2VsZWN0IFVTQl9ORVRfQ0RDX1NVQlNFVF9FTkFCTEVcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTQ4Nj1jb25maWcgVVNCX0tDMjE5MFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTQ4Ny1cXHRib29sIFxcXCJLVCBUZWNobm9sb2d5IEtDMjE5MCBiYXNlZCBjYWJsZXMgKEluc3RhTmV0KVxcXCJcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo0ODg6XFx0ZGVwZW5kcyBvbiBVU0JfTkVUX0NEQ19TVUJTRVRcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy00ODktXFx0c2VsZWN0IFVTQl9ORVRfQ0RDX1NVQlNFVF9FTkFCTEVcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTQ5ND1jb25maWcgVVNCX05FVF9aQVVSVVNcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy00OTUtXFx0dHJpc3RhdGUgXFxcIlNoYXJwIFphdXJ1cyAoc3RvY2sgUk9NcykgYW5kIGNvbXBhdGlibGVcXFwiXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6NDk2OlxcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTQ5Ny1cXHRzZWxlY3QgVVNCX05FVF9DRENFVEhFUlxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NTEyPWNvbmZpZyBVU0JfTkVUX0NYODIzMTBfRVRIXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNTEzLVxcdHRyaXN0YXRlIFxcXCJDb25leGFudCBDWDgyMzEwIFVTQiBldGhlcm5ldCBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjUxNDpcXHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy01MTUtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NTIwPWNvbmZpZyBVU0JfTkVUX0tBTE1JQVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTUyMS1cXHR0cmlzdGF0ZSBcXFwiU2Ftc3VuZyBLYWxtaWEgYmFzZWQgTFRFIFVTQiBtb2RlbVxcXCJcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo1MjI6XFx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNTIzLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTUzMD1jb25maWcgVVNCX05FVF9RTUlfV1dBTlxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTUzMS1cXHR0cmlzdGF0ZSBcXFwiUU1JIFdXQU4gZHJpdmVyIGZvciBRdWFsY29tbSBNU00gYmFzZWQgM0cgYW5kIExURSBtb2RlbXNcXFwiXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6NTMyOlxcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTUzMy1cXHRzZWxlY3QgVVNCX1dETVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NTUyPWNvbmZpZyBVU0JfSFNPXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNTUzLVxcdHRyaXN0YXRlIFxcXCJPcHRpb24gVVNCIEhpZ2ggU3BlZWQgTW9iaWxlIERldmljZXNcXFwiXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6NTU0OlxcdGRlcGVuZHMgb24gVVNCIFxcdTAwMjZcXHUwMDI2IFJGS0lMTCBcXHUwMDI2XFx1MDAyNiBUVFlcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy01NTUtXFx0ZGVmYXVsdCBuXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz01NjM9Y29uZmlnIFVTQl9ORVRfSU5UNTFYMVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTU2NC1cXHR0cmlzdGF0ZSBcXFwiSW50ZWxsb24gUExDIGJhc2VkIHVzYiBhZGFwdGVyXFxcIlxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjU2NTpcXHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy01NjYtXFx0c2VsZWN0IFVTQl9ORVRfQ0RDRVRIRVJcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTU3Mj1jb25maWcgVVNCX0NEQ19QSE9ORVRcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy01NzMtXFx0dHJpc3RhdGUgXFxcIkNEQyBQaG9uZXQgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo1NzQ6XFx0ZGVwZW5kcyBvbiBQSE9ORVQgXFx1MDAyNlxcdTAwMjYgVVNCX1VTQk5FVFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTU3NS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz01OTA9Y29uZmlnIFVTQl9TSUVSUkFfTkVUXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNTkxLVxcdHRyaXN0YXRlIFxcXCJVU0ItdG8tV1dBTiBEcml2ZXIgZm9yIFNpZXJyYSBXaXJlbGVzcyBtb2RlbXNcXFwiXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6NTkyOlxcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTU5My1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz01OTk9Y29uZmlnIFVTQl9WTDYwMFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTYwMC1cXHR0cmlzdGF0ZSBcXFwiTEcgVkw2MDAgbW9kZW0gZG9uZ2xlXFxcIlxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjYwMTpcXHRkZXBlbmRzIG9uIFVTQl9ORVRfQ0RDRVRIRVIgXFx1MDAyNlxcdTAwMjYgVFRZXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNjAyLVxcdHNlbGVjdCBVU0JfQUNNXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz02MTQ9Y29uZmlnIFVTQl9ORVRfQ0g5MjAwXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNjE1LVxcdHRyaXN0YXRlIFxcXCJRaW5nSGVuZyBDSDkyMDAgVVNCIGV0aGVybmV0IHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6NjE2OlxcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTYxNy1cXHRzZWxlY3QgTUlJXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz02MjU9Y29uZmlnIFVTQl9ORVRfQVFDMTExXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNjI2LVxcdHRyaXN0YXRlIFxcXCJBcXVhbnRpYSBBUXRpb24gVVNCIHRvIDUvMi41R2JFIENvbnRyb2xsZXJzIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6NjI3OlxcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTYyOC1cXHRzZWxlY3QgQ1JDMzJcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTYzNj1jb25maWcgVVNCX1JUTDgxNTNfRUNNXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNjM3LVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6NjM4OlxcdGRlcGVuZHMgb24gVVNCX05FVF9DRENFVEhFUiBcXHUwMDI2XFx1MDAyNiAoVVNCX1JUTDgxNTIgfHwgVVNCX1JUTDgxNTI9bilcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy02MzktXFx0ZGVmYXVsdCB5XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA4OjIwOjQxLjMzMDYyNDQ2OFoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4ODYzNjIyOTY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIFVTQiBOZXR3b3JrIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgaXQgbG9va3MgbGlrZSB0aGUgYFVTQl9MQU43OFhYYCBkcml2ZXIgZm9yIE1pY3JvY2hpcCBMQU43OFhYLWJhc2VkIFVTQiBFdGhlcm5ldCBhZGFwdGVycyBpcyBpbmRlcGVuZGVudCBvZiBgVVNCX1VTQk5FVGAuIEhvd2V2ZXIsIHRoZSBgVVNCX05FVF9BWDg4MTdYYCBkcml2ZXIsIGZvciBBU0lYIEFYODh4eHgtYmFzZWQgVVNCIDIuMCBFdGhlcm5ldCBhZGFwdGVycywgKmRvZXMqIGRlcGVuZCBvbiBgVVNCX1VTQk5FVGAuXG5cblRoZXJlZm9yZSwgdG8gZW5zdXJlIGJvdGggdHlwZXMgb2YgYWRhcHRlcnMgYXJlIGVuYWJsZWQgYW5kIGZ1bmN0aW9uYWwsIGFuZCBnaXZlbiB0aGF0IHRoZSBjb2RlIHBhdGhzIHBvdGVudGlhbGx5IGludGVyc2VjdCwgSSBzaG91bGQgZW5hYmxlIGBVU0JfVVNCTkVUYCwgYWxvbmcgd2l0aCBgVVNCX05FVF9BWDg4MTdYYCBhbmQgYFVTQl9MQU43OFhYYC4gVGhhdCBzZWVtcyBsaWtlIGEgbG9naWNhbCBmaXJzdCBzdGVwLlxuXG5Ob3csIHRoZSBpbnRlcmVzdGluZyBiaXQuIFRoZSBwYXRjaCBzZWVtcyB0byBmb2N1cyBvbiBgcGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXRgLiBJdCdzIGFuIGV4cG9ydGVkIHN5bWJvbCwgd2hpY2ggc3VnZ2VzdHMgaXQncyB3aWRlbHkgdXNlZCBieSBuZXR3b3JrIGRyaXZlcnMuIFRoYXQgbWVhbnMgaXQncyBkZWZpbml0ZWx5IHJlYWNoYWJsZSBjb2RlLiBNeSBpbnR1aXRpb24gaXMgdGhhdCB0aGlzIGlzIHRoZSBrZXkgdG8gZm9jdXMgb24sIGFuZCB0aGlzIG5lZWRzIHRvIGJlIGludmVzdGlnYXRlZCBkdXJpbmcgZnV6emluZy5cblxuTGV0IG1lIHN1bW1hcml6ZSBteSBmaW5kaW5ncywgbWFraW5nIGl0IGNsZWFyIHdoYXQgYWN0aW9ucyBJIG5lZWQgdG8gdGFrZTpcblxuKiAgICoqV29ydGhGdXp6aW5nOioqIFRydWUgLSB0aGlzIGlzIGRlZmluaXRlbHkgd29ydGggb3VyIGF0dGVudGlvbi5cbiogICAqKkZvY3VzU3ltYm9sczoqKiBcXFtcInBoeWxpbmtcXF9ldGh0b29sXFxfa3NldHRpbmdzXFxfc2V0XCJcXF0gLSB0aGF0J3MgdGhlIHByaW1hcnkgdGFyZ2V0LlxuKiAgICoqRW5hYmxlQ29uZmlnczoqKiBcXFtcIlVTQlxcX1VTQk5FVFwiLCBcIlVTQlxcX05FVFxcX0FYODgxN1hcIiwgXCJVU0JcXF9MQU43OFhYXCJcXF0gLSB0byBlbnN1cmUgdGhlIHJlbGV2YW50IGNvZGUgcGF0aHMgYXJlIGFjdGl2ZS5cbiogICAqKlJlYXNvbmluZzoqKiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIHZhbGlkYXRpb24gY2hlY2sgd2l0aGluIGBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldGAgdG8gcHJldmVudCBzZXR0aW5nIGludmFsaWQgc3BlZWQgYW5kIGR1cGxleCBzZXR0aW5ncyB2aWEgYGV0aHRvb2xgLCB3aGljaCBpcyBhIGdvb2QgcHJvdGVjdGlvbiBzdHJhdGVneSBmb3IgdGhvc2UgZGV2aWNlcy4gVGhpcyBjb2RlIGNhbiBiZSByZWFjaGVkIHZpYSBVU0IgbmV0d29yayBkcml2ZXJzIHRoYXQgdXRpbGl6ZSBwaHlsaW5rIChzdWNoIGFzIEFTSVgsIExBTjc4WFgpIGFuZCB0aGlzIGNvZGUgY2FuIGJlIHJlYWNoZWQgdW5kZXIgdmlydHVhbGl6YXRpb24gYXMgd2VsbC5cblxuT2theSwgd2l0aCB0aGF0IGNsZWFyLCBJJ20gcmVhZHkgdG8gcHJvY2VlZC4gSSdsbCBjYWxsIGBzZXQtcmVzdWx0c2Agbm93IGFuZCBtb3ZlIG9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTAzOCwiT3V0cHV0VG9rZW5zIjoxNjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDg6MjA6NTAuMTk0MjUxMjA1WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjgxMzA3MzkyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJVU0JfVVNCTkVUXCIsXG4gICAgXCJVU0JfTkVUX0FYODgxN1hcIixcbiAgICBcIlVTQl9MQU43OFhYXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgdmFsaWRhdGlvbiBjaGVjayBpbiBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldCB0byBlbnN1cmUgdGhhdCB0aGUgcmVxdWVzdGVkIHNwZWVkIGFuZCBkdXBsZXggc2V0dGluZ3MgYXJlIHN1cHBvcnRlZCBieSB0aGUgUEhZIGNhcGFiaWxpdGllcyBiZWZvcmUgYXBwbHlpbmcgdGhlbS4gVGhpcyBwcmV2ZW50cyBpbnZhbGlkIGNvbmZpZ3VyYXRpb25zIGZyb20gYmVpbmcgc2V0IHZpYSBldGh0b29sLiBUaGUgY29kZSBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHRocm91Z2ggVVNCIG5ldHdvcmsgZHJpdmVycyB0aGF0IHVzZSBwaHlsaW5rIChlLmcuLCBBU0lYLCBMQU43OFhYKSB3aGljaCBjYW4gYmUgZW11bGF0ZWQgdmlhIFVTQiBnYWRnZXQvZHVtbXlfaGNkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlVTQl9VU0JORVRcIixcbiAgICBcIlVTQl9ORVRfQVg4ODE3WFwiLFxuICAgIFwiVVNCX0xBTjc4WFhcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSB2YWxpZGF0aW9uIGNoZWNrIGluIHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0IHRvIGVuc3VyZSB0aGF0IHRoZSByZXF1ZXN0ZWQgc3BlZWQgYW5kIGR1cGxleCBzZXR0aW5ncyBhcmUgc3VwcG9ydGVkIGJ5IHRoZSBQSFkgY2FwYWJpbGl0aWVzIGJlZm9yZSBhcHBseWluZyB0aGVtLiBUaGlzIHByZXZlbnRzIGludmFsaWQgY29uZmlndXJhdGlvbnMgZnJvbSBiZWluZyBzZXQgdmlhIGV0aHRvb2wuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdGhyb3VnaCBVU0IgbmV0d29yayBkcml2ZXJzIHRoYXQgdXNlIHBoeWxpbmsgKGUuZy4sIEFTSVgsIExBTjc4WFgpIHdoaWNoIGNhbiBiZSBlbXVsYXRlZCB2aWEgVVNCIGdhZGdldC9kdW1teV9oY2QuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow85dxk[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-01 07:53:57 +0000 UTC FinishedAt: 2026-07-01 08:20:52 +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": "f456c1922c49e6be5ce407ddb74a6e61af5b65cf", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "USB_USBNET", "USB_NET_AX8817X", "USB_LAN78XX" ], "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": "f456c1922c49e6be5ce407ddb74a6e61af5b65cf", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "USB_USBNET", "USB_NET_AX8817X", "USB_LAN78XX" ], "series_id": "d16b0cb9-d7a7-409c-9cdf-0dcc16f65c0a" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "phylink_ethtool_ksettings_set" ], "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+CgkJCTx0ZD4yMDI2LzA3LzAxIDA4OjE5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTQl9VU0JORVQmIzM0OywKICAgICYjMzQ7VVNCX05FVF9BWDg4MTdYJiMzNDssCiAgICAmIzM0O1VTQl9MQU43OFhYJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIHZhbGlkYXRpb24gY2hlY2sgaW4gcGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXQgdG8gZW5zdXJlIHRoYXQgdGhlIHJlcXVlc3RlZCBzcGVlZCBhbmQgZHVwbGV4IHNldHRpbmdzIGFyZSBzdXBwb3J0ZWQgYnkgdGhlIFBIWSBjYXBhYmlsaXRpZXMgYmVmb3JlIGFwcGx5aW5nIHRoZW0uIFRoaXMgcHJldmVudHMgaW52YWxpZCBjb25maWd1cmF0aW9ucyBmcm9tIGJlaW5nIHNldCB2aWEgZXRodG9vbC4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB0aHJvdWdoIFVTQiBuZXR3b3JrIGRyaXZlcnMgdGhhdCB1c2UgcGh5bGluayAoZS5nLiwgQVNJWCwgTEFONzhYWCkgd2hpY2ggY2FuIGJlIGVtdWxhdGVkIHZpYSBVU0IgZ2FkZ2V0L2R1bW15X2hjZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwODoxOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDY2MjAzYTEyYzRjODE3YzcxNzFhMjJiOGI3YTIwZWI5OTI1YmMyZjRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAxIDA4OjE5OjI2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXG5pbmRleCAwODdhYzYzZjkxOTNkNy4uMjJmOWJiZDM4MWJkNzIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXG5AQCAtMjk4OSw2ICYjNDM7Mjk4OSwxMCBAQCBpbnQgcGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXQoc3RydWN0IHBoeWxpbmsgKnBsLFxuIFx0aWYgKHBsLVx1MDAzZXBoeWRldikge1xuIFx0XHRzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyBwaHlfa3NldCA9ICprc2V0O1xuIFxuJiM0MztcdFx0aWYgKCFwaHlfY2Fwc19sb29rdXAoa3NldC1cdTAwM2ViYXNlLnNwZWVkLCBrc2V0LVx1MDAzZWJhc2UuZHVwbGV4LFxuJiM0MztcdFx0XHRcdCAgICAgcGwtXHUwMDNlc3VwcG9ydGVkLCB0cnVlKSlcbiYjNDM7XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1xuIFx0XHRsaW5rbW9kZV9hbmQocGh5X2tzZXQubGlua19tb2Rlcy5hZHZlcnRpc2luZyxcbiBcdFx0XHQgICAgIHBoeV9rc2V0LmxpbmtfbW9kZXMuYWR2ZXJ0aXNpbmcsXG4gXHRcdFx0ICAgICBwbC1cdTAwM2VzdXBwb3J0ZWQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA4OjE5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTQl9VU0JORVQmIzM0OywKICAgICYjMzQ7VVNCX05FVF9BWDg4MTdYJiMzNDssCiAgICAmIzM0O1VTQl9MQU43OFhYJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIHZhbGlkYXRpb24gY2hlY2sgaW4gcGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXQgdG8gZW5zdXJlIHRoYXQgdGhlIHJlcXVlc3RlZCBzcGVlZCBhbmQgZHVwbGV4IHNldHRpbmdzIGFyZSBzdXBwb3J0ZWQgYnkgdGhlIFBIWSBjYXBhYmlsaXRpZXMgYmVmb3JlIGFwcGx5aW5nIHRoZW0uIFRoaXMgcHJldmVudHMgaW52YWxpZCBjb25maWd1cmF0aW9ucyBmcm9tIGJlaW5nIHNldCB2aWEgZXRodG9vbC4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB0aHJvdWdoIFVTQiBuZXR3b3JrIGRyaXZlcnMgdGhhdCB1c2UgcGh5bGluayAoZS5nLiwgQVNJWCwgTEFONzhYWCkgd2hpY2ggY2FuIGJlIGVtdWxhdGVkIHZpYSBVU0IgZ2FkZ2V0L2R1bW15X2hjZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNjYyMDNhMTJjNGM4MTdjNzE3MWEyMmI4YjdhMjBlYjk5MjViYzJmNApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgSnVsIDEgMDg6MTk6MjYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYwppbmRleCAwODdhYzYzZjkxOTNkNy4uMjJmOWJiZDM4MWJkNzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYwpAQCAtMjk4OSw2ICYjNDM7Mjk4OSwxMCBAQCBpbnQgcGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXQoc3RydWN0IHBoeWxpbmsgKnBsLAogCWlmIChwbC0mZ3Q7cGh5ZGV2KSB7CiAJCXN0cnVjdCBldGh0b29sX2xpbmtfa3NldHRpbmdzIHBoeV9rc2V0ID0gKmtzZXQ7CiAKJiM0MzsJCWlmICghcGh5X2NhcHNfbG9va3VwKGtzZXQtJmd0O2Jhc2Uuc3BlZWQsIGtzZXQtJmd0O2Jhc2UuZHVwbGV4LAomIzQzOwkJCQkgICAgIHBsLSZndDtzdXBwb3J0ZWQsIHRydWUpKQomIzQzOwkJCXJldHVybiAtRUlOVkFMOwomIzQzOwogCQlsaW5rbW9kZV9hbmQocGh5X2tzZXQubGlua19tb2Rlcy5hZHZlcnRpc2luZywKIAkJCSAgICAgcGh5X2tzZXQubGlua19tb2Rlcy5hZHZlcnRpc2luZywKIAkJCSAgICAgcGwtJmd0O3N1cHBvcnRlZCk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA4OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4NzYKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUEhZTGluayBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNgLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIHNlZW1zIHRvIGJlIGluIHRoZSBgcGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXRgIGZ1bmN0aW9uLiBUaGV5JiMzOTt2ZSBhZGRlZCBhIHZhbGlkYXRpb24gY2hlY2sgcmlnaHQgaGVyZToKCmBgYGMKCQlpZiAoIXBoeV9jYXBzX2xvb2t1cChrc2V0LSZndDtiYXNlLnNwZWVkLCBrc2V0LSZndDtiYXNlLmR1cGxleCwKCQkJCSAgICAgcGwtJmd0O3N1cHBvcnRlZCwgdHJ1ZSkpCgkJCXJldHVybiAtRUlOVkFMOwpgYGAKCkVzc2VudGlhbGx5LCB0aGV5JiMzOTtyZSBpbnRyb2R1Y2luZyBhIGNoZWNrIHRvIGVuc3VyZSB0aGUgcmVxdWVzdGVkIHNwZWVkIGFuZCBkdXBsZXggc2V0dGluZ3MgYXJlIGFjdHVhbGx5ICpzdXBwb3J0ZWQqIGJ5IHRoZSBQSFkgYmVmb3JlIGFwcGx5aW5nIHRoZSBldGh0b29sIGtzZXR0aW5ncy4gVGhpcyBpcyBhIGNsZWFyIGZ1bmN0aW9uYWwgZW5oYW5jZW1lbnQuICBUaGV5JiMzOTtyZSB1c2luZyBgcGh5X2NhcHNfbG9va3VwYCB0byBwZXJmb3JtIHRoaXMgdmFsaWRhdGlvbiwgd2hpY2ggSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50by4gSXQmIzM5O3MgZ29vZCBwcmFjdGljZSB0byB2YWxpZGF0ZSB0aGVzZSBzZXR0aW5ncywgcHJldmVudGluZyB1bmV4cGVjdGVkIGJlaGF2aW9yIG9yIGVycm9ycyBsYXRlciBvbi4gSSYjMzk7bGwgbmVlZCB0byBjb25maXJtIHdoYXQgYHBsLSZndDtzdXBwb3J0ZWRgIHJlZmVycyB0byBpbiB0aGlzIGNvbnRleHQuIElzIGl0IHRoZSBpbnRlcnNlY3Rpb24gb2YgY2FwYWJpbGl0aWVzIGFkdmVydGlzZWQgYnkgYm90aCBQSFkgYW5kIE1BQz8gT3IgdGhlIGNhcGFiaWxpdGllcyBmcm9tIG9uZSBzaWRlPyBMZXQgbWUgZGl2ZSBkZWVwZXIgdG8gZW5zdXJlIHRoaXMgd29ya3MgYXMgZXhwZWN0ZWQgYW5kIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgcmVncmVzc2lvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDg6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5bGluay5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9Mjk1NT1zdGF0aWMgYm9vbCBwaHlsaW5rX3ZhbGlkYXRlX3Bjc19pbmJhbmRfYXV0b25lZyhzdHJ1Y3QgcGh5bGluayAqcGwsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yOTc1LS8qKlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyOTc2OiAqIHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0KCkgLSBzZXQgdGhlIGxpbmsgc2V0dGluZ3NcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjk3Ny0gKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjk3OS0gKi9cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6Mjk4MDppbnQgcGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXQoc3RydWN0IHBoeWxpbmsgKnBsLFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yOTgxLVx0XHRcdFx0ICBjb25zdCBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqa3NldClcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNDYtfVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMTQ3OkVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0KTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE0OC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwODoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjA3CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkFuYWx5emluZyB0aGUgUGh5bGluayBhbmQgRXRodG9vbCBSZWxhdGlvbnNoaXAqKgoKQWxyaWdodCwgc28gYHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0YCBpcyBhIGtleSBmdW5jdGlvbiwgYW4gZXhwb3J0ZWQgc3ltYm9sLCByaWdodD8gVGhhdCBtZWFucyBpdCYjMzk7cyBkZXNpZ25lZCB0byBiZSB1c2VkIGV4dGVybmFsbHksIHByaW1hcmlseSBieSBuZXR3b3JrIGRldmljZSBkcml2ZXJzIHRvIGludGVyZmFjZSB3aXRoIGV0aHRvb2wmIzM5O3Mgc2V0dGluZ3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gYHBoeWxpbmsuY2AuIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBmaWd1cmUgb3V0IHdoaWNoIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhY3R1YWxseSAqZW5hYmxlKiBgcGh5bGluay5jYCBpbiB0aGUgZmlyc3QgcGxhY2UuIEtub3dpbmcgdGhlIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHdoZW4gYW5kIGhvdyB0aGlzIGZ1bmN0aW9uIGlzIGFjdHVhbGx5IHJlbGV2YW50IGluIHRoZSBicm9hZGVyIG5ldHdvcmsgc3RhY2suIEl0JiMzOTtzIHRpbWUgdG8gZGlnIGludG8gdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb25zIGFuZCBzZWUgd2hhdCB0cmlnZ2VycyB0aGUgaW5jbHVzaW9uIG9mIHRoYXQgYHBoeWxpbmtgIG1vZHVsZS4gVGhpcyBpcyBhbGwgYWJvdXQgdHJhY2luZyB0aGUgZGVwZW5kZW5jeSBjaGFpbiwgYW5kIHVuZGVyc3RhbmRpbmcgd2hlcmUgdGhpcyBldGh0b29sIGZ1bmN0aW9uIGZhbGxzIGluIHRoZSBncmFuZCBzY2hlbWUgb2YgdGhpbmdzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA4OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BoeWxpbmsubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvTWFrZWZpbGU9MTg9b2JqLSQoQ09ORklHX1BIWUxJQilcdFx0JiM0Mzs9IG1kaW9fYnVzLm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZToxOTpvYmotJChDT05GSUdfUEhZTElOSylcdFx0JiM0Mzs9IHBoeWxpbmsub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTIwLW9iai0kKENPTkZJR19QSFlMSUIpXHRcdCYjNDM7PSBsaWJwaHkub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA4OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5NzgKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczoKCioqRGl2aW5nIGludG8gUEhZTElOSyBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24gSSYjMzk7bSB3b3JraW5nIHdpdGggaXMgYFBIWUxJTktgLiBSaWdodCwgZ290IGl0LiBOb3csIGdpdmVuIHRoYXQgaXQmIzM5O3MgYFBIWUxJTktgLCBJIG5lZWQgdG8gaW1tZWRpYXRlbHkgdW5kZXJzdGFuZCBpdHMgY2FwYWJpbGl0aWVzLiBNeSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBjb25zdWx0IGBwaHlfY2Fwc19sb29rdXBgLiBUaGF0IGZ1bmN0aW9uIGlzIGNyaXRpY2FsIGluIHByb3ZpZGluZyBtZSB3aXRoIGEgc3BlY2lmaWMsIGNvbmNpc2UgYW5kIGZvY3VzZWQgdmlldyBvZiBhbGwgdGhlIGZlYXR1cmVzIGFuZCBsaW1pdGF0aW9ucyB0aGlzIGBQSFlMSU5LYCBjb25maWd1cmF0aW9uIGVudGFpbHMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgdGhvcm91Z2hseSwgZXNwZWNpYWxseSBnaXZlbiB0aGF0IFBIWUxJTksgd2lsbCBkZWZpbmUgbXkgZnVydGhlciBkZWNpc2lvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDg6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGh5X2NhcHNfbG9va3VwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHktY2Fwcy5oPTU1PWNvbnN0IHN0cnVjdCBsaW5rX2NhcGFiaWxpdGllcyAqXG5kcml2ZXJzL25ldC9waHkvcGh5LWNhcHMuaDo1NjpwaHlfY2Fwc19sb29rdXBfYnlfbGlua21vZGUoY29uc3QgdW5zaWduZWQgbG9uZyAqbGlua21vZGVzKTtcbmRyaXZlcnMvbmV0L3BoeS9waHktY2Fwcy5oLTU3LVxuZHJpdmVycy9uZXQvcGh5L3BoeS1jYXBzLmg9NTg9Y29uc3Qgc3RydWN0IGxpbmtfY2FwYWJpbGl0aWVzICpcbmRyaXZlcnMvbmV0L3BoeS9waHktY2Fwcy5oOjU5OnBoeV9jYXBzX2xvb2t1cF9ieV9saW5rbW9kZV9yZXYoY29uc3QgdW5zaWduZWQgbG9uZyAqbGlua21vZGVzLCBib29sIGZkeF9vbmx5KTtcbmRyaXZlcnMvbmV0L3BoeS9waHktY2Fwcy5oLTYwLVxuZHJpdmVycy9uZXQvcGh5L3BoeS1jYXBzLmg9NjE9Y29uc3Qgc3RydWN0IGxpbmtfY2FwYWJpbGl0aWVzICpcbmRyaXZlcnMvbmV0L3BoeS9waHktY2Fwcy5oOjYyOnBoeV9jYXBzX2xvb2t1cChpbnQgc3BlZWQsIHVuc2lnbmVkIGludCBkdXBsZXgsIGNvbnN0IHVuc2lnbmVkIGxvbmcgKnN1cHBvcnRlZCxcbmRyaXZlcnMvbmV0L3BoeS9waHktY2Fwcy5oLTYzLVx0XHRib29sIGV4YWN0KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYz0zNDI9dm9pZCBwaHlfcmVzb2x2ZV9hbmVnX2xpbmttb2RlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmMtMzQ4LVxuZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmM6MzQ5Olx0YyA9IHBoeV9jYXBzX2xvb2t1cF9ieV9saW5rbW9kZShjb21tb24pO1xuZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmMtMzUwLVx0aWYgKGMpIHtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYz0zNjg9dm9pZCBwaHlfY2hlY2tfZG93bnNoaWZ0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmMtMzgxLVxuZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmM6MzgyOlx0YyA9IHBoeV9jYXBzX2xvb2t1cF9ieV9saW5rbW9kZShjb21tb24pO1xuZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmMtMzgzLVx0aWYgKGMpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmM9Mzk1PXN0YXRpYyBpbnQgcGh5X3Jlc29sdmVfbWluX3NwZWVkKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGJvb2wgZmR4X29ubHkpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmMtNDAxLVxuZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmM6NDAyOlx0YyA9IHBoeV9jYXBzX2xvb2t1cF9ieV9saW5rbW9kZV9yZXYoY29tbW9uLCBmZHhfb25seSk7XG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYy00MDMtXHRpZiAoYylcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5LmM9MjU2PXN0YXRpYyB2b2lkIHBoeV9zYW5pdGl6ZV9zZXR0aW5ncyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHkuYy0yNTktXG5kcml2ZXJzL25ldC9waHkvcGh5LmM6MjYwOlx0YyA9IHBoeV9jYXBzX2xvb2t1cChwaHlkZXYtXHUwMDNlc3BlZWQsIHBoeWRldi1cdTAwM2VkdXBsZXgsIHBoeWRldi1cdTAwM2VzdXBwb3J0ZWQsXG5kcml2ZXJzL25ldC9waHkvcGh5LmMtMjYxLVx0XHRcdCAgICBmYWxzZSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmM9MTIyPXNpemVfdCBwaHlfY2Fwc19zcGVlZHModW5zaWduZWQgaW50ICpzcGVlZHMsIHNpemVfdCBzaXplLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jLTE0MC0vKipcbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jOjE0MTogKiBwaHlfY2Fwc19sb29rdXBfYnlfbGlua21vZGUoKSAtIExvb2t1cCB0aGUgZmFzdGVzdCBtYXRjaGluZyBsaW5rX2NhcGFiaWxpdGllc1xuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmMtMTQyLSAqIEBsaW5rbW9kZXM6IExpbmttb2RlcyB0byBtYXRjaCBhZ2FpbnN0XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmM9MTQ4PWNvbnN0IHN0cnVjdCBsaW5rX2NhcGFiaWxpdGllcyAqXG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYzoxNDk6cGh5X2NhcHNfbG9va3VwX2J5X2xpbmttb2RlKGNvbnN0IHVuc2lnbmVkIGxvbmcgKmxpbmttb2RlcylcbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jLTE1MC17XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmMtMTYwLS8qKlxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmM6MTYxOiAqIHBoeV9jYXBzX2xvb2t1cF9ieV9saW5rbW9kZV9yZXYoKSAtIExvb2t1cCB0aGUgc2xvd2VzdCBtYXRjaGluZyBsaW5rX2NhcGFiaWxpdGllc1xuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmMtMTYyLSAqIEBsaW5rbW9kZXM6IExpbmttb2RlcyB0byBtYXRjaCBhZ2FpbnN0XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmM9MTY5PWNvbnN0IHN0cnVjdCBsaW5rX2NhcGFiaWxpdGllcyAqXG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYzoxNzA6cGh5X2NhcHNfbG9va3VwX2J5X2xpbmttb2RlX3Jldihjb25zdCB1bnNpZ25lZCBsb25nICpsaW5rbW9kZXMsIGJvb2wgZmR4X29ubHkpXG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYy0xNzEte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jLTE4NS0vKipcbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jOjE4NjogKiBwaHlfY2Fwc19sb29rdXAoKSAtIExvb2t1cCBjYXBhYmlsaXRpZXMgYnkgc3BlZWQvZHVwbGV4IHRoYXQgbWF0Y2hlcyBhIG1hc2tcbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jLTE4Ny0gKiBAc3BlZWQ6IFNwZWVkIHRvIG1hdGNoXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmM9MjA5PWNvbnN0IHN0cnVjdCBsaW5rX2NhcGFiaWxpdGllcyAqXG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYzoyMTA6cGh5X2NhcHNfbG9va3VwKGludCBzcGVlZCwgdW5zaWduZWQgaW50IGR1cGxleCwgY29uc3QgdW5zaWduZWQgbG9uZyAqc3VwcG9ydGVkLFxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmMtMjExLVx0XHRib29sIGV4YWN0KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jLTIzNS19XG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYzoyMzY6RVhQT1JUX1NZTUJPTF9HUEwocGh5X2NhcHNfbG9va3VwKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jLTIzNy1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTIzMDk9aW50IF9fZ2VucGh5X2NvbmZpZ19hbmVnKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGJvb2wgY2hhbmdlZClcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTIzMzctXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjIzMzg6XHRcdGMgPSBwaHlfY2Fwc19sb29rdXAocGh5ZGV2LVx1MDAzZXNwZWVkLCBwaHlkZXYtXHUwMDNlZHVwbGV4LFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0yMzM5LVx0XHRcdFx0ICAgIHBoeWRldi1cdTAwM2VzdXBwb3J0ZWQsIHRydWUpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NjYwPXN0YXRpYyBpbnQgcGh5bGlua19wYXJzZV9maXhlZGxpbmsoc3RydWN0IHBoeWxpbmsgKnBsLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNzQyLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo3NDM6XHRjID0gcGh5X2NhcHNfbG9va3VwKHBsLVx1MDAzZWxpbmtfY29uZmlnLnNwZWVkLCBwbC1cdTAwM2VsaW5rX2NvbmZpZy5kdXBsZXgsXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTc0NC1cdFx0XHQgICAgcGwtXHUwMDNlc3VwcG9ydGVkLCB0cnVlKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTE4MDE9aW50IHBoeWxpbmtfc2V0X2ZpeGVkX2xpbmsoc3RydWN0IHBoeWxpbmsgKnBsLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTgxMC1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTgxMTpcdGMgPSBwaHlfY2Fwc19sb29rdXAoc3RhdGUtXHUwMDNlc3BlZWQsIHN0YXRlLVx1MDAzZWR1cGxleCxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTgxMi1cdFx0XHQgICAgcGwtXHUwMDNlc3VwcG9ydGVkLCB0cnVlKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI5ODA9aW50IHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0KHN0cnVjdCBwaHlsaW5rICpwbCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI5OTEtXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI5OTI6XHRcdGlmICghcGh5X2NhcHNfbG9va3VwKGtzZXQtXHUwMDNlYmFzZS5zcGVlZCwga3NldC1cdTAwM2ViYXNlLmR1cGxleCxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjk5My1cdFx0XHRcdCAgICAgcGwtXHUwMDNlc3VwcG9ydGVkLCB0cnVlKSlcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMwMzEtXHRcdCAqL1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMDMyOlx0XHRjID0gcGh5X2NhcHNfbG9va3VwKGtzZXQtXHUwMDNlYmFzZS5zcGVlZCwga3NldC1cdTAwM2ViYXNlLmR1cGxleCxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzAzMy1cdFx0XHRcdCAgICBwbC1cdTAwM2VzdXBwb3J0ZWQsIGZhbHNlKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwODoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDIzCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMTE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0YCBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBgcGh5X2NhcHNfbG9va3VwYCBjaGVjayB3aXRoaW4gYHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0YC4gVGhpcyBmdW5jdGlvbiBpcywgb2YgY291cnNlLCBhY2Nlc3NpYmxlIHRocm91Z2ggZXRodG9vbCYjMzk7cyBpb2N0bHMgYW5kIG5ldGxpbmsgY29tbWFuZHMsIHNwZWNpZmljYWxseSBmb3IgbmV0d29yayBkZXZpY2VzIHRoYXQgbGV2ZXJhZ2UgcGh5bGluay4gTXkgaW1tZWRpYXRlIGNvbmNlcm4sIGFzIGFsd2F5cyB3aGVuIGRlYWxpbmcgd2l0aCBrZXJuZWwtbGV2ZWwgY2hhbmdlcywgaXMgdGhlIHNjb3BlIG9mIHRoaXMuIEkgbmVlZCB0byB0aGluayBhYm91dCBwb3RlbnRpYWwgYXR0YWNrIHN1cmZhY2VzIGFuZCB3aGV0aGVyIHRoaXMgbmV3IGNoZWNrIGludHJvZHVjZXMgYW55IG5ldyB2dWxuZXJhYmlsaXRpZXMgb3Igd2Vha25lc3Nlcy4KCkNvdWxkIHRoaXMgYmUgdHJpZ2dlcmVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cz8gSG1tLCBpdCYjMzk7cyBjZXJ0YWlubHkgcGxhdXNpYmxlLiBXZSBoYXZlIHZpcnR1YWwgbmV0d29yayBkcml2ZXJzIGFuZCBwZXJoYXBzIGV2ZW4gZHVtbXkgZHJpdmVycyB0aGF0IG1pZ2h0IGludGVncmF0ZSBwaHlsaW5rIGluIHRoZWlyIGRlc2lnbi4gSSBuZWVkIHRvIGNvbnNpZGVyIHRoYXQsIG9yIHdlIGNvdWxkIGFsd2F5cyBmdXp6IHRoZSBldGh0b29sIG5ldGxpbmsvaW9jdGwgaW50ZXJmYWNlIG9uIHZhcmlvdXMgZGV2aWNlcyBhbmQgc2VlIGlmIHdlIGNhbiB0cmlnZ2VyIHRoZSBjaGVjay4KClRoZSBuZXh0IHBvaW50IEkgbmVlZCB0byBjb25zaWRlciBpcyB3aGV0aGVyIGEgdmlydHVhbCBkcml2ZXIgY3VycmVudGx5IHVzZXMgcGh5bGluay4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IEkgdW5kZXJzdGFuZCB0aGUgaW1wbGVtZW50YXRpb24gY29ycmVjdGx5LiBJIHdpbGwgaGF2ZSB0byBzdGFydCBieSBjaGVja2luZyB3aGljaCBkcml2ZXJzIGFyZSBjdXJyZW50bHkgdXNpbmcgcGh5bGluaywgdG8gZGV0ZXJtaW5lIHRoZSBsaWtlbGlob29kIG9mIGEgdmlydHVhbCBkcml2ZXIgYmVpbmcgaW5jbHVkZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA4OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BoeWxpbmtfY3JlYXRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYz0xMTI4PXN0YXRpYyBpbnQgYWx0ZXJhX3RzZV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYy0xNDE1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jOjE0MTY6XHRwcml2LVx1MDAzZXBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZwcml2LVx1MDAzZXBoeWxpbmtfY29uZmlnLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jLTE0MTctXHRcdFx0XHQgICAgICAgb2ZfZndub2RlX2hhbmRsZShwcml2LVx1MDAzZWRldmljZS1cdTAwM2VvZl9ub2RlKSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jPTEwNzQ9c3RhdGljIGludCBhZzcxeHhfcGh5bGlua19zZXR1cChzdHJ1Y3QgYWc3MXh4ICphZylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTExMDgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjExMDk6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2YWctXHUwMDNlcGh5bGlua19jb25maWcsIGFnLVx1MDAzZXBkZXYtXHUwMDNlZGV2LmZ3bm9kZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMTExMC1cdFx0XHRcdCBhZy1cdTAwM2VwaHlfaWZfbW9kZSwgXHUwMDI2YWc3MXh4X3BoeWxpbmtfbWFjX29wcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz0xMDIzPXN0YXRpYyBpbnQgbWFjYl9taWlfcHJvYmUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTEwODUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjEwODY6XHRicC1cdTAwM2VwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2YnAtXHUwMDNlcGh5bGlua19jb25maWcsIGJwLVx1MDAzZXBkZXYtXHUwMDNlZGV2LmZ3bm9kZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTA4Ny1cdFx0XHRcdCAgICAgYnAtXHUwMDNlcGh5X2ludGVyZmFjZSwgXHUwMDI2bWFjYl9waHlsaW5rX29wcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvZHBhYV9ldGguYz0yMDI9c3RhdGljIGludCBkcGFhX25ldGRldl9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRfZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL2RwYWFfZXRoLmMtMjc1LVx0bWFjX2Rldi1cdTAwM2V1cGRhdGVfc3BlZWQgPSBkcGFhX2V0aF9jZ3Jfc2V0X3NwZWVkO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvZHBhYV9ldGguYzoyNzY6XHRtYWNfZGV2LVx1MDAzZXBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZtYWNfZGV2LVx1MDAzZXBoeWxpbmtfY29uZmlnLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvZHBhYV9ldGguYy0yNzctXHRcdFx0XHRcdCAgZGV2X2Z3bm9kZShtYWNfZGV2LVx1MDAzZWRldiksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jPTU2MD1pbnQgZHBhYTJfbWFjX2Nvbm5lY3Qoc3RydWN0IGRwYWEyX21hYyAqbWFjKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYy02MjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmM6NjI1Olx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNm1hYy1cdTAwM2VwaHlsaW5rX2NvbmZpZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYy02MjYtXHRcdFx0XHQgZHBtYWNfbm9kZSwgbWFjLVx1MDAzZWlmX21vZGUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jPTk3MT1zdGF0aWMgaW50IGVuZXRjNF9saW5rX2luaXQoc3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtOTg5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jOjk5MDpcdGVyciA9IGVuZXRjX3BoeWxpbmtfY3JlYXRlKHByaXYsIG5vZGUsIFx1MDAyNmVuZXRjX3BsX21hY19vcHMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk5MS1cdGlmIChlcnIpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy05OTItXHRcdGRldl9lcnIoZGV2LCBcJiMzNDtGYWlsZWQgdG8gY3JlYXRlIHBoeWxpbmtcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jOjk5MzpcdFx0Z290byBlcnJfcGh5bGlua19jcmVhdGU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtOTk0LVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy05OTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM6OTk4OmVycl9waHlsaW5rX2NyZWF0ZTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy05OTktXHRlbmV0Y19tZGlvYnVzX2Rlc3Ryb3kocGYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jPTg0Nz1zdGF0aWMgaW50IGVuZXRjX3BmX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTkyOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jOjkzMDpcdGVyciA9IGVuZXRjX3BoeWxpbmtfY3JlYXRlKHByaXYsIG5vZGUsIFx1MDAyNmVuZXRjX21hY19waHlsaW5rX29wcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy05MzEtXHRpZiAoZXJyKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM6OTMyOlx0XHRnb3RvIGVycl9waHlsaW5rX2NyZWF0ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTkzMy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy05NDEtXHRlbmV0Y19waHlsaW5rX2Rlc3Ryb3kocHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYzo5NDI6ZXJyX3BoeWxpbmtfY3JlYXRlOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtOTQzLVx0ZW5ldGNfbWRpb2J1c19kZXN0cm95KHBmKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM9MzEyPUVYUE9SVF9TWU1CT0xfR1BMKGVuZXRjX21kaW9idXNfZGVzdHJveSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMzEzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jOjMxNDppbnQgZW5ldGNfcGh5bGlua19jcmVhdGUoc3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdiwgc3RydWN0IGRldmljZV9ub2RlICpub2RlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTMxNS1cdFx0XHQgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyAqb3BzKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0zMzctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM6MzM4Olx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNnBmLVx1MDAzZXBoeWxpbmtfY29uZmlnLCBvZl9md25vZGVfaGFuZGxlKG5vZGUpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTMzOS1cdFx0XHRcdCBwZi1cdTAwM2VpZl9tb2RlLCBvcHMpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0zNDgtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jOjM0OTpFWFBPUlRfU1lNQk9MX0dQTChlbmV0Y19waHlsaW5rX2NyZWF0ZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMzUwLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uaD0xMj12b2lkIGVuZXRjX21kaW9idXNfZGVzdHJveShzdHJ1Y3QgZW5ldGNfcGYgKnBmKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uaDoxMzppbnQgZW5ldGNfcGh5bGlua19jcmVhdGUoc3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdiwgc3RydWN0IGRldmljZV9ub2RlICpub2RlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5oLTE0LVx0XHRcdCBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzICpvcHMpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L2ZzX2VuZXQtbWFpbi5jPTg1Mz1zdGF0aWMgaW50IGZzX2VuZXRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvZnNfZW5ldC1tYWluLmMtOTMyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvZnNfZW5ldC1tYWluLmM6OTMzOlx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNmZlcC1cdTAwM2VwaHlsaW5rX2NvbmZpZywgZGV2X2Z3bm9kZShmZXAtXHUwMDNlZGV2KSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L2ZzX2VuZXQtbWFpbi5jLTkzNC1cdFx0XHRcdCBwaHlfbW9kZSwgXHUwMDI2ZnNfZW5ldF9waHlsaW5rX21hY19vcHMpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS91Y2NfZ2V0aC5jPTM0MTk9c3RhdGljIGludCB1Y2NfZ2V0aF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlKiBvZmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvdWNjX2dldGguYy0zNTczLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3VjY19nZXRoLmM6MzU3NDpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZ1Z2V0aC1cdTAwM2VwaHlsaW5rX2NvbmZpZywgZGV2X2Z3bm9kZShcdTAwMjZkZXYtXHUwMDNlZGV2KSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS91Y2NfZ2V0aC5jLTM1NzUtXHRcdFx0XHQgcGh5X2ludGVyZmFjZSwgXHUwMDI2dWdldGhfbWFjX29wcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm5ldGEuYz01NDgwPXN0YXRpYyBpbnQgbXZuZXRhX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm5ldGEuYy01NTk4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm5ldGEuYzo1NTk5Olx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNnBwLVx1MDAzZXBoeWxpbmtfY29uZmlnLCBwZGV2LVx1MDAzZWRldi5md25vZGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bmV0YS5jLTU2MDAtXHRcdFx0XHQgcGh5X21vZGUsIFx1MDAyNm12bmV0YV9waHlsaW5rX29wcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMl9tYWluLmM9Njg0MD1zdGF0aWMgaW50IG12cHAyX3BvcnRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYy03MTQ3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMl9tYWluLmM6NzE0ODpcdFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNnBvcnQtXHUwMDNlcGh5bGlua19jb25maWcsIHBvcnRfZndub2RlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMl9tYWluLmMtNzE0OS1cdFx0XHRcdFx0IHBoeV9tb2RlLCBcdTAwMjZtdnBwMl9waHlsaW5rX29wcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9tYWluLmM9MzcwPXN0YXRpYyBpbnQgcHJlc3RlcmFfcG9ydF9zZnBfYmluZChzdHJ1Y3QgcHJlc3RlcmFfcG9ydCAqcG9ydClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX21haW4uYy00MTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX21haW4uYzo0MTc6XHRcdHBoeV9saW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2cG9ydC1cdTAwM2VwaHlfY29uZmlnLCBmd25vZGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX21haW4uYy00MTgtXHRcdFx0XHRcdCAgUEhZX0lOVEVSRkFDRV9NT0RFX0lOVEVSTkFMLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmM9NDgyMz1zdGF0aWMgaW50IG10a19hZGRfbWFjKHN0cnVjdCBtdGtfZXRoICpldGgsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYy00OTY3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYzo0OTY4Olx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNm1hYy1cdTAwM2VwaHlsaW5rX2NvbmZpZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMtNDk2OS1cdFx0XHRcdCBvZl9md25vZGVfaGFuZGxlKG1hYy1cdTAwM2VvZl9ub2RlKSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5jPTc0Nj1zdHJ1Y3QgbmV0X2RldmljZSAqZmJuaWNfbmV0ZGV2X2FsbG9jKHN0cnVjdCBmYm5pY19kZXYgKmZiZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5jLTgzNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmM6ODM1Olx0aWYgKGZibmljX3BoeWxpbmtfY3JlYXRlKG5ldGRldikpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmMtODM2LVx0XHRmcmVlX25ldGRldihuZXRkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2Lmg9MTExPWludCBmYm5pY19waHlsaW5rX2dldF9mZWNwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuaC0xMTItXHRcdFx0ICAgICAgIHN0cnVjdCBldGh0b29sX2ZlY3BhcmFtICpmZWNwYXJhbSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5oOjExMzppbnQgZmJuaWNfcGh5bGlua19jcmVhdGUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5oLTExNC12b2lkIGZibmljX3BoeWxpbmtfZGVzdHJveShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYz0xNzc9c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgZmJuaWNfcGh5bGlua19tYWNfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jLTE4Ni0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jOjE4NzogKiBmYm5pY19waHlsaW5rX2NyZWF0ZSAtIFBoeWxpbmsgZGV2aWNlIGNyZWF0aW9uXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYy0xODgtICogQG5ldGRldjogTmV0d29yayBEZXZpY2Ugc3RydWN0IHRvIGF0dGFjaCBwaHlsaW5rIGRldmljZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jLTE5Ni0gKiovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYzoxOTc6aW50IGZibmljX3BoeWxpbmtfY3JlYXRlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYy0xOTgte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jLTIzMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jOjIzMjpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZmYm4tXHUwMDNlcGh5bGlua19jb25maWcsIE5VTEwsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYy0yMzMtXHRcdFx0XHQgZmJuaWNfcGh5bGlua19zZWxlY3RfaW50ZXJmYWNlKGZibi1cdTAwM2VhdWkpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYz0zMTQyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzIGxhbjc0M3hfcGh5bGlua19tYWNfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zMTQ5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjMxNTA6c3RhdGljIGludCBsYW43NDN4X3BoeWxpbmtfY3JlYXRlKHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzE1MS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMxOTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MzE5MzpcdHBsID0gcGh5bGlua19jcmVhdGUoXHUwMDI2YWRhcHRlci1cdTAwM2VwaHlsaW5rX2NvbmZpZywgTlVMTCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zMTk0LVx0XHRcdCAgICBhZGFwdGVyLVx1MDAzZXBoeV9pbnRlcmZhY2UsIFx1MDAyNmxhbjc0M3hfcGh5bGlua19tYWNfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9MzY2ND1zdGF0aWMgaW50IGxhbjc0M3hfcGNpZGV2X3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zNzIzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjM3MjQ6XHRyZXQgPSBsYW43NDN4X3BoeWxpbmtfY3JlYXRlKGFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTM3MjUtXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9tYWluLmM9NzkxPXN0YXRpYyBpbnQgbGFuOTY2eF9wcm9iZV9wb3J0KHN0cnVjdCBsYW45NjZ4ICpsYW45NjZ4LCB1MzIgcCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X21haW4uYy04NTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X21haW4uYzo4NTY6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2cG9ydC1cdTAwM2VwaHlsaW5rX2NvbmZpZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfbWFpbi5jLTg1Ny1cdFx0XHRcdCBwb3J0bnAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbi5jPTMxMj1zdGF0aWMgaW50IHNwYXJ4NV9jcmVhdGVfcG9ydChzdHJ1Y3Qgc3Bhcng1ICpzcGFyeDUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbi5jLTM4OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X21haW4uYzozODk6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2c3B4NV9wb3J0LVx1MDAzZXBoeWxpbmtfY29uZmlnLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbi5jLTM5MC1cdFx0XHRcdCBvZl9md25vZGVfaGFuZGxlKGNvbmZpZy1cdTAwM2Vub2RlKSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYz0xNzc0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzIG9jZWxvdF9waHlsaW5rX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYy0xNzc5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmM6MTc4MDpzdGF0aWMgaW50IG9jZWxvdF9wb3J0X3BoeWxpbmtfY3JlYXRlKHN0cnVjdCBvY2Vsb3QgKm9jZWxvdCwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYy0xNzgxLVx0XHRcdFx0ICAgICAgc3RydWN0IGRldmljZV9ub2RlICpwb3J0bnApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmMtMTgyMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jOjE4MjE6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2cHJpdi1cdTAwM2VwaHlsaW5rX2NvbmZpZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE4MjItXHRcdFx0XHQgb2ZfZndub2RlX2hhbmRsZShwb3J0bnApLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jPTE4NDM9aW50IG9jZWxvdF9wcm9iZV9wb3J0KHN0cnVjdCBvY2Vsb3QgKm9jZWxvdCwgaW50IHBvcnQsIHN0cnVjdCByZWdtYXAgKnRhcmdldCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYy0xODc5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmM6MTg4MDpcdGVyciA9IG9jZWxvdF9wb3J0X3BoeWxpbmtfY3JlYXRlKG9jZWxvdCwgcG9ydCwgcG9ydG5wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE4ODEtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MTM4Nz1zdGF0aWMgaW50IHN0bW1hY19waHlsaW5rX3NldHVwKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTE0NzgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjE0Nzk6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoY29uZmlnLCBkZXZfZndub2RlKHByaXYtXHUwMDNlZGV2aWNlKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTQ4MC1cdFx0XHRcdCBwcml2LVx1MDAzZXBsYXQtXHUwMDNlcGh5X2ludGVyZmFjZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvdG40MF9waHkuYz00NT1pbnQgdG40MF9waHlfcmVnaXN0ZXIoc3RydWN0IHRuNDBfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvdG40MF9waHkuYy02Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS90bjQwX3BoeS5jOjYzOlx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKGNvbmZpZywgTlVMTCwgUEhZX0lOVEVSRkFDRV9NT0RFX1hBVUksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvdG40MF9waHkuYy02NC1cdFx0XHRcdCBcdTAwMjZ0bjQwX21hY19vcHMpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2FtNjUtY3Bzdy1udXNzLmM9Mjc1Nz1hbTY1X2Nwc3dfbnVzc19pbml0X3BvcnRfbmRldihzdHJ1Y3QgYW02NV9jcHN3X2NvbW1vbiAqY29tbW9uLCB1MzIgcG9ydF9pZHgpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvYW02NS1jcHN3LW51c3MuYy0yODQxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvYW02NS1jcHN3LW51c3MuYzoyODQyOlx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNnBvcnQtXHUwMDNlc2xhdmUucGh5bGlua19jb25maWcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9hbTY1LWNwc3ctbnVzcy5jLTI4NDMtXHRcdFx0XHQgb2ZfZndub2RlX2hhbmRsZShwb3J0LVx1MDAzZXNsYXZlLnBvcnRfbnApLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21kaW8uYz0xMzA9c3RhdGljIGludCBuZ2JlX3BoeWxpbmtfaW5pdChzdHJ1Y3Qgd3ggKnd4KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21kaW8uYy0xNDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tZGlvLmM6MTUwOlx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKGNvbmZpZywgTlVMTCwgcGh5X21vZGUsIFx1MDAyNm5nYmVfbWFjX29wcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tZGlvLmMtMTUxLVx0aWYgKElTX0VSUihwaHlsaW5rKSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5jPTQ4MD1pbnQgdHhnYmVfcGh5bGlua19pbml0X2FtbChzdHJ1Y3QgdHhnYmUgKnR4Z2JlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmMtNTEwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9hbWwuYzo1MTE6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoY29uZmlnLCBOVUxMLCBwaHlfbW9kZSwgXHUwMDI2dHhnYmVfbWFjX29wc19hbWwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9hbWwuYy01MTItXHRpZiAoSVNfRVJSKHBoeWxpbmspKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfcGh5LmM9MjY4PXN0YXRpYyBpbnQgdHhnYmVfcGh5bGlua19pbml0KHN0cnVjdCB0eGdiZSAqdHhnYmUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9waHkuYy0yOTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX3BoeS5jOjI5MzpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShjb25maWcsIGZ3bm9kZSwgcGh5X21vZGUsIFx1MDAyNnR4Z2JlX21hY19vcHMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9waHkuYy0yOTQtXHRpZiAoSVNfRVJSKHBoeWxpbmspKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM9Mjc5NT1zdGF0aWMgaW50IGF4aWVuZXRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMxMTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjMxMTg6XHRscC1cdTAwM2VwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2bHAtXHUwMDNlcGh5bGlua19jb25maWcsIHBkZXYtXHUwMDNlZGV2LmZ3bm9kZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzExOS1cdFx0XHRcdCAgICAgbHAtXHUwMDNlcGh5X21vZGUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zMTIyLVx0XHRyZXQgPSBQVFJfRVJSKGxwLVx1MDAzZXBoeWxpbmspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzozMTIzOlx0XHRkZXZfZXJyKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBcJiMzNDtwaHlsaW5rX2NyZWF0ZSBlcnJvciAoJWkpXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zMTI0LVx0XHRnb3RvIGNsZWFudXBfbWRpbztcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTUxNj1zdGF0aWMgaW50IHBoeWxpbmtfdmFsaWRhdGVfbWFjX2FuZF9wY3Moc3RydWN0IHBoeWxpbmsgKnBsLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNTMxLVx0aWYgKHBjcykge1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo1MzI6XHRcdC8qIFRoZSBQQ1MsIGlmIHByZXNlbnQsIG11c3QgYmUgc2V0dXAgYmVmb3JlIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNTMzLVx0XHQgKiBoYXMgYmVlbiBjYWxsZWQuIElmIHRoZSBvcHMgaXMgbm90IGluaXRpYWxpc2VkLCBwcmludCBhblxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTAzOT1zdGF0aWMgZW51bSBpbmJhbmRfdHlwZSBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZShwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTA3MC0gKiBwaHlsaW5rX3Bjc19uZWdfbW9kZSgpIC0gaGVscGVyIHRvIGRldGVybWluZSBQQ1MgaW5iYW5kIG1vZGVcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTA3MTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDcyLSAqIEBwY3M6IGEgcG9pbnRlciB0byBcdTAwMjZzdHJ1Y3QgcGh5bGlua19wY3Ncbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTE3Njg9c3RhdGljIGludCBwaHlsaW5rX3JlZ2lzdGVyX3NmcChzdHJ1Y3QgcGh5bGluayAqcGwsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNzkyLSAqIHBoeWxpbmtfc2V0X2ZpeGVkX2xpbmsoKSAtIHNldCB0aGUgZml4ZWQgbGlua1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxNzkzOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE3OTQtICogQHN0YXRlOiBhIHBvaW50ZXIgdG8gYSBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlLlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTgzMD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3NldF9maXhlZF9saW5rKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE4MzItLyoqXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE4MzM6ICogcGh5bGlua19jcmVhdGUoKSAtIGNyZWF0ZSBhIHBoeWxpbmsgaW5zdGFuY2VcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTgzNC0gKiBAY29uZmlnOiBhIHBvaW50ZXIgdG8gdGhlIHRhcmdldCBcdTAwMjZzdHJ1Y3QgcGh5bGlua19jb25maWdcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE4NDctICovXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE4NDg6c3RydWN0IHBoeWxpbmsgKnBoeWxpbmtfY3JlYXRlKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODQ5LVx0XHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTkzNC19XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE5MzU6RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19jcmVhdGUpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTM2LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTkzOC0gKiBwaHlsaW5rX2Rlc3Ryb3koKSAtIGNsZWFudXAgYW5kIGRlc3Ryb3kgdGhlIHBoeWxpbmsgaW5zdGFuY2VcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTkzOTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTQwLSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xOTU1PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZGVzdHJveSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTU4LSAqIHBoeWxpbmtfZXhwZWN0c19waHkoKSAtIERldGVybWluZSBpZiBwaHlsaW5rIGV4cGVjdHMgYSBwaHkgdG8gYmUgYXR0YWNoZWRcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTk1OTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTYwLSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMjA0PXN0YXRpYyBpbnQgcGh5bGlua19hdHRhY2hfcGh5KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyMjQtICogcGh5bGlua19jb25uZWN0X3BoeSgpIC0gY29ubmVjdCBhIFBIWSB0byB0aGUgcGh5bGluayBpbnN0YW5jZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMjI1OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyMjYtICogQHBoeTogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeV9kZXZpY2UuXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMjU4PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfY29ubmVjdF9waHkpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI2MS0gKiBwaHlsaW5rX29mX3BoeV9jb25uZWN0KCkgLSBjb25uZWN0IHRoZSBQSFkgc3BlY2lmaWVkIGluIHRoZSBEVCBtb2RlLlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMjYyOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyNjMtICogQGRuOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgZGV2aWNlX25vZGUuXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMjc3PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3QpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI4MC0gKiBwaHlsaW5rX2Z3bm9kZV9waHlfY29ubmVjdCgpIC0gY29ubmVjdCB0aGUgUEhZIHNwZWNpZmllZCBpbiB0aGUgZndub2RlLlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMjgxOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyODItICogQGZ3bm9kZTogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGZ3bm9kZV9oYW5kbGUuXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMzM2PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzNDAtICogICBpbnN0YW5jZS5cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjM0MTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMzQyLSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMzcxPXN0YXRpYyB2b2lkIHBoeWxpbmtfbGlua19jaGFuZ2VkKHN0cnVjdCBwaHlsaW5rICpwbCwgYm9vbCB1cCwgY29uc3QgY2hhciAqd2hhdClcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzODAtICogcGh5bGlua19tYWNfY2hhbmdlKCkgLSBub3RpZnkgcGh5bGluayBvZiBhIGNoYW5nZSBpbiBNQUMgc3RhdGVcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjM4MTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMzgyLSAqIEB1cDogaW5kaWNhdGVzIHdoZXRoZXIgdGhlIGxpbmsgaXMgY3VycmVudGx5IHVwLlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjQxMz1zdGF0aWMgaXJxcmV0dXJuX3QgcGh5bGlua19saW5rX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqZGF0YSlcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI0MjMtICogcGh5bGlua19zdGFydCgpIC0gc3RhcnQgYSBwaHlsaW5rIGluc3RhbmNlXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI0MjQ6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQyNS0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjQ4Nj1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3N0YXJ0KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI0ODktICogcGh5bGlua19zdG9wKCkgLSBzdG9wIGEgcGh5bGluayBpbnN0YW5jZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNDkwOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI0OTEtICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI1MjA9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19zdG9wKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1MjMtICogcGh5bGlua19yeF9jbGtfc3RvcF9ibG9jaygpIC0gYmxvY2sgUEhZIGFiaWxpdHkgdG8gc3RvcCByZWNlaXZlIGNsb2NrIGluIExQSVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNTI0OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1MjUtICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI1NDk9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19yeF9jbGtfc3RvcF9ibG9jayk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNTUyLSAqIHBoeWxpbmtfcnhfY2xrX3N0b3BfdW5ibG9jaygpIC0gdW5ibG9jayBQSFkgYWJpbGl0eSB0byBzdG9wIHJlY2VpdmUgY2xvY2tcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjU1MzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNTU0LSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNTkxPXN0YXRpYyBib29sIHBoeWxpbmtfcGh5X3BtX3NwZWVkX2N0cmwoc3RydWN0IHBoeWxpbmsgKnBsKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjU5OC0gKiBwaHlsaW5rX3N1c3BlbmQoKSAtIGhhbmRsZSBhIG5ldHdvcmsgZGV2aWNlIHN1c3BlbmQgZXZlbnRcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjU5OTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjAwLSAqIEBtYWNfd29sOiB0cnVlIGlmIHRoZSBNQUMgbmVlZHMgdG8gcmVjZWl2ZSBwYWNrZXRzIGZvciBXYWtlLW9uLUxhblxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjY1MD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3N1c3BlbmQpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjY1My0gKiBwaHlsaW5rX3ByZXBhcmVfcmVzdW1lKCkgLSBwcmVwYXJlIHRvIHJlc3VtZSBhIG5ldHdvcmsgZGV2aWNlXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI2NTQ6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjY1NS0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjY3NT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3ByZXBhcmVfcmVzdW1lKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI2NzgtICogcGh5bGlua19yZXN1bWUoKSAtIGhhbmRsZSBhIG5ldHdvcmsgZGV2aWNlIHJlc3VtZSBldmVudFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNjc5OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI2ODAtICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI3MTg9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19yZXN1bWUpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjcyMS0gKiBwaHlsaW5rX2V0aHRvb2xfZ2V0X3dvbCgpIC0gZ2V0IHRoZSB3YWtlIG9uIGxhbiBwYXJhbWV0ZXJzIGZvciB0aGUgUEhZXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI3MjI6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjcyMy0gKiBAd29sOiBhIHBvaW50ZXIgdG8gXHUwMDI2c3RydWN0IGV0aHRvb2xfd29saW5mbyB0byBob2xkIHRoZSByZWFkIHBhcmFtZXRlcnNcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI3NTU9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19ldGh0b29sX2dldF93b2wpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjc1OC0gKiBwaHlsaW5rX2V0aHRvb2xfc2V0X3dvbCgpIC0gc2V0IHdha2Ugb24gbGFuIHBhcmFtZXRlcnNcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6Mjc1OTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNzYwLSAqIEB3b2w6IGEgcG9pbnRlciB0byBcdTAwMjZzdHJ1Y3QgZXRodG9vbF93b2xpbmZvIGZvciB0aGUgZGVzaXJlZCBwYXJhbWV0ZXJzXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yODg3PXN0YXRpYyB2b2lkIHBoeWxpbmtfZ2V0X2tzZXR0aW5ncyhjb25zdCBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI5MDItICogcGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19nZXQoKSAtIGdldCB0aGUgY3VycmVudCBsaW5rIHNldHRpbmdzXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI5MDM6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjkwNC0gKiBAa3NldDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgdG8gaG9sZCBsaW5rIHNldHRpbmdzXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yOTU1PXN0YXRpYyBib29sIHBoeWxpbmtfdmFsaWRhdGVfcGNzX2luYmFuZF9hdXRvbmVnKHN0cnVjdCBwaHlsaW5rICpwbCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI5NzYtICogcGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXQoKSAtIHNldCB0aGUgbGluayBzZXR0aW5nc1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyOTc3OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI5NzgtICogQGtzZXQ6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBldGh0b29sX2xpbmtfa3NldHRpbmdzIGZvciB0aGUgZGVzaXJlZCBtb2Rlc1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzE0Nz1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTUwLSAqIHBoeWxpbmtfZXRodG9vbF9ud2F5X3Jlc2V0KCkgLSByZXN0YXJ0IG5lZ290aWF0aW9uXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMxNTE6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE1Mi0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzE3Mj1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfbndheV9yZXNldCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTc1LSAqIHBoeWxpbmtfZXRodG9vbF9nZXRfcGF1c2VwYXJhbSgpIC0gZ2V0IHRoZSBjdXJyZW50IHBhdXNlIHBhcmFtZXRlcnNcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzE3NjogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTc3LSAqIEBwYXVzZTogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGV0aHRvb2xfcGF1c2VwYXJhbVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzE4OD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfZ2V0X3BhdXNlcGFyYW0pO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE5MS0gKiBwaHlsaW5rX2V0aHRvb2xfc2V0X3BhdXNlcGFyYW0oKSAtIHNldCB0aGUgY3VycmVudCBwYXVzZSBwYXJhbWV0ZXJzXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMxOTI6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE5My0gKiBAcGF1c2U6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBldGh0b29sX3BhdXNlcGFyYW1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTMyNzQ9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19ldGh0b29sX3NldF9wYXVzZXBhcmFtKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMyNzgtICogICBjb3VudGVyXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMyNzk6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKCkuXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMyODAtICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTMyOTc9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19nZXRfZWVlX2Vycik7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMzAwLSAqIHBoeWxpbmtfZXRodG9vbF9nZXRfZWVlKCkgLSByZWFkIHRoZSBlbmVyZ3kgZWZmaWNpZW50IGV0aGVybmV0IHBhcmFtZXRlcnNcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzMwMTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMzAyLSAqIEBlZWU6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBldGh0b29sX2tlZWUgZm9yIHRoZSByZWFkIHBhcmFtZXRlcnNcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTMzMjM9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19ldGh0b29sX2dldF9lZWUpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzMyNi0gKiBwaHlsaW5rX2V0aHRvb2xfc2V0X2VlZSgpIC0gc2V0IHRoZSBlbmVyZ3kgZWZmaWNpZW50IGV0aGVybmV0IHBhcmFtZXRlcnNcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzMyNzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMzI4LSAqIEBlZWU6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBldGh0b29sX2tlZWUgZm9yIHRoZSBkZXNpcmVkIHBhcmFtZXRlcnNcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTM0OTc9c3RhdGljIGludCBwaHlsaW5rX21paV93cml0ZShzdHJ1Y3QgcGh5bGluayAqcGwsIHVuc2lnbmVkIGludCBwaHlfaWQsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNTE1LSAqIHBoeWxpbmtfbWlpX2lvY3RsKCkgLSBnZW5lcmljIG1paSBpb2N0bCBpbnRlcmZhY2VcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzUxNjogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNTE3LSAqIEBpZnI6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBpZnJlcSBmb3Igc29ja2V0IGlvY3Rsc1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzU5MD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX21paV9pb2N0bCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNTk0LSAqICAgbGluayBwYXJ0bmVyc1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozNTk1OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1OTYtICogQHN5bmM6IHBlcmZvcm0gYWN0aW9uIHN5bmNocm9ub3VzbHlcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTM2MTU9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19zcGVlZF9kb3duKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM2MTktICogICBwaHlsaW5rX3NwZWVkX2Rvd24oKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozNjIwOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM2MjEtICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTQzNzI9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19taWlfYzQ1X3Bjc19nZXRfc3RhdGUpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDM3Ni0gKlx0XHRcdFx0IHdoaWNoIGxvc2VzIHN0YXRlXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjQzNzc6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDM3OC0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NDM5Mz1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3JlcGxheV9saW5rX2JlZ2luKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQzOTctICpcdFx0XHQgICAgICAgd2hpY2ggbG9zdCBzdGF0ZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo0Mzk4OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQzOTktICpcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9Nzk5PXN0YXRpYyBpbnQgYXg4ODc3Ml9waHlsaW5rX3NldHVwKHN0cnVjdCB1c2JuZXQgKmRldilcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODE5LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgyMDpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZwcml2LVx1MDAzZXBoeWxpbmtfY29uZmlnLCBkZXYtXHUwMDNlbmV0LVx1MDAzZWRldi5md25vZGUsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODIxLVx0XHRcdFx0IHBoeV9pZl9tb2RlLCBcdTAwMjZheDg4NzcyX3BoeWxpbmtfbWFjX29wcyk7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz0yNzg2PXN0YXRpYyBpbnQgbGFuNzh4eF9waHlsaW5rX3NldHVwKHN0cnVjdCBsYW43OHh4X25ldCAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjgyNS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjgyNjpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShwYywgZGV2LVx1MDAzZW5ldC1cdTAwM2VkZXYuZndub2RlLFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yODI3LVx0XHRcdFx0IGRldi1cdTAwM2VpbnRlcmZhY2UsIFx1MDAyNmxhbjc4eHhfcGh5bGlua19tYWNfb3BzKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDg6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTYzNjIKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUmVhY2hpbmcgTmV0d29yayBEcml2ZXIgRnVuY3Rpb25hbGl0eSBpbiBhIFZpcnR1YWxpemVkIEVudmlyb25tZW50KioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBhdCBuZXR3b3JrIGRyaXZlcnMsIHNwZWNpZmljYWxseSB0aGUgYGFzaXhfZGV2aWNlcy5jYCBhbmQgYGxhbjc4eHguY2AgZmlsZXMgaW4gYGRyaXZlcnMvbmV0L3VzYi9gLiBBaGEsIHRoZXkmIzM5O3JlIGJvdGggdXNpbmcgcGh5bGluayEgVGhhdCYjMzk7cyBpbnRlcmVzdGluZywgYW5kIGl0IG1lYW5zIHRoZXkmIzM5O3JlIGhhbmRsaW5nIFBIWSBpbnRlcmFjdGlvbnMgZm9yIFVTQiBuZXR3b3JrIGludGVyZmFjZXMuIFRoaXMgaXMgZ29vZCBuZXdzIGJlY2F1c2UgdGhlc2UgZHJpdmVycyBhcmUgcHJpbWUgY2FuZGlkYXRlcyBmb3IgdGVzdGluZyB3aXRoaW4gYSB2aXJ0dWFsaXplZCBzZXR1cC4gV2l0aCBzeXprYWxsZXIsIEkgc2hvdWxkIGJlIGFibGUgdG8gZW11bGF0ZSB0aGUgVVNCIGhvc3QgY29udHJvbGxlciB1c2luZyBlaXRoZXIgYSBkdW1teSBIQ0Qgb3IgdGhlIHZoY2lfaGNkLCBtYWtpbmcgdGhlc2UgZHJpdmVycyBlYXNpbHkgcmVhY2hhYmxlLgoKVGhlIGtleSBmdW5jdGlvbiBJIHdhbnQgdG8gZm9jdXMgb24gaXMgYHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0YC4gVGhpcyBpcyB0cmlnZ2VyZWQgd2hlbiBzb21lb25lIGF0dGVtcHRzIHRvIGNvbmZpZ3VyZSB0aGUgbGluayBzZXR0aW5ncyB1c2luZyBldGh0b29sLiBJIGtub3cgdGhhdCBmdW5jdGlvbiBpcyByZWFjaGFibGUgd2l0aGluIHRoZXNlIGRyaXZlcnMsIGFzIGl0JiMzOTtzIGEga25vd24gY2FsbCBwb2ludCBmb3IgZXRodG9vbCBzZXR0aW5ncy4KCk5vdywgbGV0IG1lIGdvIGJhY2sgdG8gYGFzaXhfZGV2aWNlcy5jYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggY29uZmlndXJhdGlvbiBvcHRpb25zIG9yIHBhcmFtZXRlcnMgc3BlY2lmaWNhbGx5IGVuYWJsZSB0aGUgZnVuY3Rpb25hbGl0eSB0aGF0IGxlYWRzIHRvIGNhbGxpbmcgYHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0YC4gVGhpcyB3aWxsIGd1aWRlIG15IGZ1enppbmcgZWZmb3J0cyBhbmQgaGVscCBtZSB1bmRlcnN0YW5kIHRoZSBjb2RlIHBhdGggdGhhdCYjMzk7cyBtb3N0IGxpa2VseSB0byBiZSBleHBvc2VkIHRvIHZ1bG5lcmFiaWxpdGllcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDg6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXNpeF9kZXZpY2VzLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL01ha2VmaWxlPTEzPW9iai0kKENPTkZJR19VU0JfTkVUX0FYODgxN1gpXHQmIzQzOz0gYXNpeC5vXG5kcml2ZXJzL25ldC91c2IvTWFrZWZpbGU6MTQ6YXNpeC15IDo9IGFzaXhfZGV2aWNlcy5vIGFzaXhfY29tbW9uLm8gYXg4ODE3MmEub1xuZHJpdmVycy9uZXQvdXNiL01ha2VmaWxlLTE1LW9iai0kKENPTkZJR19VU0JfTkVUX0FYODgxNzlfMTc4QSkgICAgICAmIzQzOz0gYXg4ODE3OV8xNzhhLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDg6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTY5MjcKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IHdlbnQ6CgoqKkV4YW1pbmluZyBOZXR3b3JrIERyaXZlciBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIHRoZSBhY3RpdmUgY29uZmlndXJhdGlvbiBpcyBgVVNCX05FVF9BWDg4MTdYYC4gUmlnaHQsIHRoYXQmIzM5O3MgdGhlIGRyaXZlciBmb3IgYSBzcGVjaWZpYyBVU0ItdG8tRXRoZXJuZXQgYWRhcHRlciwgbGlrZWx5IGJhc2VkIG9uIHRoZSBBU0lYIEFYODgxN3ggY2hpcHNldC4gTXkgbmV4dCBzdGVwLCBhcyBhbHdheXMsIGlzIHRvIGRpdmUgaW50byB0aGUgY29yZSBpbXBsZW1lbnRhdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgZHJpdmVyIGhhbmRsZXMgaXRzIGludGVyZmFjZSB3aXRoIHRoZSBVU0Igc3RhY2sgYW5kIHRoZSBuZXR3b3JrIHN1YnN5c3RlbS4gVGhlcmVmb3JlLCBJIG5lZWQgdG8gY2hlY2sgYGxhbjc4eHguY2AuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIGNyaXRpY2FsIGZ1bmN0aW9uYWxpdHkgd2lsbCBiZSBkZWZpbmVkLiBJJiMzOTtsbCBuZWVkIHRvIHNjcnV0aW5pemUgdGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlcywgZGF0YSB0cmFuc2ZlciBtZWNoYW5pc21zLCBhbmQgaW50ZXJydXB0IGhhbmRsaW5nIHdpdGhpbiB0aGF0IGZpbGUgdG8gc2VlIHRoZSBkZXRhaWxzIG9mIGl0cyBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDg6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bGFuNzh4eC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9NYWtlZmlsZT0xMT1vYmotJChDT05GSUdfVVNCX0hTTylcdFx0JiM0Mzs9IGhzby5vXG5kcml2ZXJzL25ldC91c2IvTWFrZWZpbGU6MTI6b2JqLSQoQ09ORklHX1VTQl9MQU43OFhYKVx0JiM0Mzs9IGxhbjc4eHgub1xuZHJpdmVycy9uZXQvdXNiL01ha2VmaWxlLTEzLW9iai0kKENPTkZJR19VU0JfTkVUX0FYODgxN1gpXHQmIzQzOz0gYXNpeC5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA4OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3MjU0CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgdGhlIGBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldGAgRnVuY3Rpb24qKgoKT2theSwgc28gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBpcyBzZXQgdG8gYFVTQl9MQU43OFhYYC4gTXkgdGFzayBpcyB0byBmaWd1cmUgb3V0IHRoZSBiZXN0IHdheSB0byBmdXp6IHRoaXMuIEl0IGxvb2tzIGxpa2UgdGhlIHBhdGNoIGluIHF1ZXN0aW9uIGZvY3VzZXMgb24gYHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0YC4gVGhpcyBpcyBpbnRlcmVzdGluZyBiZWNhdXNlIHRoaXMgZnVuY3Rpb24gaXMgYWNjZXNzaWJsZSB0aHJvdWdoIGV0aHRvb2wgaW9jdGxzLiBUaGF0IG1lYW5zIGl04oCZcyBhbiBpZGVhbCB0YXJnZXQgZm9yIGZ1enppbmcuCgpNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGZvY3VzIGZ1enppbmcgZWZmb3J0cyBvbiB0aGlzIGZ1bmN0aW9uLCBidXQgdGhlbiBpdCBkYXduZWQgb24gbWUuLi4gYHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0YCBpcyBhICpnZW5lcmljKiBmdW5jdGlvbi4gUGVyaGFwcyBpdCB3b3VsZCBiZSBtb3JlIGZydWl0ZnVsIHRvIGV4cGFuZCBteSBzY29wZSB0byB0aGUgZnVuY3Rpb24gaXRzZWxmLiBBbmQgaXMgdGhlcmUgYW55dGhpbmcgc3BlY2lmaWMgdG8gdGhlIHBoeWxpbmsgY29uZmlndXJhdGlvbj8gSSBrbm93IGBQSFlMSU5LYCBpcyBzZWxlY3RlZCBieSB2YXJpb3VzIGRyaXZlcnM7IEkgc2hvdWxkIHByb2JhYmx5IGxvb2sgaW50byB0aGF0IGZ1cnRoZXIuIExldCBtZSBjaGVjayB0aGUgYGRyaXZlcnMvbmV0L3BoeS9LY29uZmlnYCBmaWxlIHRvIHNlZSB3aGF0IGRldGFpbHMgSSBjYW4gZmluZCBvbiBgUEhZTElOS2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA4OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBQSFlMSU5LJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L0tjb25maWctNS1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjY6Y29uZmlnIFBIWUxJTktcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTctXHR0cmlzdGF0ZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwODoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzY5MAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDEwOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFbmFibGluZyBVU0IgTmV0d29yayBEcml2ZXJzIGZvciBQaHlsaW5rIEludGVncmF0aW9uKioKCk9rYXksIHNvIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSB0cmlzdGF0ZSBjb25maWd1cmF0aW9uIGhlcmUsIG1lYW5pbmcgdGhlIHNlbGVjdGlvbiBpcyBiYXNlZCBvbiBzb21lIGRyaXZlciBpbnB1dC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGVuc3VyZSB0aGUgbmVjZXNzYXJ5IFVTQiBuZXR3b3JrIGRyaXZlcnMgYXJlIGF2YWlsYWJsZSBmb3IgcGh5bGluay4gVGhlcmVmb3JlLCBJIG5lZWQgdG8gZW5hYmxlIGJvdGggYFVTQl9ORVRfQVg4ODE3WGAgYW5kIGBVU0JfTEFONzhYWGAuIFRoaXMgc2hvdWxkIGd1YXJhbnRlZSB0aGF0IHBoeWxpbmsgY2FuIGJlIHByb3Blcmx5IGNvbXBpbGVkIGFuZCBhY2Nlc3NpYmxlIHRocm91Z2ggdGhlIFVTQiBuZXR3b3JrIGRyaXZlciBzdWJzeXN0ZW0uCgpMZXQgbWUganVzdCBkb3VibGUtY2hlY2sgdGhhdCB2YXJpYWJsZeKApiBhaCwgcmlnaHQsIGl0JiMzOTtzIGBDT05GSUdfVVNCX05FVF9BWDg4MTdYYC4gQWx3YXlzIGdvb2QgdG8gYmUgcHJlY2lzZSB3aGVuIGRlYWxpbmcgd2l0aCB0aGVzZSBrZXJuZWwgY29uZmlncy4gT2theSwgSSBuZWVkIHRvIGNvbmZpcm0gdGhlIEtjb25maWcmIzM5O3MgcHJlc2VuY2Ugc28gSSB3aWxsIGNoZWNrIGBkcml2ZXJzL25ldC91c2IvS2NvbmZpZ2AgdG8gY29uZmlybSB0aGVzZSBzZXR0aW5ncyBhcmUgcHJlc2VudCBhbmQgd2hlcmUgdGhleSBzaXQgaW4gdGhlIG92ZXJhbGwgZHJpdmVyIGxhbmRzY2FwZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDg6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFVTQl9ORVRfQVg4ODE3WCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTEzMj1jb25maWcgVVNCX1VTQk5FVFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTE2NS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjE2Njpjb25maWcgVVNCX05FVF9BWDg4MTdYXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xNjctXHR0cmlzdGF0ZSBcJiMzNDtBU0lYIEFYODh4eHggQmFzZWQgVVNCIDIuMCBFdGhlcm5ldCBBZGFwdGVyc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwODoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODEzMQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBkZWxpdmVyZWQgYXMgYSBmaXJzdC1wZXJzb24gc3VtbWFyeToKCioqRGlnZ2luZyBpbnRvIGBVU0JfTEFONzhYWGAqKgoKQWxyaWdodCwgdGltZSB0byBnZXQgdG8gaXQuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGhlcmUg4oCTIGxldCYjMzk7cyBzcGVjaWZpY2FsbHkgemVybyBpbiBvbiB0aGF0IGBVU0JfTEFONzhYWGAgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBjdXJyZW50IHN0YXR1cyBvZiB0aGlzIHBhcnRpY3VsYXIgaW50ZWdyYXRpb24uIEl0JiMzOTtzIHRpbWUgdG8gYXNzZXNzIHRoZSBjdXJyZW50IHN0YXRlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwODoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVVNCX0xBTjc4WFgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvS2NvbmZpZz05OT1jb25maWcgVVNCX1JUTDgxNTJcbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xMTItXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzoxMTM6Y29uZmlnIFVTQl9MQU43OFhYXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xMTQtXHR0cmlzdGF0ZSBcJiMzNDtNaWNyb2NoaXAgTEFONzhYWCBCYXNlZCBVU0IgRXRoZXJuZXQgQWRhcHRlcnNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDg6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgzODUKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA4OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGhpcyBuZXR3b3JrIGRyaXZlciBjb25maWd1cmF0aW9uOgoKKipOZXR3b3JrIERyaXZlciBDb25maWd1cmF0aW9uIC0gQSBEZWVwIERpdmUqKgoKT2theSwgc28gd2UmIzM5O3JlIGxvb2tpbmcgYXQgZW5hYmxpbmcgYSBjb3VwbGUgb2YgVVNCIG5ldHdvcmsgZHJpdmVycyBoZXJlOiBzcGVjaWZpY2FsbHksIGBVU0JfTkVUX0FYODgxN1hgIGFuZCBgVVNCX0xBTjc4WFhgLiBUaG9zZSBhcmUgcHJldHR5IHN0YW5kYXJkIGNob2ljZXMgZm9yIFVTQi10by1FdGhlcm5ldCBhZGFwdGVycywgSSBrbm93IHRoZW0gd2VsbC4gR2l2ZW4gdGhhdCwgKipQSFlMSU5LKiogaXMgdGhlIG9idmlvdXMgY2hvaWNlIHRvIGJlIHNlbGVjdGVkIGZvciBpdHMgdW5kZXJseWluZyBoYXJkd2FyZSBhYnN0cmFjdGlvbiBsYXllci4gTm93LCBiZWZvcmUgSSBjb21taXQgdG8gYW55dGhpbmcsIEkgbmVlZCB0byBtYWtlIHN1cmUgd2UmIzM5O3JlIG5vdCBpbmFkdmVydGVudGx5IHN0ZXBwaW5nIG9uIGFueSBvdGhlciBkcml2ZXJzIHRoYXQgbWlnaHQgYWxzbyBkZXBlbmQgb24gcGh5bGluaywganVzdCB0byBhdm9pZCBhbnkgdW5leHBlY3RlZCBjb25mbGljdHMuIExldCYjMzk7cyBzZWUuLi4gbm90aGluZyBpbW1lZGlhdGVseSBzcHJpbmdzIHRvIG1pbmQsIGFuZCBJIGNhbiYjMzk7dCB0aGluayBvZiBhbnkgb3RoZXIgZHJpdmVycyB0aGF0IGZpdCB0aGF0IHBhdHRlcm4gb2ZmIHRoZSB0b3Agb2YgbXkgaGVhZCwgYnV0IGxldCYjMzk7cyBkbyBhIHF1aWNrIHNjYW4uIFdpcmVsZXNzIGlzIHVzdWFsbHkgaGFuZGxlZCBieSBgbWFjODAyMTFgLCBzbyBJJiMzOTtsbCBza2lwIG92ZXIgdGhhdCAtIEkgZG9uJiMzOTt0IHNlZSBhbnkgb2J2aW91cyBjb25uZWN0aW9uLiBPa2F5LCBsZXQmIzM5O3MgdHJ5IGEgc2NhbiBvZiB0aGUgdmlydHVhbCBkcml2ZXJzLiBBaCwgeWVzLCB0aGUgYGR1bW15YCBkcml2ZXIgaW4gYGRyaXZlcnMvbmV0L2R1bW15LmNgLiBUaGF0JiMzOTtzIG5vdCB0aGUgc2FtZSB0aGluZy4gSSYjMzk7bGwgbWFrZSBzdXJlIHRvIGRvdWJsZSBjaGVjayB0aGF0IEkgaGF2ZW4mIzM5O3QgZm9yZ290dGVuIGFueXRoaW5nIGVsc2UuLi5idXQgSSB0aGluayB3ZSYjMzk7cmUgZ29vZCB0byBnby4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDg6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHlsaW5rJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHVtbXkuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA4OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4Nzk3CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipOYXZpZ2F0aW5nIHRoZSBMYWJ5cmludGggb2YgQ29kZSoqCgpIbW0sIGp1c3QgJiMzNDtOby4mIzM0OyBkb2VzbiYjMzk7dCBnaXZlIG1lIG11Y2ggdG8gZ28gb24uIE15IGludGVybmFsIGNvbXBpbGVyIGlzIGFscmVhZHkgZmlyaW5nIHVwLCB0cnlpbmcgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dC4uLiBXaGF0JiMzOTtzIHRoZSBwcm9ibGVtPyBXaGF0JiMzOTtzIHRoZSBhcmVhIG9mIGludGVyZXN0PyBJIG5lZWQgbW9yZSBpbmZvcm1hdGlvbiB0byBmb3JtdWxhdGUgYSBwcm9wZXIgcmVzcG9uc2Ugb3IgcGxhbiBvZiBhY3Rpb24uCgpUaGVuLCB0aGVyZSYjMzk7cyBhIHNwZWNpZmljIGZpbGUgbWVudGlvbmVkLiBBaCwgb2theSwgc28gd2UgYXJlIHRhbGtpbmcgYWJvdXQgbmV0d29ya2luZywgc3BlY2lmaWNhbGx5IHRoZSBUVU4gZGV2aWNlLCBhbmQgdGhlIEMgY29kZSB0aGF0IGltcGxlbWVudHMgaXQuIE15IG1pbmQgaW1tZWRpYXRlbHkgc3RhcnRzIHB1bGxpbmcgdXAgYXNzb2NpYXRpb25zOiBLZXJuZWwtbGV2ZWwgb3BlcmF0aW9ucywgcGFja2V0IGhhbmRsaW5nLCBtYXliZSBzb21ldGhpbmcgcmVsYXRlZCB0byB2aXJ0dWFsIGludGVyZmFjZXMsIG9yIG1heWJlIHNvbWUgaXNzdWUgaW4gdXNlciBzcGFjZSBpbnRlcmFjdGlvbi4gVGhlIHF1ZXN0aW9uICYjMzQ7V2hhdCBhYm91dCBgZHJpdmVycy9uZXQvdHVuLmNgPyYjMzQ7IGlzIGxpa2VseSByZWZlcnJpbmcgdG8gc29tZSBzcGVjaWZpYyBpc3N1ZSwgYnVnLCBvciBhcmVhIG9mIGNvbmNlcm4uIEkmIzM5O2QgYmUgbG9va2luZyBhdCBpdHMgY29kZSB0byBmaW5kIG91dC4gV2UmIzM5O3ZlIGhvbmVkIGluLiBUaGlzIHdpbGwgYmUgdGhlIGZvY3VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwODoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BoeWxpbmsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC90dW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA4OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5MDY5CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgZXhwcmVzc2VkIGFzIHRob3VnaCBJJiMzOTttIHRoZSBvbmUgdGhpbmtpbmcgaXQ6CgoqKkZvY3VzaW5nIE15IEF0dGVudGlvbioqCgpObywgdGhhdCYjMzk7cyBub3QgcXVpdGUgcmlnaHQuIFdhaXQuLi4gd2hhdCBhYm91dCB0aGF0IGBkcml2ZXJzL25ldC92ZXRoLmNgIGZpbGU/IEkmIzM5O20gcHJldHR5IHN1cmUgaXQmIzM5O3MgcmVsZXZhbnQgdG8gdGhpcy4gSXQmIzM5O3MgdGltZSB0byB0YWtlIGEgbG9vayBhdCB0aGUgdmV0aCBkcml2ZXIuIEkgbmVlZCB0byBmb2N1cyB0aGVyZSwgYW5kIG1ha2Ugc3VyZSB0aGF0IHRoaXMgaXMgdGhlIGJlc3QgcGF0aCB0byBmb2xsb3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA4OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGh5bGluayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3ZldGguYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA4OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5MjI3CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMTYzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgdGhlIGBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldGAgRnVuY3Rpb24qKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyB0aGUgYmVzdCB3YXkgdG8gYXBwcm9hY2ggZnV6emluZyB0aGlzIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGlzIHRocm91Z2ggVVNCIG5ldHdvcmsgZHJpdmVycywgZ2l2ZW4gc3l6a2FsbGVyJiMzOTtzIGFiaWxpdHkgdG8gZW11bGF0ZSBVU0IgZGV2aWNlcyB1c2luZyBgZHVtbXlfaGNkYC4gQnV0IGhvbGQgb24sIGxldCYjMzk7cyByZWZvY3VzLiBUaGUgbW9kaWZpY2F0aW9uIHNlZW1zIHRvIGJlIHNwZWNpZmljYWxseSBpbiB0aGUgYHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0YCBmdW5jdGlvbi4KCk5vdywgc2hvdWxkIEkgZXhwYW5kIHRoZSBzY29wZSBvciBmb2N1cz8gTGV0JiMzOTtzIHF1aWNrbHkgc2VlIGlmIGBwaHlfY2Fwc19sb29rdXBgIGlzIHdvcnRoIGEgbG9vayB0b28uIEl0JiMzOTtzIGp1c3QgYSBsb29rdXAsIHNvIHByb2JhYmx5IG5vdCB0aGUgcHJpbWFyeSB0YXJnZXQgcmlnaHQgbm93LgoKUmlnaHQsIHRoZSBwYXRjaCBhZGRyZXNzZXMgYSB2YWxpZGF0aW9uIGlzc3VlIGluIGBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldGAgY29uY2VybmluZyBzcGVlZCBhbmQgZHVwbGV4LiBQZXJmZWN0ISBUaGF0IGNvbmZpcm1zIGl0OiBgcGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXRgIGlzICpkZWZpbml0ZWx5KiB0aGUgZnVuY3Rpb24gdG8gZnV6ei4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgdnVsbmVyYWJpbGl0eSBsaWVzLgoKTGV0JiMzOTtzIGdvIHN0cmFpZ2h0IHRvIHRoZSBzb3VyY2UsIGFuZCB2ZXJpZnkgdGhhdCBmdW5jdGlvbiBpbiBgZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgY29kZSBwcm9wZXJseSBiZWZvcmUgc3RhcnRpbmcgdGhlIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA4OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI5NTU9c3RhdGljIGJvb2wgcGh5bGlua192YWxpZGF0ZV9wY3NfaW5iYW5kX2F1dG9uZWcoc3RydWN0IHBoeWxpbmsgKnBsLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjk3NS0vKipcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6Mjk3NjogKiBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldCgpIC0gc2V0IHRoZSBsaW5rIHNldHRpbmdzXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI5NzctICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI5NzktICovXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI5ODA6aW50IHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0KHN0cnVjdCBwaHlsaW5rICpwbCxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjk4MS1cdFx0XHRcdCAgY29uc3Qgc3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgKmtzZXQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTQ2LX1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzE0NzpFWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldCk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNDgtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA4OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5OTgwCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNDg2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGh5bGluayBQYXRjaCoqCgpPa2F5LCBzbyB0aGUgbWFpbiBmdW5jdGlvbiB0aGlzIHBhdGNoIGlzIHRhcmdldGluZyBpcyBgcGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXRgLiBUaGF0IHNlZW1zIGxpa2UgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZS4gSXMgdGhlcmUgYW55dGhpbmcgZWxzZT8gQWgsIGBwaHlfY2Fwc19sb29rdXBgIGlzIGFsc28gbWVudGlvbmVkLCBidXQgaXQmIzM5O3MganVzdCBiZWluZyAqY2FsbGVkKiB3aXRoaW4gdGhlIG1vZGlmaWVkIGZ1bmN0aW9uLCBub3QgZGlyZWN0bHkgYWx0ZXJlZC4gTGV0JiMzOTtzIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGludGVudCBvZiB0aGlzIHBhdGNoLgoKUmlnaHQsIHRoZSBwYXRjaCBhZGRzIGEgdmFsaWRhdGlvbiBzdGVwIHdpdGhpbiBgcGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXRgLiBCZWZvcmUgYXBwbHlpbmcgdGhlIHJlcXVlc3RlZCBzcGVlZCBhbmQgZHVwbGV4IHNldHRpbmdzLCBpdCYjMzk7cyBjaGVja2luZyB3aXRoIGBwaHlfY2Fwc19sb29rdXBgIHRvIHNlZSBpZiB0aGUgUEhZIGFjdHVhbGx5IHN1cHBvcnRzIHRoZW0uIFRoaXMgbWFrZXMgc2Vuc2U7IGl0JiMzOTtzIGEgZ3VhcmQgYWdhaW5zdCBzZXR0aW5nIHVwIGNvbmZpZ3VyYXRpb25zIHRoYXQgdGhlIGhhcmR3YXJlIGNhbiYjMzk7dCBoYW5kbGUuIFByZXZlbnRzIGludmFsaWQgY29uZmlndXJhdGlvbnMuCgpUaGUgY29kZSBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBTcGVjaWZpY2FsbHksIHRoZSBwYXRjaCBtZW50aW9ucyBVU0IgbmV0d29yayBkcml2ZXJzIGxldmVyYWdpbmcgcGh5bGluayDigJMgdGhpbmdzIGxpa2UgQVNJWCBhbmQgTEFONzhYWCwgYW5kIHRoZWlyIGVtdWxhdGVkIGNvdW50ZXJwYXJ0cyB2aWEgVVNCIGdhZGdldCBhbmQgZHVtbXlfaGNkLiBUaGVzZSBhcmUgZ29vZCB0YXJnZXRzIGZvciB0ZXN0aW5nIGFuZCB2YWxpZGF0aW9uLgoKU28sIGxldCYjMzk7cyBrZWVwIHRoZSBmb2N1cyBvbiBgcGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXRgLiBLZXkgc3ltYm9sczogYHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0YC4KCkkgbmVlZCB0byBtYWtlIHN1cmUgbXkgdGVzdGluZyBzZXR1cCBpbmNsdWRlcyB0aG9zZSBkcml2ZXJzIHRoYXQgdXNlIHRoaXMgZnVuY3Rpb24uIExldCYjMzk7cyBzZWUuLi4gYFVTQl9ORVRfQVg4ODE3WGAg4oCTIGl0IGxvb2tzIGxpa2UgYGRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuY2AgZG9lcyBpbmRlZWQgY2FsbCBgcGh5bGlua19jcmVhdGVgLCBzbyB0aGF0JiMzOTtzIGdvb2QuIEFuZCBgVVNCX0xBTjc4WFhgIOKAkyB5ZXAsIGBkcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jYCBpcyBhbHNvIGNhbGxpbmcgYHBoeWxpbmtfY3JlYXRlYC4KCkFueXRoaW5nIGVsc2UgSSBzaG91bGQgY29uc2lkZXI/IEFoLCBgVVNCX1VTQk5FVGAuIFNpbmNlIGBVU0JfTkVUX0FYODgxN1hgIGRlcGVuZHMgb24gdGhhdCwgaXQgbWFrZXMgc2Vuc2UgdG8gaW5jbHVkZSBpdCBpbiB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiBmb3IgdGVzdGluZyBhbmQgY292ZXJhZ2UuIFN5emthbGxlciB1c3VhbGx5IGhhcyBgVVNCX1VTQk5FVGAgZW5hYmxlZCwgYnV0IEkmIzM5O2xsIG1ha2Ugc3VyZSB0byBleHBsaWNpdGx5IGluY2x1ZGUgaXQuIE9rYXksIHRoYXQgc2hvdWxkIGJlIGVub3VnaCBmb3Igbm93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwODoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXBlbmRzIG9uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NT1jb21tZW50IFwmIzM0O0hvc3Qtc2lkZSBVU0Igc3VwcG9ydCBpcyBuZWVkZWQgZm9yIFVTQiBOZXR3b3JrIEFkYXB0ZXIgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6NjpcdGRlcGVuZHMgb24gIVVTQiBcdTAwMjZcdTAwMjYgTkVUXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy03LVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9OD1tZW51Y29uZmlnIFVTQl9ORVRfRFJJVkVSU1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTEwLVx0ZGVmYXVsdCBVU0IgaWYgVVNCXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzoxMTpcdGRlcGVuZHMgb24gVVNCIFx1MDAyNlx1MDAyNiBORVRcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTEyLVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTE2Nj1jb25maWcgVVNCX05FVF9BWDg4MTdYXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xNjctXHR0cmlzdGF0ZSBcJiMzNDtBU0lYIEFYODh4eHggQmFzZWQgVVNCIDIuMCBFdGhlcm5ldCBBZGFwdGVyc1wmIzM0O1xuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MTY4Olx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xNjktXHRzZWxlY3QgQ1JDMzJcbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xOTQtXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzoxOTU6XHQgIFRoaXMgZHJpdmVyIGNyZWF0ZXMgYW4gaW50ZXJmYWNlIG5hbWVkIFwmIzM0O2V0aFhcJiMzNDssIHdoZXJlIFggZGVwZW5kcyBvblxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTk2LVx0ICB3aGF0IG90aGVyIG5ldHdvcmtpbmcgZGV2aWNlcyB5b3UgaGF2ZSBpbiB1c2UuXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MTk4PWNvbmZpZyBVU0JfTkVUX0FYODgxNzlfMTc4QVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTk5LVx0dHJpc3RhdGUgXCYjMzQ7QVNJWCBBWDg4MTc5LzE3OEEgVVNCIDMuMC8yLjAgdG8gR2lnYWJpdCBFdGhlcm5ldFwmIzM0O1xuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MjAwOlx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0yMDEtXHRzZWxlY3QgQ1JDMzJcbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0yMTItXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzoyMTM6XHQgIFRoaXMgZHJpdmVyIGNyZWF0ZXMgYW4gaW50ZXJmYWNlIG5hbWVkIFwmIzM0O2V0aFhcJiMzNDssIHdoZXJlIFggZGVwZW5kcyBvblxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMjE0LVx0ICB3aGF0IG90aGVyIG5ldHdvcmtpbmcgZGV2aWNlcyB5b3UgaGF2ZSBpbiB1c2UuXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MjE2PWNvbmZpZyBVU0JfTkVUX0NEQ0VUSEVSXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0yMTctXHR0cmlzdGF0ZSBcJiMzNDtDREMgRXRoZXJuZXQgc3VwcG9ydCAoc21hcnQgZGV2aWNlcyBzdWNoIGFzIGNhYmxlIG1vZGVtcylcJiMzNDtcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjIxODpcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMjE5LVx0ZGVmYXVsdCB5XG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMjM4LVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MjM5Olx0ICBUaGlzIGRyaXZlciBjcmVhdGVzIGFuIGludGVyZmFjZSBuYW1lZCBcJiMzNDtldGhYXCYjMzQ7LCB3aGVyZSBYIGRlcGVuZHMgb25cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTI0MC1cdCAgd2hhdCBvdGhlciBuZXR3b3JraW5nIGRldmljZXMgeW91IGhhdmUgaW4gdXNlLiAgSG93ZXZlciwgaWYgdGhlXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MjQ0PWNvbmZpZyBVU0JfTkVUX0NEQ19FRU1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTI0NS1cdHRyaXN0YXRlIFwmIzM0O0NEQyBFRU0gc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MjQ2Olx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0yNDctXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMjUyLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MjUzOlx0ICBUaGlzIGRyaXZlciBjcmVhdGVzIGFuIGludGVyZmFjZSBuYW1lZCBcJiMzNDtldGhYXCYjMzQ7LCB3aGVyZSBYIGRlcGVuZHMgb25cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTI1NC1cdCAgd2hhdCBvdGhlciBuZXR3b3JraW5nIGRldmljZXMgeW91IGhhdmUgaW4gdXNlLiAgSG93ZXZlciwgaWYgdGhlXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MjU4PWNvbmZpZyBVU0JfTkVUX0NEQ19OQ01cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTI1OS1cdHRyaXN0YXRlIFwmIzM0O0NEQyBOQ00gc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MjYwOlx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0yNjEtXHRzZWxlY3QgVVNCX05FVF9DRENFVEhFUlxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTI3OD1jb25maWcgVVNCX05FVF9IVUFXRUlfQ0RDX05DTVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMjc5LVx0dHJpc3RhdGUgXCYjMzQ7SHVhd2VpIE5DTSBlbWJlZGRlZCBBVCBjaGFubmVsIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjI4MDpcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMjgxLVx0c2VsZWN0IFVTQl9XRE1cbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz0yOTM9Y29uZmlnIFVTQl9ORVRfQ0RDX01CSU1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTI5NC1cdHRyaXN0YXRlIFwmIzM0O0NEQyBNQklNIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjI5NTpcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMjk2LVx0c2VsZWN0IFVTQl9XRE1cbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz0zMTE9Y29uZmlnIFVTQl9ORVRfRE05NjAxXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0zMTItXHR0cmlzdGF0ZSBcJiMzNDtEYXZpY29tIERNOTZ4eCBiYXNlZCBVU0IgMTAvMTAwIGV0aGVybmV0IGRldmljZXNcJiMzNDtcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjMxMzpcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMzE0LVx0c2VsZWN0IENSQzMyXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MzE5PWNvbmZpZyBVU0JfTkVUX1NSOTcwMFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMzIwLVx0dHJpc3RhdGUgXCYjMzQ7Q29yZUNoaXAtc3ogU1I5NzAwIGJhc2VkIFVTQiAxLjEgMTAvMTAwIGV0aGVybmV0IGRldmljZXNcJiMzNDtcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjMyMTpcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMzIyLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTMyNj1jb25maWcgVVNCX05FVF9TUjk4MDBcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTMyNy1cdHRyaXN0YXRlIFwmIzM0O0NvcmVDaGlwLXN6IFNSOTgwMCBiYXNlZCBVU0IgMi4wIDEwLzEwMCBldGhlcm5ldCBkZXZpY2VzXCYjMzQ7XG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzozMjg6XHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTMyOS1cdHNlbGVjdCBDUkMzMlxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTM0MT1jb25maWcgVVNCX05FVF9TTVNDNzVYWFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMzQyLVx0dHJpc3RhdGUgXCYjMzQ7U01TQyBMQU43NVhYIGJhc2VkIFVTQiAyLjAgZ2lnYWJpdCBldGhlcm5ldCBkZXZpY2VzXCYjMzQ7XG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzozNDM6XHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTM0NC1cdHNlbGVjdCBCSVRSRVZFUlNFXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MzUxPWNvbmZpZyBVU0JfTkVUX1NNU0M5NVhYXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0zNTItXHR0cmlzdGF0ZSBcJiMzNDtTTVNDIExBTjk1WFggYmFzZWQgVVNCIDIuMCAxMC8xMDAgZXRoZXJuZXQgZGV2aWNlc1wmIzM0O1xuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MzUzOlx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0zNTQtXHRzZWxlY3QgUEhZTElCXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MzY0PWNvbmZpZyBVU0JfTkVUX0dMNjIwQVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMzY1LVx0dHJpc3RhdGUgXCYjMzQ7R2VuZVN5cyBHTDYyMFVTQi1BIGJhc2VkIGNhYmxlc1wmIzM0O1xuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MzY2Olx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0zNjctXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MzczPWNvbmZpZyBVU0JfTkVUX05FVDEwODBcbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0zNzUtXHRkZWZhdWx0IHlcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjM3NjpcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMzc3LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTM4Mj1jb25maWcgVVNCX05FVF9QTFVTQlxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTM4NS1cdCMgYXJlIGV2ZXIgcmVzb2x2ZWQgLi4uIHRoZW4gcmVtb3ZlIFwmIzM0O2V4cGVyaW1lbnRhbFwmIzM0O1xuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6Mzg2Olx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0zODctXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MzkxPWNvbmZpZyBVU0JfTkVUX01DUzc4MzBcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTM5Mi1cdHRyaXN0YXRlIFwmIzM0O01vc0NoaXAgTUNTNzgzMCBiYXNlZCBFdGhlcm5ldCBhZGFwdGVyc1wmIzM0O1xuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MzkzOlx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0zOTQtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9Mzk5PWNvbmZpZyBVU0JfTkVUX1JORElTX0hPU1RcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTQwMC1cdHRyaXN0YXRlIFwmIzM0O0hvc3QgZm9yIFJORElTIGFuZCBBY3RpdmVTeW5jIGRldmljZXNcJiMzNDtcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjQwMTpcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNDAyLVx0c2VsZWN0IFVTQl9ORVRfQ0RDRVRIRVJcbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz00MTQ9Y29uZmlnIFVTQl9ORVRfQ0RDX1NVQlNFVF9FTkFCTEVcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTQxNS1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo0MTY6XHRkZXBlbmRzIG9uIFVTQl9ORVRfQ0RDX1NVQlNFVFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNDE3LVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NDE4PWNvbmZpZyBVU0JfTkVUX0NEQ19TVUJTRVRcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTQxOS1cdHRyaXN0YXRlIFwmIzM0O1NpbXBsZSBVU0IgTmV0d29yayBMaW5rcyAoQ0RDIEV0aGVybmV0IHN1YnNldClcJiMzNDtcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjQyMDpcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNDIxLVx0ZGVmYXVsdCB5XG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NDMzPWNvbmZpZyBVU0JfQUxJX001NjMyXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy00MzQtXHRib29sIFwmIzM0O0FMaSBNNTYzMiBiYXNlZCAmIzM5O1VTQiAyLjAgRGF0YSBMaW5rJiMzOTsgY2FibGVzXCYjMzQ7XG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo0MzU6XHRkZXBlbmRzIG9uIFVTQl9ORVRfQ0RDX1NVQlNFVFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNDM2LVx0c2VsZWN0IFVTQl9ORVRfQ0RDX1NVQlNFVF9FTkFCTEVcbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz00NDE9Y29uZmlnIFVTQl9BTjI3MjBcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTQ0Mi1cdGJvb2wgXCYjMzQ7QW5jaG9yQ2hpcHMgMjcyMCBiYXNlZCBjYWJsZXMgKFhpcmNvbSBQR1VORVQsIC4uLilcJiMzNDtcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjQ0MzpcdGRlcGVuZHMgb24gVVNCX05FVF9DRENfU1VCU0VUXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy00NDQtXHRzZWxlY3QgVVNCX05FVF9DRENfU1VCU0VUX0VOQUJMRVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTQ1MD1jb25maWcgVVNCX0JFTEtJTlxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNDUxLVx0Ym9vbCBcJiMzNDtlVEVLIGJhc2VkIGhvc3QtdG8taG9zdCBjYWJsZXMgKEFkdmFuY2UsIEJlbGtpbiwgLi4uKVwmIzM0O1xuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6NDUyOlx0ZGVwZW5kcyBvbiBVU0JfTkVUX0NEQ19TVUJTRVRcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTQ1My1cdHNlbGVjdCBVU0JfTkVUX0NEQ19TVUJTRVRfRU5BQkxFXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NDYwPWNvbmZpZyBVU0JfQVJNTElOVVhcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTQ2MS1cdGJvb2wgXCYjMzQ7RW1iZWRkZWQgQVJNIExpbnV4IGxpbmtzIChpUGFxLCAuLi4pXCYjMzQ7XG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo0NjI6XHRkZXBlbmRzIG9uIFVTQl9ORVRfQ0RDX1NVQlNFVFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNDYzLVx0c2VsZWN0IFVTQl9ORVRfQ0RDX1NVQlNFVF9FTkFCTEVcbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz00Nzg9Y29uZmlnIFVTQl9FUFNPTjI4ODhcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTQ3OS1cdGJvb2wgXCYjMzQ7RXBzb24gMjg4OCBiYXNlZCBmaXJtd2FyZSAoREVWRUxPUE1FTlQpXCYjMzQ7XG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo0ODA6XHRkZXBlbmRzIG9uIFVTQl9ORVRfQ0RDX1NVQlNFVFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNDgxLVx0c2VsZWN0IFVTQl9ORVRfQ0RDX1NVQlNFVF9FTkFCTEVcbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz00ODY9Y29uZmlnIFVTQl9LQzIxOTBcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTQ4Ny1cdGJvb2wgXCYjMzQ7S1QgVGVjaG5vbG9neSBLQzIxOTAgYmFzZWQgY2FibGVzIChJbnN0YU5ldClcJiMzNDtcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjQ4ODpcdGRlcGVuZHMgb24gVVNCX05FVF9DRENfU1VCU0VUXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy00ODktXHRzZWxlY3QgVVNCX05FVF9DRENfU1VCU0VUX0VOQUJMRVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTQ5ND1jb25maWcgVVNCX05FVF9aQVVSVVNcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTQ5NS1cdHRyaXN0YXRlIFwmIzM0O1NoYXJwIFphdXJ1cyAoc3RvY2sgUk9NcykgYW5kIGNvbXBhdGlibGVcJiMzNDtcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjQ5NjpcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNDk3LVx0c2VsZWN0IFVTQl9ORVRfQ0RDRVRIRVJcbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz01MTI9Y29uZmlnIFVTQl9ORVRfQ1g4MjMxMF9FVEhcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTUxMy1cdHRyaXN0YXRlIFwmIzM0O0NvbmV4YW50IENYODIzMTAgVVNCIGV0aGVybmV0IHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjUxNDpcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNTE1LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTUyMD1jb25maWcgVVNCX05FVF9LQUxNSUFcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTUyMS1cdHRyaXN0YXRlIFwmIzM0O1NhbXN1bmcgS2FsbWlhIGJhc2VkIExURSBVU0IgbW9kZW1cJiMzNDtcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjUyMjpcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNTIzLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTUzMD1jb25maWcgVVNCX05FVF9RTUlfV1dBTlxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNTMxLVx0dHJpc3RhdGUgXCYjMzQ7UU1JIFdXQU4gZHJpdmVyIGZvciBRdWFsY29tbSBNU00gYmFzZWQgM0cgYW5kIExURSBtb2RlbXNcJiMzNDtcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjUzMjpcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNTMzLVx0c2VsZWN0IFVTQl9XRE1cbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz01NTI9Y29uZmlnIFVTQl9IU09cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTU1My1cdHRyaXN0YXRlIFwmIzM0O09wdGlvbiBVU0IgSGlnaCBTcGVlZCBNb2JpbGUgRGV2aWNlc1wmIzM0O1xuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6NTU0Olx0ZGVwZW5kcyBvbiBVU0IgXHUwMDI2XHUwMDI2IFJGS0lMTCBcdTAwMjZcdTAwMjYgVFRZXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy01NTUtXHRkZWZhdWx0IG5cbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz01NjM9Y29uZmlnIFVTQl9ORVRfSU5UNTFYMVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNTY0LVx0dHJpc3RhdGUgXCYjMzQ7SW50ZWxsb24gUExDIGJhc2VkIHVzYiBhZGFwdGVyXCYjMzQ7XG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo1NjU6XHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTU2Ni1cdHNlbGVjdCBVU0JfTkVUX0NEQ0VUSEVSXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NTcyPWNvbmZpZyBVU0JfQ0RDX1BIT05FVFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNTczLVx0dHJpc3RhdGUgXCYjMzQ7Q0RDIFBob25ldCBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo1NzQ6XHRkZXBlbmRzIG9uIFBIT05FVCBcdTAwMjZcdTAwMjYgVVNCX1VTQk5FVFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNTc1LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTU5MD1jb25maWcgVVNCX1NJRVJSQV9ORVRcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTU5MS1cdHRyaXN0YXRlIFwmIzM0O1VTQi10by1XV0FOIERyaXZlciBmb3IgU2llcnJhIFdpcmVsZXNzIG1vZGVtc1wmIzM0O1xuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6NTkyOlx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy01OTMtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NTk5PWNvbmZpZyBVU0JfVkw2MDBcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTYwMC1cdHRyaXN0YXRlIFwmIzM0O0xHIFZMNjAwIG1vZGVtIGRvbmdsZVwmIzM0O1xuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6NjAxOlx0ZGVwZW5kcyBvbiBVU0JfTkVUX0NEQ0VUSEVSIFx1MDAyNlx1MDAyNiBUVFlcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTYwMi1cdHNlbGVjdCBVU0JfQUNNXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NjE0PWNvbmZpZyBVU0JfTkVUX0NIOTIwMFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNjE1LVx0dHJpc3RhdGUgXCYjMzQ7UWluZ0hlbmcgQ0g5MjAwIFVTQiBldGhlcm5ldCBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo2MTY6XHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTYxNy1cdHNlbGVjdCBNSUlcbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz02MjU9Y29uZmlnIFVTQl9ORVRfQVFDMTExXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy02MjYtXHR0cmlzdGF0ZSBcJiMzNDtBcXVhbnRpYSBBUXRpb24gVVNCIHRvIDUvMi41R2JFIENvbnRyb2xsZXJzIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjYyNzpcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNjI4LVx0c2VsZWN0IENSQzMyXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NjM2PWNvbmZpZyBVU0JfUlRMODE1M19FQ01cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTYzNy1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo2Mzg6XHRkZXBlbmRzIG9uIFVTQl9ORVRfQ0RDRVRIRVIgXHUwMDI2XHUwMDI2IChVU0JfUlRMODE1MiB8fCBVU0JfUlRMODE1Mj1uKVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNjM5LVx0ZGVmYXVsdCB5XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA4OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1MDM4CgkJCQkJCQlvdXRwdXQ6IDE2NQoJCQkJCQkJdGhvdWdodHM6IDQyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBVU0IgTmV0d29yayBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgaXQgbG9va3MgbGlrZSB0aGUgYFVTQl9MQU43OFhYYCBkcml2ZXIgZm9yIE1pY3JvY2hpcCBMQU43OFhYLWJhc2VkIFVTQiBFdGhlcm5ldCBhZGFwdGVycyBpcyBpbmRlcGVuZGVudCBvZiBgVVNCX1VTQk5FVGAuIEhvd2V2ZXIsIHRoZSBgVVNCX05FVF9BWDg4MTdYYCBkcml2ZXIsIGZvciBBU0lYIEFYODh4eHgtYmFzZWQgVVNCIDIuMCBFdGhlcm5ldCBhZGFwdGVycywgKmRvZXMqIGRlcGVuZCBvbiBgVVNCX1VTQk5FVGAuCgpUaGVyZWZvcmUsIHRvIGVuc3VyZSBib3RoIHR5cGVzIG9mIGFkYXB0ZXJzIGFyZSBlbmFibGVkIGFuZCBmdW5jdGlvbmFsLCBhbmQgZ2l2ZW4gdGhhdCB0aGUgY29kZSBwYXRocyBwb3RlbnRpYWxseSBpbnRlcnNlY3QsIEkgc2hvdWxkIGVuYWJsZSBgVVNCX1VTQk5FVGAsIGFsb25nIHdpdGggYFVTQl9ORVRfQVg4ODE3WGAgYW5kIGBVU0JfTEFONzhYWGAuIFRoYXQgc2VlbXMgbGlrZSBhIGxvZ2ljYWwgZmlyc3Qgc3RlcC4KCk5vdywgdGhlIGludGVyZXN0aW5nIGJpdC4gVGhlIHBhdGNoIHNlZW1zIHRvIGZvY3VzIG9uIGBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldGAuIEl0JiMzOTtzIGFuIGV4cG9ydGVkIHN5bWJvbCwgd2hpY2ggc3VnZ2VzdHMgaXQmIzM5O3Mgd2lkZWx5IHVzZWQgYnkgbmV0d29yayBkcml2ZXJzLiBUaGF0IG1lYW5zIGl0JiMzOTtzIGRlZmluaXRlbHkgcmVhY2hhYmxlIGNvZGUuIE15IGludHVpdGlvbiBpcyB0aGF0IHRoaXMgaXMgdGhlIGtleSB0byBmb2N1cyBvbiwgYW5kIHRoaXMgbmVlZHMgdG8gYmUgaW52ZXN0aWdhdGVkIGR1cmluZyBmdXp6aW5nLgoKTGV0IG1lIHN1bW1hcml6ZSBteSBmaW5kaW5ncywgbWFraW5nIGl0IGNsZWFyIHdoYXQgYWN0aW9ucyBJIG5lZWQgdG8gdGFrZToKCiogICAqKldvcnRoRnV6emluZzoqKiBUcnVlIC0gdGhpcyBpcyBkZWZpbml0ZWx5IHdvcnRoIG91ciBhdHRlbnRpb24uCiogICAqKkZvY3VzU3ltYm9sczoqKiBcWyYjMzQ7cGh5bGlua1xfZXRodG9vbFxfa3NldHRpbmdzXF9zZXQmIzM0O1xdIC0gdGhhdCYjMzk7cyB0aGUgcHJpbWFyeSB0YXJnZXQuCiogICAqKkVuYWJsZUNvbmZpZ3M6KiogXFsmIzM0O1VTQlxfVVNCTkVUJiMzNDssICYjMzQ7VVNCXF9ORVRcX0FYODgxN1gmIzM0OywgJiMzNDtVU0JcX0xBTjc4WFgmIzM0O1xdIC0gdG8gZW5zdXJlIHRoZSByZWxldmFudCBjb2RlIHBhdGhzIGFyZSBhY3RpdmUuCiogICAqKlJlYXNvbmluZzoqKiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIHZhbGlkYXRpb24gY2hlY2sgd2l0aGluIGBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldGAgdG8gcHJldmVudCBzZXR0aW5nIGludmFsaWQgc3BlZWQgYW5kIGR1cGxleCBzZXR0aW5ncyB2aWEgYGV0aHRvb2xgLCB3aGljaCBpcyBhIGdvb2QgcHJvdGVjdGlvbiBzdHJhdGVneSBmb3IgdGhvc2UgZGV2aWNlcy4gVGhpcyBjb2RlIGNhbiBiZSByZWFjaGVkIHZpYSBVU0IgbmV0d29yayBkcml2ZXJzIHRoYXQgdXRpbGl6ZSBwaHlsaW5rIChzdWNoIGFzIEFTSVgsIExBTjc4WFgpIGFuZCB0aGlzIGNvZGUgY2FuIGJlIHJlYWNoZWQgdW5kZXIgdmlydHVhbGl6YXRpb24gYXMgd2VsbC4KCk9rYXksIHdpdGggdGhhdCBjbGVhciwgSSYjMzk7bSByZWFkeSB0byBwcm9jZWVkLiBJJiMzOTtsbCBjYWxsIGBzZXQtcmVzdWx0c2Agbm93IGFuZCBtb3ZlIG9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwODoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VVNCX1VTQk5FVCYjMzQ7LAogICAgJiMzNDtVU0JfTkVUX0FYODgxN1gmIzM0OywKICAgICYjMzQ7VVNCX0xBTjc4WFgmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgdmFsaWRhdGlvbiBjaGVjayBpbiBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldCB0byBlbnN1cmUgdGhhdCB0aGUgcmVxdWVzdGVkIHNwZWVkIGFuZCBkdXBsZXggc2V0dGluZ3MgYXJlIHN1cHBvcnRlZCBieSB0aGUgUEhZIGNhcGFiaWxpdGllcyBiZWZvcmUgYXBwbHlpbmcgdGhlbS4gVGhpcyBwcmV2ZW50cyBpbnZhbGlkIGNvbmZpZ3VyYXRpb25zIGZyb20gYmVpbmcgc2V0IHZpYSBldGh0b29sLiBUaGUgY29kZSBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHRocm91Z2ggVVNCIG5ldHdvcmsgZHJpdmVycyB0aGF0IHVzZSBwaHlsaW5rIChlLmcuLCBBU0lYLCBMQU43OFhYKSB3aGljaCBjYW4gYmUgZW11bGF0ZWQgdmlhIFVTQiBnYWRnZXQvZHVtbXlfaGNkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtVU0JfVVNCTkVUJiMzNDssCiAgICAmIzM0O1VTQl9ORVRfQVg4ODE3WCYjMzQ7LAogICAgJiMzNDtVU0JfTEFONzhYWCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSB2YWxpZGF0aW9uIGNoZWNrIGluIHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0IHRvIGVuc3VyZSB0aGF0IHRoZSByZXF1ZXN0ZWQgc3BlZWQgYW5kIGR1cGxleCBzZXR0aW5ncyBhcmUgc3VwcG9ydGVkIGJ5IHRoZSBQSFkgY2FwYWJpbGl0aWVzIGJlZm9yZSBhcHBseWluZyB0aGVtLiBUaGlzIHByZXZlbnRzIGludmFsaWQgY29uZmlndXJhdGlvbnMgZnJvbSBiZWluZyBzZXQgdmlhIGV0aHRvb2wuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdGhyb3VnaCBVU0IgbmV0d29yayBkcml2ZXJzIHRoYXQgdXNlIHBoeWxpbmsgKGUuZy4sIEFTSVgsIExBTjc4WFgpIHdoaWNoIGNhbiBiZSBlbXVsYXRlZCB2aWEgVVNCIGdhZGdldC9kdW1teV9oY2QuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwODoxOToyOC40MzA1MDk5NzhaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MjA0NTA4ODc5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJVU0JfVVNCTkVUXCIsXG4gICAgXCJVU0JfTkVUX0FYODgxN1hcIixcbiAgICBcIlVTQl9MQU43OFhYXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgdmFsaWRhdGlvbiBjaGVjayBpbiBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldCB0byBlbnN1cmUgdGhhdCB0aGUgcmVxdWVzdGVkIHNwZWVkIGFuZCBkdXBsZXggc2V0dGluZ3MgYXJlIHN1cHBvcnRlZCBieSB0aGUgUEhZIGNhcGFiaWxpdGllcyBiZWZvcmUgYXBwbHlpbmcgdGhlbS4gVGhpcyBwcmV2ZW50cyBpbnZhbGlkIGNvbmZpZ3VyYXRpb25zIGZyb20gYmVpbmcgc2V0IHZpYSBldGh0b29sLiBUaGUgY29kZSBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHRocm91Z2ggVVNCIG5ldHdvcmsgZHJpdmVycyB0aGF0IHVzZSBwaHlsaW5rIChlLmcuLCBBU0lYLCBMQU43OFhYKSB3aGljaCBjYW4gYmUgZW11bGF0ZWQgdmlhIFVTQiBnYWRnZXQvZHVtbXlfaGNkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwODoxOToyOC40MzA1MjM4MThaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxMDk3NDkwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDY2MjAzYTEyYzRjODE3YzcxNzFhMjJiOGI3YTIwZWI5OTI1YmMyZjRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgMSAwODoxOToyNiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xcbmluZGV4IDA4N2FjNjNmOTE5M2Q3Li4yMmY5YmJkMzgxYmQ3MiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXFxuKysrIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xcbkBAIC0yOTg5LDYgKzI5ODksMTAgQEAgaW50IHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0KHN0cnVjdCBwaHlsaW5rICpwbCxcXG4gXFx0aWYgKHBsLVxcdTAwM2VwaHlkZXYpIHtcXG4gXFx0XFx0c3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgcGh5X2tzZXQgPSAqa3NldDtcXG4gXFxuK1xcdFxcdGlmICghcGh5X2NhcHNfbG9va3VwKGtzZXQtXFx1MDAzZWJhc2Uuc3BlZWQsIGtzZXQtXFx1MDAzZWJhc2UuZHVwbGV4LFxcbitcXHRcXHRcXHRcXHQgICAgIHBsLVxcdTAwM2VzdXBwb3J0ZWQsIHRydWUpKVxcbitcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFxuIFxcdFxcdGxpbmttb2RlX2FuZChwaHlfa3NldC5saW5rX21vZGVzLmFkdmVydGlzaW5nLFxcbiBcXHRcXHRcXHQgICAgIHBoeV9rc2V0LmxpbmtfbW9kZXMuYWR2ZXJ0aXNpbmcsXFxuIFxcdFxcdFxcdCAgICAgcGwtXFx1MDAzZXN1cHBvcnRlZCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA4OjE5OjI4Ljk0NTA0NjMzOFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODE1MzA1MjQ0NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVVNCX1VTQk5FVFwiLFxuICAgIFwiVVNCX05FVF9BWDg4MTdYXCIsXG4gICAgXCJVU0JfTEFONzhYWFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHZhbGlkYXRpb24gY2hlY2sgaW4gcGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXQgdG8gZW5zdXJlIHRoYXQgdGhlIHJlcXVlc3RlZCBzcGVlZCBhbmQgZHVwbGV4IHNldHRpbmdzIGFyZSBzdXBwb3J0ZWQgYnkgdGhlIFBIWSBjYXBhYmlsaXRpZXMgYmVmb3JlIGFwcGx5aW5nIHRoZW0uIFRoaXMgcHJldmVudHMgaW52YWxpZCBjb25maWd1cmF0aW9ucyBmcm9tIGJlaW5nIHNldCB2aWEgZXRodG9vbC4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB0aHJvdWdoIFVTQiBuZXR3b3JrIGRyaXZlcnMgdGhhdCB1c2UgcGh5bGluayAoZS5nLiwgQVNJWCwgTEFONzhYWCkgd2hpY2ggY2FuIGJlIGVtdWxhdGVkIHZpYSBVU0IgZ2FkZ2V0L2R1bW15X2hjZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA2NjIwM2ExMmM0YzgxN2M3MTcxYTIyYjhiN2EyMGViOTkyNWJjMmY0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMSAwODoxOToyNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXG5pbmRleCAwODdhYzYzZjkxOTNkNy4uMjJmOWJiZDM4MWJkNzIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXG4rKysgYi9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXG5AQCAtMjk4OSw2ICsyOTg5LDEwIEBAIGludCBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldChzdHJ1Y3QgcGh5bGluayAqcGwsXG4gXHRpZiAocGwtXHUwMDNlcGh5ZGV2KSB7XG4gXHRcdHN0cnVjdCBldGh0b29sX2xpbmtfa3NldHRpbmdzIHBoeV9rc2V0ID0gKmtzZXQ7XG4gXG4rXHRcdGlmICghcGh5X2NhcHNfbG9va3VwKGtzZXQtXHUwMDNlYmFzZS5zcGVlZCwga3NldC1cdTAwM2ViYXNlLmR1cGxleCxcbitcdFx0XHRcdCAgICAgcGwtXHUwMDNlc3VwcG9ydGVkLCB0cnVlKSlcbitcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbitcbiBcdFx0bGlua21vZGVfYW5kKHBoeV9rc2V0LmxpbmtfbW9kZXMuYWR2ZXJ0aXNpbmcsXG4gXHRcdFx0ICAgICBwaHlfa3NldC5saW5rX21vZGVzLmFkdmVydGlzaW5nLFxuIFx0XHRcdCAgICAgcGwtXHUwMDNlc3VwcG9ydGVkKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA4OjE5OjI4Ljk0NTA1MDE1OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMTcyMzIxNTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUEhZTGluayBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL25ldC9waHkvcGh5bGluay5jYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBpbiB0aGUgYHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0YCBmdW5jdGlvbi4gVGhleSd2ZSBhZGRlZCBhIHZhbGlkYXRpb24gY2hlY2sgcmlnaHQgaGVyZTpcblxuYGBgY1xuXHRcdGlmICghcGh5X2NhcHNfbG9va3VwKGtzZXQtXHUwMDNlYmFzZS5zcGVlZCwga3NldC1cdTAwM2ViYXNlLmR1cGxleCxcblx0XHRcdFx0ICAgICBwbC1cdTAwM2VzdXBwb3J0ZWQsIHRydWUpKVxuXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG5gYGBcblxuRXNzZW50aWFsbHksIHRoZXkncmUgaW50cm9kdWNpbmcgYSBjaGVjayB0byBlbnN1cmUgdGhlIHJlcXVlc3RlZCBzcGVlZCBhbmQgZHVwbGV4IHNldHRpbmdzIGFyZSBhY3R1YWxseSAqc3VwcG9ydGVkKiBieSB0aGUgUEhZIGJlZm9yZSBhcHBseWluZyB0aGUgZXRodG9vbCBrc2V0dGluZ3MuIFRoaXMgaXMgYSBjbGVhciBmdW5jdGlvbmFsIGVuaGFuY2VtZW50LiAgVGhleSdyZSB1c2luZyBgcGh5X2NhcHNfbG9va3VwYCB0byBwZXJmb3JtIHRoaXMgdmFsaWRhdGlvbiwgd2hpY2ggSSdsbCBuZWVkIHRvIGRpZyBpbnRvLiBJdCdzIGdvb2QgcHJhY3RpY2UgdG8gdmFsaWRhdGUgdGhlc2Ugc2V0dGluZ3MsIHByZXZlbnRpbmcgdW5leHBlY3RlZCBiZWhhdmlvciBvciBlcnJvcnMgbGF0ZXIgb24uIEknbGwgbmVlZCB0byBjb25maXJtIHdoYXQgYHBsLVx1MDAzZXN1cHBvcnRlZGAgcmVmZXJzIHRvIGluIHRoaXMgY29udGV4dC4gSXMgaXQgdGhlIGludGVyc2VjdGlvbiBvZiBjYXBhYmlsaXRpZXMgYWR2ZXJ0aXNlZCBieSBib3RoIFBIWSBhbmQgTUFDPyBPciB0aGUgY2FwYWJpbGl0aWVzIGZyb20gb25lIHNpZGU/IExldCBtZSBkaXZlIGRlZXBlciB0byBlbnN1cmUgdGhpcyB3b3JrcyBhcyBleHBlY3RlZCBhbmQgZG9lc24ndCBpbnRyb2R1Y2UgYW55IHJlZ3Jlc3Npb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODc2LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTM0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDg6MTk6MzMuMDYyMjg4ODA3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4Mjg5NDMzMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5bGluay5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9Mjk1NT1zdGF0aWMgYm9vbCBwaHlsaW5rX3ZhbGlkYXRlX3Bjc19pbmJhbmRfYXV0b25lZyhzdHJ1Y3QgcGh5bGluayAqcGwsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI5NzUtLyoqXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyOTc2OiAqIHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0KCkgLSBzZXQgdGhlIGxpbmsgc2V0dGluZ3NcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI5NzctICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI5NzktICovXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyOTgwOmludCBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldChzdHJ1Y3QgcGh5bGluayAqcGwsXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yOTgxLVxcdFxcdFxcdFxcdCAgY29uc3Qgc3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgKmtzZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNDYtfVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzE0NzpFWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldCk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTQ4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwODoxOTozMy40NDUxOTg0NVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMzEzNTk0NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipBbmFseXppbmcgdGhlIFBoeWxpbmsgYW5kIEV0aHRvb2wgUmVsYXRpb25zaGlwKipcblxuQWxyaWdodCwgc28gYHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0YCBpcyBhIGtleSBmdW5jdGlvbiwgYW4gZXhwb3J0ZWQgc3ltYm9sLCByaWdodD8gVGhhdCBtZWFucyBpdCdzIGRlc2lnbmVkIHRvIGJlIHVzZWQgZXh0ZXJuYWxseSwgcHJpbWFyaWx5IGJ5IG5ldHdvcmsgZGV2aWNlIGRyaXZlcnMgdG8gaW50ZXJmYWNlIHdpdGggZXRodG9vbCdzIHNldHRpbmdzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcmVsYXRpb25zaGlwIHRvIGBwaHlsaW5rLmNgLiBUaGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZmlndXJlIG91dCB3aGljaCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYWN0dWFsbHkgKmVuYWJsZSogYHBoeWxpbmsuY2AgaW4gdGhlIGZpcnN0IHBsYWNlLiBLbm93aW5nIHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB3aGVuIGFuZCBob3cgdGhpcyBmdW5jdGlvbiBpcyBhY3R1YWxseSByZWxldmFudCBpbiB0aGUgYnJvYWRlciBuZXR3b3JrIHN0YWNrLiBJdCdzIHRpbWUgdG8gZGlnIGludG8gdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb25zIGFuZCBzZWUgd2hhdCB0cmlnZ2VycyB0aGUgaW5jbHVzaW9uIG9mIHRoYXQgYHBoeWxpbmtgIG1vZHVsZS4gVGhpcyBpcyBhbGwgYWJvdXQgdHJhY2luZyB0aGUgZGVwZW5kZW5jeSBjaGFpbiwgYW5kIHVuZGVyc3RhbmRpbmcgd2hlcmUgdGhpcyBldGh0b29sIGZ1bmN0aW9uIGZhbGxzIGluIHRoZSBncmFuZCBzY2hlbWUgb2YgdGhpbmdzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjA3LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDg6MTk6MzYuNjc2NTYyNTA1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMzcxNTg5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHlsaW5rLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZT0xOD1vYmotJChDT05GSUdfUEhZTElCKVxcdFxcdCs9IG1kaW9fYnVzLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6MTk6b2JqLSQoQ09ORklHX1BIWUxJTkspXFx0XFx0Kz0gcGh5bGluay5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTIwLW9iai0kKENPTkZJR19QSFlMSUIpXFx0XFx0Kz0gbGlicGh5Lm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDg6MTk6MzYuODgwMjg4NTU1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjQ5MjA3NDU2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gUEhZTElOSyBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBJJ20gd29ya2luZyB3aXRoIGlzIGBQSFlMSU5LYC4gUmlnaHQsIGdvdCBpdC4gTm93LCBnaXZlbiB0aGF0IGl0J3MgYFBIWUxJTktgLCBJIG5lZWQgdG8gaW1tZWRpYXRlbHkgdW5kZXJzdGFuZCBpdHMgY2FwYWJpbGl0aWVzLiBNeSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBjb25zdWx0IGBwaHlfY2Fwc19sb29rdXBgLiBUaGF0IGZ1bmN0aW9uIGlzIGNyaXRpY2FsIGluIHByb3ZpZGluZyBtZSB3aXRoIGEgc3BlY2lmaWMsIGNvbmNpc2UgYW5kIGZvY3VzZWQgdmlldyBvZiBhbGwgdGhlIGZlYXR1cmVzIGFuZCBsaW1pdGF0aW9ucyB0aGlzIGBQSFlMSU5LYCBjb25maWd1cmF0aW9uIGVudGFpbHMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgdGhvcm91Z2hseSwgZXNwZWNpYWxseSBnaXZlbiB0aGF0IFBIWUxJTksgd2lsbCBkZWZpbmUgbXkgZnVydGhlciBkZWNpc2lvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5NzgsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwODoxOTozOS4zNzIzNjcwNTNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzQ1MjQyMzI0NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHlfY2Fwc19sb29rdXBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHktY2Fwcy5oPTU1PWNvbnN0IHN0cnVjdCBsaW5rX2NhcGFiaWxpdGllcyAqXFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jYXBzLmg6NTY6cGh5X2NhcHNfbG9va3VwX2J5X2xpbmttb2RlKGNvbnN0IHVuc2lnbmVkIGxvbmcgKmxpbmttb2Rlcyk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jYXBzLmgtNTctXFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jYXBzLmg9NTg9Y29uc3Qgc3RydWN0IGxpbmtfY2FwYWJpbGl0aWVzICpcXG5kcml2ZXJzL25ldC9waHkvcGh5LWNhcHMuaDo1OTpwaHlfY2Fwc19sb29rdXBfYnlfbGlua21vZGVfcmV2KGNvbnN0IHVuc2lnbmVkIGxvbmcgKmxpbmttb2RlcywgYm9vbCBmZHhfb25seSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jYXBzLmgtNjAtXFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jYXBzLmg9NjE9Y29uc3Qgc3RydWN0IGxpbmtfY2FwYWJpbGl0aWVzICpcXG5kcml2ZXJzL25ldC9waHkvcGh5LWNhcHMuaDo2MjpwaHlfY2Fwc19sb29rdXAoaW50IHNwZWVkLCB1bnNpZ25lZCBpbnQgZHVwbGV4LCBjb25zdCB1bnNpZ25lZCBsb25nICpzdXBwb3J0ZWQsXFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jYXBzLmgtNjMtXFx0XFx0Ym9vbCBleGFjdCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYz0zNDI9dm9pZCBwaHlfcmVzb2x2ZV9hbmVnX2xpbmttb2RlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYy0zNDgtXFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmM6MzQ5OlxcdGMgPSBwaHlfY2Fwc19sb29rdXBfYnlfbGlua21vZGUoY29tbW9uKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYy0zNTAtXFx0aWYgKGMpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jPTM2OD12b2lkIHBoeV9jaGVja19kb3duc2hpZnQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jLTM4MS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYzozODI6XFx0YyA9IHBoeV9jYXBzX2xvb2t1cF9ieV9saW5rbW9kZShjb21tb24pO1xcbmRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jLTM4My1cXHRpZiAoYylcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jPTM5NT1zdGF0aWMgaW50IHBoeV9yZXNvbHZlX21pbl9zcGVlZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBib29sIGZkeF9vbmx5KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmMtNDAxLVxcbmRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jOjQwMjpcXHRjID0gcGh5X2NhcHNfbG9va3VwX2J5X2xpbmttb2RlX3Jldihjb21tb24sIGZkeF9vbmx5KTtcXG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYy00MDMtXFx0aWYgKGMpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LmM9MjU2PXN0YXRpYyB2b2lkIHBoeV9zYW5pdGl6ZV9zZXR0aW5ncyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeS5jLTI1OS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LmM6MjYwOlxcdGMgPSBwaHlfY2Fwc19sb29rdXAocGh5ZGV2LVxcdTAwM2VzcGVlZCwgcGh5ZGV2LVxcdTAwM2VkdXBsZXgsIHBoeWRldi1cXHUwMDNlc3VwcG9ydGVkLFxcbmRyaXZlcnMvbmV0L3BoeS9waHkuYy0yNjEtXFx0XFx0XFx0ICAgIGZhbHNlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jPTEyMj1zaXplX3QgcGh5X2NhcHNfc3BlZWRzKHVuc2lnbmVkIGludCAqc3BlZWRzLCBzaXplX3Qgc2l6ZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jLTE0MC0vKipcXG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYzoxNDE6ICogcGh5X2NhcHNfbG9va3VwX2J5X2xpbmttb2RlKCkgLSBMb29rdXAgdGhlIGZhc3Rlc3QgbWF0Y2hpbmcgbGlua19jYXBhYmlsaXRpZXNcXG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYy0xNDItICogQGxpbmttb2RlczogTGlua21vZGVzIHRvIG1hdGNoIGFnYWluc3RcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jPTE0OD1jb25zdCBzdHJ1Y3QgbGlua19jYXBhYmlsaXRpZXMgKlxcbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jOjE0OTpwaHlfY2Fwc19sb29rdXBfYnlfbGlua21vZGUoY29uc3QgdW5zaWduZWQgbG9uZyAqbGlua21vZGVzKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jLTE1MC17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYy0xNjAtLyoqXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmM6MTYxOiAqIHBoeV9jYXBzX2xvb2t1cF9ieV9saW5rbW9kZV9yZXYoKSAtIExvb2t1cCB0aGUgc2xvd2VzdCBtYXRjaGluZyBsaW5rX2NhcGFiaWxpdGllc1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jLTE2Mi0gKiBAbGlua21vZGVzOiBMaW5rbW9kZXMgdG8gbWF0Y2ggYWdhaW5zdFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmM9MTY5PWNvbnN0IHN0cnVjdCBsaW5rX2NhcGFiaWxpdGllcyAqXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmM6MTcwOnBoeV9jYXBzX2xvb2t1cF9ieV9saW5rbW9kZV9yZXYoY29uc3QgdW5zaWduZWQgbG9uZyAqbGlua21vZGVzLCBib29sIGZkeF9vbmx5KVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jLTE3MS17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYy0xODUtLyoqXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmM6MTg2OiAqIHBoeV9jYXBzX2xvb2t1cCgpIC0gTG9va3VwIGNhcGFiaWxpdGllcyBieSBzcGVlZC9kdXBsZXggdGhhdCBtYXRjaGVzIGEgbWFza1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jLTE4Ny0gKiBAc3BlZWQ6IFNwZWVkIHRvIG1hdGNoXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYz0yMDk9Y29uc3Qgc3RydWN0IGxpbmtfY2FwYWJpbGl0aWVzICpcXG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYzoyMTA6cGh5X2NhcHNfbG9va3VwKGludCBzcGVlZCwgdW5zaWduZWQgaW50IGR1cGxleCwgY29uc3QgdW5zaWduZWQgbG9uZyAqc3VwcG9ydGVkLFxcbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jLTIxMS1cXHRcXHRib29sIGV4YWN0KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmMtMjM1LX1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYzoyMzY6RVhQT1JUX1NZTUJPTF9HUEwocGh5X2NhcHNfbG9va3VwKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYy0yMzctXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTIzMDk9aW50IF9fZ2VucGh5X2NvbmZpZ19hbmVnKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGJvb2wgY2hhbmdlZClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMjMzNy1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjIzMzg6XFx0XFx0YyA9IHBoeV9jYXBzX2xvb2t1cChwaHlkZXYtXFx1MDAzZXNwZWVkLCBwaHlkZXYtXFx1MDAzZWR1cGxleCxcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTIzMzktXFx0XFx0XFx0XFx0ICAgIHBoeWRldi1cXHUwMDNlc3VwcG9ydGVkLCB0cnVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NjYwPXN0YXRpYyBpbnQgcGh5bGlua19wYXJzZV9maXhlZGxpbmsoc3RydWN0IHBoeWxpbmsgKnBsLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy03NDItXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo3NDM6XFx0YyA9IHBoeV9jYXBzX2xvb2t1cChwbC1cXHUwMDNlbGlua19jb25maWcuc3BlZWQsIHBsLVxcdTAwM2VsaW5rX2NvbmZpZy5kdXBsZXgsXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy03NDQtXFx0XFx0XFx0ICAgIHBsLVxcdTAwM2VzdXBwb3J0ZWQsIHRydWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xODAxPWludCBwaHlsaW5rX3NldF9maXhlZF9saW5rKHN0cnVjdCBwaHlsaW5rICpwbCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTgxMC1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE4MTE6XFx0YyA9IHBoeV9jYXBzX2xvb2t1cChzdGF0ZS1cXHUwMDNlc3BlZWQsIHN0YXRlLVxcdTAwM2VkdXBsZXgsXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODEyLVxcdFxcdFxcdCAgICBwbC1cXHUwMDNlc3VwcG9ydGVkLCB0cnVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9Mjk4MD1pbnQgcGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXQoc3RydWN0IHBoeWxpbmsgKnBsLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yOTkxLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6Mjk5MjpcXHRcXHRpZiAoIXBoeV9jYXBzX2xvb2t1cChrc2V0LVxcdTAwM2ViYXNlLnNwZWVkLCBrc2V0LVxcdTAwM2ViYXNlLmR1cGxleCxcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI5OTMtXFx0XFx0XFx0XFx0ICAgICBwbC1cXHUwMDNlc3VwcG9ydGVkLCB0cnVlKSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzAzMS1cXHRcXHQgKi9cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMwMzI6XFx0XFx0YyA9IHBoeV9jYXBzX2xvb2t1cChrc2V0LVxcdTAwM2ViYXNlLnNwZWVkLCBrc2V0LVxcdTAwM2ViYXNlLmR1cGxleCxcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMwMzMtXFx0XFx0XFx0XFx0ICAgIHBsLVxcdTAwM2VzdXBwb3J0ZWQsIGZhbHNlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDg6MTk6NDIuODI0Nzk5NzE2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDEzNTQ4MDQ3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldGAgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBgcGh5X2NhcHNfbG9va3VwYCBjaGVjayB3aXRoaW4gYHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0YC4gVGhpcyBmdW5jdGlvbiBpcywgb2YgY291cnNlLCBhY2Nlc3NpYmxlIHRocm91Z2ggZXRodG9vbCdzIGlvY3RscyBhbmQgbmV0bGluayBjb21tYW5kcywgc3BlY2lmaWNhbGx5IGZvciBuZXR3b3JrIGRldmljZXMgdGhhdCBsZXZlcmFnZSBwaHlsaW5rLiBNeSBpbW1lZGlhdGUgY29uY2VybiwgYXMgYWx3YXlzIHdoZW4gZGVhbGluZyB3aXRoIGtlcm5lbC1sZXZlbCBjaGFuZ2VzLCBpcyB0aGUgc2NvcGUgb2YgdGhpcy4gSSBuZWVkIHRvIHRoaW5rIGFib3V0IHBvdGVudGlhbCBhdHRhY2sgc3VyZmFjZXMgYW5kIHdoZXRoZXIgdGhpcyBuZXcgY2hlY2sgaW50cm9kdWNlcyBhbnkgbmV3IHZ1bG5lcmFiaWxpdGllcyBvciB3ZWFrbmVzc2VzLlxuXG5Db3VsZCB0aGlzIGJlIHRyaWdnZXJlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHM/IEhtbSwgaXQncyBjZXJ0YWlubHkgcGxhdXNpYmxlLiBXZSBoYXZlIHZpcnR1YWwgbmV0d29yayBkcml2ZXJzIGFuZCBwZXJoYXBzIGV2ZW4gZHVtbXkgZHJpdmVycyB0aGF0IG1pZ2h0IGludGVncmF0ZSBwaHlsaW5rIGluIHRoZWlyIGRlc2lnbi4gSSBuZWVkIHRvIGNvbnNpZGVyIHRoYXQsIG9yIHdlIGNvdWxkIGFsd2F5cyBmdXp6IHRoZSBldGh0b29sIG5ldGxpbmsvaW9jdGwgaW50ZXJmYWNlIG9uIHZhcmlvdXMgZGV2aWNlcyBhbmQgc2VlIGlmIHdlIGNhbiB0cmlnZ2VyIHRoZSBjaGVjay5cblxuVGhlIG5leHQgcG9pbnQgSSBuZWVkIHRvIGNvbnNpZGVyIGlzIHdoZXRoZXIgYSB2aXJ0dWFsIGRyaXZlciBjdXJyZW50bHkgdXNlcyBwaHlsaW5rLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgSSB1bmRlcnN0YW5kIHRoZSBpbXBsZW1lbnRhdGlvbiBjb3JyZWN0bHkuIEkgd2lsbCBoYXZlIHRvIHN0YXJ0IGJ5IGNoZWNraW5nIHdoaWNoIGRyaXZlcnMgYXJlIGN1cnJlbnRseSB1c2luZyBwaHlsaW5rLCB0byBkZXRlcm1pbmUgdGhlIGxpa2VsaWhvb2Qgb2YgYSB2aXJ0dWFsIGRyaXZlciBiZWluZyBpbmNsdWRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTAyMywiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwODoxOTo0Ni45NjAyODM4ODNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxODA2NDM0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHlsaW5rX2NyZWF0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jPTExMjg9c3RhdGljIGludCBhbHRlcmFfdHNlX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmMtMTQxNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmM6MTQxNjpcXHRwcml2LVxcdTAwM2VwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnByaXYtXFx1MDAzZXBoeWxpbmtfY29uZmlnLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYy0xNDE3LVxcdFxcdFxcdFxcdCAgICAgICBvZl9md25vZGVfaGFuZGxlKHByaXYtXFx1MDAzZWRldmljZS1cXHUwMDNlb2Zfbm9kZSksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jPTEwNzQ9c3RhdGljIGludCBhZzcxeHhfcGh5bGlua19zZXR1cChzdHJ1Y3QgYWc3MXh4ICphZylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMTEwOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjExMDk6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZhZy1cXHUwMDNlcGh5bGlua19jb25maWcsIGFnLVxcdTAwM2VwZGV2LVxcdTAwM2VkZXYuZndub2RlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMTExMC1cXHRcXHRcXHRcXHQgYWctXFx1MDAzZXBoeV9pZl9tb2RlLCBcXHUwMDI2YWc3MXh4X3BoeWxpbmtfbWFjX29wcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTEwMjM9c3RhdGljIGludCBtYWNiX21paV9wcm9iZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMDg1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTA4NjpcXHRicC1cXHUwMDNlcGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZicC1cXHUwMDNlcGh5bGlua19jb25maWcsIGJwLVxcdTAwM2VwZGV2LVxcdTAwM2VkZXYuZndub2RlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTA4Ny1cXHRcXHRcXHRcXHQgICAgIGJwLVxcdTAwM2VwaHlfaW50ZXJmYWNlLCBcXHUwMDI2bWFjYl9waHlsaW5rX29wcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jPTIwMj1zdGF0aWMgaW50IGRwYWFfbmV0ZGV2X2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldF9kZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jLTI3NS1cXHRtYWNfZGV2LVxcdTAwM2V1cGRhdGVfc3BlZWQgPSBkcGFhX2V0aF9jZ3Jfc2V0X3NwZWVkO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL2RwYWFfZXRoLmM6Mjc2OlxcdG1hY19kZXYtXFx1MDAzZXBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2bWFjX2Rldi1cXHUwMDNlcGh5bGlua19jb25maWcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvZHBhYV9ldGguYy0yNzctXFx0XFx0XFx0XFx0XFx0ICBkZXZfZndub2RlKG1hY19kZXYtXFx1MDAzZWRldiksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmM9NTYwPWludCBkcGFhMl9tYWNfY29ubmVjdChzdHJ1Y3QgZHBhYTJfbWFjICptYWMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmMtNjI0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYzo2MjU6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZtYWMtXFx1MDAzZXBoeWxpbmtfY29uZmlnLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYy02MjYtXFx0XFx0XFx0XFx0IGRwbWFjX25vZGUsIG1hYy1cXHUwMDNlaWZfbW9kZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYz05NzE9c3RhdGljIGludCBlbmV0YzRfbGlua19pbml0KHN0cnVjdCBlbmV0Y19uZGV2X3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtOTg5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYzo5OTA6XFx0ZXJyID0gZW5ldGNfcGh5bGlua19jcmVhdGUocHJpdiwgbm9kZSwgXFx1MDAyNmVuZXRjX3BsX21hY19vcHMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy05OTEtXFx0aWYgKGVycikge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy05OTItXFx0XFx0ZGV2X2VycihkZXYsIFxcXCJGYWlsZWQgdG8gY3JlYXRlIHBoeWxpbmtcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYzo5OTM6XFx0XFx0Z290byBlcnJfcGh5bGlua19jcmVhdGU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk5NC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtOTk3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYzo5OTg6ZXJyX3BoeWxpbmtfY3JlYXRlOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy05OTktXFx0ZW5ldGNfbWRpb2J1c19kZXN0cm95KHBmKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jPTg0Nz1zdGF0aWMgaW50IGVuZXRjX3BmX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtOTI5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jOjkzMDpcXHRlcnIgPSBlbmV0Y19waHlsaW5rX2NyZWF0ZShwcml2LCBub2RlLCBcXHUwMDI2ZW5ldGNfbWFjX3BoeWxpbmtfb3BzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy05MzEtXFx0aWYgKGVycilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYzo5MzI6XFx0XFx0Z290byBlcnJfcGh5bGlua19jcmVhdGU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtOTMzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtOTQxLVxcdGVuZXRjX3BoeWxpbmtfZGVzdHJveShwcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYzo5NDI6ZXJyX3BoeWxpbmtfY3JlYXRlOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTk0My1cXHRlbmV0Y19tZGlvYnVzX2Rlc3Ryb3kocGYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jPTMxMj1FWFBPUlRfU1lNQk9MX0dQTChlbmV0Y19tZGlvYnVzX2Rlc3Ryb3kpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0zMTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jOjMxNDppbnQgZW5ldGNfcGh5bGlua19jcmVhdGUoc3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdiwgc3RydWN0IGRldmljZV9ub2RlICpub2RlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0zMTUtXFx0XFx0XFx0IGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgKm9wcylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0zMzctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jOjMzODpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnBmLVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgb2ZfZndub2RlX2hhbmRsZShub2RlKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMzM5LVxcdFxcdFxcdFxcdCBwZi1cXHUwMDNlaWZfbW9kZSwgb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0zNDgtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYzozNDk6RVhQT1JUX1NZTUJPTF9HUEwoZW5ldGNfcGh5bGlua19jcmVhdGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0zNTAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmg9MTI9dm9pZCBlbmV0Y19tZGlvYnVzX2Rlc3Ryb3koc3RydWN0IGVuZXRjX3BmICpwZik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5oOjEzOmludCBlbmV0Y19waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5oLTE0LVxcdFxcdFxcdCBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzICpvcHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvZnNfZW5ldC1tYWluLmM9ODUzPXN0YXRpYyBpbnQgZnNfZW5ldF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L2ZzX2VuZXQtbWFpbi5jLTkzMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9mc19lbmV0LW1haW4uYzo5MzM6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZmZXAtXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBkZXZfZndub2RlKGZlcC1cXHUwMDNlZGV2KSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9mc19lbmV0LW1haW4uYy05MzQtXFx0XFx0XFx0XFx0IHBoeV9tb2RlLCBcXHUwMDI2ZnNfZW5ldF9waHlsaW5rX21hY19vcHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3VjY19nZXRoLmM9MzQxOT1zdGF0aWMgaW50IHVjY19nZXRoX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UqIG9mZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3VjY19nZXRoLmMtMzU3My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvdWNjX2dldGguYzozNTc0OlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2dWdldGgtXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBkZXZfZndub2RlKFxcdTAwMjZkZXYtXFx1MDAzZWRldiksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3VjY19nZXRoLmMtMzU3NS1cXHRcXHRcXHRcXHQgcGh5X2ludGVyZmFjZSwgXFx1MDAyNnVnZXRoX21hY19vcHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm5ldGEuYz01NDgwPXN0YXRpYyBpbnQgbXZuZXRhX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bmV0YS5jLTU1OTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm5ldGEuYzo1NTk5OlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2cHAtXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBwZGV2LVxcdTAwM2VkZXYuZndub2RlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZuZXRhLmMtNTYwMC1cXHRcXHRcXHRcXHQgcGh5X21vZGUsIFxcdTAwMjZtdm5ldGFfcGh5bGlua19vcHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMl9tYWluLmM9Njg0MD1zdGF0aWMgaW50IG12cHAyX3BvcnRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDJfbWFpbi5jLTcxNDctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMl9tYWluLmM6NzE0ODpcXHRcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnBvcnQtXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBwb3J0X2Z3bm9kZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYy03MTQ5LVxcdFxcdFxcdFxcdFxcdCBwaHlfbW9kZSwgXFx1MDAyNm12cHAyX3BoeWxpbmtfb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfbWFpbi5jPTM3MD1zdGF0aWMgaW50IHByZXN0ZXJhX3BvcnRfc2ZwX2JpbmQoc3RydWN0IHByZXN0ZXJhX3BvcnQgKnBvcnQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX21haW4uYy00MTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9tYWluLmM6NDE3OlxcdFxcdHBoeV9saW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnBvcnQtXFx1MDAzZXBoeV9jb25maWcsIGZ3bm9kZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX21haW4uYy00MTgtXFx0XFx0XFx0XFx0XFx0ICBQSFlfSU5URVJGQUNFX01PREVfSU5URVJOQUwsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jPTQ4MjM9c3RhdGljIGludCBtdGtfYWRkX21hYyhzdHJ1Y3QgbXRrX2V0aCAqZXRoLCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYy00OTY3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmM6NDk2ODpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNm1hYy1cXHUwMDNlcGh5bGlua19jb25maWcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYy00OTY5LVxcdFxcdFxcdFxcdCBvZl9md25vZGVfaGFuZGxlKG1hYy1cXHUwMDNlb2Zfbm9kZSksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5jPTc0Nj1zdHJ1Y3QgbmV0X2RldmljZSAqZmJuaWNfbmV0ZGV2X2FsbG9jKHN0cnVjdCBmYm5pY19kZXYgKmZiZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmMtODM0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmM6ODM1OlxcdGlmIChmYm5pY19waHlsaW5rX2NyZWF0ZShuZXRkZXYpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuYy04MzYtXFx0XFx0ZnJlZV9uZXRkZXYobmV0ZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2Lmg9MTExPWludCBmYm5pY19waHlsaW5rX2dldF9mZWNwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmgtMTEyLVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgZXRodG9vbF9mZWNwYXJhbSAqZmVjcGFyYW0pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2Lmg6MTEzOmludCBmYm5pY19waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5oLTExNC12b2lkIGZibmljX3BoeWxpbmtfZGVzdHJveShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jPTE3Nz1zdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyBmYm5pY19waHlsaW5rX21hY19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYy0xODYtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmM6MTg3OiAqIGZibmljX3BoeWxpbmtfY3JlYXRlIC0gUGh5bGluayBkZXZpY2UgY3JlYXRpb25cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYy0xODgtICogQG5ldGRldjogTmV0d29yayBEZXZpY2Ugc3RydWN0IHRvIGF0dGFjaCBwaHlsaW5rIGRldmljZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmMtMTk2LSAqKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYzoxOTc6aW50IGZibmljX3BoeWxpbmtfY3JlYXRlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmMtMTk4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jLTIzMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYzoyMzI6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZmYm4tXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBOVUxMLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jLTIzMy1cXHRcXHRcXHRcXHQgZmJuaWNfcGh5bGlua19zZWxlY3RfaW50ZXJmYWNlKGZibi1cXHUwMDNlYXVpKSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYz0zMTQyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzIGxhbjc0M3hfcGh5bGlua19tYWNfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMxNDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjMxNTA6c3RhdGljIGludCBsYW43NDN4X3BoeWxpbmtfY3JlYXRlKHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMxNTEte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMxOTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjMxOTM6XFx0cGwgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2YWRhcHRlci1cXHUwMDNlcGh5bGlua19jb25maWcsIE5VTEwsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMxOTQtXFx0XFx0XFx0ICAgIGFkYXB0ZXItXFx1MDAzZXBoeV9pbnRlcmZhY2UsIFxcdTAwMjZsYW43NDN4X3BoeWxpbmtfbWFjX29wcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9MzY2ND1zdGF0aWMgaW50IGxhbjc0M3hfcGNpZGV2X3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTM3MjMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjM3MjQ6XFx0cmV0ID0gbGFuNzQzeF9waHlsaW5rX2NyZWF0ZShhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzcyNS1cXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9tYWluLmM9NzkxPXN0YXRpYyBpbnQgbGFuOTY2eF9wcm9iZV9wb3J0KHN0cnVjdCBsYW45NjZ4ICpsYW45NjZ4LCB1MzIgcCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfbWFpbi5jLTg1NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X21haW4uYzo4NTY6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZwb3J0LVxcdTAwM2VwaHlsaW5rX2NvbmZpZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X21haW4uYy04NTctXFx0XFx0XFx0XFx0IHBvcnRucCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X21haW4uYz0zMTI9c3RhdGljIGludCBzcGFyeDVfY3JlYXRlX3BvcnQoc3RydWN0IHNwYXJ4NSAqc3Bhcng1LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbi5jLTM4OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmM6Mzg5OlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2c3B4NV9wb3J0LVxcdTAwM2VwaHlsaW5rX2NvbmZpZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmMtMzkwLVxcdFxcdFxcdFxcdCBvZl9md25vZGVfaGFuZGxlKGNvbmZpZy1cXHUwMDNlbm9kZSksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYz0xNzc0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzIG9jZWxvdF9waHlsaW5rX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE3NzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmM6MTc4MDpzdGF0aWMgaW50IG9jZWxvdF9wb3J0X3BoeWxpbmtfY3JlYXRlKHN0cnVjdCBvY2Vsb3QgKm9jZWxvdCwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmMtMTc4MS1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKnBvcnRucClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE4MjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmM6MTgyMTpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnByaXYtXFx1MDAzZXBoeWxpbmtfY29uZmlnLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE4MjItXFx0XFx0XFx0XFx0IG9mX2Z3bm9kZV9oYW5kbGUocG9ydG5wKSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jPTE4NDM9aW50IG9jZWxvdF9wcm9iZV9wb3J0KHN0cnVjdCBvY2Vsb3QgKm9jZWxvdCwgaW50IHBvcnQsIHN0cnVjdCByZWdtYXAgKnRhcmdldCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE4NzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmM6MTg4MDpcXHRlcnIgPSBvY2Vsb3RfcG9ydF9waHlsaW5rX2NyZWF0ZShvY2Vsb3QsIHBvcnQsIHBvcnRucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmMtMTg4MS1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0xMzg3PXN0YXRpYyBpbnQgc3RtbWFjX3BoeWxpbmtfc2V0dXAoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xNDc4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MTQ3OTpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoY29uZmlnLCBkZXZfZndub2RlKHByaXYtXFx1MDAzZWRldmljZSksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xNDgwLVxcdFxcdFxcdFxcdCBwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2VwaHlfaW50ZXJmYWNlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL3RuNDBfcGh5LmM9NDU9aW50IHRuNDBfcGh5X3JlZ2lzdGVyKHN0cnVjdCB0bjQwX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvdG40MF9waHkuYy02Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvdG40MF9waHkuYzo2MzpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoY29uZmlnLCBOVUxMLCBQSFlfSU5URVJGQUNFX01PREVfWEFVSSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvdG40MF9waHkuYy02NC1cXHRcXHRcXHRcXHQgXFx1MDAyNnRuNDBfbWFjX29wcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9hbTY1LWNwc3ctbnVzcy5jPTI3NTc9YW02NV9jcHN3X251c3NfaW5pdF9wb3J0X25kZXYoc3RydWN0IGFtNjVfY3Bzd19jb21tb24gKmNvbW1vbiwgdTMyIHBvcnRfaWR4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvYW02NS1jcHN3LW51c3MuYy0yODQxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2FtNjUtY3Bzdy1udXNzLmM6Mjg0MjpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnBvcnQtXFx1MDAzZXNsYXZlLnBoeWxpbmtfY29uZmlnLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2FtNjUtY3Bzdy1udXNzLmMtMjg0My1cXHRcXHRcXHRcXHQgb2ZfZndub2RlX2hhbmRsZShwb3J0LVxcdTAwM2VzbGF2ZS5wb3J0X25wKSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21kaW8uYz0xMzA9c3RhdGljIGludCBuZ2JlX3BoeWxpbmtfaW5pdChzdHJ1Y3Qgd3ggKnd4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWRpby5jLTE0OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tZGlvLmM6MTUwOlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShjb25maWcsIE5VTEwsIHBoeV9tb2RlLCBcXHUwMDI2bmdiZV9tYWNfb3BzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tZGlvLmMtMTUxLVxcdGlmIChJU19FUlIocGh5bGluaykpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5jPTQ4MD1pbnQgdHhnYmVfcGh5bGlua19pbml0X2FtbChzdHJ1Y3QgdHhnYmUgKnR4Z2JlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9hbWwuYy01MTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9hbWwuYzo1MTE6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKGNvbmZpZywgTlVMTCwgcGh5X21vZGUsIFxcdTAwMjZ0eGdiZV9tYWNfb3BzX2FtbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9hbWwuYy01MTItXFx0aWYgKElTX0VSUihwaHlsaW5rKSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfcGh5LmM9MjY4PXN0YXRpYyBpbnQgdHhnYmVfcGh5bGlua19pbml0KHN0cnVjdCB0eGdiZSAqdHhnYmUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX3BoeS5jLTI5Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX3BoeS5jOjI5MzpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoY29uZmlnLCBmd25vZGUsIHBoeV9tb2RlLCBcXHUwMDI2dHhnYmVfbWFjX29wcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9waHkuYy0yOTQtXFx0aWYgKElTX0VSUihwaHlsaW5rKSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM9Mjc5NT1zdGF0aWMgaW50IGF4aWVuZXRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzExNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjMxMTg6XFx0bHAtXFx1MDAzZXBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2bHAtXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBwZGV2LVxcdTAwM2VkZXYuZndub2RlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzExOS1cXHRcXHRcXHRcXHQgICAgIGxwLVxcdTAwM2VwaHlfbW9kZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzEyMi1cXHRcXHRyZXQgPSBQVFJfRVJSKGxwLVxcdTAwM2VwaHlsaW5rKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjMxMjM6XFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXFwicGh5bGlua19jcmVhdGUgZXJyb3IgKCVpKVxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMxMjQtXFx0XFx0Z290byBjbGVhbnVwX21kaW87XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTUxNj1zdGF0aWMgaW50IHBoeWxpbmtfdmFsaWRhdGVfbWFjX2FuZF9wY3Moc3RydWN0IHBoeWxpbmsgKnBsLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy01MzEtXFx0aWYgKHBjcykge1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NTMyOlxcdFxcdC8qIFRoZSBQQ1MsIGlmIHByZXNlbnQsIG11c3QgYmUgc2V0dXAgYmVmb3JlIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTUzMy1cXHRcXHQgKiBoYXMgYmVlbiBjYWxsZWQuIElmIHRoZSBvcHMgaXMgbm90IGluaXRpYWxpc2VkLCBwcmludCBhblxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xMDM5PXN0YXRpYyBlbnVtIGluYmFuZF90eXBlIHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwNzAtICogcGh5bGlua19wY3NfbmVnX21vZGUoKSAtIGhlbHBlciB0byBkZXRlcm1pbmUgUENTIGluYmFuZCBtb2RlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMDcxOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTA3Mi0gKiBAcGNzOiBhIHBvaW50ZXIgdG8gXFx1MDAyNnN0cnVjdCBwaHlsaW5rX3Bjc1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xNzY4PXN0YXRpYyBpbnQgcGh5bGlua19yZWdpc3Rlcl9zZnAoc3RydWN0IHBoeWxpbmsgKnBsLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNzkyLSAqIHBoeWxpbmtfc2V0X2ZpeGVkX2xpbmsoKSAtIHNldCB0aGUgZml4ZWQgbGlua1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTc5MzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE3OTQtICogQHN0YXRlOiBhIHBvaW50ZXIgdG8gYSBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlLlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xODMwPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc2V0X2ZpeGVkX2xpbmspO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODMyLS8qKlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTgzMzogKiBwaHlsaW5rX2NyZWF0ZSgpIC0gY3JlYXRlIGEgcGh5bGluayBpbnN0YW5jZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTgzNC0gKiBAY29uZmlnOiBhIHBvaW50ZXIgdG8gdGhlIHRhcmdldCBcXHUwMDI2c3RydWN0IHBoeWxpbmtfY29uZmlnXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE4NDctICovXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxODQ4OnN0cnVjdCBwaHlsaW5rICpwaHlsaW5rX2NyZWF0ZShzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE4NDktXFx0XFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5MzQtfVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTkzNTpFWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2NyZWF0ZSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTM2LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTM4LSAqIHBoeWxpbmtfZGVzdHJveSgpIC0gY2xlYW51cCBhbmQgZGVzdHJveSB0aGUgcGh5bGluayBpbnN0YW5jZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTkzOTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5NDAtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTk1NT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2Rlc3Ryb3kpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTU4LSAqIHBoeWxpbmtfZXhwZWN0c19waHkoKSAtIERldGVybWluZSBpZiBwaHlsaW5rIGV4cGVjdHMgYSBwaHkgdG8gYmUgYXR0YWNoZWRcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE5NTk6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTYwLSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyMDQ9c3RhdGljIGludCBwaHlsaW5rX2F0dGFjaF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjI0LSAqIHBoeWxpbmtfY29ubmVjdF9waHkoKSAtIGNvbm5lY3QgYSBQSFkgdG8gdGhlIHBoeWxpbmsgaW5zdGFuY2VcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyMjU6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjI2LSAqIEBwaHk6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5X2RldmljZS5cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjI1OD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2Nvbm5lY3RfcGh5KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI2MS0gKiBwaHlsaW5rX29mX3BoeV9jb25uZWN0KCkgLSBjb25uZWN0IHRoZSBQSFkgc3BlY2lmaWVkIGluIHRoZSBEVCBtb2RlLlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjI2MjogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyNjMtICogQGRuOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IGRldmljZV9ub2RlLlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMjc3PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3QpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjgwLSAqIHBoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0KCkgLSBjb25uZWN0IHRoZSBQSFkgc3BlY2lmaWVkIGluIHRoZSBmd25vZGUuXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMjgxOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI4Mi0gKiBAZndub2RlOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IGZ3bm9kZV9oYW5kbGUuXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIzMzY9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19md25vZGVfcGh5X2Nvbm5lY3QpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMzQwLSAqICAgaW5zdGFuY2UuXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMzQxOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjM0Mi0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMzcxPXN0YXRpYyB2b2lkIHBoeWxpbmtfbGlua19jaGFuZ2VkKHN0cnVjdCBwaHlsaW5rICpwbCwgYm9vbCB1cCwgY29uc3QgY2hhciAqd2hhdClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjM4MC0gKiBwaHlsaW5rX21hY19jaGFuZ2UoKSAtIG5vdGlmeSBwaHlsaW5rIG9mIGEgY2hhbmdlIGluIE1BQyBzdGF0ZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjM4MTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzODItICogQHVwOiBpbmRpY2F0ZXMgd2hldGhlciB0aGUgbGluayBpcyBjdXJyZW50bHkgdXAuXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI0MTM9c3RhdGljIGlycXJldHVybl90IHBoeWxpbmtfbGlua19oYW5kbGVyKGludCBpcnEsIHZvaWQgKmRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI0MjMtICogcGh5bGlua19zdGFydCgpIC0gc3RhcnQgYSBwaHlsaW5rIGluc3RhbmNlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNDI0OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQyNS0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNDg2PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc3RhcnQpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNDg5LSAqIHBoeWxpbmtfc3RvcCgpIC0gc3RvcCBhIHBoeWxpbmsgaW5zdGFuY2VcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI0OTA6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNDkxLSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI1MjA9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19zdG9wKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjUyMy0gKiBwaHlsaW5rX3J4X2Nsa19zdG9wX2Jsb2NrKCkgLSBibG9jayBQSFkgYWJpbGl0eSB0byBzdG9wIHJlY2VpdmUgY2xvY2sgaW4gTFBJXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNTI0OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjUyNS0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNTQ5PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfcnhfY2xrX3N0b3BfYmxvY2spO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNTUyLSAqIHBoeWxpbmtfcnhfY2xrX3N0b3BfdW5ibG9jaygpIC0gdW5ibG9jayBQSFkgYWJpbGl0eSB0byBzdG9wIHJlY2VpdmUgY2xvY2tcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI1NTM6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNTU0LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI1OTE9c3RhdGljIGJvb2wgcGh5bGlua19waHlfcG1fc3BlZWRfY3RybChzdHJ1Y3QgcGh5bGluayAqcGwpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1OTgtICogcGh5bGlua19zdXNwZW5kKCkgLSBoYW5kbGUgYSBuZXR3b3JrIGRldmljZSBzdXNwZW5kIGV2ZW50XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNTk5OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjYwMC0gKiBAbWFjX3dvbDogdHJ1ZSBpZiB0aGUgTUFDIG5lZWRzIHRvIHJlY2VpdmUgcGFja2V0cyBmb3IgV2FrZS1vbi1MYW5cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjY1MD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3N1c3BlbmQpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjUzLSAqIHBoeWxpbmtfcHJlcGFyZV9yZXN1bWUoKSAtIHByZXBhcmUgdG8gcmVzdW1lIGEgbmV0d29yayBkZXZpY2VcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI2NTQ6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjU1LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI2NzU9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19wcmVwYXJlX3Jlc3VtZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI2NzgtICogcGh5bGlua19yZXN1bWUoKSAtIGhhbmRsZSBhIG5ldHdvcmsgZGV2aWNlIHJlc3VtZSBldmVudFxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjY3OTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI2ODAtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjcxOD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3Jlc3VtZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI3MjEtICogcGh5bGlua19ldGh0b29sX2dldF93b2woKSAtIGdldCB0aGUgd2FrZSBvbiBsYW4gcGFyYW1ldGVycyBmb3IgdGhlIFBIWVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjcyMjogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI3MjMtICogQHdvbDogYSBwb2ludGVyIHRvIFxcdTAwMjZzdHJ1Y3QgZXRodG9vbF93b2xpbmZvIHRvIGhvbGQgdGhlIHJlYWQgcGFyYW1ldGVyc1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNzU1PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9nZXRfd29sKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjc1OC0gKiBwaHlsaW5rX2V0aHRvb2xfc2V0X3dvbCgpIC0gc2V0IHdha2Ugb24gbGFuIHBhcmFtZXRlcnNcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI3NTk6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNzYwLSAqIEB3b2w6IGEgcG9pbnRlciB0byBcXHUwMDI2c3RydWN0IGV0aHRvb2xfd29saW5mbyBmb3IgdGhlIGRlc2lyZWQgcGFyYW1ldGVyc1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yODg3PXN0YXRpYyB2b2lkIHBoeWxpbmtfZ2V0X2tzZXR0aW5ncyhjb25zdCBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjkwMi0gKiBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX2dldCgpIC0gZ2V0IHRoZSBjdXJyZW50IGxpbmsgc2V0dGluZ3NcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI5MDM6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yOTA0LSAqIEBrc2V0OiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgdG8gaG9sZCBsaW5rIHNldHRpbmdzXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI5NTU9c3RhdGljIGJvb2wgcGh5bGlua192YWxpZGF0ZV9wY3NfaW5iYW5kX2F1dG9uZWcoc3RydWN0IHBoeWxpbmsgKnBsLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yOTc2LSAqIHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0KCkgLSBzZXQgdGhlIGxpbmsgc2V0dGluZ3NcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI5Nzc6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yOTc4LSAqIEBrc2V0OiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgZm9yIHRoZSBkZXNpcmVkIG1vZGVzXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTMxNDc9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTUwLSAqIHBoeWxpbmtfZXRodG9vbF9ud2F5X3Jlc2V0KCkgLSByZXN0YXJ0IG5lZ290aWF0aW9uXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMTUxOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE1Mi0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTcyPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9ud2F5X3Jlc2V0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE3NS0gKiBwaHlsaW5rX2V0aHRvb2xfZ2V0X3BhdXNlcGFyYW0oKSAtIGdldCB0aGUgY3VycmVudCBwYXVzZSBwYXJhbWV0ZXJzXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMTc2OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE3Ny0gKiBAcGF1c2U6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgZXRodG9vbF9wYXVzZXBhcmFtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTMxODg9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19ldGh0b29sX2dldF9wYXVzZXBhcmFtKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE5MS0gKiBwaHlsaW5rX2V0aHRvb2xfc2V0X3BhdXNlcGFyYW0oKSAtIHNldCB0aGUgY3VycmVudCBwYXVzZSBwYXJhbWV0ZXJzXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMTkyOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE5My0gKiBAcGF1c2U6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgZXRodG9vbF9wYXVzZXBhcmFtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTMyNzQ9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19ldGh0b29sX3NldF9wYXVzZXBhcmFtKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzI3OC0gKiAgIGNvdW50ZXJcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMyNzk6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpLlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzI4MC0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMjk3PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZ2V0X2VlZV9lcnIpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMzAwLSAqIHBoeWxpbmtfZXRodG9vbF9nZXRfZWVlKCkgLSByZWFkIHRoZSBlbmVyZ3kgZWZmaWNpZW50IGV0aGVybmV0IHBhcmFtZXRlcnNcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMzMDE6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMzAyLSAqIEBlZWU6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgZXRodG9vbF9rZWVlIGZvciB0aGUgcmVhZCBwYXJhbWV0ZXJzXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTMzMjM9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19ldGh0b29sX2dldF9lZWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMzI2LSAqIHBoeWxpbmtfZXRodG9vbF9zZXRfZWVlKCkgLSBzZXQgdGhlIGVuZXJneSBlZmZpY2llbnQgZXRoZXJuZXQgcGFyYW1ldGVyc1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzMyNzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMzMjgtICogQGVlZTogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBldGh0b29sX2tlZWUgZm9yIHRoZSBkZXNpcmVkIHBhcmFtZXRlcnNcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzQ5Nz1zdGF0aWMgaW50IHBoeWxpbmtfbWlpX3dyaXRlKHN0cnVjdCBwaHlsaW5rICpwbCwgdW5zaWduZWQgaW50IHBoeV9pZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzUxNS0gKiBwaHlsaW5rX21paV9pb2N0bCgpIC0gZ2VuZXJpYyBtaWkgaW9jdGwgaW50ZXJmYWNlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozNTE2OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzUxNy0gKiBAaWZyOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IGlmcmVxIGZvciBzb2NrZXQgaW9jdGxzXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTM1OTA9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19taWlfaW9jdGwpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNTk0LSAqICAgbGluayBwYXJ0bmVyc1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzU5NTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1OTYtICogQHN5bmM6IHBlcmZvcm0gYWN0aW9uIHN5bmNocm9ub3VzbHlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzYxNT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3NwZWVkX2Rvd24pO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNjE5LSAqICAgcGh5bGlua19zcGVlZF9kb3duKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM2MjA6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNjIxLSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTQzNzI9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19taWlfYzQ1X3Bjc19nZXRfc3RhdGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00Mzc2LSAqXFx0XFx0XFx0XFx0IHdoaWNoIGxvc2VzIHN0YXRlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo0Mzc3OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDM3OC0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz00MzkzPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfcmVwbGF5X2xpbmtfYmVnaW4pO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00Mzk3LSAqXFx0XFx0XFx0ICAgICAgIHdoaWNoIGxvc3Qgc3RhdGVcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjQzOTg6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00Mzk5LSAqXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9Nzk5PXN0YXRpYyBpbnQgYXg4ODc3Ml9waHlsaW5rX3NldHVwKHN0cnVjdCB1c2JuZXQgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04MTktXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgyMDpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnByaXYtXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBkZXYtXFx1MDAzZW5ldC1cXHUwMDNlZGV2LmZ3bm9kZSxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODIxLVxcdFxcdFxcdFxcdCBwaHlfaWZfbW9kZSwgXFx1MDAyNmF4ODg3NzJfcGh5bGlua19tYWNfb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM9Mjc4Nj1zdGF0aWMgaW50IGxhbjc4eHhfcGh5bGlua19zZXR1cChzdHJ1Y3QgbGFuNzh4eF9uZXQgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjgyNS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjI4MjY6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKHBjLCBkZXYtXFx1MDAzZW5ldC1cXHUwMDNlZGV2LmZ3bm9kZSxcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI4MjctXFx0XFx0XFx0XFx0IGRldi1cXHUwMDNlaW50ZXJmYWNlLCBcXHUwMDI2bGFuNzh4eF9waHlsaW5rX21hY19vcHMpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwODoxOTo0Ny41NzgzNTgzMDNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDY5NTcxODg4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipSZWFjaGluZyBOZXR3b3JrIERyaXZlciBGdW5jdGlvbmFsaXR5IGluIGEgVmlydHVhbGl6ZWQgRW52aXJvbm1lbnQqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGJlZW4gbG9va2luZyBhdCBuZXR3b3JrIGRyaXZlcnMsIHNwZWNpZmljYWxseSB0aGUgYGFzaXhfZGV2aWNlcy5jYCBhbmQgYGxhbjc4eHguY2AgZmlsZXMgaW4gYGRyaXZlcnMvbmV0L3VzYi9gLiBBaGEsIHRoZXkncmUgYm90aCB1c2luZyBwaHlsaW5rISBUaGF0J3MgaW50ZXJlc3RpbmcsIGFuZCBpdCBtZWFucyB0aGV5J3JlIGhhbmRsaW5nIFBIWSBpbnRlcmFjdGlvbnMgZm9yIFVTQiBuZXR3b3JrIGludGVyZmFjZXMuIFRoaXMgaXMgZ29vZCBuZXdzIGJlY2F1c2UgdGhlc2UgZHJpdmVycyBhcmUgcHJpbWUgY2FuZGlkYXRlcyBmb3IgdGVzdGluZyB3aXRoaW4gYSB2aXJ0dWFsaXplZCBzZXR1cC4gV2l0aCBzeXprYWxsZXIsIEkgc2hvdWxkIGJlIGFibGUgdG8gZW11bGF0ZSB0aGUgVVNCIGhvc3QgY29udHJvbGxlciB1c2luZyBlaXRoZXIgYSBkdW1teSBIQ0Qgb3IgdGhlIHZoY2lfaGNkLCBtYWtpbmcgdGhlc2UgZHJpdmVycyBlYXNpbHkgcmVhY2hhYmxlLlxuXG5UaGUga2V5IGZ1bmN0aW9uIEkgd2FudCB0byBmb2N1cyBvbiBpcyBgcGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXRgLiBUaGlzIGlzIHRyaWdnZXJlZCB3aGVuIHNvbWVvbmUgYXR0ZW1wdHMgdG8gY29uZmlndXJlIHRoZSBsaW5rIHNldHRpbmdzIHVzaW5nIGV0aHRvb2wuIEkga25vdyB0aGF0IGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB3aXRoaW4gdGhlc2UgZHJpdmVycywgYXMgaXQncyBhIGtub3duIGNhbGwgcG9pbnQgZm9yIGV0aHRvb2wgc2V0dGluZ3MuXG5cbk5vdywgbGV0IG1lIGdvIGJhY2sgdG8gYGFzaXhfZGV2aWNlcy5jYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggY29uZmlndXJhdGlvbiBvcHRpb25zIG9yIHBhcmFtZXRlcnMgc3BlY2lmaWNhbGx5IGVuYWJsZSB0aGUgZnVuY3Rpb25hbGl0eSB0aGF0IGxlYWRzIHRvIGNhbGxpbmcgYHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0YC4gVGhpcyB3aWxsIGd1aWRlIG15IGZ1enppbmcgZWZmb3J0cyBhbmQgaGVscCBtZSB1bmRlcnN0YW5kIHRoZSBjb2RlIHBhdGggdGhhdCdzIG1vc3QgbGlrZWx5IHRvIGJlIGV4cG9zZWQgdG8gdnVsbmVyYWJpbGl0aWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjM2MiwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwODoxOTo1Mi4yNzQwODExMTZaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwMTE2NDUxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhc2l4X2RldmljZXMub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC91c2IvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdXNiL01ha2VmaWxlPTEzPW9iai0kKENPTkZJR19VU0JfTkVUX0FYODgxN1gpXFx0Kz0gYXNpeC5vXFxuZHJpdmVycy9uZXQvdXNiL01ha2VmaWxlOjE0OmFzaXgteSA6PSBhc2l4X2RldmljZXMubyBhc2l4X2NvbW1vbi5vIGF4ODgxNzJhLm9cXG5kcml2ZXJzL25ldC91c2IvTWFrZWZpbGUtMTUtb2JqLSQoQ09ORklHX1VTQl9ORVRfQVg4ODE3OV8xNzhBKSAgICAgICs9IGF4ODgxNzlfMTc4YS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA4OjE5OjUyLjU3NTMwNDcyN1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzMyMzQ4NDM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCB3ZW50OlxuXG4qKkV4YW1pbmluZyBOZXR3b3JrIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gdGhlIGFjdGl2ZSBjb25maWd1cmF0aW9uIGlzIGBVU0JfTkVUX0FYODgxN1hgLiBSaWdodCwgdGhhdCdzIHRoZSBkcml2ZXIgZm9yIGEgc3BlY2lmaWMgVVNCLXRvLUV0aGVybmV0IGFkYXB0ZXIsIGxpa2VseSBiYXNlZCBvbiB0aGUgQVNJWCBBWDg4MTd4IGNoaXBzZXQuIE15IG5leHQgc3RlcCwgYXMgYWx3YXlzLCBpcyB0byBkaXZlIGludG8gdGhlIGNvcmUgaW1wbGVtZW50YXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGRyaXZlciBoYW5kbGVzIGl0cyBpbnRlcmZhY2Ugd2l0aCB0aGUgVVNCIHN0YWNrIGFuZCB0aGUgbmV0d29yayBzdWJzeXN0ZW0uIFRoZXJlZm9yZSwgSSBuZWVkIHRvIGNoZWNrIGBsYW43OHh4LmNgLiBUaGF0J3Mgd2hlcmUgdGhlIGNyaXRpY2FsIGZ1bmN0aW9uYWxpdHkgd2lsbCBiZSBkZWZpbmVkLiBJJ2xsIG5lZWQgdG8gc2NydXRpbml6ZSB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2VzLCBkYXRhIHRyYW5zZmVyIG1lY2hhbmlzbXMsIGFuZCBpbnRlcnJ1cHQgaGFuZGxpbmcgd2l0aGluIHRoYXQgZmlsZSB0byBzZWUgdGhlIGRldGFpbHMgb2YgaXRzIHNwZWNpZmljIGltcGxlbWVudGF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjkyNywiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA4OjE5OjU1LjkwNzY1NzI2MloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE2Njg2MDU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImxhbjc4eHgub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC91c2IvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdXNiL01ha2VmaWxlPTExPW9iai0kKENPTkZJR19VU0JfSFNPKVxcdFxcdCs9IGhzby5vXFxuZHJpdmVycy9uZXQvdXNiL01ha2VmaWxlOjEyOm9iai0kKENPTkZJR19VU0JfTEFONzhYWClcXHQrPSBsYW43OHh4Lm9cXG5kcml2ZXJzL25ldC91c2IvTWFrZWZpbGUtMTMtb2JqLSQoQ09ORklHX1VTQl9ORVRfQVg4ODE3WClcXHQrPSBhc2l4Lm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDg6MTk6NTYuMDI0MzU1MDExWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxNjY4NjgyNDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgYHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0YCBGdW5jdGlvbioqXG5cbk9rYXksIHNvIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24gaXMgc2V0IHRvIGBVU0JfTEFONzhYWGAuIE15IHRhc2sgaXMgdG8gZmlndXJlIG91dCB0aGUgYmVzdCB3YXkgdG8gZnV6eiB0aGlzLiBJdCBsb29rcyBsaWtlIHRoZSBwYXRjaCBpbiBxdWVzdGlvbiBmb2N1c2VzIG9uIGBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldGAuIFRoaXMgaXMgaW50ZXJlc3RpbmcgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIGlzIGFjY2Vzc2libGUgdGhyb3VnaCBldGh0b29sIGlvY3Rscy4gVGhhdCBtZWFucyBpdOKAmXMgYW4gaWRlYWwgdGFyZ2V0IGZvciBmdXp6aW5nLlxuXG5NeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGZvY3VzIGZ1enppbmcgZWZmb3J0cyBvbiB0aGlzIGZ1bmN0aW9uLCBidXQgdGhlbiBpdCBkYXduZWQgb24gbWUuLi4gYHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0YCBpcyBhICpnZW5lcmljKiBmdW5jdGlvbi4gUGVyaGFwcyBpdCB3b3VsZCBiZSBtb3JlIGZydWl0ZnVsIHRvIGV4cGFuZCBteSBzY29wZSB0byB0aGUgZnVuY3Rpb24gaXRzZWxmLiBBbmQgaXMgdGhlcmUgYW55dGhpbmcgc3BlY2lmaWMgdG8gdGhlIHBoeWxpbmsgY29uZmlndXJhdGlvbj8gSSBrbm93IGBQSFlMSU5LYCBpcyBzZWxlY3RlZCBieSB2YXJpb3VzIGRyaXZlcnM7IEkgc2hvdWxkIHByb2JhYmx5IGxvb2sgaW50byB0aGF0IGZ1cnRoZXIuIExldCBtZSBjaGVjayB0aGUgYGRyaXZlcnMvbmV0L3BoeS9LY29uZmlnYCBmaWxlIHRvIHNlZSB3aGF0IGRldGFpbHMgSSBjYW4gZmluZCBvbiBgUEhZTElOS2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3MjU0LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA4OjIwOjAxLjE5MTIyNzMyOFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA2ODI0MTM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBQSFlMSU5LXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTUtXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6Njpjb25maWcgUEhZTElOS1xcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTctXFx0dHJpc3RhdGVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDg6MjA6MDEuMzk4MDYwNzE3WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2NjQyMTkyMjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRW5hYmxpbmcgVVNCIE5ldHdvcmsgRHJpdmVycyBmb3IgUGh5bGluayBJbnRlZ3JhdGlvbioqXG5cbk9rYXksIHNvIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIHRyaXN0YXRlIGNvbmZpZ3VyYXRpb24gaGVyZSwgbWVhbmluZyB0aGUgc2VsZWN0aW9uIGlzIGJhc2VkIG9uIHNvbWUgZHJpdmVyIGlucHV0LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZW5zdXJlIHRoZSBuZWNlc3NhcnkgVVNCIG5ldHdvcmsgZHJpdmVycyBhcmUgYXZhaWxhYmxlIGZvciBwaHlsaW5rLiBUaGVyZWZvcmUsIEkgbmVlZCB0byBlbmFibGUgYm90aCBgVVNCX05FVF9BWDg4MTdYYCBhbmQgYFVTQl9MQU43OFhYYC4gVGhpcyBzaG91bGQgZ3VhcmFudGVlIHRoYXQgcGh5bGluayBjYW4gYmUgcHJvcGVybHkgY29tcGlsZWQgYW5kIGFjY2Vzc2libGUgdGhyb3VnaCB0aGUgVVNCIG5ldHdvcmsgZHJpdmVyIHN1YnN5c3RlbS5cblxuTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoYXQgdmFyaWFibGXigKYgYWgsIHJpZ2h0LCBpdCdzIGBDT05GSUdfVVNCX05FVF9BWDg4MTdYYC4gQWx3YXlzIGdvb2QgdG8gYmUgcHJlY2lzZSB3aGVuIGRlYWxpbmcgd2l0aCB0aGVzZSBrZXJuZWwgY29uZmlncy4gT2theSwgSSBuZWVkIHRvIGNvbmZpcm0gdGhlIEtjb25maWcncyBwcmVzZW5jZSBzbyBJIHdpbGwgY2hlY2sgYGRyaXZlcnMvbmV0L3VzYi9LY29uZmlnYCB0byBjb25maXJtIHRoZXNlIHNldHRpbmdzIGFyZSBwcmVzZW50IGFuZCB3aGVyZSB0aGV5IHNpdCBpbiB0aGUgb3ZlcmFsbCBkcml2ZXIgbGFuZHNjYXBlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzY5MCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwODoyMDowNi4wNjIyODQwNjNaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0ODgzNDYxNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVVNCX05FVF9BWDg4MTdYXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3VzYi9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTEzMj1jb25maWcgVVNCX1VTQk5FVFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTY1LVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjE2Njpjb25maWcgVVNCX05FVF9BWDg4MTdYXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTY3LVxcdHRyaXN0YXRlIFxcXCJBU0lYIEFYODh4eHggQmFzZWQgVVNCIDIuMCBFdGhlcm5ldCBBZGFwdGVyc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDg6MjA6MDYuMjExMTI5MjQ4WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4NjY2MjUyMzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgZGVsaXZlcmVkIGFzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnk6XG5cbioqRGlnZ2luZyBpbnRvIGBVU0JfTEFONzhYWGAqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCB0byBpdC4gTGV0J3Mgc2VlIHdoYXQgd2UncmUgZGVhbGluZyB3aXRoIGhlcmUg4oCTIGxldCdzIHNwZWNpZmljYWxseSB6ZXJvIGluIG9uIHRoYXQgYFVTQl9MQU43OFhYYCBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGN1cnJlbnQgc3RhdHVzIG9mIHRoaXMgcGFydGljdWxhciBpbnRlZ3JhdGlvbi4gSXQncyB0aW1lIHRvIGFzc2VzcyB0aGUgY3VycmVudCBzdGF0ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgxMzEsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwODoyMDoxMS4wNzc3NjA0NzRaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0OTMxNjUwNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVVNCX0xBTjc4WFhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdXNiL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdXNiL0tjb25maWc9OTk9Y29uZmlnIFVTQl9SVEw4MTUyXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xMTItXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MTEzOmNvbmZpZyBVU0JfTEFONzhYWFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTExNC1cXHR0cmlzdGF0ZSBcXFwiTWljcm9jaGlwIExBTjc4WFggQmFzZWQgVVNCIEV0aGVybmV0IEFkYXB0ZXJzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwODoyMDoxMS41MjcwOTAxMjFaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTc1NTc2ODMyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcyBvbiB0aGlzIG5ldHdvcmsgZHJpdmVyIGNvbmZpZ3VyYXRpb246XG5cbioqTmV0d29yayBEcml2ZXIgQ29uZmlndXJhdGlvbiAtIEEgRGVlcCBEaXZlKipcblxuT2theSwgc28gd2UncmUgbG9va2luZyBhdCBlbmFibGluZyBhIGNvdXBsZSBvZiBVU0IgbmV0d29yayBkcml2ZXJzIGhlcmU6IHNwZWNpZmljYWxseSwgYFVTQl9ORVRfQVg4ODE3WGAgYW5kIGBVU0JfTEFONzhYWGAuIFRob3NlIGFyZSBwcmV0dHkgc3RhbmRhcmQgY2hvaWNlcyBmb3IgVVNCLXRvLUV0aGVybmV0IGFkYXB0ZXJzLCBJIGtub3cgdGhlbSB3ZWxsLiBHaXZlbiB0aGF0LCAqKlBIWUxJTksqKiBpcyB0aGUgb2J2aW91cyBjaG9pY2UgdG8gYmUgc2VsZWN0ZWQgZm9yIGl0cyB1bmRlcmx5aW5nIGhhcmR3YXJlIGFic3RyYWN0aW9uIGxheWVyLiBOb3csIGJlZm9yZSBJIGNvbW1pdCB0byBhbnl0aGluZywgSSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSdyZSBub3QgaW5hZHZlcnRlbnRseSBzdGVwcGluZyBvbiBhbnkgb3RoZXIgZHJpdmVycyB0aGF0IG1pZ2h0IGFsc28gZGVwZW5kIG9uIHBoeWxpbmssIGp1c3QgdG8gYXZvaWQgYW55IHVuZXhwZWN0ZWQgY29uZmxpY3RzLiBMZXQncyBzZWUuLi4gbm90aGluZyBpbW1lZGlhdGVseSBzcHJpbmdzIHRvIG1pbmQsIGFuZCBJIGNhbid0IHRoaW5rIG9mIGFueSBvdGhlciBkcml2ZXJzIHRoYXQgZml0IHRoYXQgcGF0dGVybiBvZmYgdGhlIHRvcCBvZiBteSBoZWFkLCBidXQgbGV0J3MgZG8gYSBxdWljayBzY2FuLiBXaXJlbGVzcyBpcyB1c3VhbGx5IGhhbmRsZWQgYnkgYG1hYzgwMjExYCwgc28gSSdsbCBza2lwIG92ZXIgdGhhdCAtIEkgZG9uJ3Qgc2VlIGFueSBvYnZpb3VzIGNvbm5lY3Rpb24uIE9rYXksIGxldCdzIHRyeSBhIHNjYW4gb2YgdGhlIHZpcnR1YWwgZHJpdmVycy4gQWgsIHllcywgdGhlIGBkdW1teWAgZHJpdmVyIGluIGBkcml2ZXJzL25ldC9kdW1teS5jYC4gVGhhdCdzIG5vdCB0aGUgc2FtZSB0aGluZy4gSSdsbCBtYWtlIHN1cmUgdG8gZG91YmxlIGNoZWNrIHRoYXQgSSBoYXZlbid0IGZvcmdvdHRlbiBhbnl0aGluZyBlbHNlLi4uYnV0IEkgdGhpbmsgd2UncmUgZ29vZCB0byBnby5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgzODUsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwODoyMDoxNy4yODI4NjI5MloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQwNTU0MTM2LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHlsaW5rXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2R1bW15LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA4OjIwOjE3LjUyMzQ0MjYxN1oiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTU5OTQ5NTA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKk5hdmlnYXRpbmcgdGhlIExhYnlyaW50aCBvZiBDb2RlKipcblxuSG1tLCBqdXN0IFwiTm8uXCIgZG9lc24ndCBnaXZlIG1lIG11Y2ggdG8gZ28gb24uIE15IGludGVybmFsIGNvbXBpbGVyIGlzIGFscmVhZHkgZmlyaW5nIHVwLCB0cnlpbmcgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dC4uLiBXaGF0J3MgdGhlIHByb2JsZW0/IFdoYXQncyB0aGUgYXJlYSBvZiBpbnRlcmVzdD8gSSBuZWVkIG1vcmUgaW5mb3JtYXRpb24gdG8gZm9ybXVsYXRlIGEgcHJvcGVyIHJlc3BvbnNlIG9yIHBsYW4gb2YgYWN0aW9uLlxuXG5UaGVuLCB0aGVyZSdzIGEgc3BlY2lmaWMgZmlsZSBtZW50aW9uZWQuIEFoLCBva2F5LCBzbyB3ZSBhcmUgdGFsa2luZyBhYm91dCBuZXR3b3JraW5nLCBzcGVjaWZpY2FsbHkgdGhlIFRVTiBkZXZpY2UsIGFuZCB0aGUgQyBjb2RlIHRoYXQgaW1wbGVtZW50cyBpdC4gTXkgbWluZCBpbW1lZGlhdGVseSBzdGFydHMgcHVsbGluZyB1cCBhc3NvY2lhdGlvbnM6IEtlcm5lbC1sZXZlbCBvcGVyYXRpb25zLCBwYWNrZXQgaGFuZGxpbmcsIG1heWJlIHNvbWV0aGluZyByZWxhdGVkIHRvIHZpcnR1YWwgaW50ZXJmYWNlcywgb3IgbWF5YmUgc29tZSBpc3N1ZSBpbiB1c2VyIHNwYWNlIGludGVyYWN0aW9uLiBUaGUgcXVlc3Rpb24gXCJXaGF0IGFib3V0IGBkcml2ZXJzL25ldC90dW4uY2A/XCIgaXMgbGlrZWx5IHJlZmVycmluZyB0byBzb21lIHNwZWNpZmljIGlzc3VlLCBidWcsIG9yIGFyZWEgb2YgY29uY2Vybi4gSSdkIGJlIGxvb2tpbmcgYXQgaXRzIGNvZGUgdG8gZmluZCBvdXQuIFdlJ3ZlIGhvbmVkIGluLiBUaGlzIHdpbGwgYmUgdGhlIGZvY3VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODc5NywiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA4OjIwOjIyLjY4MzM5NTcxNFoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTczNjgyMTIzLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHlsaW5rXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3R1bi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwODoyMDoyMi44NTcwOTYzMDdaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg1ODc0NDk1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIGV4cHJlc3NlZCBhcyB0aG91Z2ggSSdtIHRoZSBvbmUgdGhpbmtpbmcgaXQ6XG5cbioqRm9jdXNpbmcgTXkgQXR0ZW50aW9uKipcblxuTm8sIHRoYXQncyBub3QgcXVpdGUgcmlnaHQuIFdhaXQuLi4gd2hhdCBhYm91dCB0aGF0IGBkcml2ZXJzL25ldC92ZXRoLmNgIGZpbGU/IEknbSBwcmV0dHkgc3VyZSBpdCdzIHJlbGV2YW50IHRvIHRoaXMuIEl0J3MgdGltZSB0byB0YWtlIGEgbG9vayBhdCB0aGUgdmV0aCBkcml2ZXIuIEkgbmVlZCB0byBmb2N1cyB0aGVyZSwgYW5kIG1ha2Ugc3VyZSB0aGF0IHRoaXMgaXMgdGhlIGJlc3QgcGF0aCB0byBmb2xsb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5MDY5LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDg6MjA6MjYuNzE1ODQ1MjkxWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTY2NDgwNDUsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBoeWxpbmtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdmV0aC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwODoyMDoyNi44NzI1MDk1NDZaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjA2Mzk0NzM2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBgcGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXRgIEZ1bmN0aW9uKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIHRoZSBiZXN0IHdheSB0byBhcHByb2FjaCBmdXp6aW5nIHRoaXMgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgaXMgdGhyb3VnaCBVU0IgbmV0d29yayBkcml2ZXJzLCBnaXZlbiBzeXprYWxsZXIncyBhYmlsaXR5IHRvIGVtdWxhdGUgVVNCIGRldmljZXMgdXNpbmcgYGR1bW15X2hjZGAuIEJ1dCBob2xkIG9uLCBsZXQncyByZWZvY3VzLiBUaGUgbW9kaWZpY2F0aW9uIHNlZW1zIHRvIGJlIHNwZWNpZmljYWxseSBpbiB0aGUgYHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0YCBmdW5jdGlvbi5cblxuTm93LCBzaG91bGQgSSBleHBhbmQgdGhlIHNjb3BlIG9yIGZvY3VzPyBMZXQncyBxdWlja2x5IHNlZSBpZiBgcGh5X2NhcHNfbG9va3VwYCBpcyB3b3J0aCBhIGxvb2sgdG9vLiBJdCdzIGp1c3QgYSBsb29rdXAsIHNvIHByb2JhYmx5IG5vdCB0aGUgcHJpbWFyeSB0YXJnZXQgcmlnaHQgbm93LlxuXG5SaWdodCwgdGhlIHBhdGNoIGFkZHJlc3NlcyBhIHZhbGlkYXRpb24gaXNzdWUgaW4gYHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0YCBjb25jZXJuaW5nIHNwZWVkIGFuZCBkdXBsZXguIFBlcmZlY3QhIFRoYXQgY29uZmlybXMgaXQ6IGBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldGAgaXMgKmRlZmluaXRlbHkqIHRoZSBmdW5jdGlvbiB0byBmdXp6LiBUaGF0J3Mgd2hlcmUgdGhlIHZ1bG5lcmFiaWxpdHkgbGllcy5cblxuTGV0J3MgZ28gc3RyYWlnaHQgdG8gdGhlIHNvdXJjZSwgYW5kIHZlcmlmeSB0aGF0IGZ1bmN0aW9uIGluIGBkcml2ZXJzL25ldC9waHkvcGh5bGluay5jYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBjb2RlIHByb3Blcmx5IGJlZm9yZSBzdGFydGluZyB0aGUgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkyMjcsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDg6MjA6MzIuOTM2NDYxNTM2WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjg4OTUzMzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI5NTU9c3RhdGljIGJvb2wgcGh5bGlua192YWxpZGF0ZV9wY3NfaW5iYW5kX2F1dG9uZWcoc3RydWN0IHBoeWxpbmsgKnBsLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yOTc1LS8qKlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6Mjk3NjogKiBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldCgpIC0gc2V0IHRoZSBsaW5rIHNldHRpbmdzXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yOTc3LSAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yOTc5LSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6Mjk4MDppbnQgcGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXQoc3RydWN0IHBoeWxpbmsgKnBsLFxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjk4MS1cXHRcXHRcXHRcXHQgIGNvbnN0IHN0cnVjdCBldGh0b29sX2xpbmtfa3NldHRpbmdzICprc2V0KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTQ2LX1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMxNDc6RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXQpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE0OC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDg6MjA6MzMuMTY1NDE0MzQzWiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgwMDA4MTIxMDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQaHlsaW5rIFBhdGNoKipcblxuT2theSwgc28gdGhlIG1haW4gZnVuY3Rpb24gdGhpcyBwYXRjaCBpcyB0YXJnZXRpbmcgaXMgYHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0YC4gVGhhdCBzZWVtcyBsaWtlIHRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UuIElzIHRoZXJlIGFueXRoaW5nIGVsc2U/IEFoLCBgcGh5X2NhcHNfbG9va3VwYCBpcyBhbHNvIG1lbnRpb25lZCwgYnV0IGl0J3MganVzdCBiZWluZyAqY2FsbGVkKiB3aXRoaW4gdGhlIG1vZGlmaWVkIGZ1bmN0aW9uLCBub3QgZGlyZWN0bHkgYWx0ZXJlZC4gTGV0J3MgbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgaW50ZW50IG9mIHRoaXMgcGF0Y2guXG5cblJpZ2h0LCB0aGUgcGF0Y2ggYWRkcyBhIHZhbGlkYXRpb24gc3RlcCB3aXRoaW4gYHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0YC4gQmVmb3JlIGFwcGx5aW5nIHRoZSByZXF1ZXN0ZWQgc3BlZWQgYW5kIGR1cGxleCBzZXR0aW5ncywgaXQncyBjaGVja2luZyB3aXRoIGBwaHlfY2Fwc19sb29rdXBgIHRvIHNlZSBpZiB0aGUgUEhZIGFjdHVhbGx5IHN1cHBvcnRzIHRoZW0uIFRoaXMgbWFrZXMgc2Vuc2U7IGl0J3MgYSBndWFyZCBhZ2FpbnN0IHNldHRpbmcgdXAgY29uZmlndXJhdGlvbnMgdGhhdCB0aGUgaGFyZHdhcmUgY2FuJ3QgaGFuZGxlLiBQcmV2ZW50cyBpbnZhbGlkIGNvbmZpZ3VyYXRpb25zLlxuXG5UaGUgY29kZSBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBTcGVjaWZpY2FsbHksIHRoZSBwYXRjaCBtZW50aW9ucyBVU0IgbmV0d29yayBkcml2ZXJzIGxldmVyYWdpbmcgcGh5bGluayDigJMgdGhpbmdzIGxpa2UgQVNJWCBhbmQgTEFONzhYWCwgYW5kIHRoZWlyIGVtdWxhdGVkIGNvdW50ZXJwYXJ0cyB2aWEgVVNCIGdhZGdldCBhbmQgZHVtbXlfaGNkLiBUaGVzZSBhcmUgZ29vZCB0YXJnZXRzIGZvciB0ZXN0aW5nIGFuZCB2YWxpZGF0aW9uLlxuXG5TbywgbGV0J3Mga2VlcCB0aGUgZm9jdXMgb24gYHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0YC4gS2V5IHN5bWJvbHM6IGBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldGAuXG5cbkkgbmVlZCB0byBtYWtlIHN1cmUgbXkgdGVzdGluZyBzZXR1cCBpbmNsdWRlcyB0aG9zZSBkcml2ZXJzIHRoYXQgdXNlIHRoaXMgZnVuY3Rpb24uIExldCdzIHNlZS4uLiBgVVNCX05FVF9BWDg4MTdYYCDigJMgaXQgbG9va3MgbGlrZSBgZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jYCBkb2VzIGluZGVlZCBjYWxsIGBwaHlsaW5rX2NyZWF0ZWAsIHNvIHRoYXQncyBnb29kLiBBbmQgYFVTQl9MQU43OFhYYCDigJMgeWVwLCBgZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguY2AgaXMgYWxzbyBjYWxsaW5nIGBwaHlsaW5rX2NyZWF0ZWAuXG5cbkFueXRoaW5nIGVsc2UgSSBzaG91bGQgY29uc2lkZXI/IEFoLCBgVVNCX1VTQk5FVGAuIFNpbmNlIGBVU0JfTkVUX0FYODgxN1hgIGRlcGVuZHMgb24gdGhhdCwgaXQgbWFrZXMgc2Vuc2UgdG8gaW5jbHVkZSBpdCBpbiB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiBmb3IgdGVzdGluZyBhbmQgY292ZXJhZ2UuIFN5emthbGxlciB1c3VhbGx5IGhhcyBgVVNCX1VTQk5FVGAgZW5hYmxlZCwgYnV0IEknbGwgbWFrZSBzdXJlIHRvIGV4cGxpY2l0bHkgaW5jbHVkZSBpdC4gT2theSwgdGhhdCBzaG91bGQgYmUgZW5vdWdoIGZvciBub3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5OTgwLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDg2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA4OjIwOjQxLjE2NjIzMjc3NFoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY0Mzc5Njg0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlcGVuZHMgb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdXNiL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NT1jb21tZW50IFxcXCJIb3N0LXNpZGUgVVNCIHN1cHBvcnQgaXMgbmVlZGVkIGZvciBVU0IgTmV0d29yayBBZGFwdGVyIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6NjpcXHRkZXBlbmRzIG9uICFVU0IgXFx1MDAyNlxcdTAwMjYgTkVUXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNy1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz04PW1lbnVjb25maWcgVVNCX05FVF9EUklWRVJTXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xMC1cXHRkZWZhdWx0IFVTQiBpZiBVU0JcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzoxMTpcXHRkZXBlbmRzIG9uIFVTQiBcXHUwMDI2XFx1MDAyNiBORVRcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xMi1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTE2Nj1jb25maWcgVVNCX05FVF9BWDg4MTdYXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTY3LVxcdHRyaXN0YXRlIFxcXCJBU0lYIEFYODh4eHggQmFzZWQgVVNCIDIuMCBFdGhlcm5ldCBBZGFwdGVyc1xcXCJcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzoxNjg6XFx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTY5LVxcdHNlbGVjdCBDUkMzMlxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTk0LVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjE5NTpcXHQgIFRoaXMgZHJpdmVyIGNyZWF0ZXMgYW4gaW50ZXJmYWNlIG5hbWVkIFxcXCJldGhYXFxcIiwgd2hlcmUgWCBkZXBlbmRzIG9uXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTk2LVxcdCAgd2hhdCBvdGhlciBuZXR3b3JraW5nIGRldmljZXMgeW91IGhhdmUgaW4gdXNlLlxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MTk4PWNvbmZpZyBVU0JfTkVUX0FYODgxNzlfMTc4QVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTE5OS1cXHR0cmlzdGF0ZSBcXFwiQVNJWCBBWDg4MTc5LzE3OEEgVVNCIDMuMC8yLjAgdG8gR2lnYWJpdCBFdGhlcm5ldFxcXCJcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzoyMDA6XFx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMjAxLVxcdHNlbGVjdCBDUkMzMlxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMjEyLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjIxMzpcXHQgIFRoaXMgZHJpdmVyIGNyZWF0ZXMgYW4gaW50ZXJmYWNlIG5hbWVkIFxcXCJldGhYXFxcIiwgd2hlcmUgWCBkZXBlbmRzIG9uXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMjE0LVxcdCAgd2hhdCBvdGhlciBuZXR3b3JraW5nIGRldmljZXMgeW91IGhhdmUgaW4gdXNlLlxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MjE2PWNvbmZpZyBVU0JfTkVUX0NEQ0VUSEVSXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMjE3LVxcdHRyaXN0YXRlIFxcXCJDREMgRXRoZXJuZXQgc3VwcG9ydCAoc21hcnQgZGV2aWNlcyBzdWNoIGFzIGNhYmxlIG1vZGVtcylcXFwiXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MjE4OlxcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTIxOS1cXHRkZWZhdWx0IHlcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTIzOC1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzoyMzk6XFx0ICBUaGlzIGRyaXZlciBjcmVhdGVzIGFuIGludGVyZmFjZSBuYW1lZCBcXFwiZXRoWFxcXCIsIHdoZXJlIFggZGVwZW5kcyBvblxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTI0MC1cXHQgIHdoYXQgb3RoZXIgbmV0d29ya2luZyBkZXZpY2VzIHlvdSBoYXZlIGluIHVzZS4gIEhvd2V2ZXIsIGlmIHRoZVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MjQ0PWNvbmZpZyBVU0JfTkVUX0NEQ19FRU1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0yNDUtXFx0dHJpc3RhdGUgXFxcIkNEQyBFRU0gc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzoyNDY6XFx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMjQ3LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTI1Mi1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzoyNTM6XFx0ICBUaGlzIGRyaXZlciBjcmVhdGVzIGFuIGludGVyZmFjZSBuYW1lZCBcXFwiZXRoWFxcXCIsIHdoZXJlIFggZGVwZW5kcyBvblxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTI1NC1cXHQgIHdoYXQgb3RoZXIgbmV0d29ya2luZyBkZXZpY2VzIHlvdSBoYXZlIGluIHVzZS4gIEhvd2V2ZXIsIGlmIHRoZVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MjU4PWNvbmZpZyBVU0JfTkVUX0NEQ19OQ01cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0yNTktXFx0dHJpc3RhdGUgXFxcIkNEQyBOQ00gc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzoyNjA6XFx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMjYxLVxcdHNlbGVjdCBVU0JfTkVUX0NEQ0VUSEVSXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz0yNzg9Y29uZmlnIFVTQl9ORVRfSFVBV0VJX0NEQ19OQ01cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0yNzktXFx0dHJpc3RhdGUgXFxcIkh1YXdlaSBOQ00gZW1iZWRkZWQgQVQgY2hhbm5lbCBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjI4MDpcXHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0yODEtXFx0c2VsZWN0IFVTQl9XRE1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTI5Mz1jb25maWcgVVNCX05FVF9DRENfTUJJTVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTI5NC1cXHR0cmlzdGF0ZSBcXFwiQ0RDIE1CSU0gc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzoyOTU6XFx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMjk2LVxcdHNlbGVjdCBVU0JfV0RNXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz0zMTE9Y29uZmlnIFVTQl9ORVRfRE05NjAxXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMzEyLVxcdHRyaXN0YXRlIFxcXCJEYXZpY29tIERNOTZ4eCBiYXNlZCBVU0IgMTAvMTAwIGV0aGVybmV0IGRldmljZXNcXFwiXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MzEzOlxcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTMxNC1cXHRzZWxlY3QgQ1JDMzJcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTMxOT1jb25maWcgVVNCX05FVF9TUjk3MDBcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0zMjAtXFx0dHJpc3RhdGUgXFxcIkNvcmVDaGlwLXN6IFNSOTcwMCBiYXNlZCBVU0IgMS4xIDEwLzEwMCBldGhlcm5ldCBkZXZpY2VzXFxcIlxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjMyMTpcXHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0zMjItXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MzI2PWNvbmZpZyBVU0JfTkVUX1NSOTgwMFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTMyNy1cXHR0cmlzdGF0ZSBcXFwiQ29yZUNoaXAtc3ogU1I5ODAwIGJhc2VkIFVTQiAyLjAgMTAvMTAwIGV0aGVybmV0IGRldmljZXNcXFwiXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MzI4OlxcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTMyOS1cXHRzZWxlY3QgQ1JDMzJcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTM0MT1jb25maWcgVVNCX05FVF9TTVNDNzVYWFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTM0Mi1cXHR0cmlzdGF0ZSBcXFwiU01TQyBMQU43NVhYIGJhc2VkIFVTQiAyLjAgZ2lnYWJpdCBldGhlcm5ldCBkZXZpY2VzXFxcIlxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjM0MzpcXHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0zNDQtXFx0c2VsZWN0IEJJVFJFVkVSU0VcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTM1MT1jb25maWcgVVNCX05FVF9TTVNDOTVYWFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTM1Mi1cXHR0cmlzdGF0ZSBcXFwiU01TQyBMQU45NVhYIGJhc2VkIFVTQiAyLjAgMTAvMTAwIGV0aGVybmV0IGRldmljZXNcXFwiXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MzUzOlxcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTM1NC1cXHRzZWxlY3QgUEhZTElCXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz0zNjQ9Y29uZmlnIFVTQl9ORVRfR0w2MjBBXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMzY1LVxcdHRyaXN0YXRlIFxcXCJHZW5lU3lzIEdMNjIwVVNCLUEgYmFzZWQgY2FibGVzXFxcIlxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjM2NjpcXHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0zNjctXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MzczPWNvbmZpZyBVU0JfTkVUX05FVDEwODBcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTM3NS1cXHRkZWZhdWx0IHlcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzozNzY6XFx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMzc3LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTM4Mj1jb25maWcgVVNCX05FVF9QTFVTQlxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMzg1LVxcdCMgYXJlIGV2ZXIgcmVzb2x2ZWQgLi4uIHRoZW4gcmVtb3ZlIFxcXCJleHBlcmltZW50YWxcXFwiXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6Mzg2OlxcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTM4Ny1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz0zOTE9Y29uZmlnIFVTQl9ORVRfTUNTNzgzMFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTM5Mi1cXHR0cmlzdGF0ZSBcXFwiTW9zQ2hpcCBNQ1M3ODMwIGJhc2VkIEV0aGVybmV0IGFkYXB0ZXJzXFxcIlxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjM5MzpcXHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0zOTQtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9Mzk5PWNvbmZpZyBVU0JfTkVUX1JORElTX0hPU1RcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy00MDAtXFx0dHJpc3RhdGUgXFxcIkhvc3QgZm9yIFJORElTIGFuZCBBY3RpdmVTeW5jIGRldmljZXNcXFwiXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6NDAxOlxcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTQwMi1cXHRzZWxlY3QgVVNCX05FVF9DRENFVEhFUlxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NDE0PWNvbmZpZyBVU0JfTkVUX0NEQ19TVUJTRVRfRU5BQkxFXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNDE1LVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6NDE2OlxcdGRlcGVuZHMgb24gVVNCX05FVF9DRENfU1VCU0VUXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNDE3LVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTQxOD1jb25maWcgVVNCX05FVF9DRENfU1VCU0VUXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNDE5LVxcdHRyaXN0YXRlIFxcXCJTaW1wbGUgVVNCIE5ldHdvcmsgTGlua3MgKENEQyBFdGhlcm5ldCBzdWJzZXQpXFxcIlxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjQyMDpcXHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy00MjEtXFx0ZGVmYXVsdCB5XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz00MzM9Y29uZmlnIFVTQl9BTElfTTU2MzJcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy00MzQtXFx0Ym9vbCBcXFwiQUxpIE01NjMyIGJhc2VkICdVU0IgMi4wIERhdGEgTGluaycgY2FibGVzXFxcIlxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjQzNTpcXHRkZXBlbmRzIG9uIFVTQl9ORVRfQ0RDX1NVQlNFVFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTQzNi1cXHRzZWxlY3QgVVNCX05FVF9DRENfU1VCU0VUX0VOQUJMRVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NDQxPWNvbmZpZyBVU0JfQU4yNzIwXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNDQyLVxcdGJvb2wgXFxcIkFuY2hvckNoaXBzIDI3MjAgYmFzZWQgY2FibGVzIChYaXJjb20gUEdVTkVULCAuLi4pXFxcIlxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjQ0MzpcXHRkZXBlbmRzIG9uIFVTQl9ORVRfQ0RDX1NVQlNFVFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTQ0NC1cXHRzZWxlY3QgVVNCX05FVF9DRENfU1VCU0VUX0VOQUJMRVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NDUwPWNvbmZpZyBVU0JfQkVMS0lOXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNDUxLVxcdGJvb2wgXFxcImVURUsgYmFzZWQgaG9zdC10by1ob3N0IGNhYmxlcyAoQWR2YW5jZSwgQmVsa2luLCAuLi4pXFxcIlxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjQ1MjpcXHRkZXBlbmRzIG9uIFVTQl9ORVRfQ0RDX1NVQlNFVFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTQ1My1cXHRzZWxlY3QgVVNCX05FVF9DRENfU1VCU0VUX0VOQUJMRVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NDYwPWNvbmZpZyBVU0JfQVJNTElOVVhcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy00NjEtXFx0Ym9vbCBcXFwiRW1iZWRkZWQgQVJNIExpbnV4IGxpbmtzIChpUGFxLCAuLi4pXFxcIlxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjQ2MjpcXHRkZXBlbmRzIG9uIFVTQl9ORVRfQ0RDX1NVQlNFVFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTQ2My1cXHRzZWxlY3QgVVNCX05FVF9DRENfU1VCU0VUX0VOQUJMRVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NDc4PWNvbmZpZyBVU0JfRVBTT04yODg4XFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNDc5LVxcdGJvb2wgXFxcIkVwc29uIDI4ODggYmFzZWQgZmlybXdhcmUgKERFVkVMT1BNRU5UKVxcXCJcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo0ODA6XFx0ZGVwZW5kcyBvbiBVU0JfTkVUX0NEQ19TVUJTRVRcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy00ODEtXFx0c2VsZWN0IFVTQl9ORVRfQ0RDX1NVQlNFVF9FTkFCTEVcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTQ4Nj1jb25maWcgVVNCX0tDMjE5MFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTQ4Ny1cXHRib29sIFxcXCJLVCBUZWNobm9sb2d5IEtDMjE5MCBiYXNlZCBjYWJsZXMgKEluc3RhTmV0KVxcXCJcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo0ODg6XFx0ZGVwZW5kcyBvbiBVU0JfTkVUX0NEQ19TVUJTRVRcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy00ODktXFx0c2VsZWN0IFVTQl9ORVRfQ0RDX1NVQlNFVF9FTkFCTEVcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTQ5ND1jb25maWcgVVNCX05FVF9aQVVSVVNcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy00OTUtXFx0dHJpc3RhdGUgXFxcIlNoYXJwIFphdXJ1cyAoc3RvY2sgUk9NcykgYW5kIGNvbXBhdGlibGVcXFwiXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6NDk2OlxcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTQ5Ny1cXHRzZWxlY3QgVVNCX05FVF9DRENFVEhFUlxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NTEyPWNvbmZpZyBVU0JfTkVUX0NYODIzMTBfRVRIXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNTEzLVxcdHRyaXN0YXRlIFxcXCJDb25leGFudCBDWDgyMzEwIFVTQiBldGhlcm5ldCBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjUxNDpcXHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy01MTUtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NTIwPWNvbmZpZyBVU0JfTkVUX0tBTE1JQVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTUyMS1cXHR0cmlzdGF0ZSBcXFwiU2Ftc3VuZyBLYWxtaWEgYmFzZWQgTFRFIFVTQiBtb2RlbVxcXCJcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo1MjI6XFx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNTIzLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTUzMD1jb25maWcgVVNCX05FVF9RTUlfV1dBTlxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTUzMS1cXHR0cmlzdGF0ZSBcXFwiUU1JIFdXQU4gZHJpdmVyIGZvciBRdWFsY29tbSBNU00gYmFzZWQgM0cgYW5kIExURSBtb2RlbXNcXFwiXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6NTMyOlxcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTUzMy1cXHRzZWxlY3QgVVNCX1dETVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NTUyPWNvbmZpZyBVU0JfSFNPXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNTUzLVxcdHRyaXN0YXRlIFxcXCJPcHRpb24gVVNCIEhpZ2ggU3BlZWQgTW9iaWxlIERldmljZXNcXFwiXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6NTU0OlxcdGRlcGVuZHMgb24gVVNCIFxcdTAwMjZcXHUwMDI2IFJGS0lMTCBcXHUwMDI2XFx1MDAyNiBUVFlcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy01NTUtXFx0ZGVmYXVsdCBuXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz01NjM9Y29uZmlnIFVTQl9ORVRfSU5UNTFYMVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTU2NC1cXHR0cmlzdGF0ZSBcXFwiSW50ZWxsb24gUExDIGJhc2VkIHVzYiBhZGFwdGVyXFxcIlxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjU2NTpcXHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy01NjYtXFx0c2VsZWN0IFVTQl9ORVRfQ0RDRVRIRVJcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTU3Mj1jb25maWcgVVNCX0NEQ19QSE9ORVRcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy01NzMtXFx0dHJpc3RhdGUgXFxcIkNEQyBQaG9uZXQgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo1NzQ6XFx0ZGVwZW5kcyBvbiBQSE9ORVQgXFx1MDAyNlxcdTAwMjYgVVNCX1VTQk5FVFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTU3NS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz01OTA9Y29uZmlnIFVTQl9TSUVSUkFfTkVUXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNTkxLVxcdHRyaXN0YXRlIFxcXCJVU0ItdG8tV1dBTiBEcml2ZXIgZm9yIFNpZXJyYSBXaXJlbGVzcyBtb2RlbXNcXFwiXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6NTkyOlxcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTU5My1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz01OTk9Y29uZmlnIFVTQl9WTDYwMFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTYwMC1cXHR0cmlzdGF0ZSBcXFwiTEcgVkw2MDAgbW9kZW0gZG9uZ2xlXFxcIlxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjYwMTpcXHRkZXBlbmRzIG9uIFVTQl9ORVRfQ0RDRVRIRVIgXFx1MDAyNlxcdTAwMjYgVFRZXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNjAyLVxcdHNlbGVjdCBVU0JfQUNNXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz02MTQ9Y29uZmlnIFVTQl9ORVRfQ0g5MjAwXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNjE1LVxcdHRyaXN0YXRlIFxcXCJRaW5nSGVuZyBDSDkyMDAgVVNCIGV0aGVybmV0IHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6NjE2OlxcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTYxNy1cXHRzZWxlY3QgTUlJXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz02MjU9Y29uZmlnIFVTQl9ORVRfQVFDMTExXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNjI2LVxcdHRyaXN0YXRlIFxcXCJBcXVhbnRpYSBBUXRpb24gVVNCIHRvIDUvMi41R2JFIENvbnRyb2xsZXJzIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6NjI3OlxcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTYyOC1cXHRzZWxlY3QgQ1JDMzJcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTYzNj1jb25maWcgVVNCX1JUTDgxNTNfRUNNXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNjM3LVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6NjM4OlxcdGRlcGVuZHMgb24gVVNCX05FVF9DRENFVEhFUiBcXHUwMDI2XFx1MDAyNiAoVVNCX1JUTDgxNTIgfHwgVVNCX1JUTDgxNTI9bilcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy02MzktXFx0ZGVmYXVsdCB5XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA4OjIwOjQxLjMzMDYyNDQ2OFoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4ODYzNjIyOTY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIFVTQiBOZXR3b3JrIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgaXQgbG9va3MgbGlrZSB0aGUgYFVTQl9MQU43OFhYYCBkcml2ZXIgZm9yIE1pY3JvY2hpcCBMQU43OFhYLWJhc2VkIFVTQiBFdGhlcm5ldCBhZGFwdGVycyBpcyBpbmRlcGVuZGVudCBvZiBgVVNCX1VTQk5FVGAuIEhvd2V2ZXIsIHRoZSBgVVNCX05FVF9BWDg4MTdYYCBkcml2ZXIsIGZvciBBU0lYIEFYODh4eHgtYmFzZWQgVVNCIDIuMCBFdGhlcm5ldCBhZGFwdGVycywgKmRvZXMqIGRlcGVuZCBvbiBgVVNCX1VTQk5FVGAuXG5cblRoZXJlZm9yZSwgdG8gZW5zdXJlIGJvdGggdHlwZXMgb2YgYWRhcHRlcnMgYXJlIGVuYWJsZWQgYW5kIGZ1bmN0aW9uYWwsIGFuZCBnaXZlbiB0aGF0IHRoZSBjb2RlIHBhdGhzIHBvdGVudGlhbGx5IGludGVyc2VjdCwgSSBzaG91bGQgZW5hYmxlIGBVU0JfVVNCTkVUYCwgYWxvbmcgd2l0aCBgVVNCX05FVF9BWDg4MTdYYCBhbmQgYFVTQl9MQU43OFhYYC4gVGhhdCBzZWVtcyBsaWtlIGEgbG9naWNhbCBmaXJzdCBzdGVwLlxuXG5Ob3csIHRoZSBpbnRlcmVzdGluZyBiaXQuIFRoZSBwYXRjaCBzZWVtcyB0byBmb2N1cyBvbiBgcGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXRgLiBJdCdzIGFuIGV4cG9ydGVkIHN5bWJvbCwgd2hpY2ggc3VnZ2VzdHMgaXQncyB3aWRlbHkgdXNlZCBieSBuZXR3b3JrIGRyaXZlcnMuIFRoYXQgbWVhbnMgaXQncyBkZWZpbml0ZWx5IHJlYWNoYWJsZSBjb2RlLiBNeSBpbnR1aXRpb24gaXMgdGhhdCB0aGlzIGlzIHRoZSBrZXkgdG8gZm9jdXMgb24sIGFuZCB0aGlzIG5lZWRzIHRvIGJlIGludmVzdGlnYXRlZCBkdXJpbmcgZnV6emluZy5cblxuTGV0IG1lIHN1bW1hcml6ZSBteSBmaW5kaW5ncywgbWFraW5nIGl0IGNsZWFyIHdoYXQgYWN0aW9ucyBJIG5lZWQgdG8gdGFrZTpcblxuKiAgICoqV29ydGhGdXp6aW5nOioqIFRydWUgLSB0aGlzIGlzIGRlZmluaXRlbHkgd29ydGggb3VyIGF0dGVudGlvbi5cbiogICAqKkZvY3VzU3ltYm9sczoqKiBcXFtcInBoeWxpbmtcXF9ldGh0b29sXFxfa3NldHRpbmdzXFxfc2V0XCJcXF0gLSB0aGF0J3MgdGhlIHByaW1hcnkgdGFyZ2V0LlxuKiAgICoqRW5hYmxlQ29uZmlnczoqKiBcXFtcIlVTQlxcX1VTQk5FVFwiLCBcIlVTQlxcX05FVFxcX0FYODgxN1hcIiwgXCJVU0JcXF9MQU43OFhYXCJcXF0gLSB0byBlbnN1cmUgdGhlIHJlbGV2YW50IGNvZGUgcGF0aHMgYXJlIGFjdGl2ZS5cbiogICAqKlJlYXNvbmluZzoqKiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIHZhbGlkYXRpb24gY2hlY2sgd2l0aGluIGBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldGAgdG8gcHJldmVudCBzZXR0aW5nIGludmFsaWQgc3BlZWQgYW5kIGR1cGxleCBzZXR0aW5ncyB2aWEgYGV0aHRvb2xgLCB3aGljaCBpcyBhIGdvb2QgcHJvdGVjdGlvbiBzdHJhdGVneSBmb3IgdGhvc2UgZGV2aWNlcy4gVGhpcyBjb2RlIGNhbiBiZSByZWFjaGVkIHZpYSBVU0IgbmV0d29yayBkcml2ZXJzIHRoYXQgdXRpbGl6ZSBwaHlsaW5rIChzdWNoIGFzIEFTSVgsIExBTjc4WFgpIGFuZCB0aGlzIGNvZGUgY2FuIGJlIHJlYWNoZWQgdW5kZXIgdmlydHVhbGl6YXRpb24gYXMgd2VsbC5cblxuT2theSwgd2l0aCB0aGF0IGNsZWFyLCBJJ20gcmVhZHkgdG8gcHJvY2VlZC4gSSdsbCBjYWxsIGBzZXQtcmVzdWx0c2Agbm93IGFuZCBtb3ZlIG9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTAzOCwiT3V0cHV0VG9rZW5zIjoxNjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDg6MjA6NTAuMTk0MjUxMjA1WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjgxMzA3MzkyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJVU0JfVVNCTkVUXCIsXG4gICAgXCJVU0JfTkVUX0FYODgxN1hcIixcbiAgICBcIlVTQl9MQU43OFhYXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgdmFsaWRhdGlvbiBjaGVjayBpbiBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldCB0byBlbnN1cmUgdGhhdCB0aGUgcmVxdWVzdGVkIHNwZWVkIGFuZCBkdXBsZXggc2V0dGluZ3MgYXJlIHN1cHBvcnRlZCBieSB0aGUgUEhZIGNhcGFiaWxpdGllcyBiZWZvcmUgYXBwbHlpbmcgdGhlbS4gVGhpcyBwcmV2ZW50cyBpbnZhbGlkIGNvbmZpZ3VyYXRpb25zIGZyb20gYmVpbmcgc2V0IHZpYSBldGh0b29sLiBUaGUgY29kZSBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHRocm91Z2ggVVNCIG5ldHdvcmsgZHJpdmVycyB0aGF0IHVzZSBwaHlsaW5rIChlLmcuLCBBU0lYLCBMQU43OFhYKSB3aGljaCBjYW4gYmUgZW11bGF0ZWQgdmlhIFVTQiBnYWRnZXQvZHVtbXlfaGNkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlVTQl9VU0JORVRcIixcbiAgICBcIlVTQl9ORVRfQVg4ODE3WFwiLFxuICAgIFwiVVNCX0xBTjc4WFhcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSB2YWxpZGF0aW9uIGNoZWNrIGluIHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0IHRvIGVuc3VyZSB0aGF0IHRoZSByZXF1ZXN0ZWQgc3BlZWQgYW5kIGR1cGxleCBzZXR0aW5ncyBhcmUgc3VwcG9ydGVkIGJ5IHRoZSBQSFkgY2FwYWJpbGl0aWVzIGJlZm9yZSBhcHBseWluZyB0aGVtLiBUaGlzIHByZXZlbnRzIGludmFsaWQgY29uZmlndXJhdGlvbnMgZnJvbSBiZWluZyBzZXQgdmlhIGV0aHRvb2wuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdGhyb3VnaCBVU0IgbmV0d29yayBkcml2ZXJzIHRoYXQgdXNlIHBoeWxpbmsgKGUuZy4sIEFTSVgsIExBTjc4WFgpIHdoaWNoIGNhbiBiZSBlbXVsYXRlZCB2aWEgVVNCIGdhZGdldC9kdW1teV9oY2QuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow85dxk[1] Phase: Succeeded StartedAt: 2026-07-01 08:21:02 +0000 UTC FinishedAt: 2026-07-01 08:21:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow85dxk[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-01 08:21:03 +0000 UTC FinishedAt: 2026-07-01 08:21:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow85dxk[2] Phase: Succeeded StartedAt: 2026-07-01 08:21:03 +0000 UTC FinishedAt: 2026-07-01 10:09:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow85dxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_AX8817X","USB_LAN78XX"],"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":["phylink_ethtool_ksettings_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_AX8817X","USB_LAN78XX"],"series_id":"d16b0cb9-d7a7-409c-9cdf-0dcc16f65c0a","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-07-01 08:21:03 +0000 UTC FinishedAt: 2026-07-01 10:09:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_AX8817X","USB_LAN78XX"],"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":["phylink_ethtool_ksettings_set"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_AX8817X","USB_LAN78XX"],"series_id":"d16b0cb9-d7a7-409c-9cdf-0dcc16f65c0a","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-workflow85dxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_AX8817X","USB_LAN78XX"],"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":["phylink_ethtool_ksettings_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_AX8817X","USB_LAN78XX"],"series_id":"d16b0cb9-d7a7-409c-9cdf-0dcc16f65c0a","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-07-01 08:21:03 +0000 UTC FinishedAt: 2026-07-01 08:22:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflow85dxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_AX8817X","USB_LAN78XX"],"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":["phylink_ethtool_ksettings_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_AX8817X","USB_LAN78XX"],"series_id":"d16b0cb9-d7a7-409c-9cdf-0dcc16f65c0a","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-07-01 08:21:03 +0000 UTC FinishedAt: 2026-07-01 08:21:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_AX8817X","USB_LAN78XX"],"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-workflow85dxk/series-workflow85dxk-convert-artifact-646260992/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow85dxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_AX8817X","USB_LAN78XX"],"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":["phylink_ethtool_ksettings_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_AX8817X","USB_LAN78XX"],"series_id":"d16b0cb9-d7a7-409c-9cdf-0dcc16f65c0a","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-07-01 08:22:11 +0000 UTC FinishedAt: 2026-07-01 08:49:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow85dxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_AX8817X","USB_LAN78XX"],"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":["phylink_ethtool_ksettings_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_AX8817X","USB_LAN78XX"],"series_id":"d16b0cb9-d7a7-409c-9cdf-0dcc16f65c0a","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-07-01 08:22:11 +0000 UTC FinishedAt: 2026-07-01 08:49:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*45400b48-858a-4eca-a98e-2e1739c03e13,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-workflow85dxk/series-workflow85dxk-convert-artifact-646260992/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": "0c639537-e657-4803-9cae-fd14f92802d1", "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-workflow85dxk/series-workflow85dxk-build-action-76706758/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow85dxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_AX8817X","USB_LAN78XX"],"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":["phylink_ethtool_ksettings_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_AX8817X","USB_LAN78XX"],"series_id":"d16b0cb9-d7a7-409c-9cdf-0dcc16f65c0a","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-07-01 08:22:11 +0000 UTC FinishedAt: 2026-07-01 08:47:16 +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:*45400b48-858a-4eca-a98e-2e1739c03e13,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-workflow85dxk/series-workflow85dxk-convert-artifact-646260992/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": "0c639537-e657-4803-9cae-fd14f92802d1", "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-workflow85dxk/series-workflow85dxk-build-action-76706758/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow85dxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_AX8817X","USB_LAN78XX"],"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":["phylink_ethtool_ksettings_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_AX8817X","USB_LAN78XX"],"series_id":"d16b0cb9-d7a7-409c-9cdf-0dcc16f65c0a","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-07-01 08:49:08 +0000 UTC FinishedAt: 2026-07-01 08:49:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow85dxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_AX8817X","USB_LAN78XX"],"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":["phylink_ethtool_ksettings_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_AX8817X","USB_LAN78XX"],"series_id":"d16b0cb9-d7a7-409c-9cdf-0dcc16f65c0a","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-07-01 08:49:08 +0000 UTC FinishedAt: 2026-07-01 08:49:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow85dxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_AX8817X","USB_LAN78XX"],"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":["phylink_ethtool_ksettings_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_AX8817X","USB_LAN78XX"],"series_id":"d16b0cb9-d7a7-409c-9cdf-0dcc16f65c0a","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-07-01 08:49:08 +0000 UTC FinishedAt: 2026-07-01 08:49:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow85dxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_AX8817X","USB_LAN78XX"],"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":["phylink_ethtool_ksettings_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_AX8817X","USB_LAN78XX"],"series_id":"d16b0cb9-d7a7-409c-9cdf-0dcc16f65c0a","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-07-01 08:49:08 +0000 UTC FinishedAt: 2026-07-01 08:49:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_AX8817X","USB_LAN78XX"],"series_id":"d16b0cb9-d7a7-409c-9cdf-0dcc16f65c0a","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-workflow85dxk/series-workflow85dxk-convert-artifact-4107008679/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow85dxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_AX8817X","USB_LAN78XX"],"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":["phylink_ethtool_ksettings_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_AX8817X","USB_LAN78XX"],"series_id":"d16b0cb9-d7a7-409c-9cdf-0dcc16f65c0a","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-07-01 08:49:30 +0000 UTC FinishedAt: 2026-07-01 08:51:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow85dxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_AX8817X","USB_LAN78XX"],"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":["phylink_ethtool_ksettings_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_AX8817X","USB_LAN78XX"],"series_id":"d16b0cb9-d7a7-409c-9cdf-0dcc16f65c0a","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-07-01 08:49:30 +0000 UTC FinishedAt: 2026-07-01 08:51:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*0c639537-e657-4803-9cae-fd14f92802d1,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-workflow85dxk/series-workflow85dxk-build-action-76706758/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-workflow85dxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_AX8817X","USB_LAN78XX"],"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":["phylink_ethtool_ksettings_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_AX8817X","USB_LAN78XX"],"series_id":"d16b0cb9-d7a7-409c-9cdf-0dcc16f65c0a","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-07-01 08:51:38 +0000 UTC FinishedAt: 2026-07-01 08:51:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow85dxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_AX8817X","USB_LAN78XX"],"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":["phylink_ethtool_ksettings_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_AX8817X","USB_LAN78XX"],"series_id":"d16b0cb9-d7a7-409c-9cdf-0dcc16f65c0a","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-07-01 08:51:38 +0000 UTC FinishedAt: 2026-07-01 08:51:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow85dxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_AX8817X","USB_LAN78XX"],"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":["phylink_ethtool_ksettings_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_AX8817X","USB_LAN78XX"],"series_id":"d16b0cb9-d7a7-409c-9cdf-0dcc16f65c0a","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-07-01 08:51:38 +0000 UTC FinishedAt: 2026-07-01 09:17:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow85dxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_AX8817X","USB_LAN78XX"],"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":["phylink_ethtool_ksettings_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_AX8817X","USB_LAN78XX"],"series_id":"d16b0cb9-d7a7-409c-9cdf-0dcc16f65c0a","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-07-01 08:51:38 +0000 UTC FinishedAt: 2026-07-01 09:17:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*45400b48-858a-4eca-a98e-2e1739c03e13,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-workflow85dxk/series-workflow85dxk-convert-artifact-4107008679/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": "25f0e84e-4b8e-45f7-8596-f30c00edf980", "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-workflow85dxk/series-workflow85dxk-build-action-1159490603/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow85dxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_AX8817X","USB_LAN78XX"],"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":["phylink_ethtool_ksettings_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_AX8817X","USB_LAN78XX"],"series_id":"d16b0cb9-d7a7-409c-9cdf-0dcc16f65c0a","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-07-01 08:51:38 +0000 UTC FinishedAt: 2026-07-01 09:17:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*45400b48-858a-4eca-a98e-2e1739c03e13,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-workflow85dxk/series-workflow85dxk-convert-artifact-4107008679/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": "25f0e84e-4b8e-45f7-8596-f30c00edf980", "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-workflow85dxk/series-workflow85dxk-build-action-1159490603/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow85dxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_AX8817X","USB_LAN78XX"],"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":["phylink_ethtool_ksettings_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_AX8817X","USB_LAN78XX"],"series_id":"d16b0cb9-d7a7-409c-9cdf-0dcc16f65c0a","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-07-01 09:17:10 +0000 UTC FinishedAt: 2026-07-01 09:17:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow85dxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_AX8817X","USB_LAN78XX"],"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":["phylink_ethtool_ksettings_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_AX8817X","USB_LAN78XX"],"series_id":"d16b0cb9-d7a7-409c-9cdf-0dcc16f65c0a","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-07-01 09:17:10 +0000 UTC FinishedAt: 2026-07-01 09:17:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow85dxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_AX8817X","USB_LAN78XX"],"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":["phylink_ethtool_ksettings_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_AX8817X","USB_LAN78XX"],"series_id":"d16b0cb9-d7a7-409c-9cdf-0dcc16f65c0a","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-07-01 09:17:10 +0000 UTC FinishedAt: 2026-07-01 09:19:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflow85dxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_AX8817X","USB_LAN78XX"],"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":["phylink_ethtool_ksettings_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_AX8817X","USB_LAN78XX"],"series_id":"d16b0cb9-d7a7-409c-9cdf-0dcc16f65c0a","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-07-01 09:17:10 +0000 UTC FinishedAt: 2026-07-01 09:19:12 +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:*25f0e84e-4b8e-45f7-8596-f30c00edf980,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-workflow85dxk/series-workflow85dxk-build-action-1159490603/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-workflow85dxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_AX8817X","USB_LAN78XX"],"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":["phylink_ethtool_ksettings_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_AX8817X","USB_LAN78XX"],"series_id":"d16b0cb9-d7a7-409c-9cdf-0dcc16f65c0a","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-07-01 09:19:22 +0000 UTC FinishedAt: 2026-07-01 10:09:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow85dxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_AX8817X","USB_LAN78XX"],"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":["phylink_ethtool_ksettings_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_AX8817X","USB_LAN78XX"],"series_id":"d16b0cb9-d7a7-409c-9cdf-0dcc16f65c0a","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-07-01 09:19:22 +0000 UTC FinishedAt: 2026-07-01 10:09:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phylink_ethtool_ksettings_set"],"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:*0c639537-e657-4803-9cae-fd14f92802d1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*25f0e84e-4b8e-45f7-8596-f30c00edf980,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-workflow85dxk/series-workflow85dxk-build-action-76706758/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-workflow85dxk/series-workflow85dxk-build-action-1159490603/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow85dxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_AX8817X","USB_LAN78XX"],"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":["phylink_ethtool_ksettings_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_AX8817X","USB_LAN78XX"],"series_id":"d16b0cb9-d7a7-409c-9cdf-0dcc16f65c0a","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-07-01 09:19:22 +0000 UTC FinishedAt: 2026-07-01 09:20:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow85dxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_AX8817X","USB_LAN78XX"],"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":["phylink_ethtool_ksettings_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_AX8817X","USB_LAN78XX"],"series_id":"d16b0cb9-d7a7-409c-9cdf-0dcc16f65c0a","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-07-01 09:19:22 +0000 UTC FinishedAt: 2026-07-01 09:19:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phylink_ethtool_ksettings_set"],"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-workflow85dxk/series-workflow85dxk-convert-artifact-3489632256/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow85dxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_AX8817X","USB_LAN78XX"],"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":["phylink_ethtool_ksettings_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_AX8817X","USB_LAN78XX"],"series_id":"d16b0cb9-d7a7-409c-9cdf-0dcc16f65c0a","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-07-01 09:19:22 +0000 UTC FinishedAt: 2026-07-01 09:19:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflow85dxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_AX8817X","USB_LAN78XX"],"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":["phylink_ethtool_ksettings_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_AX8817X","USB_LAN78XX"],"series_id":"d16b0cb9-d7a7-409c-9cdf-0dcc16f65c0a","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-07-01 09:19:22 +0000 UTC FinishedAt: 2026-07-01 09:19:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflow85dxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_AX8817X","USB_LAN78XX"],"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":["phylink_ethtool_ksettings_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_AX8817X","USB_LAN78XX"],"series_id":"d16b0cb9-d7a7-409c-9cdf-0dcc16f65c0a","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-07-01 09:19:22 +0000 UTC FinishedAt: 2026-07-01 09:19:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflow85dxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_AX8817X","USB_LAN78XX"],"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":["phylink_ethtool_ksettings_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_AX8817X","USB_LAN78XX"],"series_id":"d16b0cb9-d7a7-409c-9cdf-0dcc16f65c0a","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-07-01 09:20:08 +0000 UTC FinishedAt: 2026-07-01 10:09:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow85dxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_AX8817X","USB_LAN78XX"],"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":["phylink_ethtool_ksettings_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f456c1922c49e6be5ce407ddb74a6e61af5b65cf","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_USBNET","USB_NET_AX8817X","USB_LAN78XX"],"series_id":"d16b0cb9-d7a7-409c-9cdf-0dcc16f65c0a","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-07-01 09:20:08 +0000 UTC FinishedAt: 2026-07-01 10:09:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*0c639537-e657-4803-9cae-fd14f92802d1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*25f0e84e-4b8e-45f7-8596-f30c00edf980,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-workflow85dxk/series-workflow85dxk-build-action-76706758/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-workflow85dxk/series-workflow85dxk-build-action-1159490603/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-workflow85dxk/series-workflow85dxk-convert-artifact-3489632256/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,}