Name: series-workflowkmk2x Phase: Succeeded StartedAt: 2026-07-13 15:00:57 +0000 UTC FinishedAt: 2026-07-13 17:11:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkmk2x[0] Phase: Succeeded StartedAt: 2026-07-13 15:00:57 +0000 UTC FinishedAt: 2026-07-13 15:41:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkmk2x[0].run-triage Phase: Succeeded StartedAt: 2026-07-13 15:00:57 +0000 UTC FinishedAt: 2026-07-13 15:41:30 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "a13c140cc289c0b7b3770bce5b3ad42ab35074aa", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT7996E" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "a13c140cc289c0b7b3770bce5b3ad42ab35074aa", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT7996E" ], "series_id": "84347f93-0a22-45a9-9a4a-ef1d0cf52ffc" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mt7996_eeprom_check_or_use_default" ], "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+CgkJCTx0ZD4yMDI2LzA3LzEzIDE1OjM0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+N208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzk5NkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc5OTZfZWVwcm9tX2NoZWNrX29yX3VzZV9kZWZhdWx0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgZm9yIGZpcm13YXJlIHNpemUgaW4gYG10Nzk5Nl9lZXByb21fY2hlY2tfb3JfdXNlX2RlZmF1bHRgIHRvIHByZXZlbnQgYW4gb3V0LW9mLWJvdW5kcyByZWFkIGR1cmluZyBgbWVtY3B5YC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBkcml2ZXImIzM5O3MgaW5pdGlhbGl6YXRpb24gcGF0aC4gVGhlIGRyaXZlciBpcyBhIFBDSSBkcml2ZXIgd2hpY2ggY2FuIGJlIGZ1enplZCBieSBzeXprYWxsZXImIzM5O3MgUENJIGZ1enplciwgYW5kIHRoZSBmaXJtd2FyZSBsb2FkaW5nIGNhbiBiZSBpbnRlcmNlcHRlZCBhbmQgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDE1OjM0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYjI4YWYzZmU2Mjk3ZGRhMmM3NTU1ZjZkODhlZDc1OWVmNmNhOWQ5ZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVsIDEzIDE1OjM0OjAwIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZWVwcm9tLmNcbmluZGV4IGFjMDVmN2Q3NWQ2M2Q2Li5lYzMzNTIxZGI1NjRiZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9lZXByb20uY1xuQEAgLTE1MCw2ICYjNDM7MTUwLDEyIEBAIG10Nzk5Nl9lZXByb21fY2hlY2tfb3JfdXNlX2RlZmF1bHQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldiwgYm9vbCB1c2VfZGVmYXVsdClcbiBcdFx0Z290byBvdXQ7XG4gXHR9XG4gXG4mIzQzO1x0aWYgKGZ3LVx1MDAzZXNpemUgXHUwMDNjIE1UNzk5Nl9FRVBST01fU0laRSkge1xuJiM0MztcdFx0ZGV2X2VycihkZXYtXHUwMDNlbXQ3Ni5kZXYsIFwmIzM0O0ludmFsaWQgZGVmYXVsdCBiaW4gc2l6ZVxcblwmIzM0Oyk7XG4mIzQzO1x0XHRyZXQgPSAtRUlOVkFMO1xuJiM0MztcdFx0Z290byBvdXQ7XG4mIzQzO1x0fVxuJiM0MztcbiBcdGlmICghdXNlX2RlZmF1bHQgXHUwMDI2XHUwMDI2IG10Nzk5Nl9lZXByb21fdmFyaWFudF92YWxpZChkZXYsIGZ3LVx1MDAzZWRhdGEpKVxuIFx0XHRnb3RvIG91dDtcbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxNTozNDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT43bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNVDc5OTZFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXQ3OTk2X2VlcHJvbV9jaGVja19vcl91c2VfZGVmYXVsdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIGZvciBmaXJtd2FyZSBzaXplIGluIGBtdDc5OTZfZWVwcm9tX2NoZWNrX29yX3VzZV9kZWZhdWx0YCB0byBwcmV2ZW50IGFuIG91dC1vZi1ib3VuZHMgcmVhZCBkdXJpbmcgYG1lbWNweWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgZHJpdmVyJiMzOTtzIGluaXRpYWxpemF0aW9uIHBhdGguIFRoZSBkcml2ZXIgaXMgYSBQQ0kgZHJpdmVyIHdoaWNoIGNhbiBiZSBmdXp6ZWQgYnkgc3l6a2FsbGVyJiMzOTtzIFBDSSBmdXp6ZXIsIGFuZCB0aGUgZmlybXdhcmUgbG9hZGluZyBjYW4gYmUgaW50ZXJjZXB0ZWQgYW5kIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYjI4YWYzZmU2Mjk3ZGRhMmM3NTU1ZjZkODhlZDc1OWVmNmNhOWQ5ZQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gSnVsIDEzIDE1OjM0OjAwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZWVwcm9tLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9lZXByb20uYwppbmRleCBhYzA1ZjdkNzVkNjNkNi4uZWMzMzUyMWRiNTY0YmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jCkBAIC0xNTAsNiAmIzQzOzE1MCwxMiBAQCBtdDc5OTZfZWVwcm9tX2NoZWNrX29yX3VzZV9kZWZhdWx0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIGJvb2wgdXNlX2RlZmF1bHQpCiAJCWdvdG8gb3V0OwogCX0KIAomIzQzOwlpZiAoZnctJmd0O3NpemUgJmx0OyBNVDc5OTZfRUVQUk9NX1NJWkUpIHsKJiM0MzsJCWRldl9lcnIoZGV2LSZndDttdDc2LmRldiwgJiMzNDtJbnZhbGlkIGRlZmF1bHQgYmluIHNpemVcbiYjMzQ7KTsKJiM0MzsJCXJldCA9IC1FSU5WQUw7CiYjNDM7CQlnb3RvIG91dDsKJiM0MzsJfQomIzQzOwogCWlmICghdXNlX2RlZmF1bHQgJmFtcDsmYW1wOyBtdDc5OTZfZWVwcm9tX3ZhcmlhbnRfdmFsaWQoZGV2LCBmdy0mZ3Q7ZGF0YSkpCiAJCWdvdG8gb3V0OwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDE1OjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5MjQKCQkJCQkJCW91dHB1dDogNTkKCQkJCQkJCXRob3VnaHRzOiA4NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQb3RlbnRpYWwgRUVQUk9NIFZ1bG5lcmFiaWxpdHkqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0b3VjaGVzIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZWVwcm9tLmNgIGZpbGUuIEl0IHNlZW1zIHRvIGJlIGFkZGluZyBhIHNpemUgY2hlY2s6IGBpZiAoZnctJmd0O3NpemUgJmx0OyBNVDc5OTZfRUVQUk9NX1NJWkUpYCB3aXRoaW4gdGhlIGBtdDc5OTZfZWVwcm9tX2NoZWNrX29yX3VzZV9kZWZhdWx0YCBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB3aGF0JiMzOTtzIHRoZSByYXRpb25hbGUgYmVoaW5kIHRoaXM/IFdoYXQgdnVsbmVyYWJpbGl0eSBpcyB0aGlzIGFkZHJlc3NpbmcsIG9yIGF0IGxlYXN0IGF0dGVtcHRpbmcgdG8gbWl0aWdhdGU/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmdW5jdGlvbiYjMzk7cyBwdXJwb3NlIGFuZCB0aGUgc3Vycm91bmRpbmcgY29kZSB0byBkZXRlcm1pbmUgaXRzIGVmZmVjdGl2ZW5lc3MgYW5kIHRoZSBzcGVjaWZpYyBpc3N1ZSBpdCYjMzk7cyB0cnlpbmcgdG8gcmVzb2x2ZS4gVGhpcyBjaGVjayBsaWtlbHkgYWltcyB0byBwcmV2ZW50IHRoZSBjb2RlIGZyb20gb3BlcmF0aW5nIG9uIEVFUFJPTSBkYXRhIHRoYXQmIzM5O3Mgc21hbGxlciB0aGFuIHRoZSBleHBlY3RlZCBzaXplIG9mIGEgTVQ3OTk2IEVFUFJPTS4gTm93LCBJIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBjb2RlIHRoYXQgY2FsbHMgdGhpcyBmdW5jdGlvbiBhbmQgZmlndXJlIG91dCB3aGF0IGhhcHBlbnMgd2hlbiB0aGUgZmlybXdhcmUgc2l6ZSBpcyB0b28gc21hbGw7IHdoYXQgYXJlIHRoZSBwb3RlbnRpYWwgY29uc2VxdWVuY2VzPyBJcyBpdCBhIGJ1ZmZlciBvdmVyZmxvdyByaXNrPyBDb3VsZCB0aGlzIGludHJvZHVjZSBzb21lIG90aGVyIGtpbmQgb2YgdnVsbmVyYWJpbGl0eSBvciBmdW5jdGlvbmFsIHByb2JsZW0/IExldCYjMzk7cyB0cmFjZSBpdCBhbmQgZmluZCBvdXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTU6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTk2X2VlcHJvbV9jaGVja19vcl91c2VfZGVmYXVsdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jPTEzNj1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9lZXByb20uYzoxMzc6bXQ3OTk2X2VlcHJvbV9jaGVja19vcl91c2VfZGVmYXVsdChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2LCBib29sIHVzZV9kZWZhdWx0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZWVwcm9tLmMtMTM4LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9lZXByb20uYz0xNzI9c3RhdGljIGludCBtdDc5OTZfZWVwcm9tX2xvYWQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9lZXByb20uYy0yMzItb3V0OlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZWVwcm9tLmM6MjMzOlx0cmV0dXJuIG10Nzk5Nl9lZXByb21fY2hlY2tfb3JfdXNlX2RlZmF1bHQoZGV2LCB1c2VfZGVmYXVsdCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9lZXByb20uYy0yMzQtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDE1OjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2MTkKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAxMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgRmlybXdhcmUgU2l6ZSBDaGVjayBpbiB0aGUgTVQ3OTk2IFdpLUZpIERyaXZlcioqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBjaGVjazogYGZ3LSZndDtzaXplICZsdDsgTVQ3OTk2X0VFUFJPTV9TSVpFYC4gSXQmIzM5O3MgYSBmaXJtd2FyZSBzaXplIGNoZWNrLCB3aGljaCBpcyBhIGdvb2QgdGhpbmcgdG8gaGF2ZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCAmIzM0O0lzIHRoaXMgY2hlY2sgZXZlbiByZWxldmFudCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHM/JiMzNDsgV2UgYWx3YXlzIGhhdmUgdG8gY29uc2lkZXIgdGhlIGF0dGFjayBzdXJmYWNlLiBUaGlzIGlzIGNyaXRpY2FsIHdoZW4gdGhpbmtpbmcgYWJvdXQgZnV6emluZy4KCk5vdywgYG10Nzk5NmAuLi4gcmlnaHQsIHRoYXQmIzM5O3MgYSBNZWRpYXRlayBXaS1GaSBkcml2ZXIuIEFuZCB0aGF0IG1ha2VzIG1lIHdvbmRlciwgJiMzNDtDYW4gdGhpcyBiZSBmdXp6ZWQ/JiMzNDsgVGhhdCYjMzk7cyB0aGUgbmV4dCBsb2dpY2FsIHF1ZXN0aW9uLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgV2ktRmkgZHJpdmVycyBvZnRlbiBsZW5kIHRoZW1zZWx2ZXMgdG8gZnV6emluZyBpZiB0aGV5IGludGVyYWN0IHdpdGggdGhlIGhhcmR3YXJlIHZpYSBgbWFjODAyMTFfaHdzaW1gIG9yLCBldmVuIGJldHRlciwgYXJlIFVTQi9QQ0llIGRldmljZXMgd2hlcmUgZW11bGF0aW9uIGlzIHBvc3NpYmxlLiBTbywgdGhlIHF1ZXN0aW9uIGJlY29tZXM6ICYjMzQ7SXMgYG10Nzk5NmAgYSBQQ0llIG9yIFVTQiBkcml2ZXI/JiMzNDsgVGhhdCYjMzk7cyB0aGUga2V5IHRvIGZpZ3VyaW5nIG91dCBob3cgcHJhY3RpY2FsIGZ1enppbmcgdGhpcyBzaXplIGNoZWNrIHdvdWxkIGJlLiBHb3R0YSBmaWd1cmUgdGhhdCBvdXQgZmlyc3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTU6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttb2R1bGVfLipkcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDE1OjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMzYKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOgoKKipEaXZpbmcgaW50byB0aGUgTVQ3OTk2IEZpbGVzKioKCk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJJiMzOTttIGdvaW5nIHRvIG5hdmlnYXRlIGRpcmVjdGx5IGludG8gdGhlIGhlYXJ0IG9mIHRoZSBtYXR0ZXIg4oCTIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvYCBkaXJlY3RvcnkuIFRoaXMgaXMgd2hlcmUgdGhlIG1hZ2ljIGhhcHBlbnMsIHRoZSBndXRzIG9mIHRoZSBNVDc5OTYgd2lyZWxlc3MgZHJpdmVyIGFyZSBzdXJlbHkgbG9jYXRlZCBoZXJlLiBJIGtub3cgdGhpcyBhcmNoaXRlY3R1cmUsIEkga25vdyB3aGF0IEkmIzM5O20gbG9va2luZyBmb3Ig4oCTIHRoZSBjcml0aWNhbCBjb250cm9sIHBvaW50cywgdGhlIGtleSBkYXRhIHN0cnVjdHVyZXMsIHRoZSBjcnVjaWFsIGZ1bmN0aW9ucyB0aGF0IG1ha2UgdGhpcyBjaGlwIGh1bS4gTGV04oCZcyBzZWUgd2hhdCBnZW1zIGFyZSB3YWl0aW5nIHRvIGJlIHVuY292ZXJlZC4gTGV0JiMzOTtzIHNlZSBpZiB0aGVyZSBhcmUgYW55IGNoYW5nZXMgZnJvbSBteSBsYXN0IHBlcnVzYWwsIGFuZCB3aGF0IHNvcnQgb2YgbmV3IG51YW5jZXMgSSBtaWdodCBkaXNjb3Zlci4gSSYjMzk7bSBpdGNoaW5nIHRvIGRpZyBpbiEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxNTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmNvZGVzZWFyY2gtZGlyLWluZGV4PC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtEaXImIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZXMmIzM0OzogWwogICAgJiMzNDtjb3JlZHVtcC5jJiMzNDssCiAgICAmIzM0O2NvcmVkdW1wLmgmIzM0OywKICAgICYjMzQ7ZGVidWdmcy5jJiMzNDssCiAgICAmIzM0O2RtYS5jJiMzNDssCiAgICAmIzM0O2VlcHJvbS5jJiMzNDssCiAgICAmIzM0O2VlcHJvbS5oJiMzNDssCiAgICAmIzM0O2luaXQuYyYjMzQ7LAogICAgJiMzNDttYWMuYyYjMzQ7LAogICAgJiMzNDttYWMuaCYjMzQ7LAogICAgJiMzNDttYWluLmMmIzM0OywKICAgICYjMzQ7bWN1LmMmIzM0OywKICAgICYjMzQ7bWN1LmgmIzM0OywKICAgICYjMzQ7bW1pby5jJiMzNDssCiAgICAmIzM0O210Nzk5Ni5oJiMzNDssCiAgICAmIzM0O25wdS5jJiMzNDssCiAgICAmIzM0O3BjaS5jJiMzNDssCiAgICAmIzM0O3JlZ3MuaCYjMzQ7CiAgXSwKICAmIzM0O1N1YmRpcnMmIzM0OzogbnVsbAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTU6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQxMQoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDU5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUENJIERyaXZlcioqCgpPa2F5LCBzbyBJIHNlZSB0aGlzIGNvZGUgaXMgZGVhbGluZyB3aXRoIGBwY2kuY2AuIFJpZ2h0IGF3YXksIHRoYXQgdGVsbHMgbWUgd2UmIzM5O3JlIGxvb2tpbmcgYXQgYSBQQ0kgZHJpdmVyLiBUaGUgbmF0dXJhbCBxdWVzdGlvbiBpcywgY2FuIHdlIGZ1enogdGhpcz8gQW5kIHRoZSBhbnN3ZXIsIGFzIEkga25vdywgaXMgYSByZXNvdW5kaW5nIHllcyAtIHN5emthbGxlciBoYXMgYSBQQ0kgZnV6emVyLCB3aGljaCBtYWtlcyB0aGlzIHBhcnRpY3VsYXJseSBpbnRlcmVzdGluZy4gTm93LCBteSBuZXh0IHN0ZXAgaXMgY2xlYXIuIEkmIzM5O2xsIGRpdmUgaW50byB0aGUgYHBjaS5jYCBjb2RlIGl0c2VsZi4gSSBuZWVkIHRvIHF1aWNrbHkgYXNzZXNzIGlmIGl0JiMzOTtzIGEgcmVsYXRpdmVseSBzdGFuZGFyZCBvciBhIG1vcmUgc3BlY2lhbGl6ZWQgUENJIGRyaXZlciwgYW5kIGlmIHRoZXJlIG1pZ2h0IGJlIGFueXRoaW5nIHBhcnRpY3VsYXJseSBqdWljeSB0aGVyZSB0aGF0IHdhcnJhbnRzIG15IGV4cGVydCBhdHRlbnRpb24uIFRoaXMgaW5pdGlhbCBzY2FuIHdpbGwgZ3VpZGUgaG93IG11Y2ggZGVlcGVyIEkgbmVlZCB0byBnbyBhbmQgdGhlIGJlc3QgYXBwcm9hY2ggZm9yIGZ1enppbmcgdGhpcyBzcGVjaWZpYyBkcml2ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDE1OjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BjaV9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9wY2kuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9wY2kuYz0yMzM9c3RhdGljIHZvaWQgbXQ3OTk2X3BjaV9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvcGNpLmMtMjQzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvcGNpLmM6MjQ0OnN0cnVjdCBwY2lfZHJpdmVyIG10Nzk5Nl9oaWZfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvcGNpLmMtMjQ1LVx0Lm5hbWVcdFx0PSBLQlVJTERfTU9ETkFNRSBcJiMzNDtfaGlmXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L3BjaS5jLTI1MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L3BjaS5jOjI1MTpzdHJ1Y3QgcGNpX2RyaXZlciBtdDc5OTZfcGNpX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L3BjaS5jLTI1Mi1cdC5uYW1lXHRcdD0gS0JVSUxEX01PRE5BTUUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDE1OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5NzUKCQkJCQkJCW91dHB1dDogNTEKCQkJCQkJCXRob3VnaHRzOiA3MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgVGhpcyBQQ0kgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgaXMgZGVmaW5pdGVseSBhIFBDSSBkcml2ZXIg4oCTIHRoYXQgbXVjaCBpcyBjbGVhci4gVGhlIHBhdGNoIGl0c2VsZiBzZWVtcyB0byBiZSBpbnRyb2R1Y2luZyBhIGNoZWNrIHJlbGF0ZWQgdG8gZmlybXdhcmUgc2l6ZSwgd2hpY2ggaW1tZWRpYXRlbHkgY2F0Y2hlcyBteSBhdHRlbnRpb24uIEkga25vdyB0aGF0IGZpcm13YXJlIGxvYWRpbmcsIHBhcnRpY3VsYXJseSB0aGUgYHJlcXVlc3RfZmlybXdhcmVgIHBhdGgsIGNhbiBiZSBhIHBvdGVudGlhbCBhdHRhY2sgdmVjdG9yLCBlc3BlY2lhbGx5IHdpdGggZnV6emVycyBsaWtlIHN5emthbGxlciBwb2tpbmcgYXJvdW5kLiBUaGF0JiMzOTtzIGEgY2xhc3NpYyBhcmVhIGZvciBleHBsb2l0YXRpb24uCgpHaXZlbiB0aGUgY29udGV4dCwgSSB0aGluayB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZGVsdmUgaW50byB0aGUgYG10Nzk5Nl9lZXByb21fY2hlY2tfb3JfdXNlX2RlZmF1bHRgIGZ1bmN0aW9uIHdpdGhpbiBgZWVwcm9tLmNgLiBUaGlzIGZ1bmN0aW9uIGlzIGxpa2VseSB3aGVyZSB0aGUgZmlybXdhcmUgdmFsaWRhdGlvbiBvciB1c2FnZSBvZiBhIGRlZmF1bHQgaXMgaGFuZGxlZCwgYW5kIHRoYXQmIzM5O3Mgd2hlcmUgSSBuZWVkIHRvIGZvY3VzIG15IGludmVzdGlnYXRpb24uIFRoYXQmIzM5O3MgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGlmIHRoaXMgcGF0Y2ggdHJ1bHkgYWRkcmVzc2VzIGEgdnVsbmVyYWJpbGl0eSBvciBzZWN1cml0eSBjb25jZXJuLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxNTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTMwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxMzA6XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG4gMTMxOlx0XHR9XG4gMTMyOlx0XG4gMTMzOlx0XHRyZXR1cm4gdHJ1ZTtcbiAxMzQ6XHR9XG4gMTM1Olx0XG4gMTM2Olx0c3RhdGljIGludFxuIDEzNzpcdG10Nzk5Nl9lZXByb21fY2hlY2tfb3JfdXNlX2RlZmF1bHQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldiwgYm9vbCB1c2VfZGVmYXVsdClcbiAxMzg6XHR7XG4gMTM5Olx0XHR1OCAqZWVwcm9tID0gZGV2LVx1MDAzZW10NzYuZWVwcm9tLmRhdGE7XG4gMTQwOlx0XHRjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3ID0gTlVMTDtcbiAxNDE6XHRcdGludCByZXQ7XG4gMTQyOlx0XG4gMTQzOlx0XHRyZXQgPSByZXF1ZXN0X2Zpcm13YXJlKFx1MDAyNmZ3LCBtdDc5OTZfZWVwcm9tX25hbWUoZGV2KSwgZGV2LVx1MDAzZW10NzYuZGV2KTtcbiAxNDQ6XHRcdGlmIChyZXQpXG4gMTQ1Olx0XHRcdHJldHVybiByZXQ7XG4gMTQ2Olx0XG4gMTQ3Olx0XHRpZiAoIWZ3IHx8ICFmdy1cdTAwM2VkYXRhKSB7XG4gMTQ4Olx0XHRcdGRldl9lcnIoZGV2LVx1MDAzZW10NzYuZGV2LCBcJiMzNDtJbnZhbGlkIGRlZmF1bHQgYmluXFxuXCYjMzQ7KTtcbiAxNDk6XHRcdFx0cmV0ID0gLUVJTlZBTDtcbiAxNTA6XHRcdFx0Z290byBvdXQ7XG4gMTUxOlx0XHR9XG4gMTUyOlx0XG4gMTUzOlx0XHRpZiAoZnctXHUwMDNlc2l6ZSBcdTAwM2MgTVQ3OTk2X0VFUFJPTV9TSVpFKSB7XG4gMTU0Olx0XHRcdGRldl9lcnIoZGV2LVx1MDAzZW10NzYuZGV2LCBcJiMzNDtJbnZhbGlkIGRlZmF1bHQgYmluIHNpemVcXG5cJiMzNDspO1xuIDE1NTpcdFx0XHRyZXQgPSAtRUlOVkFMO1xuIDE1NjpcdFx0XHRnb3RvIG91dDtcbiAxNTc6XHRcdH1cbiAxNTg6XHRcbiAxNTk6XHRcdGlmICghdXNlX2RlZmF1bHQgXHUwMDI2XHUwMDI2IG10Nzk5Nl9lZXByb21fdmFyaWFudF92YWxpZChkZXYsIGZ3LVx1MDAzZWRhdGEpKVxuIDE2MDpcdFx0XHRnb3RvIG91dDtcbiAxNjE6XHRcbiAxNjI6XHRcdGRldl93YXJuKGRldi1cdTAwM2VtdDc2LmRldiwgXCYjMzQ7ZWVwcm9tIGxvYWQgZmFpbCwgdXNlIGRlZmF1bHQgYmluXFxuXCYjMzQ7KTtcbiAxNjM6XHRcdG1lbWNweShlZXByb20sIGZ3LVx1MDAzZWRhdGEsIE1UNzk5Nl9FRVBST01fU0laRSk7XG4gMTY0Olx0XHRkZXYtXHUwMDNlZWVwcm9tX21vZGUgPSBFRVBST01fTU9ERV9ERUZBVUxUX0JJTjtcbiAxNjU6XHRcbiAxNjY6XHRvdXQ6XG4gMTY3Olx0XHRyZWxlYXNlX2Zpcm13YXJlKGZ3KTtcbiAxNjg6XHRcbiAxNjk6XHRcdHJldHVybiByZXQ7XG4gMTcwOlx0fVxuIDE3MTpcdFxuIDE3MjpcdHN0YXRpYyBpbnQgbXQ3OTk2X2VlcHJvbV9sb2FkKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXG4gMTczOlx0e1xuIDE3NDpcdFx0dTMyIGVlcHJvbV9ibGtfc2l6ZSwgYmxvY2tfbnVtO1xuIDE3NTpcdFx0Ym9vbCB1c2VfZGVmYXVsdCA9IGZhbHNlO1xuIDE3NjpcdFx0aW50IHJldCwgaTtcbiAxNzc6XHRcbiAxNzg6XHRcdHJldCA9IG10NzZfZWVwcm9tX2luaXQoXHUwMDI2ZGV2LVx1MDAzZW10NzYsIE1UNzk5Nl9FRVBST01fU0laRSk7XG4gMTc5Olx0XHRpZiAocmV0IFx1MDAzYyAwKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxNTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDE5CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFJlY2VudCBQYXRjaDogTVQ3OTk2IEVFUFJPTSBWdWxuZXJhYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgYG10Nzk5Nl9lZXByb21fY2hlY2tfb3JfdXNlX2RlZmF1bHRgIGZ1bmN0aW9uLiBUaGUga2V5IGhlcmUgaXMgdGhhdCBpdCYjMzk7cyBjYWxsaW5nIGByZXF1ZXN0X2Zpcm13YXJlYCwgd2hpY2gsIGFzIHdlIGtub3csIGlzIGEgcG90ZW50aWFsIGF2ZW51ZSB0aGF0IFN5emthbGxlciBjYW4gZXhwbG9pdCB0byBpbmplY3QgZmlybXdhcmUuIFRoZSBjb3JlIG9mIHRoZSBmaXggYXBwZWFycyB0byBhZGRyZXNzIGEgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgcmVhZCB3aXRoaW4gYSBgbWVtY3B5YCBvcGVyYXRpb246IHNwZWNpZmljYWxseSwgYG1lbWNweShlZXByb20sIGZ3LSZndDtkYXRhLCBNVDc5OTZfRUVQUk9NX1NJWkUpO2Agd2hlcmUgYGZ3LSZndDtzaXplYCBtaWdodCBiZSBzbWFsbGVyIHRoYW4gYE1UNzk5Nl9FRVBST01fU0laRWAuIE9idmlvdXNseSwgdGhpcyBjYW4gbGVhZCB0byBtZW1vcnkgY29ycnVwdGlvbiwgZGVwZW5kaW5nIG9uIHdoYXQgdGhlIGBlZXByb21gIGJ1ZmZlciBpcyB1c2VkIGZvci4KCkZ1bmN0aW9uYWxseSwgdGhpcyBpcyBhIGNsZWFyIGJ1ZyBmaXgg4oCTIGFuIHVuZGVyLXJlYWQgc2NlbmFyaW8gaXMgYmVpbmcgYWRkcmVzc2VkLiBUaGUgZml4IGlzIHN0cmFpZ2h0Zm9yd2FyZDogdGhleSYjMzk7cmUgbGlrZWx5IGFkZGluZyBhIGNoZWNrIHRvIGVuc3VyZSBgZnctJmd0O3NpemVgIGlzIGF0IGxlYXN0IGBNVDc5OTZfRUVQUk9NX1NJWkVgIGJlZm9yZSB0aGUgYG1lbWNweWAuCgpUaGUgcmVhbCBxdWVzdGlvbiwgdGhvdWdoLCBpcyB3aGV0aGVyIHRoaXMgaXMgd29ydGggZnV6emluZy4gQ29uc2lkZXJpbmcgdGhlIFN5emthbGxlciBpbmplY3Rpb24gcG9pbnQsIGFuZCB0aGUgcG9zc2liaWxpdHkgb2YgYSBjb250cm9sbGVkIHdyaXRlIChhbGJlaXQgaW4gYSBmaXJtd2FyZS1zcGVjaWZpYyBjb250ZXh0KSwgdGhlIGFuc3dlciBpcyBhIHJlc291bmRpbmcgeWVzLiBJdCYjMzk7cyBhIHByaW1lIHRhcmdldC4gTm93LCBJIG5lZWQgdG8gY2hlY2sgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIHRvIHNlZSBpZiB0aGlzIG1vZHVsZSBpcyBlbmFibGVkIGFuZCB3aGF0IG9wdGlvbnMgYXJlIHNldC4gVGhpcyBsb29rcyBsaWtlIGEgcG90ZW50aWFsbHkgaGlnaC1pbXBhY3QgZmluZGluZywgc28gSSYjMzk7bGwgcHJpb3JpdGl6ZSBmdXp6aW5nIHRoaXMgZnVuY3Rpb24gdGhvcm91Z2hseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTU6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1UNzk5NiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L0tjb25maWc6Mjpjb25maWcgTVQ3OTk2RVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3OTk2IChQQ0llKSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvS2NvbmZpZy0xNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L0tjb25maWc6MTY6Y29uZmlnIE1UNzk5Nl9OUFVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L0tjb25maWctMTctXHRib29sIFwmIzM0O01UNzk5NiAoUENJZSkgTlBVIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTU6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTczMgoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqSW5pdGlhbCBDb25maWd1cmF0aW9uIENoZWNrKioKCkFscmlnaHQsIHRoZSBzeXN0ZW0mIzM5O3MgcmVwb3J0aW5nIHRoZSBjb25maWcgYXMgYE1UNzk5NkVgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtPa2F5LCB0aGF0JiMzOTtzIHRoZSBiYXNlbGluZS4gTm93LCBiZWZvcmUgSSBkaXZlIGRlZXBlciwgbGV0JiMzOTtzIGp1c3QgcXVpY2tseSB2ZXJpZnkg4oCTICphcmUqIHRoZXJlIG90aGVyIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMgSSBzaG91bGQgYmUgYXdhcmUgb2Y/IEFyZSB0aGVyZSB2YXJpYW50cyBvciBwcmVkZWNlc3NvcnMgdGhhdCBtaWdodCBpbmZsdWVuY2UgdGhpcyBvbmU/IFBlcmhhcHMgc29tZSByZWxhdGVkIGxlZ2FjeSBzeXN0ZW1zPyBJIG5lZWQgdG8gcXVpY2tseSBhc2NlcnRhaW4gaWYgdGhpcyBpcyB0aGUgKm9ubHkqIGNvbmZpZ3VyYXRpb24gb3IgaWYgaXQgc2l0cyB3aXRoaW4gYSBicm9hZGVyIGZhbWlseSBvZiByZWxhdGVkIHNldHVwcy4mIzM0OyBJJiMzOTttIG1lbnRhbGx5IGZpbGluZyB0aGlzIHF1ZXN0aW9uIHVuZGVyICYjMzQ7ZHVlIGRpbGlnZW5jZSYjMzQ7IOKAkyBJIG5lZWQgdG8gZW5zdXJlIEkmIzM5O20gb3BlcmF0aW5nIHdpdGggdGhlIGZ1bGwgY29udGV4dCBiZWZvcmUgcHJvY2VlZGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTU6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TVQ3OTk2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlPTQ2PW9iai0kKENPTkZJR19NVDc5MjFfQ09NTU9OKSAmIzQzOz0gbXQ3OTIxL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZTo0NzpvYmotJChDT05GSUdfTVQ3OTk2RSkgJiM0Mzs9IG10Nzk5Ni9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGUtNDgtb2JqLSQoQ09ORklHX01UNzkyNV9DT01NT04pICYjNDM7PSBtdDc5MjUvXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDE1OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYwODEKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiA1MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1UNzk5NkUgRUVQUk9NIEZ1bmN0aW9uKioKCk9rYXksIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IGBNVDc5OTZFYCDigJMgZ290IGl0LiBUaGUga2V5IGZ1bmN0aW9uIEkgbmVlZCB0byBkaXZlIGludG8gaXMgYG10Nzk5Nl9lZXByb21fY2hlY2tfb3JfdXNlX2RlZmF1bHRgLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIGRldGVybWluZSBpZiB0aGlzIHNwZWNpZmljIGBNVDc5OTZFYCBpbXBsZW1lbnRhdGlvbiBoYXMgYW55IGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGNvbnRleHQgdG8gZW5zdXJlIGEgY29tcHJlaGVuc2l2ZSBhbmFseXNpcy4gTGV0JiMzOTtzIHNlZSB3aGF0IGl0IHJlbGllcyBvbiwgb3IgaWYgYW55dGhpbmcgcmVsaWVzIG9uICppdCouIEl04oCZcyBhbGwgYWJvdXQgdHJhY2luZyB0aGUgaW50ZXJjb25uZWN0ZWRuZXNzIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDE1OjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxuICAgMjpcdGNvbmZpZyBNVDc5OTZFXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc5OTYgKFBDSWUpIHN1cHBvcnRcJiMzNDtcbiAgIDQ6XHRcdHNlbGVjdCBNVDc2X0NPTk5BQ19MSUJcbiAgIDU6XHRcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxuICAgNjpcdFx0c2VsZWN0IFJFTEFZXG4gICA3Olx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gICA4Olx0XHRkZXBlbmRzIG9uIFBDSVxuICAgOTpcdFx0aGVscFxuICAxMDpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTk2LWJhc2VkIFBDSWUgd2lyZWxlc3MgZGV2aWNlcyxcbiAgMTE6XHRcdCAgd2hpY2ggc3VwcG9ydCBjb25jdXJyZW50IHRyaS1iYW5kIG9wZXJhdGlvbiBhdCA2R0h6LCA1R0h6LFxuICAxMjpcdFx0ICBhbmQgMi40R0h6IElFRUUgODAyLjExYmUgNHg0OjRTUyA0MDk2LVFBTSwgMzIwTUh6IGNoYW5uZWxzLlxuICAxMzpcdFxuICAxNDpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxuICAxNTpcdFxuICAxNjpcdGNvbmZpZyBNVDc5OTZfTlBVXG4gIDE3Olx0XHRib29sIFwmIzM0O01UNzk5NiAoUENJZSkgTlBVIHN1cHBvcnRcJiMzNDtcbiAgMTg6XHRcdGRlcGVuZHMgb24gTVQ3OTk2RVxuICAxOTpcdFx0ZGVwZW5kcyBvbiBORVRfQUlST0hBX05QVT15IHx8IE1UNzk5NkU9TkVUX0FJUk9IQV9OUFVcbiAgMjA6XHRcdHNlbGVjdCBNVDc2X05QVVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxNTozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NjUxCgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogMTY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTVQ3OTk2RSBDb25maWd1cmF0aW9uIGFuZCBWdWxuZXJhYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBNVDc5OTZFYCBjb25maWd1cmF0aW9uLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gdGhlIGBtdDc5OTZfZWVwcm9tX2NoZWNrX29yX3VzZV9kZWZhdWx0YCBmdW5jdGlvbi4gVGhlIHBhdGNoJiMzOTtzIGNvcmUgZnVuY3Rpb24gaXMgYWRkaW5nIGEgYm91bmRzIGNoZWNrIHdpdGhpbiB0aGF0IGZ1bmN0aW9uLCBkZWFsaW5nIGRpcmVjdGx5IHdpdGggZmlybXdhcmUgc2l6ZS4gVGhlIGdvYWwgaXMgdG8gcHJldmVudCBhIG5hc3R5IG91dC1vZi1ib3VuZHMgcmVhZCBkdXJpbmcgdGhlIGBtZW1jcHlgIG9wZXJhdGlvbiBpbnZvbHZpbmcgdGhlIGZpcm13YXJlIGRhdGEuCgpNeSBleHBlcmllbmNlIHdpdGggUENJIGRyaXZlcnMgaW1tZWRpYXRlbHkgbWFrZXMgbWUgdGhpbmsgYWJvdXQgZnV6emluZywgYW5kIHN1cmUgZW5vdWdoLCB0aGlzIGlzIGEgUENJIGRyaXZlciEgVGhhdCBtZWFucyB3ZSBjYW4gcG90ZW50aWFsbHkgbGV2ZXJhZ2UgdG9vbHMgbGlrZSBzeXprYWxsZXImIzM5O3MgUENJIGZ1enplciwgYW5kIHdlIGNhbiBpbnRlcmNlcHQgYW5kIGZ1enogdGhlIGZpcm13YXJlIGxvYWRpbmcgcHJvY2VzcyBpdHNlbGYuIFRoYXTigJlzIHdoZXJlIHRoZSB2dWxuZXJhYmlsaXR5IGxpZXM6IGlmIHdlIGNhbiBtYW5pcHVsYXRlIHRoZSBmaXJtd2FyZSBzaXplIHNvbWVob3cgYW5kIGJ5cGFzcyB0aGF0IGNoZWNrLCB3ZSBtaWdodCBiZSBhYmxlIHRvIHRyaWdnZXIgYSBjcmFzaCBvciBldmVuIHBvdGVudGlhbGx5IG1vcmUgc2VyaW91cyBpc3N1ZXMuCgpOb3csIGxldCYjMzk7cyBqdXN0IGNvbmZpcm0gbXkgdW5kZXJzdGFuZGluZy4gVG8gYmUgc3VyZSB0aGlzIGlzIGEgcmVhY2hhYmxlIGZ1bmN0aW9uLCBJIHdhbnQgdG8gY29uZmlybSB0aGF0IGBtdDc5OTZfZWVwcm9tX2NoZWNrX29yX3VzZV9kZWZhdWx0YCBpcyBhY3R1YWxseSBnZXR0aW5nIGNhbGxlZCwgYW5kIGluZGVlZCBpdCBpcyBmcm9tIHRoZSBgbXQ3OTk2X2VlcHJvbV9sb2FkYCBmdW5jdGlvbi4gVGhhdCBnaXZlcyB1cyBhIHBhdGggdG8gZXhwbG9pdCBpZiB3ZSBjYW4gbWFuaXB1bGF0ZSB0aGUgaW5wdXRzIHRvIHRoZSByaWdodCBleHRlbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDE1OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210Nzk5Nl9lZXByb21fbG9hZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9lZXByb20uYz0xMzc9bXQ3OTk2X2VlcHJvbV9jaGVja19vcl91c2VfZGVmYXVsdChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2LCBib29sIHVzZV9kZWZhdWx0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jLTE3MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jOjE3MjpzdGF0aWMgaW50IG10Nzk5Nl9lZXByb21fbG9hZChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZWVwcm9tLmMtMTczLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9lZXByb20uYz0zMzk9aW50IG10Nzk5Nl9lZXByb21faW5pdChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jLTM0Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jOjM0MzpcdHJldCA9IG10Nzk5Nl9lZXByb21fbG9hZChkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZWVwcm9tLmMtMzQ0LVx0aWYgKHJldCBcdTAwM2MgMClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTU6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzUwMAoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgZnVuY3Rpb246CgoqKlRyYWNpbmcgdGhlIENhbGxlcnMgb2YgYG10Nzk5Nl9lZXByb21faW5pdGAqKgoKT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhlIGBtdDc5OTZfZWVwcm9tX2luaXRgIGZ1bmN0aW9uIGlzIGJlaW5nIGNhbGxlZCBmcm9tLiBUaGlzIGlzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIHJvbGUgaW4gdGhlIGRyaXZlciYjMzk7cyBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSBhbmQgcG90ZW50aWFsbHkgZm9yIGRlYnVnZ2luZyBvciBtb2RpZnlpbmcgaXQuIEkmIzM5O2QgdHlwaWNhbGx5IHN0YXJ0IGJ5IHVzaW5nIGEgY3Jvc3MtcmVmZXJlbmNpbmcgdG9vbCwgcHJvYmFibHkgYGdyZXBgIG9yIGEgbW9yZSBzb3BoaXN0aWNhdGVkIElERSBzZWFyY2gsIHRvIGh1bnQgZG93biBldmVyeSBpbnN0YW5jZSB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGludm9rZWQgd2l0aGluIHRoZSBjb2RlYmFzZS4KClRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMgd2hldGhlciBpdCYjMzk7cyBjYWxsZWQgZGlyZWN0bHkgZnJvbSBhIGhpZ2hlci1sZXZlbCBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiwgcGVyaGFwcyBpbiB0aGUgcGxhdGZvcm0gZGV2aWNlIHByb2JlIG9yIG1vZHVsZSBpbml0aWFsaXphdGlvbi4gQWx0ZXJuYXRpdmVseSwgaXQgbWlnaHQgYmUgYnVyaWVkIGRlZXBlciBpbiBzb21lIGFic3RyYWN0aW9uIGxheWVyLCBwb3RlbnRpYWxseSBhc3NvY2lhdGVkIHdpdGggRUVQUk9NIGhhbmRsaW5nIHdpdGhpbiB0aGUgd2lyZWxlc3MgZHJpdmVyJiMzOTtzIG92ZXJhbGwgaW5pdGlhbGl6YXRpb24gcm91dGluZS4gSSBuZWVkIHRvIGVzdGFibGlzaCB0aGUgY2FsbCBjaGFpbi4gRG9lcyB0aGlzIGZ1bmN0aW9uIHRha2UgYW55IGFyZ3VtZW50cz8gQXJlIHRoZXNlIHJlbGV2YW50LCBhbmQgaWYgc28sIHdoYXQgZG8gdGhleSByZXByZXNlbnQ/CgpPbmNlIEkgaWRlbnRpZnkgdGhlIGNhbGxlcnMsIEkmIzM5O2xsIGFuYWx5emUgdGhlIHN1cnJvdW5kaW5nIGNvZGUgdG8gZGV0ZXJtaW5lIHRoZSBjb250ZXh0LiBXaGF0JiMzOTtzIGhhcHBlbmluZyAqYmVmb3JlKiB0aGUgY2FsbCB0byBgbXQ3OTk2X2VlcHJvbV9pbml0YD8gV2hhdCYjMzk7cyBoYXBwZW5pbmcgKmFmdGVyKj8gQXJlIHRoZXJlIGFueSBkZXBlbmRlbmNpZXM/IERvZXMgdGhpcyBmdW5jdGlvbiYjMzk7cyBleGVjdXRpb24gZGVwZW5kIG9uIHRoZSBzdWNjZXNzZnVsIGluaXRpYWxpemF0aW9uIG9mIG90aGVyIGNvbXBvbmVudHM/IFRoaXMgd2lsbCBhbGwgaGVscCBtZSB1bmRlcnN0YW5kIHRoZSBwdXJwb3NlIG9mIHRoaXMgcGFydGljdWxhciBFRVBST00gaW5pdGlhbGl6YXRpb24gc3RlcCBpbiB0aGUgbGFyZ2VyIGRyaXZlciBmcmFtZXdvcmsuIEkmIzM5O2xsIG5lZWQgdG8ga25vdyB0aGUgcmV0dXJuIHZhbHVlIG9mIGBtdDc5OTZfZWVwcm9tX2luaXRgIHRvbywgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGNhbGxlciBoYW5kbGVzIGFueSBwb3RlbnRpYWwgZXJyb3JzIHRoYXQgdGhpcyBmdW5jdGlvbiBtYXkgcmV0dXJuLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxNTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5OTZfZWVwcm9tX2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZWVwcm9tLmM9MzAzPWludCBtdDc5OTZfZWVwcm9tX3BhcnNlX2h3X2NhcChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3OTk2X3BoeSAqcGh5KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jLTMzOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jOjMzOTppbnQgbXQ3OTk2X2VlcHJvbV9pbml0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9lZXByb20uYy0zNDAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYz0xMjU2PXN0YXRpYyBpbnQgbXQ3OTk2X2luaXRfaGFyZHdhcmUoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMTI5Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzoxMjkzOlx0cmV0ID0gbXQ3OTk2X2VlcHJvbV9pbml0KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMTI5NC1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbXQ3OTk2Lmg9NjgzPXZvaWQgbXQ3OTk2X3ZpZl9saW5rX3JlbW92ZShzdHJ1Y3QgbXQ3Nl9waHkgKm1waHksIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbXQ3OTk2LmgtNjg1LVx0XHRcdCAgICBzdHJ1Y3QgbXQ3Nl92aWZfbGluayAqbWxpbmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbXQ3OTk2Lmg6Njg2OmludCBtdDc5OTZfZWVwcm9tX2luaXQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tdDc5OTYuaC02ODctaW50IG10Nzk5Nl9lZXByb21fcGFyc2VfaHdfY2FwKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIHN0cnVjdCBtdDc5OTZfcGh5ICpwaHkpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxNTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NTEyCgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIENhbGwgU3RhY2sgb2YgYG10Nzk5Nl9pbml0X2hhcmR3YXJlYCoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZW50cnkgcG9pbnQgZm9yIGBtdDc5OTZfaW5pdF9oYXJkd2FyZWAuIEtub3dpbmcgdGhlIGhpZ2hlci1sZXZlbCBmdW5jdGlvbnMgdGhhdCBjYWxsIGl0IGlzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIHJvbGUgaW4gdGhlIGRyaXZlciYjMzk7cyBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSBhbmQsIGZyYW5rbHksIGFueSBwb3RlbnRpYWwgZGVidWdnaW5nIGRvd24gdGhlIGxpbmUuIEkmIzM5O20gdGhpbmtpbmcgSSBjYW4gYXBwcm9hY2ggdGhpcyBpbiBhIGZldyB3YXlzLgoKRmlyc3QsIGxldCYjMzk7cyBzZWUgd2hhdCB0aGUgY29kZSBzaG93cy4gVXNpbmcgYGdyZXBgIChvciB3aGF0ZXZlciBzZWFyY2ggdG9vbCkgSSBjYW4gcXVpY2tseSBnZXQgdGhlIGNyb3NzLXJlZmVyZW5jZXMuIFRoYXQgd2lsbCBnaXZlIG1lIHRoZSBpbW1lZGlhdGUgY2FsbGVycy4gSSYjMzk7bSBnb2luZyB0byBzY2FuIHRoZSByZXN1bHRzIHdpdGggYW4gZXllIG9uIHRoZSBjb250ZXh0IC0gd2hhdCBzcGVjaWZpYyBtb2R1bGVzIG9yIHN1Yi1zeXN0ZW1zIGFyZSBpbnZvbHZlZD8gSXMgaXQgY2FsbGVkIGZyb20gYSBwb3dlciBtYW5hZ2VtZW50IHJvdXRpbmUsIHRoZSBQQ0kgaW5pdGlhbGl6YXRpb24sIG9yIHNvbWV0aGluZyBlbHNlPwoKSWYgdGhhdCBkb2VzbiYjMzk7dCBpbW1lZGlhdGVseSByZXZlYWwgdGhlIGNhbGxpbmcgZnVuY3Rpb24gYW5kIG1ha2UgaXQgb2J2aW91cyB3aGF0IGlzIGdvaW5nIG9uLCBJJiMzOTtsbCBuZWVkIHRvIHJlc29ydCB0byB0aGUgZGVidWdnZXIuIEkmIzM5O2xsIHNldCBhIGJyZWFrcG9pbnQgYXQgdGhlIHN0YXJ0IG9mIHRoZSBgbXQ3OTk2X2luaXRfaGFyZHdhcmVgIGZ1bmN0aW9uIGFuZCBsb29rIGF0IHRoZSBzdGFjayB0cmFjZS4gVGhlIHN0YWNrIHRyYWNlLCBjb21iaW5lZCB3aXRoIHRoZSBkcml2ZXIgc291cmNlIGNvZGUsIHNob3VsZCBwcm92aWRlIGEgY29tcGxldGUgcGljdHVyZSBvZiB0aGUgY2FsbCBjaGFpbiBhbmQgcmV2ZWFsIHdoYXQmIzM5O3MgYWN0dWFsbHkgaGFwcGVuaW5nIGF0IHRoYXQgcG9pbnQuIEkmIzM5O2xsIG5lZWQgdG8gcGF5IGF0dGVudGlvbiB0byBhbnkgcmVsZXZhbnQgZGV2aWNlIG9yIGNoaXAgcmVsYXRlZCB2YXJpYWJsZXMgdG8gc2VlIGlmIHRoZXJlIGlzIGFueSBjcml0aWNhbCBkYXRhIGJlaW5nIHNldCBiZWZvcmUgdGhlIGBtdDc5OTZfaW5pdF9oYXJkd2FyZWAgZnVuY3Rpb24gY2FsbC4KCkZpbmFsbHksIEkmIzM5O2xsIHJldmlldyB0aGUgZHJpdmVyJiMzOTtzIGRvY3VtZW50YXRpb24gYW5kIG90aGVyIHJlbGF0ZWQgaW5pdGlhbGl6YXRpb24gZmlsZXMsIGlmIGFueSwgdG8gZW5zdXJlIHRoYXQgdGhlIGNhbGxpbmcgZnVuY3Rpb24gaXMgYXBwcm9wcmlhdGUgaW4gdGhlIGRyaXZlciYjMzk7cyBjb250ZXh0LiBJIGNhbiYjMzk7dCBiZSBvdmVybG9va2luZyBkb2N1bWVudGF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxNTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5OTZfaW5pdF9oYXJkd2FyZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM9MTIxMz1zdGF0aWMgaW50IG10Nzk5Nl92YXJpYW50X2ZlbV9pbml0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTEyNTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM6MTI1NjpzdGF0aWMgaW50IG10Nzk5Nl9pbml0X2hhcmR3YXJlKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMTI1Ny17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jPTE3MzE9aW50IG10Nzk5Nl9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMTc0OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzoxNzUwOlx0cmV0ID0gbXQ3OTk2X2luaXRfaGFyZHdhcmUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy0xNzUxLVx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTU6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTI4MAoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEZWx2aW5nIGludG8gYG10Nzk5Nl9yZWdpc3Rlcl9kZXZpY2VgKioKCk9rYXksIHNvIHRoZSBxdWVzdGlvbiBpbW1lZGlhdGVseSB0aGF0IHBvcHMgaW50byBteSBoZWFkIGlzLCAmIzM0O1doZXJlIGV4YWN0bHkgaXMgYG10Nzk5Nl9yZWdpc3Rlcl9kZXZpY2VgIGJlaW5nIGludm9rZWQgZnJvbT8mIzM0OyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY2FsbCBncmFwaCBhbmQgdGhlIGJyb2FkZXIgY29udGV4dCBvZiB0aGlzIGZ1bmN0aW9uIHdpdGhpbiB0aGUgZHJpdmVyIHRvIHJlYWxseSBncmFzcCBpdHMgcHVycG9zZSBhbmQgcG90ZW50aWFsIGltcGxpY2F0aW9ucy4gSXMgaXQgYmVpbmcgY2FsbGVkIGR1cmluZyBlYXJseSBpbml0aWFsaXphdGlvbiwgb3IgaXMgaXQgdHJpZ2dlcmVkIGxhdGVyIG9uLCBwZXJoYXBzIGluIHJlc3BvbnNlIHRvIHNvbWUgaGFyZHdhcmUgZXZlbnQgb3IgdXNlciBhY3Rpb24/IE15IGV4cGVyaWVuY2UgdGVsbHMgbWUgdGhpcyBpcyBrZXkgdG8gZmlndXJpbmcgb3V0IHRoZSBmdW5jdGlvbiYjMzk7cyByZXNwb25zaWJpbGl0eSB3aXRoaW4gdGhlIHN5c3RlbS4gSXMgaXQgcmVnaXN0ZXJpbmcgYSBkZXZpY2UgYXMgcGFydCBvZiBzeXN0ZW0gYnJpbmctdXAgb3IgYXMgcGFydCBvZiBhIGR5bmFtaWMgcGx1Zy1hbmQtcGxheSBwcm9jZXNzPyBUaGF0IGtpbmQgb2YgY29udGV4dHVhbCB1bmRlcnN0YW5kaW5nIGlzIHdoYXQgc2VwYXJhdGVzIGluZm9ybWVkIGd1ZXNzZXMgZnJvbSBjb25maWRlbnQgdW5kZXJzdGFuZGluZy4gSSYjMzk7bGwgbmVlZCB0byB0cmFjZSB0aGUgY2FsbCBwYXRocyB0byBiZSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxNTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5OTZfcmVnaXN0ZXJfZGV2aWNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYz0xNzE2PXZvaWQgbXQ3OTk2X3NldF9zdHJlYW1faGVfZWh0X2NhcHMoc3RydWN0IG10Nzk5Nl9waHkgKnBoeSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMTczMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzoxNzMxOmludCBtdDc5OTZfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMTczMi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbXQ3OTk2Lmg9Njc3PXU2NCBfX210Nzk5Nl9nZXRfdHNmKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgbXQ3OTk2X3ZpZl9saW5rICpsaW5rKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L210Nzk5Ni5oOjY3ODppbnQgbXQ3OTk2X3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L210Nzk5Ni5oLTY3OS12b2lkIG10Nzk5Nl91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9wY2kuYz05OT1zdGF0aWMgaW50IG10Nzk5Nl9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvcGNpLmMtMTk0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvcGNpLmM6MTk1Olx0cmV0ID0gbXQ3OTk2X3JlZ2lzdGVyX2RldmljZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvcGNpLmMtMTk2LVx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTU6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAwNTQKCQkJCQkJCW91dHB1dDogMTQ2CgkJCQkJCQl0aG91Z2h0czogMTMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIE1UNzk5NiBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gYG10Nzk5Nl9wY2lfcHJvYmVgIOKAkyB0aGF0JiMzOTtzIHRoZSBQQ0kgcHJvYmUgZnVuY3Rpb24uIFJpZ2h0LCBzbyB0aGlzIGNvZGUgKmRlZmluaXRlbHkqIGdldHMgaGl0IGR1cmluZyBQQ0kgZGV2aWNlIGluaXRpYWxpemF0aW9uIHdoZW4gdGhlIGRyaXZlciBpcyBwcm9iZWQuIFRoZSBjb3JlIG9mIHRoaXMgcGF0Y2ggaXMgYWRkcmVzc2luZyBhIGJ1ZyBpbiBob3cgdGhlIGZpcm13YXJlIGlzIGxvYWRlZC4gRnJvbSBhIHF1aWNrIGdsYW5jZSwgaXQgbG9va3MgZnVuY3Rpb25hbCBhbmQsIGNydWNpYWxseSwgcmVhY2hhYmxlLiBHaXZlbiB0aGF0IGl0JiMzOTtzIGRlYWxpbmcgd2l0aCBmaXJtd2FyZSBsb2FkaW5nIGR1cmluZyB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UsIGl0IGFic29sdXRlbHkgd2FycmFudHMgZnV6emluZy4gRmlybXdhcmUgbG9hZGluZyBpcyBhbHdheXMgYSBqdWljeSB0YXJnZXQuCgpUaGUgc3BlY2lmaWMgY29uZmlnIGluIHF1ZXN0aW9uIGlzIGBNVDc5OTZFYC4gSSYjMzk7bGwgd2FudCB0byBtYWtlIGEgbm90ZSBvZiB0aGF0IGZvciB3aGVuIEkgZ2V0IGRvd24gdG8gdGhlIGJyYXNzIHRhY2tzLgoKSSBzaG91bGQgZG91YmxlLWNoZWNrIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmVu4oCZdCBhbnkgb3RoZXIgY29uZmlndXJhdGlvbnMgSSBuZWVkIHRvIHRha2UgaW50byBjb25zaWRlcmF0aW9uLCBidXQgaXQgbG9va3MgbGlrZSBgTVQ3OTk2RWAgaXMgdGhlIHByaW1hcnkgb25lIGhlcmUuCgpBbHJpZ2h0LCBJJiMzOTttIG1hcmtpbmcgdGhpcyBhcyBgV29ydGhGdXp6aW5nID0gVHJ1ZWAuIFRoaXMgZmlybXdhcmUtbG9hZGluZyBwYXRjaCBpcyBkZWZpbml0ZWx5IGdvaW5nIG9uIHRoZSBsaXN0LiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIGBtdDc5OTZfZWVwcm9tX2NoZWNrX29yX3VzZV9kZWZhdWx0YCB0b28sIGFzIHRoYXQgbG9va3MgbGlrZSBhIHBvdGVudGlhbCBmb2N1cyBzeW1ib2wuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDE1OjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNVDc5OTZFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXQ3OTk2X2VlcHJvbV9jaGVja19vcl91c2VfZGVmYXVsdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIGZvciBmaXJtd2FyZSBzaXplIGluIGBtdDc5OTZfZWVwcm9tX2NoZWNrX29yX3VzZV9kZWZhdWx0YCB0byBwcmV2ZW50IGFuIG91dC1vZi1ib3VuZHMgcmVhZCBkdXJpbmcgYG1lbWNweWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgZHJpdmVyJiMzOTtzIGluaXRpYWxpemF0aW9uIHBhdGguIFRoZSBkcml2ZXIgaXMgYSBQQ0kgZHJpdmVyIHdoaWNoIGNhbiBiZSBmdXp6ZWQgYnkgc3l6a2FsbGVyJiMzOTtzIFBDSSBmdXp6ZXIsIGFuZCB0aGUgZmlybXdhcmUgbG9hZGluZyBjYW4gYmUgaW50ZXJjZXB0ZWQgYW5kIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TVQ3OTk2RSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210Nzk5Nl9lZXByb21fY2hlY2tfb3JfdXNlX2RlZmF1bHQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayBmb3IgZmlybXdhcmUgc2l6ZSBpbiBgbXQ3OTk2X2VlcHJvbV9jaGVja19vcl91c2VfZGVmYXVsdGAgdG8gcHJldmVudCBhbiBvdXQtb2YtYm91bmRzIHJlYWQgZHVyaW5nIGBtZW1jcHlgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGRyaXZlciYjMzk7cyBpbml0aWFsaXphdGlvbiBwYXRoLiBUaGUgZHJpdmVyIGlzIGEgUENJIGRyaXZlciB3aGljaCBjYW4gYmUgZnV6emVkIGJ5IHN5emthbGxlciYjMzk7cyBQQ0kgZnV6emVyLCBhbmQgdGhlIGZpcm13YXJlIGxvYWRpbmcgY2FuIGJlIGludGVyY2VwdGVkIGFuZCBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxNTozNDowMi4zMzM4Nzk2MjlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzY4NzI4MTQ0MTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVQ3OTk2RVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm10Nzk5Nl9lZXByb21fY2hlY2tfb3JfdXNlX2RlZmF1bHRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIGZvciBmaXJtd2FyZSBzaXplIGluIGBtdDc5OTZfZWVwcm9tX2NoZWNrX29yX3VzZV9kZWZhdWx0YCB0byBwcmV2ZW50IGFuIG91dC1vZi1ib3VuZHMgcmVhZCBkdXJpbmcgYG1lbWNweWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgZHJpdmVyJ3MgaW5pdGlhbGl6YXRpb24gcGF0aC4gVGhlIGRyaXZlciBpcyBhIFBDSSBkcml2ZXIgd2hpY2ggY2FuIGJlIGZ1enplZCBieSBzeXprYWxsZXIncyBQQ0kgZnV6emVyLCBhbmQgdGhlIGZpcm13YXJlIGxvYWRpbmcgY2FuIGJlIGludGVyY2VwdGVkIGFuZCBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDE1OjM0OjAyLjMzMzg4OTE1OVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTgzODIwNjk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYjI4YWYzZmU2Mjk3ZGRhMmM3NTU1ZjZkODhlZDc1OWVmNmNhOWQ5ZVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEp1bCAxMyAxNTozNDowMCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9lZXByb20uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jXFxuaW5kZXggYWMwNWY3ZDc1ZDYzZDYuLmVjMzM1MjFkYjU2NGJkIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZWVwcm9tLmNcXG5AQCAtMTUwLDYgKzE1MCwxMiBAQCBtdDc5OTZfZWVwcm9tX2NoZWNrX29yX3VzZV9kZWZhdWx0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIGJvb2wgdXNlX2RlZmF1bHQpXFxuIFxcdFxcdGdvdG8gb3V0O1xcbiBcXHR9XFxuIFxcbitcXHRpZiAoZnctXFx1MDAzZXNpemUgXFx1MDAzYyBNVDc5OTZfRUVQUk9NX1NJWkUpIHtcXG4rXFx0XFx0ZGV2X2VycihkZXYtXFx1MDAzZW10NzYuZGV2LCBcXFwiSW52YWxpZCBkZWZhdWx0IGJpbiBzaXplXFxcXG5cXFwiKTtcXG4rXFx0XFx0cmV0ID0gLUVJTlZBTDtcXG4rXFx0XFx0Z290byBvdXQ7XFxuK1xcdH1cXG4rXFxuIFxcdGlmICghdXNlX2RlZmF1bHQgXFx1MDAyNlxcdTAwMjYgbXQ3OTk2X2VlcHJvbV92YXJpYW50X3ZhbGlkKGRldiwgZnctXFx1MDAzZWRhdGEpKVxcbiBcXHRcXHRnb3RvIG91dDtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDE1OjM0OjAyLjkxODczODE3NVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM2Mjg3OTM4OTc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzk5NkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc5OTZfZWVwcm9tX2NoZWNrX29yX3VzZV9kZWZhdWx0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayBmb3IgZmlybXdhcmUgc2l6ZSBpbiBgbXQ3OTk2X2VlcHJvbV9jaGVja19vcl91c2VfZGVmYXVsdGAgdG8gcHJldmVudCBhbiBvdXQtb2YtYm91bmRzIHJlYWQgZHVyaW5nIGBtZW1jcHlgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGRyaXZlcidzIGluaXRpYWxpemF0aW9uIHBhdGguIFRoZSBkcml2ZXIgaXMgYSBQQ0kgZHJpdmVyIHdoaWNoIGNhbiBiZSBmdXp6ZWQgYnkgc3l6a2FsbGVyJ3MgUENJIGZ1enplciwgYW5kIHRoZSBmaXJtd2FyZSBsb2FkaW5nIGNhbiBiZSBpbnRlcmNlcHRlZCBhbmQgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGIyOGFmM2ZlNjI5N2RkYTJjNzU1NWY2ZDg4ZWQ3NTllZjZjYTlkOWVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAxMyAxNTozNDowMCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZWVwcm9tLmNcbmluZGV4IGFjMDVmN2Q3NWQ2M2Q2Li5lYzMzNTIxZGI1NjRiZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9lZXByb20uY1xuQEAgLTE1MCw2ICsxNTAsMTIgQEAgbXQ3OTk2X2VlcHJvbV9jaGVja19vcl91c2VfZGVmYXVsdChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2LCBib29sIHVzZV9kZWZhdWx0KVxuIFx0XHRnb3RvIG91dDtcbiBcdH1cbiBcbitcdGlmIChmdy1cdTAwM2VzaXplIFx1MDAzYyBNVDc5OTZfRUVQUk9NX1NJWkUpIHtcbitcdFx0ZGV2X2VycihkZXYtXHUwMDNlbXQ3Ni5kZXYsIFwiSW52YWxpZCBkZWZhdWx0IGJpbiBzaXplXFxuXCIpO1xuK1x0XHRyZXQgPSAtRUlOVkFMO1xuK1x0XHRnb3RvIG91dDtcbitcdH1cbitcbiBcdGlmICghdXNlX2RlZmF1bHQgXHUwMDI2XHUwMDI2IG10Nzk5Nl9lZXByb21fdmFyaWFudF92YWxpZChkZXYsIGZ3LVx1MDAzZWRhdGEpKVxuIFx0XHRnb3RvIG91dDtcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDE1OjM0OjAyLjkxODc0MTc5NVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc0MzMyODAwOTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIEVFUFJPTSBWdWxuZXJhYmlsaXR5KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHRvdWNoZXMgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9lZXByb20uY2AgZmlsZS4gSXQgc2VlbXMgdG8gYmUgYWRkaW5nIGEgc2l6ZSBjaGVjazogYGlmIChmdy1cdTAwM2VzaXplIFx1MDAzYyBNVDc5OTZfRUVQUk9NX1NJWkUpYCB3aXRoaW4gdGhlIGBtdDc5OTZfZWVwcm9tX2NoZWNrX29yX3VzZV9kZWZhdWx0YCBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB3aGF0J3MgdGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhpcz8gV2hhdCB2dWxuZXJhYmlsaXR5IGlzIHRoaXMgYWRkcmVzc2luZywgb3IgYXQgbGVhc3QgYXR0ZW1wdGluZyB0byBtaXRpZ2F0ZT8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bmN0aW9uJ3MgcHVycG9zZSBhbmQgdGhlIHN1cnJvdW5kaW5nIGNvZGUgdG8gZGV0ZXJtaW5lIGl0cyBlZmZlY3RpdmVuZXNzIGFuZCB0aGUgc3BlY2lmaWMgaXNzdWUgaXQncyB0cnlpbmcgdG8gcmVzb2x2ZS4gVGhpcyBjaGVjayBsaWtlbHkgYWltcyB0byBwcmV2ZW50IHRoZSBjb2RlIGZyb20gb3BlcmF0aW5nIG9uIEVFUFJPTSBkYXRhIHRoYXQncyBzbWFsbGVyIHRoYW4gdGhlIGV4cGVjdGVkIHNpemUgb2YgYSBNVDc5OTYgRUVQUk9NLiBOb3csIEkgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGNvZGUgdGhhdCBjYWxscyB0aGlzIGZ1bmN0aW9uIGFuZCBmaWd1cmUgb3V0IHdoYXQgaGFwcGVucyB3aGVuIHRoZSBmaXJtd2FyZSBzaXplIGlzIHRvbyBzbWFsbDsgd2hhdCBhcmUgdGhlIHBvdGVudGlhbCBjb25zZXF1ZW5jZXM/IElzIGl0IGEgYnVmZmVyIG92ZXJmbG93IHJpc2s/IENvdWxkIHRoaXMgaW50cm9kdWNlIHNvbWUgb3RoZXIga2luZCBvZiB2dWxuZXJhYmlsaXR5IG9yIGZ1bmN0aW9uYWwgcHJvYmxlbT8gTGV0J3MgdHJhY2UgaXQgYW5kIGZpbmQgb3V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTI0LCJPdXRwdXRUb2tlbnMiOjU5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxNTozNDoxMC4zNTIwMjQwNTZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk0NDgwNjM1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10Nzk5Nl9lZXByb21fY2hlY2tfb3JfdXNlX2RlZmF1bHRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZWVwcm9tLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZWVwcm9tLmM9MTM2PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9lZXByb20uYzoxMzc6bXQ3OTk2X2VlcHJvbV9jaGVja19vcl91c2VfZGVmYXVsdChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2LCBib29sIHVzZV9kZWZhdWx0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jLTEzOC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9lZXByb20uYz0xNzI9c3RhdGljIGludCBtdDc5OTZfZWVwcm9tX2xvYWQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jLTIzMi1vdXQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZWVwcm9tLmM6MjMzOlxcdHJldHVybiBtdDc5OTZfZWVwcm9tX2NoZWNrX29yX3VzZV9kZWZhdWx0KGRldiwgdXNlX2RlZmF1bHQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jLTIzNC19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDE1OjM0OjEwLjU0NjUxMTI2MVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE4OTQ1MDU5NTk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEZpcm13YXJlIFNpemUgQ2hlY2sgaW4gdGhlIE1UNzk5NiBXaS1GaSBEcml2ZXIqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBjaGVjazogYGZ3LVx1MDAzZXNpemUgXHUwMDNjIE1UNzk5Nl9FRVBST01fU0laRWAuIEl0J3MgYSBmaXJtd2FyZSBzaXplIGNoZWNrLCB3aGljaCBpcyBhIGdvb2QgdGhpbmcgdG8gaGF2ZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBcIklzIHRoaXMgY2hlY2sgZXZlbiByZWxldmFudCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHM/XCIgV2UgYWx3YXlzIGhhdmUgdG8gY29uc2lkZXIgdGhlIGF0dGFjayBzdXJmYWNlLiBUaGlzIGlzIGNyaXRpY2FsIHdoZW4gdGhpbmtpbmcgYWJvdXQgZnV6emluZy5cblxuTm93LCBgbXQ3OTk2YC4uLiByaWdodCwgdGhhdCdzIGEgTWVkaWF0ZWsgV2ktRmkgZHJpdmVyLiBBbmQgdGhhdCBtYWtlcyBtZSB3b25kZXIsIFwiQ2FuIHRoaXMgYmUgZnV6emVkP1wiIFRoYXQncyB0aGUgbmV4dCBsb2dpY2FsIHF1ZXN0aW9uLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgV2ktRmkgZHJpdmVycyBvZnRlbiBsZW5kIHRoZW1zZWx2ZXMgdG8gZnV6emluZyBpZiB0aGV5IGludGVyYWN0IHdpdGggdGhlIGhhcmR3YXJlIHZpYSBgbWFjODAyMTFfaHdzaW1gIG9yLCBldmVuIGJldHRlciwgYXJlIFVTQi9QQ0llIGRldmljZXMgd2hlcmUgZW11bGF0aW9uIGlzIHBvc3NpYmxlLiBTbywgdGhlIHF1ZXN0aW9uIGJlY29tZXM6IFwiSXMgYG10Nzk5NmAgYSBQQ0llIG9yIFVTQiBkcml2ZXI/XCIgVGhhdCdzIHRoZSBrZXkgdG8gZmlndXJpbmcgb3V0IGhvdyBwcmFjdGljYWwgZnV6emluZyB0aGlzIHNpemUgY2hlY2sgd291bGQgYmUuIEdvdHRhIGZpZ3VyZSB0aGF0IG91dCBmaXJzdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjYxOSwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxNTozNDoyOS40OTE1NzMwOFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODQ5Mzc1MTYsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZHVsZV8uKmRyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDE1OjM0OjI5LjY3NjUyMDUzNloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNzI0MjE2MjQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjpcblxuKipEaXZpbmcgaW50byB0aGUgTVQ3OTk2IEZpbGVzKipcblxuT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEknbSBnb2luZyB0byBuYXZpZ2F0ZSBkaXJlY3RseSBpbnRvIHRoZSBoZWFydCBvZiB0aGUgbWF0dGVyIOKAkyB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2AgZGlyZWN0b3J5LiBUaGlzIGlzIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zLCB0aGUgZ3V0cyBvZiB0aGUgTVQ3OTk2IHdpcmVsZXNzIGRyaXZlciBhcmUgc3VyZWx5IGxvY2F0ZWQgaGVyZS4gSSBrbm93IHRoaXMgYXJjaGl0ZWN0dXJlLCBJIGtub3cgd2hhdCBJJ20gbG9va2luZyBmb3Ig4oCTIHRoZSBjcml0aWNhbCBjb250cm9sIHBvaW50cywgdGhlIGtleSBkYXRhIHN0cnVjdHVyZXMsIHRoZSBjcnVjaWFsIGZ1bmN0aW9ucyB0aGF0IG1ha2UgdGhpcyBjaGlwIGh1bS4gTGV04oCZcyBzZWUgd2hhdCBnZW1zIGFyZSB3YWl0aW5nIHRvIGJlIHVuY292ZXJlZC4gTGV0J3Mgc2VlIGlmIHRoZXJlIGFyZSBhbnkgY2hhbmdlcyBmcm9tIG15IGxhc3QgcGVydXNhbCwgYW5kIHdoYXQgc29ydCBvZiBuZXcgbnVhbmNlcyBJIG1pZ2h0IGRpc2NvdmVyLiBJJ20gaXRjaGluZyB0byBkaWcgaW4hXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwMzYsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxNTozNTowMC40MDA3MzkxNDJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJjb2Rlc2VhcmNoLWRpci1pbmRleCIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMjM0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkRpclwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJGaWxlc1wiOiBbXG4gICAgXCJjb3JlZHVtcC5jXCIsXG4gICAgXCJjb3JlZHVtcC5oXCIsXG4gICAgXCJkZWJ1Z2ZzLmNcIixcbiAgICBcImRtYS5jXCIsXG4gICAgXCJlZXByb20uY1wiLFxuICAgIFwiZWVwcm9tLmhcIixcbiAgICBcImluaXQuY1wiLFxuICAgIFwibWFjLmNcIixcbiAgICBcIm1hYy5oXCIsXG4gICAgXCJtYWluLmNcIixcbiAgICBcIm1jdS5jXCIsXG4gICAgXCJtY3UuaFwiLFxuICAgIFwibW1pby5jXCIsXG4gICAgXCJtdDc5OTYuaFwiLFxuICAgIFwibnB1LmNcIixcbiAgICBcInBjaS5jXCIsXG4gICAgXCJyZWdzLmhcIlxuICBdLFxuICBcIlN1YmRpcnNcIjogbnVsbFxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTU6MzU6MDAuNDAwODQzNTIyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjc0OTM2NzUxNTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQQ0kgRHJpdmVyKipcblxuT2theSwgc28gSSBzZWUgdGhpcyBjb2RlIGlzIGRlYWxpbmcgd2l0aCBgcGNpLmNgLiBSaWdodCBhd2F5LCB0aGF0IHRlbGxzIG1lIHdlJ3JlIGxvb2tpbmcgYXQgYSBQQ0kgZHJpdmVyLiBUaGUgbmF0dXJhbCBxdWVzdGlvbiBpcywgY2FuIHdlIGZ1enogdGhpcz8gQW5kIHRoZSBhbnN3ZXIsIGFzIEkga25vdywgaXMgYSByZXNvdW5kaW5nIHllcyAtIHN5emthbGxlciBoYXMgYSBQQ0kgZnV6emVyLCB3aGljaCBtYWtlcyB0aGlzIHBhcnRpY3VsYXJseSBpbnRlcmVzdGluZy4gTm93LCBteSBuZXh0IHN0ZXAgaXMgY2xlYXIuIEknbGwgZGl2ZSBpbnRvIHRoZSBgcGNpLmNgIGNvZGUgaXRzZWxmLiBJIG5lZWQgdG8gcXVpY2tseSBhc3Nlc3MgaWYgaXQncyBhIHJlbGF0aXZlbHkgc3RhbmRhcmQgb3IgYSBtb3JlIHNwZWNpYWxpemVkIFBDSSBkcml2ZXIsIGFuZCBpZiB0aGVyZSBtaWdodCBiZSBhbnl0aGluZyBwYXJ0aWN1bGFybHkganVpY3kgdGhlcmUgdGhhdCB3YXJyYW50cyBteSBleHBlcnQgYXR0ZW50aW9uLiBUaGlzIGluaXRpYWwgc2NhbiB3aWxsIGd1aWRlIGhvdyBtdWNoIGRlZXBlciBJIG5lZWQgdG8gZ28gYW5kIHRoZSBiZXN0IGFwcHJvYWNoIGZvciBmdXp6aW5nIHRoaXMgc3BlY2lmaWMgZHJpdmVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDExLCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTksIlRvb2xDYWxscyI6WyJjb2Rlc2VhcmNoLWRpci1pbmRleCJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDE1OjM1OjI3Ljg5NDUyMTk1OFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzc0NzkzMzQzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBjaV9kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvcGNpLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvcGNpLmM9MjMzPXN0YXRpYyB2b2lkIG10Nzk5Nl9wY2lfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvcGNpLmMtMjQzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L3BjaS5jOjI0NDpzdHJ1Y3QgcGNpX2RyaXZlciBtdDc5OTZfaGlmX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9wY2kuYy0yNDUtXFx0Lm5hbWVcXHRcXHQ9IEtCVUlMRF9NT0ROQU1FIFxcXCJfaGlmXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L3BjaS5jLTI1MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9wY2kuYzoyNTE6c3RydWN0IHBjaV9kcml2ZXIgbXQ3OTk2X3BjaV9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvcGNpLmMtMjUyLVxcdC5uYW1lXFx0XFx0PSBLQlVJTERfTU9ETkFNRSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTU6MzU6MjguNjY5MzIyNDMxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIxNTk3MTc4OTkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBUaGlzIFBDSSBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIGlzIGRlZmluaXRlbHkgYSBQQ0kgZHJpdmVyIOKAkyB0aGF0IG11Y2ggaXMgY2xlYXIuIFRoZSBwYXRjaCBpdHNlbGYgc2VlbXMgdG8gYmUgaW50cm9kdWNpbmcgYSBjaGVjayByZWxhdGVkIHRvIGZpcm13YXJlIHNpemUsIHdoaWNoIGltbWVkaWF0ZWx5IGNhdGNoZXMgbXkgYXR0ZW50aW9uLiBJIGtub3cgdGhhdCBmaXJtd2FyZSBsb2FkaW5nLCBwYXJ0aWN1bGFybHkgdGhlIGByZXF1ZXN0X2Zpcm13YXJlYCBwYXRoLCBjYW4gYmUgYSBwb3RlbnRpYWwgYXR0YWNrIHZlY3RvciwgZXNwZWNpYWxseSB3aXRoIGZ1enplcnMgbGlrZSBzeXprYWxsZXIgcG9raW5nIGFyb3VuZC4gVGhhdCdzIGEgY2xhc3NpYyBhcmVhIGZvciBleHBsb2l0YXRpb24uXG5cbkdpdmVuIHRoZSBjb250ZXh0LCBJIHRoaW5rIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkZWx2ZSBpbnRvIHRoZSBgbXQ3OTk2X2VlcHJvbV9jaGVja19vcl91c2VfZGVmYXVsdGAgZnVuY3Rpb24gd2l0aGluIGBlZXByb20uY2AuIFRoaXMgZnVuY3Rpb24gaXMgbGlrZWx5IHdoZXJlIHRoZSBmaXJtd2FyZSB2YWxpZGF0aW9uIG9yIHVzYWdlIG9mIGEgZGVmYXVsdCBpcyBoYW5kbGVkLCBhbmQgdGhhdCdzIHdoZXJlIEkgbmVlZCB0byBmb2N1cyBteSBpbnZlc3RpZ2F0aW9uLiBUaGF0J3MgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGlmIHRoaXMgcGF0Y2ggdHJ1bHkgYWRkcmVzc2VzIGEgdnVsbmVyYWJpbGl0eSBvciBzZWN1cml0eSBjb25jZXJuLlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTc1LCJPdXRwdXRUb2tlbnMiOjUxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTU6MzU6NTAuMjY2NTA0NzkzWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyOTkwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9lZXByb20uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMzAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxMzA6XFx0XFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbiAxMzE6XFx0XFx0fVxcbiAxMzI6XFx0XFxuIDEzMzpcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4gMTM0OlxcdH1cXG4gMTM1OlxcdFxcbiAxMzY6XFx0c3RhdGljIGludFxcbiAxMzc6XFx0bXQ3OTk2X2VlcHJvbV9jaGVja19vcl91c2VfZGVmYXVsdChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2LCBib29sIHVzZV9kZWZhdWx0KVxcbiAxMzg6XFx0e1xcbiAxMzk6XFx0XFx0dTggKmVlcHJvbSA9IGRldi1cXHUwMDNlbXQ3Ni5lZXByb20uZGF0YTtcXG4gMTQwOlxcdFxcdGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZncgPSBOVUxMO1xcbiAxNDE6XFx0XFx0aW50IHJldDtcXG4gMTQyOlxcdFxcbiAxNDM6XFx0XFx0cmV0ID0gcmVxdWVzdF9maXJtd2FyZShcXHUwMDI2ZncsIG10Nzk5Nl9lZXByb21fbmFtZShkZXYpLCBkZXYtXFx1MDAzZW10NzYuZGV2KTtcXG4gMTQ0OlxcdFxcdGlmIChyZXQpXFxuIDE0NTpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiAxNDY6XFx0XFxuIDE0NzpcXHRcXHRpZiAoIWZ3IHx8ICFmdy1cXHUwMDNlZGF0YSkge1xcbiAxNDg6XFx0XFx0XFx0ZGV2X2VycihkZXYtXFx1MDAzZW10NzYuZGV2LCBcXFwiSW52YWxpZCBkZWZhdWx0IGJpblxcXFxuXFxcIik7XFxuIDE0OTpcXHRcXHRcXHRyZXQgPSAtRUlOVkFMO1xcbiAxNTA6XFx0XFx0XFx0Z290byBvdXQ7XFxuIDE1MTpcXHRcXHR9XFxuIDE1MjpcXHRcXG4gMTUzOlxcdFxcdGlmIChmdy1cXHUwMDNlc2l6ZSBcXHUwMDNjIE1UNzk5Nl9FRVBST01fU0laRSkge1xcbiAxNTQ6XFx0XFx0XFx0ZGV2X2VycihkZXYtXFx1MDAzZW10NzYuZGV2LCBcXFwiSW52YWxpZCBkZWZhdWx0IGJpbiBzaXplXFxcXG5cXFwiKTtcXG4gMTU1OlxcdFxcdFxcdHJldCA9IC1FSU5WQUw7XFxuIDE1NjpcXHRcXHRcXHRnb3RvIG91dDtcXG4gMTU3OlxcdFxcdH1cXG4gMTU4OlxcdFxcbiAxNTk6XFx0XFx0aWYgKCF1c2VfZGVmYXVsdCBcXHUwMDI2XFx1MDAyNiBtdDc5OTZfZWVwcm9tX3ZhcmlhbnRfdmFsaWQoZGV2LCBmdy1cXHUwMDNlZGF0YSkpXFxuIDE2MDpcXHRcXHRcXHRnb3RvIG91dDtcXG4gMTYxOlxcdFxcbiAxNjI6XFx0XFx0ZGV2X3dhcm4oZGV2LVxcdTAwM2VtdDc2LmRldiwgXFxcImVlcHJvbSBsb2FkIGZhaWwsIHVzZSBkZWZhdWx0IGJpblxcXFxuXFxcIik7XFxuIDE2MzpcXHRcXHRtZW1jcHkoZWVwcm9tLCBmdy1cXHUwMDNlZGF0YSwgTVQ3OTk2X0VFUFJPTV9TSVpFKTtcXG4gMTY0OlxcdFxcdGRldi1cXHUwMDNlZWVwcm9tX21vZGUgPSBFRVBST01fTU9ERV9ERUZBVUxUX0JJTjtcXG4gMTY1OlxcdFxcbiAxNjY6XFx0b3V0OlxcbiAxNjc6XFx0XFx0cmVsZWFzZV9maXJtd2FyZShmdyk7XFxuIDE2ODpcXHRcXG4gMTY5OlxcdFxcdHJldHVybiByZXQ7XFxuIDE3MDpcXHR9XFxuIDE3MTpcXHRcXG4gMTcyOlxcdHN0YXRpYyBpbnQgbXQ3OTk2X2VlcHJvbV9sb2FkKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXFxuIDE3MzpcXHR7XFxuIDE3NDpcXHRcXHR1MzIgZWVwcm9tX2Jsa19zaXplLCBibG9ja19udW07XFxuIDE3NTpcXHRcXHRib29sIHVzZV9kZWZhdWx0ID0gZmFsc2U7XFxuIDE3NjpcXHRcXHRpbnQgcmV0LCBpO1xcbiAxNzc6XFx0XFxuIDE3ODpcXHRcXHRyZXQgPSBtdDc2X2VlcHJvbV9pbml0KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIE1UNzk5Nl9FRVBST01fU0laRSk7XFxuIDE3OTpcXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTU6MzU6NTAuMjY2NjM3MTkzWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIwMDc0NDIwMTk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFJlY2VudCBQYXRjaDogTVQ3OTk2IEVFUFJPTSBWdWxuZXJhYmlsaXR5KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgdGhlIGBtdDc5OTZfZWVwcm9tX2NoZWNrX29yX3VzZV9kZWZhdWx0YCBmdW5jdGlvbi4gVGhlIGtleSBoZXJlIGlzIHRoYXQgaXQncyBjYWxsaW5nIGByZXF1ZXN0X2Zpcm13YXJlYCwgd2hpY2gsIGFzIHdlIGtub3csIGlzIGEgcG90ZW50aWFsIGF2ZW51ZSB0aGF0IFN5emthbGxlciBjYW4gZXhwbG9pdCB0byBpbmplY3QgZmlybXdhcmUuIFRoZSBjb3JlIG9mIHRoZSBmaXggYXBwZWFycyB0byBhZGRyZXNzIGEgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgcmVhZCB3aXRoaW4gYSBgbWVtY3B5YCBvcGVyYXRpb246IHNwZWNpZmljYWxseSwgYG1lbWNweShlZXByb20sIGZ3LVx1MDAzZWRhdGEsIE1UNzk5Nl9FRVBST01fU0laRSk7YCB3aGVyZSBgZnctXHUwMDNlc2l6ZWAgbWlnaHQgYmUgc21hbGxlciB0aGFuIGBNVDc5OTZfRUVQUk9NX1NJWkVgLiBPYnZpb3VzbHksIHRoaXMgY2FuIGxlYWQgdG8gbWVtb3J5IGNvcnJ1cHRpb24sIGRlcGVuZGluZyBvbiB3aGF0IHRoZSBgZWVwcm9tYCBidWZmZXIgaXMgdXNlZCBmb3IuXG5cbkZ1bmN0aW9uYWxseSwgdGhpcyBpcyBhIGNsZWFyIGJ1ZyBmaXgg4oCTIGFuIHVuZGVyLXJlYWQgc2NlbmFyaW8gaXMgYmVpbmcgYWRkcmVzc2VkLiBUaGUgZml4IGlzIHN0cmFpZ2h0Zm9yd2FyZDogdGhleSdyZSBsaWtlbHkgYWRkaW5nIGEgY2hlY2sgdG8gZW5zdXJlIGBmdy1cdTAwM2VzaXplYCBpcyBhdCBsZWFzdCBgTVQ3OTk2X0VFUFJPTV9TSVpFYCBiZWZvcmUgdGhlIGBtZW1jcHlgLlxuXG5UaGUgcmVhbCBxdWVzdGlvbiwgdGhvdWdoLCBpcyB3aGV0aGVyIHRoaXMgaXMgd29ydGggZnV6emluZy4gQ29uc2lkZXJpbmcgdGhlIFN5emthbGxlciBpbmplY3Rpb24gcG9pbnQsIGFuZCB0aGUgcG9zc2liaWxpdHkgb2YgYSBjb250cm9sbGVkIHdyaXRlIChhbGJlaXQgaW4gYSBmaXJtd2FyZS1zcGVjaWZpYyBjb250ZXh0KSwgdGhlIGFuc3dlciBpcyBhIHJlc291bmRpbmcgeWVzLiBJdCdzIGEgcHJpbWUgdGFyZ2V0LiBOb3csIEkgbmVlZCB0byBjaGVjayB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgdG8gc2VlIGlmIHRoaXMgbW9kdWxlIGlzIGVuYWJsZWQgYW5kIHdoYXQgb3B0aW9ucyBhcmUgc2V0LiBUaGlzIGxvb2tzIGxpa2UgYSBwb3RlbnRpYWxseSBoaWdoLWltcGFjdCBmaW5kaW5nLCBzbyBJJ2xsIHByaW9yaXRpemUgZnV6emluZyB0aGlzIGZ1bmN0aW9uIHRob3JvdWdobHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwMTksIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxNTozNjoxMC4zNDEwNjAwOThaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5MjY0ODA4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTVQ3OTk2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9LY29uZmlnOjI6Y29uZmlnIE1UNzk5NkVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzk5NiAoUENJZSkgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L0tjb25maWctMTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvS2NvbmZpZzoxNjpjb25maWcgTVQ3OTk2X05QVVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L0tjb25maWctMTctXFx0Ym9vbCBcXFwiTVQ3OTk2IChQQ0llKSBOUFUgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTU6MzY6MTAuNjMzNzQzNTc2WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1MTk4OTUzNTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqSW5pdGlhbCBDb25maWd1cmF0aW9uIENoZWNrKipcblxuQWxyaWdodCwgdGhlIHN5c3RlbSdzIHJlcG9ydGluZyB0aGUgY29uZmlnIGFzIGBNVDc5OTZFYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiT2theSwgdGhhdCdzIHRoZSBiYXNlbGluZS4gTm93LCBiZWZvcmUgSSBkaXZlIGRlZXBlciwgbGV0J3MganVzdCBxdWlja2x5IHZlcmlmeSDigJMgKmFyZSogdGhlcmUgb3RoZXIgcmVsYXRlZCBjb25maWd1cmF0aW9ucyBJIHNob3VsZCBiZSBhd2FyZSBvZj8gQXJlIHRoZXJlIHZhcmlhbnRzIG9yIHByZWRlY2Vzc29ycyB0aGF0IG1pZ2h0IGluZmx1ZW5jZSB0aGlzIG9uZT8gUGVyaGFwcyBzb21lIHJlbGF0ZWQgbGVnYWN5IHN5c3RlbXM/IEkgbmVlZCB0byBxdWlja2x5IGFzY2VydGFpbiBpZiB0aGlzIGlzIHRoZSAqb25seSogY29uZmlndXJhdGlvbiBvciBpZiBpdCBzaXRzIHdpdGhpbiBhIGJyb2FkZXIgZmFtaWx5IG9mIHJlbGF0ZWQgc2V0dXBzLlwiIEknbSBtZW50YWxseSBmaWxpbmcgdGhpcyBxdWVzdGlvbiB1bmRlciBcImR1ZSBkaWxpZ2VuY2VcIiDigJMgSSBuZWVkIHRvIGVuc3VyZSBJJ20gb3BlcmF0aW5nIHdpdGggdGhlIGZ1bGwgY29udGV4dCBiZWZvcmUgcHJvY2VlZGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTczMiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDE1OjM2OjE0LjE1MzY0MjA1NVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzAyMDA5NTA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk1UNzk5NlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGU9NDY9b2JqLSQoQ09ORklHX01UNzkyMV9DT01NT04pICs9IG10NzkyMS9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlOjQ3Om9iai0kKENPTkZJR19NVDc5OTZFKSArPSBtdDc5OTYvXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZS00OC1vYmotJChDT05GSUdfTVQ3OTI1X0NPTU1PTikgKz0gbXQ3OTI1L1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxNTozNjoxNC40NTU2NTY3ODNaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTU3NjQ0MTAzNTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNVDc5OTZFIEVFUFJPTSBGdW5jdGlvbioqXG5cbk9rYXksIHNvIHdlJ3JlIGxvb2tpbmcgYXQgYE1UNzk5NkVgIOKAkyBnb3QgaXQuIFRoZSBrZXkgZnVuY3Rpb24gSSBuZWVkIHRvIGRpdmUgaW50byBpcyBgbXQ3OTk2X2VlcHJvbV9jaGVja19vcl91c2VfZGVmYXVsdGAuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgc3BlY2lmaWMgYE1UNzk5NkVgIGltcGxlbWVudGF0aW9uIGhhcyBhbnkgZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY29udGV4dCB0byBlbnN1cmUgYSBjb21wcmVoZW5zaXZlIGFuYWx5c2lzLiBMZXQncyBzZWUgd2hhdCBpdCByZWxpZXMgb24sIG9yIGlmIGFueXRoaW5nIHJlbGllcyBvbiAqaXQqLiBJdOKAmXMgYWxsIGFib3V0IHRyYWNpbmcgdGhlIGludGVyY29ubmVjdGVkbmVzcyBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MDgxLCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTU6Mzc6MTAuMjIwMDY5ODI3WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMjI5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuICAgMjpcXHRjb25maWcgTVQ3OTk2RVxcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzk5NiAoUENJZSkgc3VwcG9ydFxcXCJcXG4gICA0OlxcdFxcdHNlbGVjdCBNVDc2X0NPTk5BQ19MSUJcXG4gICA1OlxcdFxcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxcbiAgIDY6XFx0XFx0c2VsZWN0IFJFTEFZXFxuICAgNzpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuICAgODpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiAgIDk6XFx0XFx0aGVscFxcbiAgMTA6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTk2LWJhc2VkIFBDSWUgd2lyZWxlc3MgZGV2aWNlcyxcXG4gIDExOlxcdFxcdCAgd2hpY2ggc3VwcG9ydCBjb25jdXJyZW50IHRyaS1iYW5kIG9wZXJhdGlvbiBhdCA2R0h6LCA1R0h6LFxcbiAgMTI6XFx0XFx0ICBhbmQgMi40R0h6IElFRUUgODAyLjExYmUgNHg0OjRTUyA0MDk2LVFBTSwgMzIwTUh6IGNoYW5uZWxzLlxcbiAgMTM6XFx0XFxuICAxNDpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXFxuICAxNTpcXHRcXG4gIDE2OlxcdGNvbmZpZyBNVDc5OTZfTlBVXFxuICAxNzpcXHRcXHRib29sIFxcXCJNVDc5OTYgKFBDSWUpIE5QVSBzdXBwb3J0XFxcIlxcbiAgMTg6XFx0XFx0ZGVwZW5kcyBvbiBNVDc5OTZFXFxuICAxOTpcXHRcXHRkZXBlbmRzIG9uIE5FVF9BSVJPSEFfTlBVPXkgfHwgTVQ3OTk2RT1ORVRfQUlST0hBX05QVVxcbiAgMjA6XFx0XFx0c2VsZWN0IE1UNzZfTlBVXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDE1OjM3OjEwLjIyMDIwNTY0N1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTU2MzI4ODkzNzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNVDc5OTZFIENvbmZpZ3VyYXRpb24gYW5kIFZ1bG5lcmFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBNVDc5OTZFYCBjb25maWd1cmF0aW9uLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gdGhlIGBtdDc5OTZfZWVwcm9tX2NoZWNrX29yX3VzZV9kZWZhdWx0YCBmdW5jdGlvbi4gVGhlIHBhdGNoJ3MgY29yZSBmdW5jdGlvbiBpcyBhZGRpbmcgYSBib3VuZHMgY2hlY2sgd2l0aGluIHRoYXQgZnVuY3Rpb24sIGRlYWxpbmcgZGlyZWN0bHkgd2l0aCBmaXJtd2FyZSBzaXplLiBUaGUgZ29hbCBpcyB0byBwcmV2ZW50IGEgbmFzdHkgb3V0LW9mLWJvdW5kcyByZWFkIGR1cmluZyB0aGUgYG1lbWNweWAgb3BlcmF0aW9uIGludm9sdmluZyB0aGUgZmlybXdhcmUgZGF0YS5cblxuTXkgZXhwZXJpZW5jZSB3aXRoIFBDSSBkcml2ZXJzIGltbWVkaWF0ZWx5IG1ha2VzIG1lIHRoaW5rIGFib3V0IGZ1enppbmcsIGFuZCBzdXJlIGVub3VnaCwgdGhpcyBpcyBhIFBDSSBkcml2ZXIhIFRoYXQgbWVhbnMgd2UgY2FuIHBvdGVudGlhbGx5IGxldmVyYWdlIHRvb2xzIGxpa2Ugc3l6a2FsbGVyJ3MgUENJIGZ1enplciwgYW5kIHdlIGNhbiBpbnRlcmNlcHQgYW5kIGZ1enogdGhlIGZpcm13YXJlIGxvYWRpbmcgcHJvY2VzcyBpdHNlbGYuIFRoYXTigJlzIHdoZXJlIHRoZSB2dWxuZXJhYmlsaXR5IGxpZXM6IGlmIHdlIGNhbiBtYW5pcHVsYXRlIHRoZSBmaXJtd2FyZSBzaXplIHNvbWVob3cgYW5kIGJ5cGFzcyB0aGF0IGNoZWNrLCB3ZSBtaWdodCBiZSBhYmxlIHRvIHRyaWdnZXIgYSBjcmFzaCBvciBldmVuIHBvdGVudGlhbGx5IG1vcmUgc2VyaW91cyBpc3N1ZXMuXG5cbk5vdywgbGV0J3MganVzdCBjb25maXJtIG15IHVuZGVyc3RhbmRpbmcuIFRvIGJlIHN1cmUgdGhpcyBpcyBhIHJlYWNoYWJsZSBmdW5jdGlvbiwgSSB3YW50IHRvIGNvbmZpcm0gdGhhdCBgbXQ3OTk2X2VlcHJvbV9jaGVja19vcl91c2VfZGVmYXVsdGAgaXMgYWN0dWFsbHkgZ2V0dGluZyBjYWxsZWQsIGFuZCBpbmRlZWQgaXQgaXMgZnJvbSB0aGUgYG10Nzk5Nl9lZXByb21fbG9hZGAgZnVuY3Rpb24uIFRoYXQgZ2l2ZXMgdXMgYSBwYXRoIHRvIGV4cGxvaXQgaWYgd2UgY2FuIG1hbmlwdWxhdGUgdGhlIGlucHV0cyB0byB0aGUgcmlnaHQgZXh0ZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NjUxLCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTY2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTU6Mzk6MDUuODUzMDk3MThaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1OTQyMzQ5NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5OTZfZWVwcm9tX2xvYWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jPTEzNz1tdDc5OTZfZWVwcm9tX2NoZWNrX29yX3VzZV9kZWZhdWx0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIGJvb2wgdXNlX2RlZmF1bHQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9lZXByb20uYy0xNzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZWVwcm9tLmM6MTcyOnN0YXRpYyBpbnQgbXQ3OTk2X2VlcHJvbV9sb2FkKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZWVwcm9tLmMtMTczLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jPTMzOT1pbnQgbXQ3OTk2X2VlcHJvbV9pbml0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9lZXByb20uYy0zNDItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZWVwcm9tLmM6MzQzOlxcdHJldCA9IG10Nzk5Nl9lZXByb21fbG9hZChkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jLTM0NC1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTU6Mzk6MDYuMzEyNTI4ODQ2WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3MDA4Mzk3MTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIGZ1bmN0aW9uOlxuXG4qKlRyYWNpbmcgdGhlIENhbGxlcnMgb2YgYG10Nzk5Nl9lZXByb21faW5pdGAqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGUgYG10Nzk5Nl9lZXByb21faW5pdGAgZnVuY3Rpb24gaXMgYmVpbmcgY2FsbGVkIGZyb20uIFRoaXMgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgcm9sZSBpbiB0aGUgZHJpdmVyJ3MgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgYW5kIHBvdGVudGlhbGx5IGZvciBkZWJ1Z2dpbmcgb3IgbW9kaWZ5aW5nIGl0LiBJJ2QgdHlwaWNhbGx5IHN0YXJ0IGJ5IHVzaW5nIGEgY3Jvc3MtcmVmZXJlbmNpbmcgdG9vbCwgcHJvYmFibHkgYGdyZXBgIG9yIGEgbW9yZSBzb3BoaXN0aWNhdGVkIElERSBzZWFyY2gsIHRvIGh1bnQgZG93biBldmVyeSBpbnN0YW5jZSB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGludm9rZWQgd2l0aGluIHRoZSBjb2RlYmFzZS5cblxuVGhlIGltbWVkaWF0ZSBxdWVzdGlvbiBpcyB3aGV0aGVyIGl0J3MgY2FsbGVkIGRpcmVjdGx5IGZyb20gYSBoaWdoZXItbGV2ZWwgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24sIHBlcmhhcHMgaW4gdGhlIHBsYXRmb3JtIGRldmljZSBwcm9iZSBvciBtb2R1bGUgaW5pdGlhbGl6YXRpb24uIEFsdGVybmF0aXZlbHksIGl0IG1pZ2h0IGJlIGJ1cmllZCBkZWVwZXIgaW4gc29tZSBhYnN0cmFjdGlvbiBsYXllciwgcG90ZW50aWFsbHkgYXNzb2NpYXRlZCB3aXRoIEVFUFJPTSBoYW5kbGluZyB3aXRoaW4gdGhlIHdpcmVsZXNzIGRyaXZlcidzIG92ZXJhbGwgaW5pdGlhbGl6YXRpb24gcm91dGluZS4gSSBuZWVkIHRvIGVzdGFibGlzaCB0aGUgY2FsbCBjaGFpbi4gRG9lcyB0aGlzIGZ1bmN0aW9uIHRha2UgYW55IGFyZ3VtZW50cz8gQXJlIHRoZXNlIHJlbGV2YW50LCBhbmQgaWYgc28sIHdoYXQgZG8gdGhleSByZXByZXNlbnQ/XG5cbk9uY2UgSSBpZGVudGlmeSB0aGUgY2FsbGVycywgSSdsbCBhbmFseXplIHRoZSBzdXJyb3VuZGluZyBjb2RlIHRvIGRldGVybWluZSB0aGUgY29udGV4dC4gV2hhdCdzIGhhcHBlbmluZyAqYmVmb3JlKiB0aGUgY2FsbCB0byBgbXQ3OTk2X2VlcHJvbV9pbml0YD8gV2hhdCdzIGhhcHBlbmluZyAqYWZ0ZXIqPyBBcmUgdGhlcmUgYW55IGRlcGVuZGVuY2llcz8gRG9lcyB0aGlzIGZ1bmN0aW9uJ3MgZXhlY3V0aW9uIGRlcGVuZCBvbiB0aGUgc3VjY2Vzc2Z1bCBpbml0aWFsaXphdGlvbiBvZiBvdGhlciBjb21wb25lbnRzPyBUaGlzIHdpbGwgYWxsIGhlbHAgbWUgdW5kZXJzdGFuZCB0aGUgcHVycG9zZSBvZiB0aGlzIHBhcnRpY3VsYXIgRUVQUk9NIGluaXRpYWxpemF0aW9uIHN0ZXAgaW4gdGhlIGxhcmdlciBkcml2ZXIgZnJhbWV3b3JrLiBJJ2xsIG5lZWQgdG8ga25vdyB0aGUgcmV0dXJuIHZhbHVlIG9mIGBtdDc5OTZfZWVwcm9tX2luaXRgIHRvbywgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGNhbGxlciBoYW5kbGVzIGFueSBwb3RlbnRpYWwgZXJyb3JzIHRoYXQgdGhpcyBmdW5jdGlvbiBtYXkgcmV0dXJuLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NTAwLCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTU6Mzk6MTEuMDEzMzcwNjI5WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjIxNjI2MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTk2X2VlcHJvbV9pbml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9lZXByb20uYz0zMDM9aW50IG10Nzk5Nl9lZXByb21fcGFyc2VfaHdfY2FwKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIHN0cnVjdCBtdDc5OTZfcGh5ICpwaHkpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9lZXByb20uYy0zMzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZWVwcm9tLmM6MzM5OmludCBtdDc5OTZfZWVwcm9tX2luaXQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9lZXByb20uYy0zNDAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jPTEyNTY9c3RhdGljIGludCBtdDc5OTZfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTEyOTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jOjEyOTM6XFx0cmV0ID0gbXQ3OTk2X2VlcHJvbV9pbml0KGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTEyOTQtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tdDc5OTYuaD02ODM9dm9pZCBtdDc5OTZfdmlmX2xpbmtfcmVtb3ZlKHN0cnVjdCBtdDc2X3BoeSAqbXBoeSwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L210Nzk5Ni5oLTY4NS1cXHRcXHRcXHQgICAgc3RydWN0IG10NzZfdmlmX2xpbmsgKm1saW5rKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tdDc5OTYuaDo2ODY6aW50IG10Nzk5Nl9lZXByb21faW5pdChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tdDc5OTYuaC02ODctaW50IG10Nzk5Nl9lZXByb21fcGFyc2VfaHdfY2FwKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIHN0cnVjdCBtdDc5OTZfcGh5ICpwaHkpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxNTozOToxMS4yNzU1NDI2NDlaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMxOTQ0MDM0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIENhbGwgU3RhY2sgb2YgYG10Nzk5Nl9pbml0X2hhcmR3YXJlYCoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBlbnRyeSBwb2ludCBmb3IgYG10Nzk5Nl9pbml0X2hhcmR3YXJlYC4gS25vd2luZyB0aGUgaGlnaGVyLWxldmVsIGZ1bmN0aW9ucyB0aGF0IGNhbGwgaXQgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgcm9sZSBpbiB0aGUgZHJpdmVyJ3MgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgYW5kLCBmcmFua2x5LCBhbnkgcG90ZW50aWFsIGRlYnVnZ2luZyBkb3duIHRoZSBsaW5lLiBJJ20gdGhpbmtpbmcgSSBjYW4gYXBwcm9hY2ggdGhpcyBpbiBhIGZldyB3YXlzLlxuXG5GaXJzdCwgbGV0J3Mgc2VlIHdoYXQgdGhlIGNvZGUgc2hvd3MuIFVzaW5nIGBncmVwYCAob3Igd2hhdGV2ZXIgc2VhcmNoIHRvb2wpIEkgY2FuIHF1aWNrbHkgZ2V0IHRoZSBjcm9zcy1yZWZlcmVuY2VzLiBUaGF0IHdpbGwgZ2l2ZSBtZSB0aGUgaW1tZWRpYXRlIGNhbGxlcnMuIEknbSBnb2luZyB0byBzY2FuIHRoZSByZXN1bHRzIHdpdGggYW4gZXllIG9uIHRoZSBjb250ZXh0IC0gd2hhdCBzcGVjaWZpYyBtb2R1bGVzIG9yIHN1Yi1zeXN0ZW1zIGFyZSBpbnZvbHZlZD8gSXMgaXQgY2FsbGVkIGZyb20gYSBwb3dlciBtYW5hZ2VtZW50IHJvdXRpbmUsIHRoZSBQQ0kgaW5pdGlhbGl6YXRpb24sIG9yIHNvbWV0aGluZyBlbHNlP1xuXG5JZiB0aGF0IGRvZXNuJ3QgaW1tZWRpYXRlbHkgcmV2ZWFsIHRoZSBjYWxsaW5nIGZ1bmN0aW9uIGFuZCBtYWtlIGl0IG9idmlvdXMgd2hhdCBpcyBnb2luZyBvbiwgSSdsbCBuZWVkIHRvIHJlc29ydCB0byB0aGUgZGVidWdnZXIuIEknbGwgc2V0IGEgYnJlYWtwb2ludCBhdCB0aGUgc3RhcnQgb2YgdGhlIGBtdDc5OTZfaW5pdF9oYXJkd2FyZWAgZnVuY3Rpb24gYW5kIGxvb2sgYXQgdGhlIHN0YWNrIHRyYWNlLiBUaGUgc3RhY2sgdHJhY2UsIGNvbWJpbmVkIHdpdGggdGhlIGRyaXZlciBzb3VyY2UgY29kZSwgc2hvdWxkIHByb3ZpZGUgYSBjb21wbGV0ZSBwaWN0dXJlIG9mIHRoZSBjYWxsIGNoYWluIGFuZCByZXZlYWwgd2hhdCdzIGFjdHVhbGx5IGhhcHBlbmluZyBhdCB0aGF0IHBvaW50LiBJJ2xsIG5lZWQgdG8gcGF5IGF0dGVudGlvbiB0byBhbnkgcmVsZXZhbnQgZGV2aWNlIG9yIGNoaXAgcmVsYXRlZCB2YXJpYWJsZXMgdG8gc2VlIGlmIHRoZXJlIGlzIGFueSBjcml0aWNhbCBkYXRhIGJlaW5nIHNldCBiZWZvcmUgdGhlIGBtdDc5OTZfaW5pdF9oYXJkd2FyZWAgZnVuY3Rpb24gY2FsbC5cblxuRmluYWxseSwgSSdsbCByZXZpZXcgdGhlIGRyaXZlcidzIGRvY3VtZW50YXRpb24gYW5kIG90aGVyIHJlbGF0ZWQgaW5pdGlhbGl6YXRpb24gZmlsZXMsIGlmIGFueSwgdG8gZW5zdXJlIHRoYXQgdGhlIGNhbGxpbmcgZnVuY3Rpb24gaXMgYXBwcm9wcmlhdGUgaW4gdGhlIGRyaXZlcidzIGNvbnRleHQuIEkgY2FuJ3QgYmUgb3Zlcmxvb2tpbmcgZG9jdW1lbnRhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6ODUxMiwiT3V0cHV0VG9rZW5zIjo0OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDE1OjM5OjE1LjU5NDk4NTI3OVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY3MjM4NzE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10Nzk5Nl9pbml0X2hhcmR3YXJlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM9MTIxMz1zdGF0aWMgaW50IG10Nzk5Nl92YXJpYW50X2ZlbV9pbml0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMTI1NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM6MTI1NjpzdGF0aWMgaW50IG10Nzk5Nl9pbml0X2hhcmR3YXJlKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTEyNTcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jPTE3MzE9aW50IG10Nzk5Nl9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy0xNzQ5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzoxNzUwOlxcdHJldCA9IG10Nzk5Nl9pbml0X2hhcmR3YXJlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTE3NTEtXFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTU6Mzk6MTUuNzYyMjMwNzE3WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwNDAyNTk1NjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEZWx2aW5nIGludG8gYG10Nzk5Nl9yZWdpc3Rlcl9kZXZpY2VgKipcblxuT2theSwgc28gdGhlIHF1ZXN0aW9uIGltbWVkaWF0ZWx5IHRoYXQgcG9wcyBpbnRvIG15IGhlYWQgaXMsIFwiV2hlcmUgZXhhY3RseSBpcyBgbXQ3OTk2X3JlZ2lzdGVyX2RldmljZWAgYmVpbmcgaW52b2tlZCBmcm9tP1wiIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjYWxsIGdyYXBoIGFuZCB0aGUgYnJvYWRlciBjb250ZXh0IG9mIHRoaXMgZnVuY3Rpb24gd2l0aGluIHRoZSBkcml2ZXIgdG8gcmVhbGx5IGdyYXNwIGl0cyBwdXJwb3NlIGFuZCBwb3RlbnRpYWwgaW1wbGljYXRpb25zLiBJcyBpdCBiZWluZyBjYWxsZWQgZHVyaW5nIGVhcmx5IGluaXRpYWxpemF0aW9uLCBvciBpcyBpdCB0cmlnZ2VyZWQgbGF0ZXIgb24sIHBlcmhhcHMgaW4gcmVzcG9uc2UgdG8gc29tZSBoYXJkd2FyZSBldmVudCBvciB1c2VyIGFjdGlvbj8gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGlzIGlzIGtleSB0byBmaWd1cmluZyBvdXQgdGhlIGZ1bmN0aW9uJ3MgcmVzcG9uc2liaWxpdHkgd2l0aGluIHRoZSBzeXN0ZW0uIElzIGl0IHJlZ2lzdGVyaW5nIGEgZGV2aWNlIGFzIHBhcnQgb2Ygc3lzdGVtIGJyaW5nLXVwIG9yIGFzIHBhcnQgb2YgYSBkeW5hbWljIHBsdWctYW5kLXBsYXkgcHJvY2Vzcz8gVGhhdCBraW5kIG9mIGNvbnRleHR1YWwgdW5kZXJzdGFuZGluZyBpcyB3aGF0IHNlcGFyYXRlcyBpbmZvcm1lZCBndWVzc2VzIGZyb20gY29uZmlkZW50IHVuZGVyc3RhbmRpbmcuIEknbGwgbmVlZCB0byB0cmFjZSB0aGUgY2FsbCBwYXRocyB0byBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MjgwLCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTU6Mzk6MTkuODAyNDkyNTM4WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzIwMjMyNzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTk2X3JlZ2lzdGVyX2RldmljZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jPTE3MTY9dm9pZCBtdDc5OTZfc2V0X3N0cmVhbV9oZV9laHRfY2FwcyhzdHJ1Y3QgbXQ3OTk2X3BoeSAqcGh5KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTE3MzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jOjE3MzE6aW50IG10Nzk5Nl9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMTczMi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tdDc5OTYuaD02Nzc9dTY0IF9fbXQ3OTk2X2dldF90c2Yoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBtdDc5OTZfdmlmX2xpbmsgKmxpbmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L210Nzk5Ni5oOjY3ODppbnQgbXQ3OTk2X3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tdDc5OTYuaC02Nzktdm9pZCBtdDc5OTZfdW5yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10Nzk5Nl9kZXYgKmRldik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9wY2kuYz05OT1zdGF0aWMgaW50IG10Nzk5Nl9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9wY2kuYy0xOTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvcGNpLmM6MTk1OlxcdHJldCA9IG10Nzk5Nl9yZWdpc3Rlcl9kZXZpY2UoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9wY2kuYy0xOTYtXFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTU6Mzk6MTkuOTc0NTIxMTA1WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExODg2NDYzMTk1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBNVDc5OTYgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gYG10Nzk5Nl9wY2lfcHJvYmVgIOKAkyB0aGF0J3MgdGhlIFBDSSBwcm9iZSBmdW5jdGlvbi4gUmlnaHQsIHNvIHRoaXMgY29kZSAqZGVmaW5pdGVseSogZ2V0cyBoaXQgZHVyaW5nIFBDSSBkZXZpY2UgaW5pdGlhbGl6YXRpb24gd2hlbiB0aGUgZHJpdmVyIGlzIHByb2JlZC4gVGhlIGNvcmUgb2YgdGhpcyBwYXRjaCBpcyBhZGRyZXNzaW5nIGEgYnVnIGluIGhvdyB0aGUgZmlybXdhcmUgaXMgbG9hZGVkLiBGcm9tIGEgcXVpY2sgZ2xhbmNlLCBpdCBsb29rcyBmdW5jdGlvbmFsIGFuZCwgY3J1Y2lhbGx5LCByZWFjaGFibGUuIEdpdmVuIHRoYXQgaXQncyBkZWFsaW5nIHdpdGggZmlybXdhcmUgbG9hZGluZyBkdXJpbmcgdGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLCBpdCBhYnNvbHV0ZWx5IHdhcnJhbnRzIGZ1enppbmcuIEZpcm13YXJlIGxvYWRpbmcgaXMgYWx3YXlzIGEganVpY3kgdGFyZ2V0LlxuXG5UaGUgc3BlY2lmaWMgY29uZmlnIGluIHF1ZXN0aW9uIGlzIGBNVDc5OTZFYC4gSSdsbCB3YW50IHRvIG1ha2UgYSBub3RlIG9mIHRoYXQgZm9yIHdoZW4gSSBnZXQgZG93biB0byB0aGUgYnJhc3MgdGFja3MuXG5cbkkgc2hvdWxkIGRvdWJsZS1jaGVjayB0byBtYWtlIHN1cmUgdGhlcmUgYXJlbuKAmXQgYW55IG90aGVyIGNvbmZpZ3VyYXRpb25zIEkgbmVlZCB0byB0YWtlIGludG8gY29uc2lkZXJhdGlvbiwgYnV0IGl0IGxvb2tzIGxpa2UgYE1UNzk5NkVgIGlzIHRoZSBwcmltYXJ5IG9uZSBoZXJlLlxuXG5BbHJpZ2h0LCBJJ20gbWFya2luZyB0aGlzIGFzIGBXb3J0aEZ1enppbmcgPSBUcnVlYC4gVGhpcyBmaXJtd2FyZS1sb2FkaW5nIHBhdGNoIGlzIGRlZmluaXRlbHkgZ29pbmcgb24gdGhlIGxpc3QuIEknbGwgbmVlZCB0byBkaWcgaW50byBgbXQ3OTk2X2VlcHJvbV9jaGVja19vcl91c2VfZGVmYXVsdGAgdG9vLCBhcyB0aGF0IGxvb2tzIGxpa2UgYSBwb3RlbnRpYWwgZm9jdXMgc3ltYm9sLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDA1NCwiT3V0cHV0VG9rZW5zIjoxNDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTU6NDE6MTguODM5MTU2NzVaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNjc1MTMzMDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzk5NkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc5OTZfZWVwcm9tX2NoZWNrX29yX3VzZV9kZWZhdWx0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayBmb3IgZmlybXdhcmUgc2l6ZSBpbiBgbXQ3OTk2X2VlcHJvbV9jaGVja19vcl91c2VfZGVmYXVsdGAgdG8gcHJldmVudCBhbiBvdXQtb2YtYm91bmRzIHJlYWQgZHVyaW5nIGBtZW1jcHlgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGRyaXZlcidzIGluaXRpYWxpemF0aW9uIHBhdGguIFRoZSBkcml2ZXIgaXMgYSBQQ0kgZHJpdmVyIHdoaWNoIGNhbiBiZSBmdXp6ZWQgYnkgc3l6a2FsbGVyJ3MgUENJIGZ1enplciwgYW5kIHRoZSBmaXJtd2FyZSBsb2FkaW5nIGNhbiBiZSBpbnRlcmNlcHRlZCBhbmQgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzk5NkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc5OTZfZWVwcm9tX2NoZWNrX29yX3VzZV9kZWZhdWx0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayBmb3IgZmlybXdhcmUgc2l6ZSBpbiBgbXQ3OTk2X2VlcHJvbV9jaGVja19vcl91c2VfZGVmYXVsdGAgdG8gcHJldmVudCBhbiBvdXQtb2YtYm91bmRzIHJlYWQgZHVyaW5nIGBtZW1jcHlgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGRyaXZlcidzIGluaXRpYWxpemF0aW9uIHBhdGguIFRoZSBkcml2ZXIgaXMgYSBQQ0kgZHJpdmVyIHdoaWNoIGNhbiBiZSBmdXp6ZWQgYnkgc3l6a2FsbGVyJ3MgUENJIGZ1enplciwgYW5kIHRoZSBmaXJtd2FyZSBsb2FkaW5nIGNhbiBiZSBpbnRlcmNlcHRlZCBhbmQgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowkmk2x[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-13 15:00:57 +0000 UTC FinishedAt: 2026-07-13 15:41:20 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "a13c140cc289c0b7b3770bce5b3ad42ab35074aa", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT7996E" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "a13c140cc289c0b7b3770bce5b3ad42ab35074aa", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT7996E" ], "series_id": "84347f93-0a22-45a9-9a4a-ef1d0cf52ffc" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mt7996_eeprom_check_or_use_default" ], "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+CgkJCTx0ZD4yMDI2LzA3LzEzIDE1OjM0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+N208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzk5NkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc5OTZfZWVwcm9tX2NoZWNrX29yX3VzZV9kZWZhdWx0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgZm9yIGZpcm13YXJlIHNpemUgaW4gYG10Nzk5Nl9lZXByb21fY2hlY2tfb3JfdXNlX2RlZmF1bHRgIHRvIHByZXZlbnQgYW4gb3V0LW9mLWJvdW5kcyByZWFkIGR1cmluZyBgbWVtY3B5YC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBkcml2ZXImIzM5O3MgaW5pdGlhbGl6YXRpb24gcGF0aC4gVGhlIGRyaXZlciBpcyBhIFBDSSBkcml2ZXIgd2hpY2ggY2FuIGJlIGZ1enplZCBieSBzeXprYWxsZXImIzM5O3MgUENJIGZ1enplciwgYW5kIHRoZSBmaXJtd2FyZSBsb2FkaW5nIGNhbiBiZSBpbnRlcmNlcHRlZCBhbmQgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDE1OjM0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYjI4YWYzZmU2Mjk3ZGRhMmM3NTU1ZjZkODhlZDc1OWVmNmNhOWQ5ZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVsIDEzIDE1OjM0OjAwIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZWVwcm9tLmNcbmluZGV4IGFjMDVmN2Q3NWQ2M2Q2Li5lYzMzNTIxZGI1NjRiZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9lZXByb20uY1xuQEAgLTE1MCw2ICYjNDM7MTUwLDEyIEBAIG10Nzk5Nl9lZXByb21fY2hlY2tfb3JfdXNlX2RlZmF1bHQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldiwgYm9vbCB1c2VfZGVmYXVsdClcbiBcdFx0Z290byBvdXQ7XG4gXHR9XG4gXG4mIzQzO1x0aWYgKGZ3LVx1MDAzZXNpemUgXHUwMDNjIE1UNzk5Nl9FRVBST01fU0laRSkge1xuJiM0MztcdFx0ZGV2X2VycihkZXYtXHUwMDNlbXQ3Ni5kZXYsIFwmIzM0O0ludmFsaWQgZGVmYXVsdCBiaW4gc2l6ZVxcblwmIzM0Oyk7XG4mIzQzO1x0XHRyZXQgPSAtRUlOVkFMO1xuJiM0MztcdFx0Z290byBvdXQ7XG4mIzQzO1x0fVxuJiM0MztcbiBcdGlmICghdXNlX2RlZmF1bHQgXHUwMDI2XHUwMDI2IG10Nzk5Nl9lZXByb21fdmFyaWFudF92YWxpZChkZXYsIGZ3LVx1MDAzZWRhdGEpKVxuIFx0XHRnb3RvIG91dDtcbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxNTozNDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT43bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNVDc5OTZFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXQ3OTk2X2VlcHJvbV9jaGVja19vcl91c2VfZGVmYXVsdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIGZvciBmaXJtd2FyZSBzaXplIGluIGBtdDc5OTZfZWVwcm9tX2NoZWNrX29yX3VzZV9kZWZhdWx0YCB0byBwcmV2ZW50IGFuIG91dC1vZi1ib3VuZHMgcmVhZCBkdXJpbmcgYG1lbWNweWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgZHJpdmVyJiMzOTtzIGluaXRpYWxpemF0aW9uIHBhdGguIFRoZSBkcml2ZXIgaXMgYSBQQ0kgZHJpdmVyIHdoaWNoIGNhbiBiZSBmdXp6ZWQgYnkgc3l6a2FsbGVyJiMzOTtzIFBDSSBmdXp6ZXIsIGFuZCB0aGUgZmlybXdhcmUgbG9hZGluZyBjYW4gYmUgaW50ZXJjZXB0ZWQgYW5kIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYjI4YWYzZmU2Mjk3ZGRhMmM3NTU1ZjZkODhlZDc1OWVmNmNhOWQ5ZQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gSnVsIDEzIDE1OjM0OjAwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZWVwcm9tLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9lZXByb20uYwppbmRleCBhYzA1ZjdkNzVkNjNkNi4uZWMzMzUyMWRiNTY0YmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jCkBAIC0xNTAsNiAmIzQzOzE1MCwxMiBAQCBtdDc5OTZfZWVwcm9tX2NoZWNrX29yX3VzZV9kZWZhdWx0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIGJvb2wgdXNlX2RlZmF1bHQpCiAJCWdvdG8gb3V0OwogCX0KIAomIzQzOwlpZiAoZnctJmd0O3NpemUgJmx0OyBNVDc5OTZfRUVQUk9NX1NJWkUpIHsKJiM0MzsJCWRldl9lcnIoZGV2LSZndDttdDc2LmRldiwgJiMzNDtJbnZhbGlkIGRlZmF1bHQgYmluIHNpemVcbiYjMzQ7KTsKJiM0MzsJCXJldCA9IC1FSU5WQUw7CiYjNDM7CQlnb3RvIG91dDsKJiM0MzsJfQomIzQzOwogCWlmICghdXNlX2RlZmF1bHQgJmFtcDsmYW1wOyBtdDc5OTZfZWVwcm9tX3ZhcmlhbnRfdmFsaWQoZGV2LCBmdy0mZ3Q7ZGF0YSkpCiAJCWdvdG8gb3V0OwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDE1OjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5MjQKCQkJCQkJCW91dHB1dDogNTkKCQkJCQkJCXRob3VnaHRzOiA4NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQb3RlbnRpYWwgRUVQUk9NIFZ1bG5lcmFiaWxpdHkqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0b3VjaGVzIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZWVwcm9tLmNgIGZpbGUuIEl0IHNlZW1zIHRvIGJlIGFkZGluZyBhIHNpemUgY2hlY2s6IGBpZiAoZnctJmd0O3NpemUgJmx0OyBNVDc5OTZfRUVQUk9NX1NJWkUpYCB3aXRoaW4gdGhlIGBtdDc5OTZfZWVwcm9tX2NoZWNrX29yX3VzZV9kZWZhdWx0YCBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB3aGF0JiMzOTtzIHRoZSByYXRpb25hbGUgYmVoaW5kIHRoaXM/IFdoYXQgdnVsbmVyYWJpbGl0eSBpcyB0aGlzIGFkZHJlc3NpbmcsIG9yIGF0IGxlYXN0IGF0dGVtcHRpbmcgdG8gbWl0aWdhdGU/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmdW5jdGlvbiYjMzk7cyBwdXJwb3NlIGFuZCB0aGUgc3Vycm91bmRpbmcgY29kZSB0byBkZXRlcm1pbmUgaXRzIGVmZmVjdGl2ZW5lc3MgYW5kIHRoZSBzcGVjaWZpYyBpc3N1ZSBpdCYjMzk7cyB0cnlpbmcgdG8gcmVzb2x2ZS4gVGhpcyBjaGVjayBsaWtlbHkgYWltcyB0byBwcmV2ZW50IHRoZSBjb2RlIGZyb20gb3BlcmF0aW5nIG9uIEVFUFJPTSBkYXRhIHRoYXQmIzM5O3Mgc21hbGxlciB0aGFuIHRoZSBleHBlY3RlZCBzaXplIG9mIGEgTVQ3OTk2IEVFUFJPTS4gTm93LCBJIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBjb2RlIHRoYXQgY2FsbHMgdGhpcyBmdW5jdGlvbiBhbmQgZmlndXJlIG91dCB3aGF0IGhhcHBlbnMgd2hlbiB0aGUgZmlybXdhcmUgc2l6ZSBpcyB0b28gc21hbGw7IHdoYXQgYXJlIHRoZSBwb3RlbnRpYWwgY29uc2VxdWVuY2VzPyBJcyBpdCBhIGJ1ZmZlciBvdmVyZmxvdyByaXNrPyBDb3VsZCB0aGlzIGludHJvZHVjZSBzb21lIG90aGVyIGtpbmQgb2YgdnVsbmVyYWJpbGl0eSBvciBmdW5jdGlvbmFsIHByb2JsZW0/IExldCYjMzk7cyB0cmFjZSBpdCBhbmQgZmluZCBvdXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTU6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTk2X2VlcHJvbV9jaGVja19vcl91c2VfZGVmYXVsdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jPTEzNj1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9lZXByb20uYzoxMzc6bXQ3OTk2X2VlcHJvbV9jaGVja19vcl91c2VfZGVmYXVsdChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2LCBib29sIHVzZV9kZWZhdWx0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZWVwcm9tLmMtMTM4LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9lZXByb20uYz0xNzI9c3RhdGljIGludCBtdDc5OTZfZWVwcm9tX2xvYWQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9lZXByb20uYy0yMzItb3V0OlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZWVwcm9tLmM6MjMzOlx0cmV0dXJuIG10Nzk5Nl9lZXByb21fY2hlY2tfb3JfdXNlX2RlZmF1bHQoZGV2LCB1c2VfZGVmYXVsdCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9lZXByb20uYy0yMzQtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDE1OjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2MTkKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAxMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgRmlybXdhcmUgU2l6ZSBDaGVjayBpbiB0aGUgTVQ3OTk2IFdpLUZpIERyaXZlcioqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBjaGVjazogYGZ3LSZndDtzaXplICZsdDsgTVQ3OTk2X0VFUFJPTV9TSVpFYC4gSXQmIzM5O3MgYSBmaXJtd2FyZSBzaXplIGNoZWNrLCB3aGljaCBpcyBhIGdvb2QgdGhpbmcgdG8gaGF2ZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCAmIzM0O0lzIHRoaXMgY2hlY2sgZXZlbiByZWxldmFudCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHM/JiMzNDsgV2UgYWx3YXlzIGhhdmUgdG8gY29uc2lkZXIgdGhlIGF0dGFjayBzdXJmYWNlLiBUaGlzIGlzIGNyaXRpY2FsIHdoZW4gdGhpbmtpbmcgYWJvdXQgZnV6emluZy4KCk5vdywgYG10Nzk5NmAuLi4gcmlnaHQsIHRoYXQmIzM5O3MgYSBNZWRpYXRlayBXaS1GaSBkcml2ZXIuIEFuZCB0aGF0IG1ha2VzIG1lIHdvbmRlciwgJiMzNDtDYW4gdGhpcyBiZSBmdXp6ZWQ/JiMzNDsgVGhhdCYjMzk7cyB0aGUgbmV4dCBsb2dpY2FsIHF1ZXN0aW9uLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgV2ktRmkgZHJpdmVycyBvZnRlbiBsZW5kIHRoZW1zZWx2ZXMgdG8gZnV6emluZyBpZiB0aGV5IGludGVyYWN0IHdpdGggdGhlIGhhcmR3YXJlIHZpYSBgbWFjODAyMTFfaHdzaW1gIG9yLCBldmVuIGJldHRlciwgYXJlIFVTQi9QQ0llIGRldmljZXMgd2hlcmUgZW11bGF0aW9uIGlzIHBvc3NpYmxlLiBTbywgdGhlIHF1ZXN0aW9uIGJlY29tZXM6ICYjMzQ7SXMgYG10Nzk5NmAgYSBQQ0llIG9yIFVTQiBkcml2ZXI/JiMzNDsgVGhhdCYjMzk7cyB0aGUga2V5IHRvIGZpZ3VyaW5nIG91dCBob3cgcHJhY3RpY2FsIGZ1enppbmcgdGhpcyBzaXplIGNoZWNrIHdvdWxkIGJlLiBHb3R0YSBmaWd1cmUgdGhhdCBvdXQgZmlyc3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTU6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttb2R1bGVfLipkcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDE1OjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMzYKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOgoKKipEaXZpbmcgaW50byB0aGUgTVQ3OTk2IEZpbGVzKioKCk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJJiMzOTttIGdvaW5nIHRvIG5hdmlnYXRlIGRpcmVjdGx5IGludG8gdGhlIGhlYXJ0IG9mIHRoZSBtYXR0ZXIg4oCTIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvYCBkaXJlY3RvcnkuIFRoaXMgaXMgd2hlcmUgdGhlIG1hZ2ljIGhhcHBlbnMsIHRoZSBndXRzIG9mIHRoZSBNVDc5OTYgd2lyZWxlc3MgZHJpdmVyIGFyZSBzdXJlbHkgbG9jYXRlZCBoZXJlLiBJIGtub3cgdGhpcyBhcmNoaXRlY3R1cmUsIEkga25vdyB3aGF0IEkmIzM5O20gbG9va2luZyBmb3Ig4oCTIHRoZSBjcml0aWNhbCBjb250cm9sIHBvaW50cywgdGhlIGtleSBkYXRhIHN0cnVjdHVyZXMsIHRoZSBjcnVjaWFsIGZ1bmN0aW9ucyB0aGF0IG1ha2UgdGhpcyBjaGlwIGh1bS4gTGV04oCZcyBzZWUgd2hhdCBnZW1zIGFyZSB3YWl0aW5nIHRvIGJlIHVuY292ZXJlZC4gTGV0JiMzOTtzIHNlZSBpZiB0aGVyZSBhcmUgYW55IGNoYW5nZXMgZnJvbSBteSBsYXN0IHBlcnVzYWwsIGFuZCB3aGF0IHNvcnQgb2YgbmV3IG51YW5jZXMgSSBtaWdodCBkaXNjb3Zlci4gSSYjMzk7bSBpdGNoaW5nIHRvIGRpZyBpbiEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxNTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmNvZGVzZWFyY2gtZGlyLWluZGV4PC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtEaXImIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZXMmIzM0OzogWwogICAgJiMzNDtjb3JlZHVtcC5jJiMzNDssCiAgICAmIzM0O2NvcmVkdW1wLmgmIzM0OywKICAgICYjMzQ7ZGVidWdmcy5jJiMzNDssCiAgICAmIzM0O2RtYS5jJiMzNDssCiAgICAmIzM0O2VlcHJvbS5jJiMzNDssCiAgICAmIzM0O2VlcHJvbS5oJiMzNDssCiAgICAmIzM0O2luaXQuYyYjMzQ7LAogICAgJiMzNDttYWMuYyYjMzQ7LAogICAgJiMzNDttYWMuaCYjMzQ7LAogICAgJiMzNDttYWluLmMmIzM0OywKICAgICYjMzQ7bWN1LmMmIzM0OywKICAgICYjMzQ7bWN1LmgmIzM0OywKICAgICYjMzQ7bW1pby5jJiMzNDssCiAgICAmIzM0O210Nzk5Ni5oJiMzNDssCiAgICAmIzM0O25wdS5jJiMzNDssCiAgICAmIzM0O3BjaS5jJiMzNDssCiAgICAmIzM0O3JlZ3MuaCYjMzQ7CiAgXSwKICAmIzM0O1N1YmRpcnMmIzM0OzogbnVsbAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTU6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQxMQoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDU5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUENJIERyaXZlcioqCgpPa2F5LCBzbyBJIHNlZSB0aGlzIGNvZGUgaXMgZGVhbGluZyB3aXRoIGBwY2kuY2AuIFJpZ2h0IGF3YXksIHRoYXQgdGVsbHMgbWUgd2UmIzM5O3JlIGxvb2tpbmcgYXQgYSBQQ0kgZHJpdmVyLiBUaGUgbmF0dXJhbCBxdWVzdGlvbiBpcywgY2FuIHdlIGZ1enogdGhpcz8gQW5kIHRoZSBhbnN3ZXIsIGFzIEkga25vdywgaXMgYSByZXNvdW5kaW5nIHllcyAtIHN5emthbGxlciBoYXMgYSBQQ0kgZnV6emVyLCB3aGljaCBtYWtlcyB0aGlzIHBhcnRpY3VsYXJseSBpbnRlcmVzdGluZy4gTm93LCBteSBuZXh0IHN0ZXAgaXMgY2xlYXIuIEkmIzM5O2xsIGRpdmUgaW50byB0aGUgYHBjaS5jYCBjb2RlIGl0c2VsZi4gSSBuZWVkIHRvIHF1aWNrbHkgYXNzZXNzIGlmIGl0JiMzOTtzIGEgcmVsYXRpdmVseSBzdGFuZGFyZCBvciBhIG1vcmUgc3BlY2lhbGl6ZWQgUENJIGRyaXZlciwgYW5kIGlmIHRoZXJlIG1pZ2h0IGJlIGFueXRoaW5nIHBhcnRpY3VsYXJseSBqdWljeSB0aGVyZSB0aGF0IHdhcnJhbnRzIG15IGV4cGVydCBhdHRlbnRpb24uIFRoaXMgaW5pdGlhbCBzY2FuIHdpbGwgZ3VpZGUgaG93IG11Y2ggZGVlcGVyIEkgbmVlZCB0byBnbyBhbmQgdGhlIGJlc3QgYXBwcm9hY2ggZm9yIGZ1enppbmcgdGhpcyBzcGVjaWZpYyBkcml2ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDE1OjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BjaV9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9wY2kuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9wY2kuYz0yMzM9c3RhdGljIHZvaWQgbXQ3OTk2X3BjaV9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvcGNpLmMtMjQzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvcGNpLmM6MjQ0OnN0cnVjdCBwY2lfZHJpdmVyIG10Nzk5Nl9oaWZfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvcGNpLmMtMjQ1LVx0Lm5hbWVcdFx0PSBLQlVJTERfTU9ETkFNRSBcJiMzNDtfaGlmXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L3BjaS5jLTI1MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L3BjaS5jOjI1MTpzdHJ1Y3QgcGNpX2RyaXZlciBtdDc5OTZfcGNpX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L3BjaS5jLTI1Mi1cdC5uYW1lXHRcdD0gS0JVSUxEX01PRE5BTUUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDE1OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5NzUKCQkJCQkJCW91dHB1dDogNTEKCQkJCQkJCXRob3VnaHRzOiA3MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgVGhpcyBQQ0kgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgaXMgZGVmaW5pdGVseSBhIFBDSSBkcml2ZXIg4oCTIHRoYXQgbXVjaCBpcyBjbGVhci4gVGhlIHBhdGNoIGl0c2VsZiBzZWVtcyB0byBiZSBpbnRyb2R1Y2luZyBhIGNoZWNrIHJlbGF0ZWQgdG8gZmlybXdhcmUgc2l6ZSwgd2hpY2ggaW1tZWRpYXRlbHkgY2F0Y2hlcyBteSBhdHRlbnRpb24uIEkga25vdyB0aGF0IGZpcm13YXJlIGxvYWRpbmcsIHBhcnRpY3VsYXJseSB0aGUgYHJlcXVlc3RfZmlybXdhcmVgIHBhdGgsIGNhbiBiZSBhIHBvdGVudGlhbCBhdHRhY2sgdmVjdG9yLCBlc3BlY2lhbGx5IHdpdGggZnV6emVycyBsaWtlIHN5emthbGxlciBwb2tpbmcgYXJvdW5kLiBUaGF0JiMzOTtzIGEgY2xhc3NpYyBhcmVhIGZvciBleHBsb2l0YXRpb24uCgpHaXZlbiB0aGUgY29udGV4dCwgSSB0aGluayB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZGVsdmUgaW50byB0aGUgYG10Nzk5Nl9lZXByb21fY2hlY2tfb3JfdXNlX2RlZmF1bHRgIGZ1bmN0aW9uIHdpdGhpbiBgZWVwcm9tLmNgLiBUaGlzIGZ1bmN0aW9uIGlzIGxpa2VseSB3aGVyZSB0aGUgZmlybXdhcmUgdmFsaWRhdGlvbiBvciB1c2FnZSBvZiBhIGRlZmF1bHQgaXMgaGFuZGxlZCwgYW5kIHRoYXQmIzM5O3Mgd2hlcmUgSSBuZWVkIHRvIGZvY3VzIG15IGludmVzdGlnYXRpb24uIFRoYXQmIzM5O3MgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGlmIHRoaXMgcGF0Y2ggdHJ1bHkgYWRkcmVzc2VzIGEgdnVsbmVyYWJpbGl0eSBvciBzZWN1cml0eSBjb25jZXJuLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxNTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTMwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxMzA6XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG4gMTMxOlx0XHR9XG4gMTMyOlx0XG4gMTMzOlx0XHRyZXR1cm4gdHJ1ZTtcbiAxMzQ6XHR9XG4gMTM1Olx0XG4gMTM2Olx0c3RhdGljIGludFxuIDEzNzpcdG10Nzk5Nl9lZXByb21fY2hlY2tfb3JfdXNlX2RlZmF1bHQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldiwgYm9vbCB1c2VfZGVmYXVsdClcbiAxMzg6XHR7XG4gMTM5Olx0XHR1OCAqZWVwcm9tID0gZGV2LVx1MDAzZW10NzYuZWVwcm9tLmRhdGE7XG4gMTQwOlx0XHRjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3ID0gTlVMTDtcbiAxNDE6XHRcdGludCByZXQ7XG4gMTQyOlx0XG4gMTQzOlx0XHRyZXQgPSByZXF1ZXN0X2Zpcm13YXJlKFx1MDAyNmZ3LCBtdDc5OTZfZWVwcm9tX25hbWUoZGV2KSwgZGV2LVx1MDAzZW10NzYuZGV2KTtcbiAxNDQ6XHRcdGlmIChyZXQpXG4gMTQ1Olx0XHRcdHJldHVybiByZXQ7XG4gMTQ2Olx0XG4gMTQ3Olx0XHRpZiAoIWZ3IHx8ICFmdy1cdTAwM2VkYXRhKSB7XG4gMTQ4Olx0XHRcdGRldl9lcnIoZGV2LVx1MDAzZW10NzYuZGV2LCBcJiMzNDtJbnZhbGlkIGRlZmF1bHQgYmluXFxuXCYjMzQ7KTtcbiAxNDk6XHRcdFx0cmV0ID0gLUVJTlZBTDtcbiAxNTA6XHRcdFx0Z290byBvdXQ7XG4gMTUxOlx0XHR9XG4gMTUyOlx0XG4gMTUzOlx0XHRpZiAoZnctXHUwMDNlc2l6ZSBcdTAwM2MgTVQ3OTk2X0VFUFJPTV9TSVpFKSB7XG4gMTU0Olx0XHRcdGRldl9lcnIoZGV2LVx1MDAzZW10NzYuZGV2LCBcJiMzNDtJbnZhbGlkIGRlZmF1bHQgYmluIHNpemVcXG5cJiMzNDspO1xuIDE1NTpcdFx0XHRyZXQgPSAtRUlOVkFMO1xuIDE1NjpcdFx0XHRnb3RvIG91dDtcbiAxNTc6XHRcdH1cbiAxNTg6XHRcbiAxNTk6XHRcdGlmICghdXNlX2RlZmF1bHQgXHUwMDI2XHUwMDI2IG10Nzk5Nl9lZXByb21fdmFyaWFudF92YWxpZChkZXYsIGZ3LVx1MDAzZWRhdGEpKVxuIDE2MDpcdFx0XHRnb3RvIG91dDtcbiAxNjE6XHRcbiAxNjI6XHRcdGRldl93YXJuKGRldi1cdTAwM2VtdDc2LmRldiwgXCYjMzQ7ZWVwcm9tIGxvYWQgZmFpbCwgdXNlIGRlZmF1bHQgYmluXFxuXCYjMzQ7KTtcbiAxNjM6XHRcdG1lbWNweShlZXByb20sIGZ3LVx1MDAzZWRhdGEsIE1UNzk5Nl9FRVBST01fU0laRSk7XG4gMTY0Olx0XHRkZXYtXHUwMDNlZWVwcm9tX21vZGUgPSBFRVBST01fTU9ERV9ERUZBVUxUX0JJTjtcbiAxNjU6XHRcbiAxNjY6XHRvdXQ6XG4gMTY3Olx0XHRyZWxlYXNlX2Zpcm13YXJlKGZ3KTtcbiAxNjg6XHRcbiAxNjk6XHRcdHJldHVybiByZXQ7XG4gMTcwOlx0fVxuIDE3MTpcdFxuIDE3MjpcdHN0YXRpYyBpbnQgbXQ3OTk2X2VlcHJvbV9sb2FkKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXG4gMTczOlx0e1xuIDE3NDpcdFx0dTMyIGVlcHJvbV9ibGtfc2l6ZSwgYmxvY2tfbnVtO1xuIDE3NTpcdFx0Ym9vbCB1c2VfZGVmYXVsdCA9IGZhbHNlO1xuIDE3NjpcdFx0aW50IHJldCwgaTtcbiAxNzc6XHRcbiAxNzg6XHRcdHJldCA9IG10NzZfZWVwcm9tX2luaXQoXHUwMDI2ZGV2LVx1MDAzZW10NzYsIE1UNzk5Nl9FRVBST01fU0laRSk7XG4gMTc5Olx0XHRpZiAocmV0IFx1MDAzYyAwKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxNTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDE5CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFJlY2VudCBQYXRjaDogTVQ3OTk2IEVFUFJPTSBWdWxuZXJhYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgYG10Nzk5Nl9lZXByb21fY2hlY2tfb3JfdXNlX2RlZmF1bHRgIGZ1bmN0aW9uLiBUaGUga2V5IGhlcmUgaXMgdGhhdCBpdCYjMzk7cyBjYWxsaW5nIGByZXF1ZXN0X2Zpcm13YXJlYCwgd2hpY2gsIGFzIHdlIGtub3csIGlzIGEgcG90ZW50aWFsIGF2ZW51ZSB0aGF0IFN5emthbGxlciBjYW4gZXhwbG9pdCB0byBpbmplY3QgZmlybXdhcmUuIFRoZSBjb3JlIG9mIHRoZSBmaXggYXBwZWFycyB0byBhZGRyZXNzIGEgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgcmVhZCB3aXRoaW4gYSBgbWVtY3B5YCBvcGVyYXRpb246IHNwZWNpZmljYWxseSwgYG1lbWNweShlZXByb20sIGZ3LSZndDtkYXRhLCBNVDc5OTZfRUVQUk9NX1NJWkUpO2Agd2hlcmUgYGZ3LSZndDtzaXplYCBtaWdodCBiZSBzbWFsbGVyIHRoYW4gYE1UNzk5Nl9FRVBST01fU0laRWAuIE9idmlvdXNseSwgdGhpcyBjYW4gbGVhZCB0byBtZW1vcnkgY29ycnVwdGlvbiwgZGVwZW5kaW5nIG9uIHdoYXQgdGhlIGBlZXByb21gIGJ1ZmZlciBpcyB1c2VkIGZvci4KCkZ1bmN0aW9uYWxseSwgdGhpcyBpcyBhIGNsZWFyIGJ1ZyBmaXgg4oCTIGFuIHVuZGVyLXJlYWQgc2NlbmFyaW8gaXMgYmVpbmcgYWRkcmVzc2VkLiBUaGUgZml4IGlzIHN0cmFpZ2h0Zm9yd2FyZDogdGhleSYjMzk7cmUgbGlrZWx5IGFkZGluZyBhIGNoZWNrIHRvIGVuc3VyZSBgZnctJmd0O3NpemVgIGlzIGF0IGxlYXN0IGBNVDc5OTZfRUVQUk9NX1NJWkVgIGJlZm9yZSB0aGUgYG1lbWNweWAuCgpUaGUgcmVhbCBxdWVzdGlvbiwgdGhvdWdoLCBpcyB3aGV0aGVyIHRoaXMgaXMgd29ydGggZnV6emluZy4gQ29uc2lkZXJpbmcgdGhlIFN5emthbGxlciBpbmplY3Rpb24gcG9pbnQsIGFuZCB0aGUgcG9zc2liaWxpdHkgb2YgYSBjb250cm9sbGVkIHdyaXRlIChhbGJlaXQgaW4gYSBmaXJtd2FyZS1zcGVjaWZpYyBjb250ZXh0KSwgdGhlIGFuc3dlciBpcyBhIHJlc291bmRpbmcgeWVzLiBJdCYjMzk7cyBhIHByaW1lIHRhcmdldC4gTm93LCBJIG5lZWQgdG8gY2hlY2sgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIHRvIHNlZSBpZiB0aGlzIG1vZHVsZSBpcyBlbmFibGVkIGFuZCB3aGF0IG9wdGlvbnMgYXJlIHNldC4gVGhpcyBsb29rcyBsaWtlIGEgcG90ZW50aWFsbHkgaGlnaC1pbXBhY3QgZmluZGluZywgc28gSSYjMzk7bGwgcHJpb3JpdGl6ZSBmdXp6aW5nIHRoaXMgZnVuY3Rpb24gdGhvcm91Z2hseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTU6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1UNzk5NiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L0tjb25maWc6Mjpjb25maWcgTVQ3OTk2RVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3OTk2IChQQ0llKSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvS2NvbmZpZy0xNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L0tjb25maWc6MTY6Y29uZmlnIE1UNzk5Nl9OUFVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L0tjb25maWctMTctXHRib29sIFwmIzM0O01UNzk5NiAoUENJZSkgTlBVIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTU6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTczMgoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqSW5pdGlhbCBDb25maWd1cmF0aW9uIENoZWNrKioKCkFscmlnaHQsIHRoZSBzeXN0ZW0mIzM5O3MgcmVwb3J0aW5nIHRoZSBjb25maWcgYXMgYE1UNzk5NkVgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtPa2F5LCB0aGF0JiMzOTtzIHRoZSBiYXNlbGluZS4gTm93LCBiZWZvcmUgSSBkaXZlIGRlZXBlciwgbGV0JiMzOTtzIGp1c3QgcXVpY2tseSB2ZXJpZnkg4oCTICphcmUqIHRoZXJlIG90aGVyIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMgSSBzaG91bGQgYmUgYXdhcmUgb2Y/IEFyZSB0aGVyZSB2YXJpYW50cyBvciBwcmVkZWNlc3NvcnMgdGhhdCBtaWdodCBpbmZsdWVuY2UgdGhpcyBvbmU/IFBlcmhhcHMgc29tZSByZWxhdGVkIGxlZ2FjeSBzeXN0ZW1zPyBJIG5lZWQgdG8gcXVpY2tseSBhc2NlcnRhaW4gaWYgdGhpcyBpcyB0aGUgKm9ubHkqIGNvbmZpZ3VyYXRpb24gb3IgaWYgaXQgc2l0cyB3aXRoaW4gYSBicm9hZGVyIGZhbWlseSBvZiByZWxhdGVkIHNldHVwcy4mIzM0OyBJJiMzOTttIG1lbnRhbGx5IGZpbGluZyB0aGlzIHF1ZXN0aW9uIHVuZGVyICYjMzQ7ZHVlIGRpbGlnZW5jZSYjMzQ7IOKAkyBJIG5lZWQgdG8gZW5zdXJlIEkmIzM5O20gb3BlcmF0aW5nIHdpdGggdGhlIGZ1bGwgY29udGV4dCBiZWZvcmUgcHJvY2VlZGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTU6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TVQ3OTk2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlPTQ2PW9iai0kKENPTkZJR19NVDc5MjFfQ09NTU9OKSAmIzQzOz0gbXQ3OTIxL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZTo0NzpvYmotJChDT05GSUdfTVQ3OTk2RSkgJiM0Mzs9IG10Nzk5Ni9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGUtNDgtb2JqLSQoQ09ORklHX01UNzkyNV9DT01NT04pICYjNDM7PSBtdDc5MjUvXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDE1OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYwODEKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiA1MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1UNzk5NkUgRUVQUk9NIEZ1bmN0aW9uKioKCk9rYXksIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IGBNVDc5OTZFYCDigJMgZ290IGl0LiBUaGUga2V5IGZ1bmN0aW9uIEkgbmVlZCB0byBkaXZlIGludG8gaXMgYG10Nzk5Nl9lZXByb21fY2hlY2tfb3JfdXNlX2RlZmF1bHRgLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIGRldGVybWluZSBpZiB0aGlzIHNwZWNpZmljIGBNVDc5OTZFYCBpbXBsZW1lbnRhdGlvbiBoYXMgYW55IGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGNvbnRleHQgdG8gZW5zdXJlIGEgY29tcHJlaGVuc2l2ZSBhbmFseXNpcy4gTGV0JiMzOTtzIHNlZSB3aGF0IGl0IHJlbGllcyBvbiwgb3IgaWYgYW55dGhpbmcgcmVsaWVzIG9uICppdCouIEl04oCZcyBhbGwgYWJvdXQgdHJhY2luZyB0aGUgaW50ZXJjb25uZWN0ZWRuZXNzIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDE1OjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxuICAgMjpcdGNvbmZpZyBNVDc5OTZFXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc5OTYgKFBDSWUpIHN1cHBvcnRcJiMzNDtcbiAgIDQ6XHRcdHNlbGVjdCBNVDc2X0NPTk5BQ19MSUJcbiAgIDU6XHRcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxuICAgNjpcdFx0c2VsZWN0IFJFTEFZXG4gICA3Olx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gICA4Olx0XHRkZXBlbmRzIG9uIFBDSVxuICAgOTpcdFx0aGVscFxuICAxMDpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTk2LWJhc2VkIFBDSWUgd2lyZWxlc3MgZGV2aWNlcyxcbiAgMTE6XHRcdCAgd2hpY2ggc3VwcG9ydCBjb25jdXJyZW50IHRyaS1iYW5kIG9wZXJhdGlvbiBhdCA2R0h6LCA1R0h6LFxuICAxMjpcdFx0ICBhbmQgMi40R0h6IElFRUUgODAyLjExYmUgNHg0OjRTUyA0MDk2LVFBTSwgMzIwTUh6IGNoYW5uZWxzLlxuICAxMzpcdFxuICAxNDpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxuICAxNTpcdFxuICAxNjpcdGNvbmZpZyBNVDc5OTZfTlBVXG4gIDE3Olx0XHRib29sIFwmIzM0O01UNzk5NiAoUENJZSkgTlBVIHN1cHBvcnRcJiMzNDtcbiAgMTg6XHRcdGRlcGVuZHMgb24gTVQ3OTk2RVxuICAxOTpcdFx0ZGVwZW5kcyBvbiBORVRfQUlST0hBX05QVT15IHx8IE1UNzk5NkU9TkVUX0FJUk9IQV9OUFVcbiAgMjA6XHRcdHNlbGVjdCBNVDc2X05QVVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxNTozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NjUxCgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogMTY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTVQ3OTk2RSBDb25maWd1cmF0aW9uIGFuZCBWdWxuZXJhYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBNVDc5OTZFYCBjb25maWd1cmF0aW9uLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gdGhlIGBtdDc5OTZfZWVwcm9tX2NoZWNrX29yX3VzZV9kZWZhdWx0YCBmdW5jdGlvbi4gVGhlIHBhdGNoJiMzOTtzIGNvcmUgZnVuY3Rpb24gaXMgYWRkaW5nIGEgYm91bmRzIGNoZWNrIHdpdGhpbiB0aGF0IGZ1bmN0aW9uLCBkZWFsaW5nIGRpcmVjdGx5IHdpdGggZmlybXdhcmUgc2l6ZS4gVGhlIGdvYWwgaXMgdG8gcHJldmVudCBhIG5hc3R5IG91dC1vZi1ib3VuZHMgcmVhZCBkdXJpbmcgdGhlIGBtZW1jcHlgIG9wZXJhdGlvbiBpbnZvbHZpbmcgdGhlIGZpcm13YXJlIGRhdGEuCgpNeSBleHBlcmllbmNlIHdpdGggUENJIGRyaXZlcnMgaW1tZWRpYXRlbHkgbWFrZXMgbWUgdGhpbmsgYWJvdXQgZnV6emluZywgYW5kIHN1cmUgZW5vdWdoLCB0aGlzIGlzIGEgUENJIGRyaXZlciEgVGhhdCBtZWFucyB3ZSBjYW4gcG90ZW50aWFsbHkgbGV2ZXJhZ2UgdG9vbHMgbGlrZSBzeXprYWxsZXImIzM5O3MgUENJIGZ1enplciwgYW5kIHdlIGNhbiBpbnRlcmNlcHQgYW5kIGZ1enogdGhlIGZpcm13YXJlIGxvYWRpbmcgcHJvY2VzcyBpdHNlbGYuIFRoYXTigJlzIHdoZXJlIHRoZSB2dWxuZXJhYmlsaXR5IGxpZXM6IGlmIHdlIGNhbiBtYW5pcHVsYXRlIHRoZSBmaXJtd2FyZSBzaXplIHNvbWVob3cgYW5kIGJ5cGFzcyB0aGF0IGNoZWNrLCB3ZSBtaWdodCBiZSBhYmxlIHRvIHRyaWdnZXIgYSBjcmFzaCBvciBldmVuIHBvdGVudGlhbGx5IG1vcmUgc2VyaW91cyBpc3N1ZXMuCgpOb3csIGxldCYjMzk7cyBqdXN0IGNvbmZpcm0gbXkgdW5kZXJzdGFuZGluZy4gVG8gYmUgc3VyZSB0aGlzIGlzIGEgcmVhY2hhYmxlIGZ1bmN0aW9uLCBJIHdhbnQgdG8gY29uZmlybSB0aGF0IGBtdDc5OTZfZWVwcm9tX2NoZWNrX29yX3VzZV9kZWZhdWx0YCBpcyBhY3R1YWxseSBnZXR0aW5nIGNhbGxlZCwgYW5kIGluZGVlZCBpdCBpcyBmcm9tIHRoZSBgbXQ3OTk2X2VlcHJvbV9sb2FkYCBmdW5jdGlvbi4gVGhhdCBnaXZlcyB1cyBhIHBhdGggdG8gZXhwbG9pdCBpZiB3ZSBjYW4gbWFuaXB1bGF0ZSB0aGUgaW5wdXRzIHRvIHRoZSByaWdodCBleHRlbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDE1OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210Nzk5Nl9lZXByb21fbG9hZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9lZXByb20uYz0xMzc9bXQ3OTk2X2VlcHJvbV9jaGVja19vcl91c2VfZGVmYXVsdChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2LCBib29sIHVzZV9kZWZhdWx0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jLTE3MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jOjE3MjpzdGF0aWMgaW50IG10Nzk5Nl9lZXByb21fbG9hZChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZWVwcm9tLmMtMTczLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9lZXByb20uYz0zMzk9aW50IG10Nzk5Nl9lZXByb21faW5pdChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jLTM0Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jOjM0MzpcdHJldCA9IG10Nzk5Nl9lZXByb21fbG9hZChkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZWVwcm9tLmMtMzQ0LVx0aWYgKHJldCBcdTAwM2MgMClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTU6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzUwMAoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgZnVuY3Rpb246CgoqKlRyYWNpbmcgdGhlIENhbGxlcnMgb2YgYG10Nzk5Nl9lZXByb21faW5pdGAqKgoKT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhlIGBtdDc5OTZfZWVwcm9tX2luaXRgIGZ1bmN0aW9uIGlzIGJlaW5nIGNhbGxlZCBmcm9tLiBUaGlzIGlzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIHJvbGUgaW4gdGhlIGRyaXZlciYjMzk7cyBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSBhbmQgcG90ZW50aWFsbHkgZm9yIGRlYnVnZ2luZyBvciBtb2RpZnlpbmcgaXQuIEkmIzM5O2QgdHlwaWNhbGx5IHN0YXJ0IGJ5IHVzaW5nIGEgY3Jvc3MtcmVmZXJlbmNpbmcgdG9vbCwgcHJvYmFibHkgYGdyZXBgIG9yIGEgbW9yZSBzb3BoaXN0aWNhdGVkIElERSBzZWFyY2gsIHRvIGh1bnQgZG93biBldmVyeSBpbnN0YW5jZSB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGludm9rZWQgd2l0aGluIHRoZSBjb2RlYmFzZS4KClRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMgd2hldGhlciBpdCYjMzk7cyBjYWxsZWQgZGlyZWN0bHkgZnJvbSBhIGhpZ2hlci1sZXZlbCBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiwgcGVyaGFwcyBpbiB0aGUgcGxhdGZvcm0gZGV2aWNlIHByb2JlIG9yIG1vZHVsZSBpbml0aWFsaXphdGlvbi4gQWx0ZXJuYXRpdmVseSwgaXQgbWlnaHQgYmUgYnVyaWVkIGRlZXBlciBpbiBzb21lIGFic3RyYWN0aW9uIGxheWVyLCBwb3RlbnRpYWxseSBhc3NvY2lhdGVkIHdpdGggRUVQUk9NIGhhbmRsaW5nIHdpdGhpbiB0aGUgd2lyZWxlc3MgZHJpdmVyJiMzOTtzIG92ZXJhbGwgaW5pdGlhbGl6YXRpb24gcm91dGluZS4gSSBuZWVkIHRvIGVzdGFibGlzaCB0aGUgY2FsbCBjaGFpbi4gRG9lcyB0aGlzIGZ1bmN0aW9uIHRha2UgYW55IGFyZ3VtZW50cz8gQXJlIHRoZXNlIHJlbGV2YW50LCBhbmQgaWYgc28sIHdoYXQgZG8gdGhleSByZXByZXNlbnQ/CgpPbmNlIEkgaWRlbnRpZnkgdGhlIGNhbGxlcnMsIEkmIzM5O2xsIGFuYWx5emUgdGhlIHN1cnJvdW5kaW5nIGNvZGUgdG8gZGV0ZXJtaW5lIHRoZSBjb250ZXh0LiBXaGF0JiMzOTtzIGhhcHBlbmluZyAqYmVmb3JlKiB0aGUgY2FsbCB0byBgbXQ3OTk2X2VlcHJvbV9pbml0YD8gV2hhdCYjMzk7cyBoYXBwZW5pbmcgKmFmdGVyKj8gQXJlIHRoZXJlIGFueSBkZXBlbmRlbmNpZXM/IERvZXMgdGhpcyBmdW5jdGlvbiYjMzk7cyBleGVjdXRpb24gZGVwZW5kIG9uIHRoZSBzdWNjZXNzZnVsIGluaXRpYWxpemF0aW9uIG9mIG90aGVyIGNvbXBvbmVudHM/IFRoaXMgd2lsbCBhbGwgaGVscCBtZSB1bmRlcnN0YW5kIHRoZSBwdXJwb3NlIG9mIHRoaXMgcGFydGljdWxhciBFRVBST00gaW5pdGlhbGl6YXRpb24gc3RlcCBpbiB0aGUgbGFyZ2VyIGRyaXZlciBmcmFtZXdvcmsuIEkmIzM5O2xsIG5lZWQgdG8ga25vdyB0aGUgcmV0dXJuIHZhbHVlIG9mIGBtdDc5OTZfZWVwcm9tX2luaXRgIHRvbywgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGNhbGxlciBoYW5kbGVzIGFueSBwb3RlbnRpYWwgZXJyb3JzIHRoYXQgdGhpcyBmdW5jdGlvbiBtYXkgcmV0dXJuLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxNTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5OTZfZWVwcm9tX2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZWVwcm9tLmM9MzAzPWludCBtdDc5OTZfZWVwcm9tX3BhcnNlX2h3X2NhcChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3OTk2X3BoeSAqcGh5KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jLTMzOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jOjMzOTppbnQgbXQ3OTk2X2VlcHJvbV9pbml0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9lZXByb20uYy0zNDAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYz0xMjU2PXN0YXRpYyBpbnQgbXQ3OTk2X2luaXRfaGFyZHdhcmUoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMTI5Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzoxMjkzOlx0cmV0ID0gbXQ3OTk2X2VlcHJvbV9pbml0KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMTI5NC1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbXQ3OTk2Lmg9NjgzPXZvaWQgbXQ3OTk2X3ZpZl9saW5rX3JlbW92ZShzdHJ1Y3QgbXQ3Nl9waHkgKm1waHksIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbXQ3OTk2LmgtNjg1LVx0XHRcdCAgICBzdHJ1Y3QgbXQ3Nl92aWZfbGluayAqbWxpbmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbXQ3OTk2Lmg6Njg2OmludCBtdDc5OTZfZWVwcm9tX2luaXQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tdDc5OTYuaC02ODctaW50IG10Nzk5Nl9lZXByb21fcGFyc2VfaHdfY2FwKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIHN0cnVjdCBtdDc5OTZfcGh5ICpwaHkpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxNTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NTEyCgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIENhbGwgU3RhY2sgb2YgYG10Nzk5Nl9pbml0X2hhcmR3YXJlYCoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZW50cnkgcG9pbnQgZm9yIGBtdDc5OTZfaW5pdF9oYXJkd2FyZWAuIEtub3dpbmcgdGhlIGhpZ2hlci1sZXZlbCBmdW5jdGlvbnMgdGhhdCBjYWxsIGl0IGlzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIHJvbGUgaW4gdGhlIGRyaXZlciYjMzk7cyBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSBhbmQsIGZyYW5rbHksIGFueSBwb3RlbnRpYWwgZGVidWdnaW5nIGRvd24gdGhlIGxpbmUuIEkmIzM5O20gdGhpbmtpbmcgSSBjYW4gYXBwcm9hY2ggdGhpcyBpbiBhIGZldyB3YXlzLgoKRmlyc3QsIGxldCYjMzk7cyBzZWUgd2hhdCB0aGUgY29kZSBzaG93cy4gVXNpbmcgYGdyZXBgIChvciB3aGF0ZXZlciBzZWFyY2ggdG9vbCkgSSBjYW4gcXVpY2tseSBnZXQgdGhlIGNyb3NzLXJlZmVyZW5jZXMuIFRoYXQgd2lsbCBnaXZlIG1lIHRoZSBpbW1lZGlhdGUgY2FsbGVycy4gSSYjMzk7bSBnb2luZyB0byBzY2FuIHRoZSByZXN1bHRzIHdpdGggYW4gZXllIG9uIHRoZSBjb250ZXh0IC0gd2hhdCBzcGVjaWZpYyBtb2R1bGVzIG9yIHN1Yi1zeXN0ZW1zIGFyZSBpbnZvbHZlZD8gSXMgaXQgY2FsbGVkIGZyb20gYSBwb3dlciBtYW5hZ2VtZW50IHJvdXRpbmUsIHRoZSBQQ0kgaW5pdGlhbGl6YXRpb24sIG9yIHNvbWV0aGluZyBlbHNlPwoKSWYgdGhhdCBkb2VzbiYjMzk7dCBpbW1lZGlhdGVseSByZXZlYWwgdGhlIGNhbGxpbmcgZnVuY3Rpb24gYW5kIG1ha2UgaXQgb2J2aW91cyB3aGF0IGlzIGdvaW5nIG9uLCBJJiMzOTtsbCBuZWVkIHRvIHJlc29ydCB0byB0aGUgZGVidWdnZXIuIEkmIzM5O2xsIHNldCBhIGJyZWFrcG9pbnQgYXQgdGhlIHN0YXJ0IG9mIHRoZSBgbXQ3OTk2X2luaXRfaGFyZHdhcmVgIGZ1bmN0aW9uIGFuZCBsb29rIGF0IHRoZSBzdGFjayB0cmFjZS4gVGhlIHN0YWNrIHRyYWNlLCBjb21iaW5lZCB3aXRoIHRoZSBkcml2ZXIgc291cmNlIGNvZGUsIHNob3VsZCBwcm92aWRlIGEgY29tcGxldGUgcGljdHVyZSBvZiB0aGUgY2FsbCBjaGFpbiBhbmQgcmV2ZWFsIHdoYXQmIzM5O3MgYWN0dWFsbHkgaGFwcGVuaW5nIGF0IHRoYXQgcG9pbnQuIEkmIzM5O2xsIG5lZWQgdG8gcGF5IGF0dGVudGlvbiB0byBhbnkgcmVsZXZhbnQgZGV2aWNlIG9yIGNoaXAgcmVsYXRlZCB2YXJpYWJsZXMgdG8gc2VlIGlmIHRoZXJlIGlzIGFueSBjcml0aWNhbCBkYXRhIGJlaW5nIHNldCBiZWZvcmUgdGhlIGBtdDc5OTZfaW5pdF9oYXJkd2FyZWAgZnVuY3Rpb24gY2FsbC4KCkZpbmFsbHksIEkmIzM5O2xsIHJldmlldyB0aGUgZHJpdmVyJiMzOTtzIGRvY3VtZW50YXRpb24gYW5kIG90aGVyIHJlbGF0ZWQgaW5pdGlhbGl6YXRpb24gZmlsZXMsIGlmIGFueSwgdG8gZW5zdXJlIHRoYXQgdGhlIGNhbGxpbmcgZnVuY3Rpb24gaXMgYXBwcm9wcmlhdGUgaW4gdGhlIGRyaXZlciYjMzk7cyBjb250ZXh0LiBJIGNhbiYjMzk7dCBiZSBvdmVybG9va2luZyBkb2N1bWVudGF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxNTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5OTZfaW5pdF9oYXJkd2FyZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM9MTIxMz1zdGF0aWMgaW50IG10Nzk5Nl92YXJpYW50X2ZlbV9pbml0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTEyNTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM6MTI1NjpzdGF0aWMgaW50IG10Nzk5Nl9pbml0X2hhcmR3YXJlKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMTI1Ny17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jPTE3MzE9aW50IG10Nzk5Nl9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMTc0OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzoxNzUwOlx0cmV0ID0gbXQ3OTk2X2luaXRfaGFyZHdhcmUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy0xNzUxLVx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTU6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTI4MAoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEZWx2aW5nIGludG8gYG10Nzk5Nl9yZWdpc3Rlcl9kZXZpY2VgKioKCk9rYXksIHNvIHRoZSBxdWVzdGlvbiBpbW1lZGlhdGVseSB0aGF0IHBvcHMgaW50byBteSBoZWFkIGlzLCAmIzM0O1doZXJlIGV4YWN0bHkgaXMgYG10Nzk5Nl9yZWdpc3Rlcl9kZXZpY2VgIGJlaW5nIGludm9rZWQgZnJvbT8mIzM0OyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY2FsbCBncmFwaCBhbmQgdGhlIGJyb2FkZXIgY29udGV4dCBvZiB0aGlzIGZ1bmN0aW9uIHdpdGhpbiB0aGUgZHJpdmVyIHRvIHJlYWxseSBncmFzcCBpdHMgcHVycG9zZSBhbmQgcG90ZW50aWFsIGltcGxpY2F0aW9ucy4gSXMgaXQgYmVpbmcgY2FsbGVkIGR1cmluZyBlYXJseSBpbml0aWFsaXphdGlvbiwgb3IgaXMgaXQgdHJpZ2dlcmVkIGxhdGVyIG9uLCBwZXJoYXBzIGluIHJlc3BvbnNlIHRvIHNvbWUgaGFyZHdhcmUgZXZlbnQgb3IgdXNlciBhY3Rpb24/IE15IGV4cGVyaWVuY2UgdGVsbHMgbWUgdGhpcyBpcyBrZXkgdG8gZmlndXJpbmcgb3V0IHRoZSBmdW5jdGlvbiYjMzk7cyByZXNwb25zaWJpbGl0eSB3aXRoaW4gdGhlIHN5c3RlbS4gSXMgaXQgcmVnaXN0ZXJpbmcgYSBkZXZpY2UgYXMgcGFydCBvZiBzeXN0ZW0gYnJpbmctdXAgb3IgYXMgcGFydCBvZiBhIGR5bmFtaWMgcGx1Zy1hbmQtcGxheSBwcm9jZXNzPyBUaGF0IGtpbmQgb2YgY29udGV4dHVhbCB1bmRlcnN0YW5kaW5nIGlzIHdoYXQgc2VwYXJhdGVzIGluZm9ybWVkIGd1ZXNzZXMgZnJvbSBjb25maWRlbnQgdW5kZXJzdGFuZGluZy4gSSYjMzk7bGwgbmVlZCB0byB0cmFjZSB0aGUgY2FsbCBwYXRocyB0byBiZSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxNTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5OTZfcmVnaXN0ZXJfZGV2aWNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYz0xNzE2PXZvaWQgbXQ3OTk2X3NldF9zdHJlYW1faGVfZWh0X2NhcHMoc3RydWN0IG10Nzk5Nl9waHkgKnBoeSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMTczMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzoxNzMxOmludCBtdDc5OTZfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMTczMi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbXQ3OTk2Lmg9Njc3PXU2NCBfX210Nzk5Nl9nZXRfdHNmKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgbXQ3OTk2X3ZpZl9saW5rICpsaW5rKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L210Nzk5Ni5oOjY3ODppbnQgbXQ3OTk2X3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L210Nzk5Ni5oLTY3OS12b2lkIG10Nzk5Nl91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9wY2kuYz05OT1zdGF0aWMgaW50IG10Nzk5Nl9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvcGNpLmMtMTk0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvcGNpLmM6MTk1Olx0cmV0ID0gbXQ3OTk2X3JlZ2lzdGVyX2RldmljZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvcGNpLmMtMTk2LVx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTU6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAwNTQKCQkJCQkJCW91dHB1dDogMTQ2CgkJCQkJCQl0aG91Z2h0czogMTMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIE1UNzk5NiBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gYG10Nzk5Nl9wY2lfcHJvYmVgIOKAkyB0aGF0JiMzOTtzIHRoZSBQQ0kgcHJvYmUgZnVuY3Rpb24uIFJpZ2h0LCBzbyB0aGlzIGNvZGUgKmRlZmluaXRlbHkqIGdldHMgaGl0IGR1cmluZyBQQ0kgZGV2aWNlIGluaXRpYWxpemF0aW9uIHdoZW4gdGhlIGRyaXZlciBpcyBwcm9iZWQuIFRoZSBjb3JlIG9mIHRoaXMgcGF0Y2ggaXMgYWRkcmVzc2luZyBhIGJ1ZyBpbiBob3cgdGhlIGZpcm13YXJlIGlzIGxvYWRlZC4gRnJvbSBhIHF1aWNrIGdsYW5jZSwgaXQgbG9va3MgZnVuY3Rpb25hbCBhbmQsIGNydWNpYWxseSwgcmVhY2hhYmxlLiBHaXZlbiB0aGF0IGl0JiMzOTtzIGRlYWxpbmcgd2l0aCBmaXJtd2FyZSBsb2FkaW5nIGR1cmluZyB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UsIGl0IGFic29sdXRlbHkgd2FycmFudHMgZnV6emluZy4gRmlybXdhcmUgbG9hZGluZyBpcyBhbHdheXMgYSBqdWljeSB0YXJnZXQuCgpUaGUgc3BlY2lmaWMgY29uZmlnIGluIHF1ZXN0aW9uIGlzIGBNVDc5OTZFYC4gSSYjMzk7bGwgd2FudCB0byBtYWtlIGEgbm90ZSBvZiB0aGF0IGZvciB3aGVuIEkgZ2V0IGRvd24gdG8gdGhlIGJyYXNzIHRhY2tzLgoKSSBzaG91bGQgZG91YmxlLWNoZWNrIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmVu4oCZdCBhbnkgb3RoZXIgY29uZmlndXJhdGlvbnMgSSBuZWVkIHRvIHRha2UgaW50byBjb25zaWRlcmF0aW9uLCBidXQgaXQgbG9va3MgbGlrZSBgTVQ3OTk2RWAgaXMgdGhlIHByaW1hcnkgb25lIGhlcmUuCgpBbHJpZ2h0LCBJJiMzOTttIG1hcmtpbmcgdGhpcyBhcyBgV29ydGhGdXp6aW5nID0gVHJ1ZWAuIFRoaXMgZmlybXdhcmUtbG9hZGluZyBwYXRjaCBpcyBkZWZpbml0ZWx5IGdvaW5nIG9uIHRoZSBsaXN0LiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIGBtdDc5OTZfZWVwcm9tX2NoZWNrX29yX3VzZV9kZWZhdWx0YCB0b28sIGFzIHRoYXQgbG9va3MgbGlrZSBhIHBvdGVudGlhbCBmb2N1cyBzeW1ib2wuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDE1OjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNVDc5OTZFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXQ3OTk2X2VlcHJvbV9jaGVja19vcl91c2VfZGVmYXVsdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIGZvciBmaXJtd2FyZSBzaXplIGluIGBtdDc5OTZfZWVwcm9tX2NoZWNrX29yX3VzZV9kZWZhdWx0YCB0byBwcmV2ZW50IGFuIG91dC1vZi1ib3VuZHMgcmVhZCBkdXJpbmcgYG1lbWNweWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgZHJpdmVyJiMzOTtzIGluaXRpYWxpemF0aW9uIHBhdGguIFRoZSBkcml2ZXIgaXMgYSBQQ0kgZHJpdmVyIHdoaWNoIGNhbiBiZSBmdXp6ZWQgYnkgc3l6a2FsbGVyJiMzOTtzIFBDSSBmdXp6ZXIsIGFuZCB0aGUgZmlybXdhcmUgbG9hZGluZyBjYW4gYmUgaW50ZXJjZXB0ZWQgYW5kIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TVQ3OTk2RSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210Nzk5Nl9lZXByb21fY2hlY2tfb3JfdXNlX2RlZmF1bHQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayBmb3IgZmlybXdhcmUgc2l6ZSBpbiBgbXQ3OTk2X2VlcHJvbV9jaGVja19vcl91c2VfZGVmYXVsdGAgdG8gcHJldmVudCBhbiBvdXQtb2YtYm91bmRzIHJlYWQgZHVyaW5nIGBtZW1jcHlgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGRyaXZlciYjMzk7cyBpbml0aWFsaXphdGlvbiBwYXRoLiBUaGUgZHJpdmVyIGlzIGEgUENJIGRyaXZlciB3aGljaCBjYW4gYmUgZnV6emVkIGJ5IHN5emthbGxlciYjMzk7cyBQQ0kgZnV6emVyLCBhbmQgdGhlIGZpcm13YXJlIGxvYWRpbmcgY2FuIGJlIGludGVyY2VwdGVkIGFuZCBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxNTozNDowMi4zMzM4Nzk2MjlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzY4NzI4MTQ0MTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVQ3OTk2RVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm10Nzk5Nl9lZXByb21fY2hlY2tfb3JfdXNlX2RlZmF1bHRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIGZvciBmaXJtd2FyZSBzaXplIGluIGBtdDc5OTZfZWVwcm9tX2NoZWNrX29yX3VzZV9kZWZhdWx0YCB0byBwcmV2ZW50IGFuIG91dC1vZi1ib3VuZHMgcmVhZCBkdXJpbmcgYG1lbWNweWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgZHJpdmVyJ3MgaW5pdGlhbGl6YXRpb24gcGF0aC4gVGhlIGRyaXZlciBpcyBhIFBDSSBkcml2ZXIgd2hpY2ggY2FuIGJlIGZ1enplZCBieSBzeXprYWxsZXIncyBQQ0kgZnV6emVyLCBhbmQgdGhlIGZpcm13YXJlIGxvYWRpbmcgY2FuIGJlIGludGVyY2VwdGVkIGFuZCBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDE1OjM0OjAyLjMzMzg4OTE1OVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTgzODIwNjk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYjI4YWYzZmU2Mjk3ZGRhMmM3NTU1ZjZkODhlZDc1OWVmNmNhOWQ5ZVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEp1bCAxMyAxNTozNDowMCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9lZXByb20uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jXFxuaW5kZXggYWMwNWY3ZDc1ZDYzZDYuLmVjMzM1MjFkYjU2NGJkIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZWVwcm9tLmNcXG5AQCAtMTUwLDYgKzE1MCwxMiBAQCBtdDc5OTZfZWVwcm9tX2NoZWNrX29yX3VzZV9kZWZhdWx0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIGJvb2wgdXNlX2RlZmF1bHQpXFxuIFxcdFxcdGdvdG8gb3V0O1xcbiBcXHR9XFxuIFxcbitcXHRpZiAoZnctXFx1MDAzZXNpemUgXFx1MDAzYyBNVDc5OTZfRUVQUk9NX1NJWkUpIHtcXG4rXFx0XFx0ZGV2X2VycihkZXYtXFx1MDAzZW10NzYuZGV2LCBcXFwiSW52YWxpZCBkZWZhdWx0IGJpbiBzaXplXFxcXG5cXFwiKTtcXG4rXFx0XFx0cmV0ID0gLUVJTlZBTDtcXG4rXFx0XFx0Z290byBvdXQ7XFxuK1xcdH1cXG4rXFxuIFxcdGlmICghdXNlX2RlZmF1bHQgXFx1MDAyNlxcdTAwMjYgbXQ3OTk2X2VlcHJvbV92YXJpYW50X3ZhbGlkKGRldiwgZnctXFx1MDAzZWRhdGEpKVxcbiBcXHRcXHRnb3RvIG91dDtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDE1OjM0OjAyLjkxODczODE3NVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM2Mjg3OTM4OTc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzk5NkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc5OTZfZWVwcm9tX2NoZWNrX29yX3VzZV9kZWZhdWx0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayBmb3IgZmlybXdhcmUgc2l6ZSBpbiBgbXQ3OTk2X2VlcHJvbV9jaGVja19vcl91c2VfZGVmYXVsdGAgdG8gcHJldmVudCBhbiBvdXQtb2YtYm91bmRzIHJlYWQgZHVyaW5nIGBtZW1jcHlgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGRyaXZlcidzIGluaXRpYWxpemF0aW9uIHBhdGguIFRoZSBkcml2ZXIgaXMgYSBQQ0kgZHJpdmVyIHdoaWNoIGNhbiBiZSBmdXp6ZWQgYnkgc3l6a2FsbGVyJ3MgUENJIGZ1enplciwgYW5kIHRoZSBmaXJtd2FyZSBsb2FkaW5nIGNhbiBiZSBpbnRlcmNlcHRlZCBhbmQgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGIyOGFmM2ZlNjI5N2RkYTJjNzU1NWY2ZDg4ZWQ3NTllZjZjYTlkOWVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAxMyAxNTozNDowMCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZWVwcm9tLmNcbmluZGV4IGFjMDVmN2Q3NWQ2M2Q2Li5lYzMzNTIxZGI1NjRiZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9lZXByb20uY1xuQEAgLTE1MCw2ICsxNTAsMTIgQEAgbXQ3OTk2X2VlcHJvbV9jaGVja19vcl91c2VfZGVmYXVsdChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2LCBib29sIHVzZV9kZWZhdWx0KVxuIFx0XHRnb3RvIG91dDtcbiBcdH1cbiBcbitcdGlmIChmdy1cdTAwM2VzaXplIFx1MDAzYyBNVDc5OTZfRUVQUk9NX1NJWkUpIHtcbitcdFx0ZGV2X2VycihkZXYtXHUwMDNlbXQ3Ni5kZXYsIFwiSW52YWxpZCBkZWZhdWx0IGJpbiBzaXplXFxuXCIpO1xuK1x0XHRyZXQgPSAtRUlOVkFMO1xuK1x0XHRnb3RvIG91dDtcbitcdH1cbitcbiBcdGlmICghdXNlX2RlZmF1bHQgXHUwMDI2XHUwMDI2IG10Nzk5Nl9lZXByb21fdmFyaWFudF92YWxpZChkZXYsIGZ3LVx1MDAzZWRhdGEpKVxuIFx0XHRnb3RvIG91dDtcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDE1OjM0OjAyLjkxODc0MTc5NVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc0MzMyODAwOTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIEVFUFJPTSBWdWxuZXJhYmlsaXR5KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHRvdWNoZXMgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9lZXByb20uY2AgZmlsZS4gSXQgc2VlbXMgdG8gYmUgYWRkaW5nIGEgc2l6ZSBjaGVjazogYGlmIChmdy1cdTAwM2VzaXplIFx1MDAzYyBNVDc5OTZfRUVQUk9NX1NJWkUpYCB3aXRoaW4gdGhlIGBtdDc5OTZfZWVwcm9tX2NoZWNrX29yX3VzZV9kZWZhdWx0YCBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB3aGF0J3MgdGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhpcz8gV2hhdCB2dWxuZXJhYmlsaXR5IGlzIHRoaXMgYWRkcmVzc2luZywgb3IgYXQgbGVhc3QgYXR0ZW1wdGluZyB0byBtaXRpZ2F0ZT8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bmN0aW9uJ3MgcHVycG9zZSBhbmQgdGhlIHN1cnJvdW5kaW5nIGNvZGUgdG8gZGV0ZXJtaW5lIGl0cyBlZmZlY3RpdmVuZXNzIGFuZCB0aGUgc3BlY2lmaWMgaXNzdWUgaXQncyB0cnlpbmcgdG8gcmVzb2x2ZS4gVGhpcyBjaGVjayBsaWtlbHkgYWltcyB0byBwcmV2ZW50IHRoZSBjb2RlIGZyb20gb3BlcmF0aW5nIG9uIEVFUFJPTSBkYXRhIHRoYXQncyBzbWFsbGVyIHRoYW4gdGhlIGV4cGVjdGVkIHNpemUgb2YgYSBNVDc5OTYgRUVQUk9NLiBOb3csIEkgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGNvZGUgdGhhdCBjYWxscyB0aGlzIGZ1bmN0aW9uIGFuZCBmaWd1cmUgb3V0IHdoYXQgaGFwcGVucyB3aGVuIHRoZSBmaXJtd2FyZSBzaXplIGlzIHRvbyBzbWFsbDsgd2hhdCBhcmUgdGhlIHBvdGVudGlhbCBjb25zZXF1ZW5jZXM/IElzIGl0IGEgYnVmZmVyIG92ZXJmbG93IHJpc2s/IENvdWxkIHRoaXMgaW50cm9kdWNlIHNvbWUgb3RoZXIga2luZCBvZiB2dWxuZXJhYmlsaXR5IG9yIGZ1bmN0aW9uYWwgcHJvYmxlbT8gTGV0J3MgdHJhY2UgaXQgYW5kIGZpbmQgb3V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTI0LCJPdXRwdXRUb2tlbnMiOjU5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxNTozNDoxMC4zNTIwMjQwNTZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk0NDgwNjM1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10Nzk5Nl9lZXByb21fY2hlY2tfb3JfdXNlX2RlZmF1bHRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZWVwcm9tLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZWVwcm9tLmM9MTM2PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9lZXByb20uYzoxMzc6bXQ3OTk2X2VlcHJvbV9jaGVja19vcl91c2VfZGVmYXVsdChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2LCBib29sIHVzZV9kZWZhdWx0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jLTEzOC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9lZXByb20uYz0xNzI9c3RhdGljIGludCBtdDc5OTZfZWVwcm9tX2xvYWQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jLTIzMi1vdXQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZWVwcm9tLmM6MjMzOlxcdHJldHVybiBtdDc5OTZfZWVwcm9tX2NoZWNrX29yX3VzZV9kZWZhdWx0KGRldiwgdXNlX2RlZmF1bHQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jLTIzNC19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDE1OjM0OjEwLjU0NjUxMTI2MVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE4OTQ1MDU5NTk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEZpcm13YXJlIFNpemUgQ2hlY2sgaW4gdGhlIE1UNzk5NiBXaS1GaSBEcml2ZXIqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBjaGVjazogYGZ3LVx1MDAzZXNpemUgXHUwMDNjIE1UNzk5Nl9FRVBST01fU0laRWAuIEl0J3MgYSBmaXJtd2FyZSBzaXplIGNoZWNrLCB3aGljaCBpcyBhIGdvb2QgdGhpbmcgdG8gaGF2ZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBcIklzIHRoaXMgY2hlY2sgZXZlbiByZWxldmFudCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHM/XCIgV2UgYWx3YXlzIGhhdmUgdG8gY29uc2lkZXIgdGhlIGF0dGFjayBzdXJmYWNlLiBUaGlzIGlzIGNyaXRpY2FsIHdoZW4gdGhpbmtpbmcgYWJvdXQgZnV6emluZy5cblxuTm93LCBgbXQ3OTk2YC4uLiByaWdodCwgdGhhdCdzIGEgTWVkaWF0ZWsgV2ktRmkgZHJpdmVyLiBBbmQgdGhhdCBtYWtlcyBtZSB3b25kZXIsIFwiQ2FuIHRoaXMgYmUgZnV6emVkP1wiIFRoYXQncyB0aGUgbmV4dCBsb2dpY2FsIHF1ZXN0aW9uLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgV2ktRmkgZHJpdmVycyBvZnRlbiBsZW5kIHRoZW1zZWx2ZXMgdG8gZnV6emluZyBpZiB0aGV5IGludGVyYWN0IHdpdGggdGhlIGhhcmR3YXJlIHZpYSBgbWFjODAyMTFfaHdzaW1gIG9yLCBldmVuIGJldHRlciwgYXJlIFVTQi9QQ0llIGRldmljZXMgd2hlcmUgZW11bGF0aW9uIGlzIHBvc3NpYmxlLiBTbywgdGhlIHF1ZXN0aW9uIGJlY29tZXM6IFwiSXMgYG10Nzk5NmAgYSBQQ0llIG9yIFVTQiBkcml2ZXI/XCIgVGhhdCdzIHRoZSBrZXkgdG8gZmlndXJpbmcgb3V0IGhvdyBwcmFjdGljYWwgZnV6emluZyB0aGlzIHNpemUgY2hlY2sgd291bGQgYmUuIEdvdHRhIGZpZ3VyZSB0aGF0IG91dCBmaXJzdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjYxOSwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxNTozNDoyOS40OTE1NzMwOFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODQ5Mzc1MTYsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZHVsZV8uKmRyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDE1OjM0OjI5LjY3NjUyMDUzNloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNzI0MjE2MjQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjpcblxuKipEaXZpbmcgaW50byB0aGUgTVQ3OTk2IEZpbGVzKipcblxuT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEknbSBnb2luZyB0byBuYXZpZ2F0ZSBkaXJlY3RseSBpbnRvIHRoZSBoZWFydCBvZiB0aGUgbWF0dGVyIOKAkyB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2AgZGlyZWN0b3J5LiBUaGlzIGlzIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zLCB0aGUgZ3V0cyBvZiB0aGUgTVQ3OTk2IHdpcmVsZXNzIGRyaXZlciBhcmUgc3VyZWx5IGxvY2F0ZWQgaGVyZS4gSSBrbm93IHRoaXMgYXJjaGl0ZWN0dXJlLCBJIGtub3cgd2hhdCBJJ20gbG9va2luZyBmb3Ig4oCTIHRoZSBjcml0aWNhbCBjb250cm9sIHBvaW50cywgdGhlIGtleSBkYXRhIHN0cnVjdHVyZXMsIHRoZSBjcnVjaWFsIGZ1bmN0aW9ucyB0aGF0IG1ha2UgdGhpcyBjaGlwIGh1bS4gTGV04oCZcyBzZWUgd2hhdCBnZW1zIGFyZSB3YWl0aW5nIHRvIGJlIHVuY292ZXJlZC4gTGV0J3Mgc2VlIGlmIHRoZXJlIGFyZSBhbnkgY2hhbmdlcyBmcm9tIG15IGxhc3QgcGVydXNhbCwgYW5kIHdoYXQgc29ydCBvZiBuZXcgbnVhbmNlcyBJIG1pZ2h0IGRpc2NvdmVyLiBJJ20gaXRjaGluZyB0byBkaWcgaW4hXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwMzYsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxNTozNTowMC40MDA3MzkxNDJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJjb2Rlc2VhcmNoLWRpci1pbmRleCIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMjM0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkRpclwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJGaWxlc1wiOiBbXG4gICAgXCJjb3JlZHVtcC5jXCIsXG4gICAgXCJjb3JlZHVtcC5oXCIsXG4gICAgXCJkZWJ1Z2ZzLmNcIixcbiAgICBcImRtYS5jXCIsXG4gICAgXCJlZXByb20uY1wiLFxuICAgIFwiZWVwcm9tLmhcIixcbiAgICBcImluaXQuY1wiLFxuICAgIFwibWFjLmNcIixcbiAgICBcIm1hYy5oXCIsXG4gICAgXCJtYWluLmNcIixcbiAgICBcIm1jdS5jXCIsXG4gICAgXCJtY3UuaFwiLFxuICAgIFwibW1pby5jXCIsXG4gICAgXCJtdDc5OTYuaFwiLFxuICAgIFwibnB1LmNcIixcbiAgICBcInBjaS5jXCIsXG4gICAgXCJyZWdzLmhcIlxuICBdLFxuICBcIlN1YmRpcnNcIjogbnVsbFxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTU6MzU6MDAuNDAwODQzNTIyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjc0OTM2NzUxNTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQQ0kgRHJpdmVyKipcblxuT2theSwgc28gSSBzZWUgdGhpcyBjb2RlIGlzIGRlYWxpbmcgd2l0aCBgcGNpLmNgLiBSaWdodCBhd2F5LCB0aGF0IHRlbGxzIG1lIHdlJ3JlIGxvb2tpbmcgYXQgYSBQQ0kgZHJpdmVyLiBUaGUgbmF0dXJhbCBxdWVzdGlvbiBpcywgY2FuIHdlIGZ1enogdGhpcz8gQW5kIHRoZSBhbnN3ZXIsIGFzIEkga25vdywgaXMgYSByZXNvdW5kaW5nIHllcyAtIHN5emthbGxlciBoYXMgYSBQQ0kgZnV6emVyLCB3aGljaCBtYWtlcyB0aGlzIHBhcnRpY3VsYXJseSBpbnRlcmVzdGluZy4gTm93LCBteSBuZXh0IHN0ZXAgaXMgY2xlYXIuIEknbGwgZGl2ZSBpbnRvIHRoZSBgcGNpLmNgIGNvZGUgaXRzZWxmLiBJIG5lZWQgdG8gcXVpY2tseSBhc3Nlc3MgaWYgaXQncyBhIHJlbGF0aXZlbHkgc3RhbmRhcmQgb3IgYSBtb3JlIHNwZWNpYWxpemVkIFBDSSBkcml2ZXIsIGFuZCBpZiB0aGVyZSBtaWdodCBiZSBhbnl0aGluZyBwYXJ0aWN1bGFybHkganVpY3kgdGhlcmUgdGhhdCB3YXJyYW50cyBteSBleHBlcnQgYXR0ZW50aW9uLiBUaGlzIGluaXRpYWwgc2NhbiB3aWxsIGd1aWRlIGhvdyBtdWNoIGRlZXBlciBJIG5lZWQgdG8gZ28gYW5kIHRoZSBiZXN0IGFwcHJvYWNoIGZvciBmdXp6aW5nIHRoaXMgc3BlY2lmaWMgZHJpdmVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDExLCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTksIlRvb2xDYWxscyI6WyJjb2Rlc2VhcmNoLWRpci1pbmRleCJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDE1OjM1OjI3Ljg5NDUyMTk1OFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzc0NzkzMzQzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBjaV9kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvcGNpLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvcGNpLmM9MjMzPXN0YXRpYyB2b2lkIG10Nzk5Nl9wY2lfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvcGNpLmMtMjQzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L3BjaS5jOjI0NDpzdHJ1Y3QgcGNpX2RyaXZlciBtdDc5OTZfaGlmX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9wY2kuYy0yNDUtXFx0Lm5hbWVcXHRcXHQ9IEtCVUlMRF9NT0ROQU1FIFxcXCJfaGlmXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L3BjaS5jLTI1MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9wY2kuYzoyNTE6c3RydWN0IHBjaV9kcml2ZXIgbXQ3OTk2X3BjaV9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvcGNpLmMtMjUyLVxcdC5uYW1lXFx0XFx0PSBLQlVJTERfTU9ETkFNRSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTU6MzU6MjguNjY5MzIyNDMxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIxNTk3MTc4OTkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBUaGlzIFBDSSBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIGlzIGRlZmluaXRlbHkgYSBQQ0kgZHJpdmVyIOKAkyB0aGF0IG11Y2ggaXMgY2xlYXIuIFRoZSBwYXRjaCBpdHNlbGYgc2VlbXMgdG8gYmUgaW50cm9kdWNpbmcgYSBjaGVjayByZWxhdGVkIHRvIGZpcm13YXJlIHNpemUsIHdoaWNoIGltbWVkaWF0ZWx5IGNhdGNoZXMgbXkgYXR0ZW50aW9uLiBJIGtub3cgdGhhdCBmaXJtd2FyZSBsb2FkaW5nLCBwYXJ0aWN1bGFybHkgdGhlIGByZXF1ZXN0X2Zpcm13YXJlYCBwYXRoLCBjYW4gYmUgYSBwb3RlbnRpYWwgYXR0YWNrIHZlY3RvciwgZXNwZWNpYWxseSB3aXRoIGZ1enplcnMgbGlrZSBzeXprYWxsZXIgcG9raW5nIGFyb3VuZC4gVGhhdCdzIGEgY2xhc3NpYyBhcmVhIGZvciBleHBsb2l0YXRpb24uXG5cbkdpdmVuIHRoZSBjb250ZXh0LCBJIHRoaW5rIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkZWx2ZSBpbnRvIHRoZSBgbXQ3OTk2X2VlcHJvbV9jaGVja19vcl91c2VfZGVmYXVsdGAgZnVuY3Rpb24gd2l0aGluIGBlZXByb20uY2AuIFRoaXMgZnVuY3Rpb24gaXMgbGlrZWx5IHdoZXJlIHRoZSBmaXJtd2FyZSB2YWxpZGF0aW9uIG9yIHVzYWdlIG9mIGEgZGVmYXVsdCBpcyBoYW5kbGVkLCBhbmQgdGhhdCdzIHdoZXJlIEkgbmVlZCB0byBmb2N1cyBteSBpbnZlc3RpZ2F0aW9uLiBUaGF0J3MgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGlmIHRoaXMgcGF0Y2ggdHJ1bHkgYWRkcmVzc2VzIGEgdnVsbmVyYWJpbGl0eSBvciBzZWN1cml0eSBjb25jZXJuLlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTc1LCJPdXRwdXRUb2tlbnMiOjUxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTU6MzU6NTAuMjY2NTA0NzkzWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyOTkwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9lZXByb20uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMzAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxMzA6XFx0XFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbiAxMzE6XFx0XFx0fVxcbiAxMzI6XFx0XFxuIDEzMzpcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4gMTM0OlxcdH1cXG4gMTM1OlxcdFxcbiAxMzY6XFx0c3RhdGljIGludFxcbiAxMzc6XFx0bXQ3OTk2X2VlcHJvbV9jaGVja19vcl91c2VfZGVmYXVsdChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2LCBib29sIHVzZV9kZWZhdWx0KVxcbiAxMzg6XFx0e1xcbiAxMzk6XFx0XFx0dTggKmVlcHJvbSA9IGRldi1cXHUwMDNlbXQ3Ni5lZXByb20uZGF0YTtcXG4gMTQwOlxcdFxcdGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZncgPSBOVUxMO1xcbiAxNDE6XFx0XFx0aW50IHJldDtcXG4gMTQyOlxcdFxcbiAxNDM6XFx0XFx0cmV0ID0gcmVxdWVzdF9maXJtd2FyZShcXHUwMDI2ZncsIG10Nzk5Nl9lZXByb21fbmFtZShkZXYpLCBkZXYtXFx1MDAzZW10NzYuZGV2KTtcXG4gMTQ0OlxcdFxcdGlmIChyZXQpXFxuIDE0NTpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiAxNDY6XFx0XFxuIDE0NzpcXHRcXHRpZiAoIWZ3IHx8ICFmdy1cXHUwMDNlZGF0YSkge1xcbiAxNDg6XFx0XFx0XFx0ZGV2X2VycihkZXYtXFx1MDAzZW10NzYuZGV2LCBcXFwiSW52YWxpZCBkZWZhdWx0IGJpblxcXFxuXFxcIik7XFxuIDE0OTpcXHRcXHRcXHRyZXQgPSAtRUlOVkFMO1xcbiAxNTA6XFx0XFx0XFx0Z290byBvdXQ7XFxuIDE1MTpcXHRcXHR9XFxuIDE1MjpcXHRcXG4gMTUzOlxcdFxcdGlmIChmdy1cXHUwMDNlc2l6ZSBcXHUwMDNjIE1UNzk5Nl9FRVBST01fU0laRSkge1xcbiAxNTQ6XFx0XFx0XFx0ZGV2X2VycihkZXYtXFx1MDAzZW10NzYuZGV2LCBcXFwiSW52YWxpZCBkZWZhdWx0IGJpbiBzaXplXFxcXG5cXFwiKTtcXG4gMTU1OlxcdFxcdFxcdHJldCA9IC1FSU5WQUw7XFxuIDE1NjpcXHRcXHRcXHRnb3RvIG91dDtcXG4gMTU3OlxcdFxcdH1cXG4gMTU4OlxcdFxcbiAxNTk6XFx0XFx0aWYgKCF1c2VfZGVmYXVsdCBcXHUwMDI2XFx1MDAyNiBtdDc5OTZfZWVwcm9tX3ZhcmlhbnRfdmFsaWQoZGV2LCBmdy1cXHUwMDNlZGF0YSkpXFxuIDE2MDpcXHRcXHRcXHRnb3RvIG91dDtcXG4gMTYxOlxcdFxcbiAxNjI6XFx0XFx0ZGV2X3dhcm4oZGV2LVxcdTAwM2VtdDc2LmRldiwgXFxcImVlcHJvbSBsb2FkIGZhaWwsIHVzZSBkZWZhdWx0IGJpblxcXFxuXFxcIik7XFxuIDE2MzpcXHRcXHRtZW1jcHkoZWVwcm9tLCBmdy1cXHUwMDNlZGF0YSwgTVQ3OTk2X0VFUFJPTV9TSVpFKTtcXG4gMTY0OlxcdFxcdGRldi1cXHUwMDNlZWVwcm9tX21vZGUgPSBFRVBST01fTU9ERV9ERUZBVUxUX0JJTjtcXG4gMTY1OlxcdFxcbiAxNjY6XFx0b3V0OlxcbiAxNjc6XFx0XFx0cmVsZWFzZV9maXJtd2FyZShmdyk7XFxuIDE2ODpcXHRcXG4gMTY5OlxcdFxcdHJldHVybiByZXQ7XFxuIDE3MDpcXHR9XFxuIDE3MTpcXHRcXG4gMTcyOlxcdHN0YXRpYyBpbnQgbXQ3OTk2X2VlcHJvbV9sb2FkKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXFxuIDE3MzpcXHR7XFxuIDE3NDpcXHRcXHR1MzIgZWVwcm9tX2Jsa19zaXplLCBibG9ja19udW07XFxuIDE3NTpcXHRcXHRib29sIHVzZV9kZWZhdWx0ID0gZmFsc2U7XFxuIDE3NjpcXHRcXHRpbnQgcmV0LCBpO1xcbiAxNzc6XFx0XFxuIDE3ODpcXHRcXHRyZXQgPSBtdDc2X2VlcHJvbV9pbml0KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIE1UNzk5Nl9FRVBST01fU0laRSk7XFxuIDE3OTpcXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTU6MzU6NTAuMjY2NjM3MTkzWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIwMDc0NDIwMTk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFJlY2VudCBQYXRjaDogTVQ3OTk2IEVFUFJPTSBWdWxuZXJhYmlsaXR5KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgdGhlIGBtdDc5OTZfZWVwcm9tX2NoZWNrX29yX3VzZV9kZWZhdWx0YCBmdW5jdGlvbi4gVGhlIGtleSBoZXJlIGlzIHRoYXQgaXQncyBjYWxsaW5nIGByZXF1ZXN0X2Zpcm13YXJlYCwgd2hpY2gsIGFzIHdlIGtub3csIGlzIGEgcG90ZW50aWFsIGF2ZW51ZSB0aGF0IFN5emthbGxlciBjYW4gZXhwbG9pdCB0byBpbmplY3QgZmlybXdhcmUuIFRoZSBjb3JlIG9mIHRoZSBmaXggYXBwZWFycyB0byBhZGRyZXNzIGEgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgcmVhZCB3aXRoaW4gYSBgbWVtY3B5YCBvcGVyYXRpb246IHNwZWNpZmljYWxseSwgYG1lbWNweShlZXByb20sIGZ3LVx1MDAzZWRhdGEsIE1UNzk5Nl9FRVBST01fU0laRSk7YCB3aGVyZSBgZnctXHUwMDNlc2l6ZWAgbWlnaHQgYmUgc21hbGxlciB0aGFuIGBNVDc5OTZfRUVQUk9NX1NJWkVgLiBPYnZpb3VzbHksIHRoaXMgY2FuIGxlYWQgdG8gbWVtb3J5IGNvcnJ1cHRpb24sIGRlcGVuZGluZyBvbiB3aGF0IHRoZSBgZWVwcm9tYCBidWZmZXIgaXMgdXNlZCBmb3IuXG5cbkZ1bmN0aW9uYWxseSwgdGhpcyBpcyBhIGNsZWFyIGJ1ZyBmaXgg4oCTIGFuIHVuZGVyLXJlYWQgc2NlbmFyaW8gaXMgYmVpbmcgYWRkcmVzc2VkLiBUaGUgZml4IGlzIHN0cmFpZ2h0Zm9yd2FyZDogdGhleSdyZSBsaWtlbHkgYWRkaW5nIGEgY2hlY2sgdG8gZW5zdXJlIGBmdy1cdTAwM2VzaXplYCBpcyBhdCBsZWFzdCBgTVQ3OTk2X0VFUFJPTV9TSVpFYCBiZWZvcmUgdGhlIGBtZW1jcHlgLlxuXG5UaGUgcmVhbCBxdWVzdGlvbiwgdGhvdWdoLCBpcyB3aGV0aGVyIHRoaXMgaXMgd29ydGggZnV6emluZy4gQ29uc2lkZXJpbmcgdGhlIFN5emthbGxlciBpbmplY3Rpb24gcG9pbnQsIGFuZCB0aGUgcG9zc2liaWxpdHkgb2YgYSBjb250cm9sbGVkIHdyaXRlIChhbGJlaXQgaW4gYSBmaXJtd2FyZS1zcGVjaWZpYyBjb250ZXh0KSwgdGhlIGFuc3dlciBpcyBhIHJlc291bmRpbmcgeWVzLiBJdCdzIGEgcHJpbWUgdGFyZ2V0LiBOb3csIEkgbmVlZCB0byBjaGVjayB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgdG8gc2VlIGlmIHRoaXMgbW9kdWxlIGlzIGVuYWJsZWQgYW5kIHdoYXQgb3B0aW9ucyBhcmUgc2V0LiBUaGlzIGxvb2tzIGxpa2UgYSBwb3RlbnRpYWxseSBoaWdoLWltcGFjdCBmaW5kaW5nLCBzbyBJJ2xsIHByaW9yaXRpemUgZnV6emluZyB0aGlzIGZ1bmN0aW9uIHRob3JvdWdobHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwMTksIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxNTozNjoxMC4zNDEwNjAwOThaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5MjY0ODA4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTVQ3OTk2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9LY29uZmlnOjI6Y29uZmlnIE1UNzk5NkVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzk5NiAoUENJZSkgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L0tjb25maWctMTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvS2NvbmZpZzoxNjpjb25maWcgTVQ3OTk2X05QVVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L0tjb25maWctMTctXFx0Ym9vbCBcXFwiTVQ3OTk2IChQQ0llKSBOUFUgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTU6MzY6MTAuNjMzNzQzNTc2WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1MTk4OTUzNTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqSW5pdGlhbCBDb25maWd1cmF0aW9uIENoZWNrKipcblxuQWxyaWdodCwgdGhlIHN5c3RlbSdzIHJlcG9ydGluZyB0aGUgY29uZmlnIGFzIGBNVDc5OTZFYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiT2theSwgdGhhdCdzIHRoZSBiYXNlbGluZS4gTm93LCBiZWZvcmUgSSBkaXZlIGRlZXBlciwgbGV0J3MganVzdCBxdWlja2x5IHZlcmlmeSDigJMgKmFyZSogdGhlcmUgb3RoZXIgcmVsYXRlZCBjb25maWd1cmF0aW9ucyBJIHNob3VsZCBiZSBhd2FyZSBvZj8gQXJlIHRoZXJlIHZhcmlhbnRzIG9yIHByZWRlY2Vzc29ycyB0aGF0IG1pZ2h0IGluZmx1ZW5jZSB0aGlzIG9uZT8gUGVyaGFwcyBzb21lIHJlbGF0ZWQgbGVnYWN5IHN5c3RlbXM/IEkgbmVlZCB0byBxdWlja2x5IGFzY2VydGFpbiBpZiB0aGlzIGlzIHRoZSAqb25seSogY29uZmlndXJhdGlvbiBvciBpZiBpdCBzaXRzIHdpdGhpbiBhIGJyb2FkZXIgZmFtaWx5IG9mIHJlbGF0ZWQgc2V0dXBzLlwiIEknbSBtZW50YWxseSBmaWxpbmcgdGhpcyBxdWVzdGlvbiB1bmRlciBcImR1ZSBkaWxpZ2VuY2VcIiDigJMgSSBuZWVkIHRvIGVuc3VyZSBJJ20gb3BlcmF0aW5nIHdpdGggdGhlIGZ1bGwgY29udGV4dCBiZWZvcmUgcHJvY2VlZGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTczMiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDE1OjM2OjE0LjE1MzY0MjA1NVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzAyMDA5NTA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk1UNzk5NlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGU9NDY9b2JqLSQoQ09ORklHX01UNzkyMV9DT01NT04pICs9IG10NzkyMS9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlOjQ3Om9iai0kKENPTkZJR19NVDc5OTZFKSArPSBtdDc5OTYvXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZS00OC1vYmotJChDT05GSUdfTVQ3OTI1X0NPTU1PTikgKz0gbXQ3OTI1L1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxNTozNjoxNC40NTU2NTY3ODNaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTU3NjQ0MTAzNTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNVDc5OTZFIEVFUFJPTSBGdW5jdGlvbioqXG5cbk9rYXksIHNvIHdlJ3JlIGxvb2tpbmcgYXQgYE1UNzk5NkVgIOKAkyBnb3QgaXQuIFRoZSBrZXkgZnVuY3Rpb24gSSBuZWVkIHRvIGRpdmUgaW50byBpcyBgbXQ3OTk2X2VlcHJvbV9jaGVja19vcl91c2VfZGVmYXVsdGAuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgc3BlY2lmaWMgYE1UNzk5NkVgIGltcGxlbWVudGF0aW9uIGhhcyBhbnkgZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY29udGV4dCB0byBlbnN1cmUgYSBjb21wcmVoZW5zaXZlIGFuYWx5c2lzLiBMZXQncyBzZWUgd2hhdCBpdCByZWxpZXMgb24sIG9yIGlmIGFueXRoaW5nIHJlbGllcyBvbiAqaXQqLiBJdOKAmXMgYWxsIGFib3V0IHRyYWNpbmcgdGhlIGludGVyY29ubmVjdGVkbmVzcyBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MDgxLCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTU6Mzc6MTAuMjIwMDY5ODI3WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMjI5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuICAgMjpcXHRjb25maWcgTVQ3OTk2RVxcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzk5NiAoUENJZSkgc3VwcG9ydFxcXCJcXG4gICA0OlxcdFxcdHNlbGVjdCBNVDc2X0NPTk5BQ19MSUJcXG4gICA1OlxcdFxcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxcbiAgIDY6XFx0XFx0c2VsZWN0IFJFTEFZXFxuICAgNzpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuICAgODpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiAgIDk6XFx0XFx0aGVscFxcbiAgMTA6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTk2LWJhc2VkIFBDSWUgd2lyZWxlc3MgZGV2aWNlcyxcXG4gIDExOlxcdFxcdCAgd2hpY2ggc3VwcG9ydCBjb25jdXJyZW50IHRyaS1iYW5kIG9wZXJhdGlvbiBhdCA2R0h6LCA1R0h6LFxcbiAgMTI6XFx0XFx0ICBhbmQgMi40R0h6IElFRUUgODAyLjExYmUgNHg0OjRTUyA0MDk2LVFBTSwgMzIwTUh6IGNoYW5uZWxzLlxcbiAgMTM6XFx0XFxuICAxNDpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXFxuICAxNTpcXHRcXG4gIDE2OlxcdGNvbmZpZyBNVDc5OTZfTlBVXFxuICAxNzpcXHRcXHRib29sIFxcXCJNVDc5OTYgKFBDSWUpIE5QVSBzdXBwb3J0XFxcIlxcbiAgMTg6XFx0XFx0ZGVwZW5kcyBvbiBNVDc5OTZFXFxuICAxOTpcXHRcXHRkZXBlbmRzIG9uIE5FVF9BSVJPSEFfTlBVPXkgfHwgTVQ3OTk2RT1ORVRfQUlST0hBX05QVVxcbiAgMjA6XFx0XFx0c2VsZWN0IE1UNzZfTlBVXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDE1OjM3OjEwLjIyMDIwNTY0N1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTU2MzI4ODkzNzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNVDc5OTZFIENvbmZpZ3VyYXRpb24gYW5kIFZ1bG5lcmFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBNVDc5OTZFYCBjb25maWd1cmF0aW9uLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gdGhlIGBtdDc5OTZfZWVwcm9tX2NoZWNrX29yX3VzZV9kZWZhdWx0YCBmdW5jdGlvbi4gVGhlIHBhdGNoJ3MgY29yZSBmdW5jdGlvbiBpcyBhZGRpbmcgYSBib3VuZHMgY2hlY2sgd2l0aGluIHRoYXQgZnVuY3Rpb24sIGRlYWxpbmcgZGlyZWN0bHkgd2l0aCBmaXJtd2FyZSBzaXplLiBUaGUgZ29hbCBpcyB0byBwcmV2ZW50IGEgbmFzdHkgb3V0LW9mLWJvdW5kcyByZWFkIGR1cmluZyB0aGUgYG1lbWNweWAgb3BlcmF0aW9uIGludm9sdmluZyB0aGUgZmlybXdhcmUgZGF0YS5cblxuTXkgZXhwZXJpZW5jZSB3aXRoIFBDSSBkcml2ZXJzIGltbWVkaWF0ZWx5IG1ha2VzIG1lIHRoaW5rIGFib3V0IGZ1enppbmcsIGFuZCBzdXJlIGVub3VnaCwgdGhpcyBpcyBhIFBDSSBkcml2ZXIhIFRoYXQgbWVhbnMgd2UgY2FuIHBvdGVudGlhbGx5IGxldmVyYWdlIHRvb2xzIGxpa2Ugc3l6a2FsbGVyJ3MgUENJIGZ1enplciwgYW5kIHdlIGNhbiBpbnRlcmNlcHQgYW5kIGZ1enogdGhlIGZpcm13YXJlIGxvYWRpbmcgcHJvY2VzcyBpdHNlbGYuIFRoYXTigJlzIHdoZXJlIHRoZSB2dWxuZXJhYmlsaXR5IGxpZXM6IGlmIHdlIGNhbiBtYW5pcHVsYXRlIHRoZSBmaXJtd2FyZSBzaXplIHNvbWVob3cgYW5kIGJ5cGFzcyB0aGF0IGNoZWNrLCB3ZSBtaWdodCBiZSBhYmxlIHRvIHRyaWdnZXIgYSBjcmFzaCBvciBldmVuIHBvdGVudGlhbGx5IG1vcmUgc2VyaW91cyBpc3N1ZXMuXG5cbk5vdywgbGV0J3MganVzdCBjb25maXJtIG15IHVuZGVyc3RhbmRpbmcuIFRvIGJlIHN1cmUgdGhpcyBpcyBhIHJlYWNoYWJsZSBmdW5jdGlvbiwgSSB3YW50IHRvIGNvbmZpcm0gdGhhdCBgbXQ3OTk2X2VlcHJvbV9jaGVja19vcl91c2VfZGVmYXVsdGAgaXMgYWN0dWFsbHkgZ2V0dGluZyBjYWxsZWQsIGFuZCBpbmRlZWQgaXQgaXMgZnJvbSB0aGUgYG10Nzk5Nl9lZXByb21fbG9hZGAgZnVuY3Rpb24uIFRoYXQgZ2l2ZXMgdXMgYSBwYXRoIHRvIGV4cGxvaXQgaWYgd2UgY2FuIG1hbmlwdWxhdGUgdGhlIGlucHV0cyB0byB0aGUgcmlnaHQgZXh0ZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NjUxLCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTY2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTU6Mzk6MDUuODUzMDk3MThaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1OTQyMzQ5NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5OTZfZWVwcm9tX2xvYWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jPTEzNz1tdDc5OTZfZWVwcm9tX2NoZWNrX29yX3VzZV9kZWZhdWx0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIGJvb2wgdXNlX2RlZmF1bHQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9lZXByb20uYy0xNzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZWVwcm9tLmM6MTcyOnN0YXRpYyBpbnQgbXQ3OTk2X2VlcHJvbV9sb2FkKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZWVwcm9tLmMtMTczLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jPTMzOT1pbnQgbXQ3OTk2X2VlcHJvbV9pbml0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9lZXByb20uYy0zNDItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZWVwcm9tLmM6MzQzOlxcdHJldCA9IG10Nzk5Nl9lZXByb21fbG9hZChkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jLTM0NC1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTU6Mzk6MDYuMzEyNTI4ODQ2WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3MDA4Mzk3MTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIGZ1bmN0aW9uOlxuXG4qKlRyYWNpbmcgdGhlIENhbGxlcnMgb2YgYG10Nzk5Nl9lZXByb21faW5pdGAqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGUgYG10Nzk5Nl9lZXByb21faW5pdGAgZnVuY3Rpb24gaXMgYmVpbmcgY2FsbGVkIGZyb20uIFRoaXMgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgcm9sZSBpbiB0aGUgZHJpdmVyJ3MgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgYW5kIHBvdGVudGlhbGx5IGZvciBkZWJ1Z2dpbmcgb3IgbW9kaWZ5aW5nIGl0LiBJJ2QgdHlwaWNhbGx5IHN0YXJ0IGJ5IHVzaW5nIGEgY3Jvc3MtcmVmZXJlbmNpbmcgdG9vbCwgcHJvYmFibHkgYGdyZXBgIG9yIGEgbW9yZSBzb3BoaXN0aWNhdGVkIElERSBzZWFyY2gsIHRvIGh1bnQgZG93biBldmVyeSBpbnN0YW5jZSB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGludm9rZWQgd2l0aGluIHRoZSBjb2RlYmFzZS5cblxuVGhlIGltbWVkaWF0ZSBxdWVzdGlvbiBpcyB3aGV0aGVyIGl0J3MgY2FsbGVkIGRpcmVjdGx5IGZyb20gYSBoaWdoZXItbGV2ZWwgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24sIHBlcmhhcHMgaW4gdGhlIHBsYXRmb3JtIGRldmljZSBwcm9iZSBvciBtb2R1bGUgaW5pdGlhbGl6YXRpb24uIEFsdGVybmF0aXZlbHksIGl0IG1pZ2h0IGJlIGJ1cmllZCBkZWVwZXIgaW4gc29tZSBhYnN0cmFjdGlvbiBsYXllciwgcG90ZW50aWFsbHkgYXNzb2NpYXRlZCB3aXRoIEVFUFJPTSBoYW5kbGluZyB3aXRoaW4gdGhlIHdpcmVsZXNzIGRyaXZlcidzIG92ZXJhbGwgaW5pdGlhbGl6YXRpb24gcm91dGluZS4gSSBuZWVkIHRvIGVzdGFibGlzaCB0aGUgY2FsbCBjaGFpbi4gRG9lcyB0aGlzIGZ1bmN0aW9uIHRha2UgYW55IGFyZ3VtZW50cz8gQXJlIHRoZXNlIHJlbGV2YW50LCBhbmQgaWYgc28sIHdoYXQgZG8gdGhleSByZXByZXNlbnQ/XG5cbk9uY2UgSSBpZGVudGlmeSB0aGUgY2FsbGVycywgSSdsbCBhbmFseXplIHRoZSBzdXJyb3VuZGluZyBjb2RlIHRvIGRldGVybWluZSB0aGUgY29udGV4dC4gV2hhdCdzIGhhcHBlbmluZyAqYmVmb3JlKiB0aGUgY2FsbCB0byBgbXQ3OTk2X2VlcHJvbV9pbml0YD8gV2hhdCdzIGhhcHBlbmluZyAqYWZ0ZXIqPyBBcmUgdGhlcmUgYW55IGRlcGVuZGVuY2llcz8gRG9lcyB0aGlzIGZ1bmN0aW9uJ3MgZXhlY3V0aW9uIGRlcGVuZCBvbiB0aGUgc3VjY2Vzc2Z1bCBpbml0aWFsaXphdGlvbiBvZiBvdGhlciBjb21wb25lbnRzPyBUaGlzIHdpbGwgYWxsIGhlbHAgbWUgdW5kZXJzdGFuZCB0aGUgcHVycG9zZSBvZiB0aGlzIHBhcnRpY3VsYXIgRUVQUk9NIGluaXRpYWxpemF0aW9uIHN0ZXAgaW4gdGhlIGxhcmdlciBkcml2ZXIgZnJhbWV3b3JrLiBJJ2xsIG5lZWQgdG8ga25vdyB0aGUgcmV0dXJuIHZhbHVlIG9mIGBtdDc5OTZfZWVwcm9tX2luaXRgIHRvbywgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGNhbGxlciBoYW5kbGVzIGFueSBwb3RlbnRpYWwgZXJyb3JzIHRoYXQgdGhpcyBmdW5jdGlvbiBtYXkgcmV0dXJuLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NTAwLCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTU6Mzk6MTEuMDEzMzcwNjI5WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjIxNjI2MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTk2X2VlcHJvbV9pbml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9lZXByb20uYz0zMDM9aW50IG10Nzk5Nl9lZXByb21fcGFyc2VfaHdfY2FwKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIHN0cnVjdCBtdDc5OTZfcGh5ICpwaHkpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9lZXByb20uYy0zMzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZWVwcm9tLmM6MzM5OmludCBtdDc5OTZfZWVwcm9tX2luaXQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9lZXByb20uYy0zNDAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jPTEyNTY9c3RhdGljIGludCBtdDc5OTZfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTEyOTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jOjEyOTM6XFx0cmV0ID0gbXQ3OTk2X2VlcHJvbV9pbml0KGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTEyOTQtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tdDc5OTYuaD02ODM9dm9pZCBtdDc5OTZfdmlmX2xpbmtfcmVtb3ZlKHN0cnVjdCBtdDc2X3BoeSAqbXBoeSwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L210Nzk5Ni5oLTY4NS1cXHRcXHRcXHQgICAgc3RydWN0IG10NzZfdmlmX2xpbmsgKm1saW5rKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tdDc5OTYuaDo2ODY6aW50IG10Nzk5Nl9lZXByb21faW5pdChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tdDc5OTYuaC02ODctaW50IG10Nzk5Nl9lZXByb21fcGFyc2VfaHdfY2FwKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIHN0cnVjdCBtdDc5OTZfcGh5ICpwaHkpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxNTozOToxMS4yNzU1NDI2NDlaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMxOTQ0MDM0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIENhbGwgU3RhY2sgb2YgYG10Nzk5Nl9pbml0X2hhcmR3YXJlYCoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBlbnRyeSBwb2ludCBmb3IgYG10Nzk5Nl9pbml0X2hhcmR3YXJlYC4gS25vd2luZyB0aGUgaGlnaGVyLWxldmVsIGZ1bmN0aW9ucyB0aGF0IGNhbGwgaXQgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgcm9sZSBpbiB0aGUgZHJpdmVyJ3MgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgYW5kLCBmcmFua2x5LCBhbnkgcG90ZW50aWFsIGRlYnVnZ2luZyBkb3duIHRoZSBsaW5lLiBJJ20gdGhpbmtpbmcgSSBjYW4gYXBwcm9hY2ggdGhpcyBpbiBhIGZldyB3YXlzLlxuXG5GaXJzdCwgbGV0J3Mgc2VlIHdoYXQgdGhlIGNvZGUgc2hvd3MuIFVzaW5nIGBncmVwYCAob3Igd2hhdGV2ZXIgc2VhcmNoIHRvb2wpIEkgY2FuIHF1aWNrbHkgZ2V0IHRoZSBjcm9zcy1yZWZlcmVuY2VzLiBUaGF0IHdpbGwgZ2l2ZSBtZSB0aGUgaW1tZWRpYXRlIGNhbGxlcnMuIEknbSBnb2luZyB0byBzY2FuIHRoZSByZXN1bHRzIHdpdGggYW4gZXllIG9uIHRoZSBjb250ZXh0IC0gd2hhdCBzcGVjaWZpYyBtb2R1bGVzIG9yIHN1Yi1zeXN0ZW1zIGFyZSBpbnZvbHZlZD8gSXMgaXQgY2FsbGVkIGZyb20gYSBwb3dlciBtYW5hZ2VtZW50IHJvdXRpbmUsIHRoZSBQQ0kgaW5pdGlhbGl6YXRpb24sIG9yIHNvbWV0aGluZyBlbHNlP1xuXG5JZiB0aGF0IGRvZXNuJ3QgaW1tZWRpYXRlbHkgcmV2ZWFsIHRoZSBjYWxsaW5nIGZ1bmN0aW9uIGFuZCBtYWtlIGl0IG9idmlvdXMgd2hhdCBpcyBnb2luZyBvbiwgSSdsbCBuZWVkIHRvIHJlc29ydCB0byB0aGUgZGVidWdnZXIuIEknbGwgc2V0IGEgYnJlYWtwb2ludCBhdCB0aGUgc3RhcnQgb2YgdGhlIGBtdDc5OTZfaW5pdF9oYXJkd2FyZWAgZnVuY3Rpb24gYW5kIGxvb2sgYXQgdGhlIHN0YWNrIHRyYWNlLiBUaGUgc3RhY2sgdHJhY2UsIGNvbWJpbmVkIHdpdGggdGhlIGRyaXZlciBzb3VyY2UgY29kZSwgc2hvdWxkIHByb3ZpZGUgYSBjb21wbGV0ZSBwaWN0dXJlIG9mIHRoZSBjYWxsIGNoYWluIGFuZCByZXZlYWwgd2hhdCdzIGFjdHVhbGx5IGhhcHBlbmluZyBhdCB0aGF0IHBvaW50LiBJJ2xsIG5lZWQgdG8gcGF5IGF0dGVudGlvbiB0byBhbnkgcmVsZXZhbnQgZGV2aWNlIG9yIGNoaXAgcmVsYXRlZCB2YXJpYWJsZXMgdG8gc2VlIGlmIHRoZXJlIGlzIGFueSBjcml0aWNhbCBkYXRhIGJlaW5nIHNldCBiZWZvcmUgdGhlIGBtdDc5OTZfaW5pdF9oYXJkd2FyZWAgZnVuY3Rpb24gY2FsbC5cblxuRmluYWxseSwgSSdsbCByZXZpZXcgdGhlIGRyaXZlcidzIGRvY3VtZW50YXRpb24gYW5kIG90aGVyIHJlbGF0ZWQgaW5pdGlhbGl6YXRpb24gZmlsZXMsIGlmIGFueSwgdG8gZW5zdXJlIHRoYXQgdGhlIGNhbGxpbmcgZnVuY3Rpb24gaXMgYXBwcm9wcmlhdGUgaW4gdGhlIGRyaXZlcidzIGNvbnRleHQuIEkgY2FuJ3QgYmUgb3Zlcmxvb2tpbmcgZG9jdW1lbnRhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6ODUxMiwiT3V0cHV0VG9rZW5zIjo0OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDE1OjM5OjE1LjU5NDk4NTI3OVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY3MjM4NzE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10Nzk5Nl9pbml0X2hhcmR3YXJlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM9MTIxMz1zdGF0aWMgaW50IG10Nzk5Nl92YXJpYW50X2ZlbV9pbml0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMTI1NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmM6MTI1NjpzdGF0aWMgaW50IG10Nzk5Nl9pbml0X2hhcmR3YXJlKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTEyNTcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jPTE3MzE9aW50IG10Nzk5Nl9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy0xNzQ5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzoxNzUwOlxcdHJldCA9IG10Nzk5Nl9pbml0X2hhcmR3YXJlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTE3NTEtXFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTU6Mzk6MTUuNzYyMjMwNzE3WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwNDAyNTk1NjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEZWx2aW5nIGludG8gYG10Nzk5Nl9yZWdpc3Rlcl9kZXZpY2VgKipcblxuT2theSwgc28gdGhlIHF1ZXN0aW9uIGltbWVkaWF0ZWx5IHRoYXQgcG9wcyBpbnRvIG15IGhlYWQgaXMsIFwiV2hlcmUgZXhhY3RseSBpcyBgbXQ3OTk2X3JlZ2lzdGVyX2RldmljZWAgYmVpbmcgaW52b2tlZCBmcm9tP1wiIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjYWxsIGdyYXBoIGFuZCB0aGUgYnJvYWRlciBjb250ZXh0IG9mIHRoaXMgZnVuY3Rpb24gd2l0aGluIHRoZSBkcml2ZXIgdG8gcmVhbGx5IGdyYXNwIGl0cyBwdXJwb3NlIGFuZCBwb3RlbnRpYWwgaW1wbGljYXRpb25zLiBJcyBpdCBiZWluZyBjYWxsZWQgZHVyaW5nIGVhcmx5IGluaXRpYWxpemF0aW9uLCBvciBpcyBpdCB0cmlnZ2VyZWQgbGF0ZXIgb24sIHBlcmhhcHMgaW4gcmVzcG9uc2UgdG8gc29tZSBoYXJkd2FyZSBldmVudCBvciB1c2VyIGFjdGlvbj8gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGlzIGlzIGtleSB0byBmaWd1cmluZyBvdXQgdGhlIGZ1bmN0aW9uJ3MgcmVzcG9uc2liaWxpdHkgd2l0aGluIHRoZSBzeXN0ZW0uIElzIGl0IHJlZ2lzdGVyaW5nIGEgZGV2aWNlIGFzIHBhcnQgb2Ygc3lzdGVtIGJyaW5nLXVwIG9yIGFzIHBhcnQgb2YgYSBkeW5hbWljIHBsdWctYW5kLXBsYXkgcHJvY2Vzcz8gVGhhdCBraW5kIG9mIGNvbnRleHR1YWwgdW5kZXJzdGFuZGluZyBpcyB3aGF0IHNlcGFyYXRlcyBpbmZvcm1lZCBndWVzc2VzIGZyb20gY29uZmlkZW50IHVuZGVyc3RhbmRpbmcuIEknbGwgbmVlZCB0byB0cmFjZSB0aGUgY2FsbCBwYXRocyB0byBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MjgwLCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTU6Mzk6MTkuODAyNDkyNTM4WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzIwMjMyNzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTk2X3JlZ2lzdGVyX2RldmljZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jPTE3MTY9dm9pZCBtdDc5OTZfc2V0X3N0cmVhbV9oZV9laHRfY2FwcyhzdHJ1Y3QgbXQ3OTk2X3BoeSAqcGh5KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTE3MzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jOjE3MzE6aW50IG10Nzk5Nl9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMtMTczMi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tdDc5OTYuaD02Nzc9dTY0IF9fbXQ3OTk2X2dldF90c2Yoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBtdDc5OTZfdmlmX2xpbmsgKmxpbmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L210Nzk5Ni5oOjY3ODppbnQgbXQ3OTk2X3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tdDc5OTYuaC02Nzktdm9pZCBtdDc5OTZfdW5yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10Nzk5Nl9kZXYgKmRldik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9wY2kuYz05OT1zdGF0aWMgaW50IG10Nzk5Nl9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9wY2kuYy0xOTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvcGNpLmM6MTk1OlxcdHJldCA9IG10Nzk5Nl9yZWdpc3Rlcl9kZXZpY2UoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9wY2kuYy0xOTYtXFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTU6Mzk6MTkuOTc0NTIxMTA1WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExODg2NDYzMTk1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBNVDc5OTYgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gYG10Nzk5Nl9wY2lfcHJvYmVgIOKAkyB0aGF0J3MgdGhlIFBDSSBwcm9iZSBmdW5jdGlvbi4gUmlnaHQsIHNvIHRoaXMgY29kZSAqZGVmaW5pdGVseSogZ2V0cyBoaXQgZHVyaW5nIFBDSSBkZXZpY2UgaW5pdGlhbGl6YXRpb24gd2hlbiB0aGUgZHJpdmVyIGlzIHByb2JlZC4gVGhlIGNvcmUgb2YgdGhpcyBwYXRjaCBpcyBhZGRyZXNzaW5nIGEgYnVnIGluIGhvdyB0aGUgZmlybXdhcmUgaXMgbG9hZGVkLiBGcm9tIGEgcXVpY2sgZ2xhbmNlLCBpdCBsb29rcyBmdW5jdGlvbmFsIGFuZCwgY3J1Y2lhbGx5LCByZWFjaGFibGUuIEdpdmVuIHRoYXQgaXQncyBkZWFsaW5nIHdpdGggZmlybXdhcmUgbG9hZGluZyBkdXJpbmcgdGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLCBpdCBhYnNvbHV0ZWx5IHdhcnJhbnRzIGZ1enppbmcuIEZpcm13YXJlIGxvYWRpbmcgaXMgYWx3YXlzIGEganVpY3kgdGFyZ2V0LlxuXG5UaGUgc3BlY2lmaWMgY29uZmlnIGluIHF1ZXN0aW9uIGlzIGBNVDc5OTZFYC4gSSdsbCB3YW50IHRvIG1ha2UgYSBub3RlIG9mIHRoYXQgZm9yIHdoZW4gSSBnZXQgZG93biB0byB0aGUgYnJhc3MgdGFja3MuXG5cbkkgc2hvdWxkIGRvdWJsZS1jaGVjayB0byBtYWtlIHN1cmUgdGhlcmUgYXJlbuKAmXQgYW55IG90aGVyIGNvbmZpZ3VyYXRpb25zIEkgbmVlZCB0byB0YWtlIGludG8gY29uc2lkZXJhdGlvbiwgYnV0IGl0IGxvb2tzIGxpa2UgYE1UNzk5NkVgIGlzIHRoZSBwcmltYXJ5IG9uZSBoZXJlLlxuXG5BbHJpZ2h0LCBJJ20gbWFya2luZyB0aGlzIGFzIGBXb3J0aEZ1enppbmcgPSBUcnVlYC4gVGhpcyBmaXJtd2FyZS1sb2FkaW5nIHBhdGNoIGlzIGRlZmluaXRlbHkgZ29pbmcgb24gdGhlIGxpc3QuIEknbGwgbmVlZCB0byBkaWcgaW50byBgbXQ3OTk2X2VlcHJvbV9jaGVja19vcl91c2VfZGVmYXVsdGAgdG9vLCBhcyB0aGF0IGxvb2tzIGxpa2UgYSBwb3RlbnRpYWwgZm9jdXMgc3ltYm9sLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDA1NCwiT3V0cHV0VG9rZW5zIjoxNDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTU6NDE6MTguODM5MTU2NzVaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNjc1MTMzMDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzk5NkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc5OTZfZWVwcm9tX2NoZWNrX29yX3VzZV9kZWZhdWx0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayBmb3IgZmlybXdhcmUgc2l6ZSBpbiBgbXQ3OTk2X2VlcHJvbV9jaGVja19vcl91c2VfZGVmYXVsdGAgdG8gcHJldmVudCBhbiBvdXQtb2YtYm91bmRzIHJlYWQgZHVyaW5nIGBtZW1jcHlgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGRyaXZlcidzIGluaXRpYWxpemF0aW9uIHBhdGguIFRoZSBkcml2ZXIgaXMgYSBQQ0kgZHJpdmVyIHdoaWNoIGNhbiBiZSBmdXp6ZWQgYnkgc3l6a2FsbGVyJ3MgUENJIGZ1enplciwgYW5kIHRoZSBmaXJtd2FyZSBsb2FkaW5nIGNhbiBiZSBpbnRlcmNlcHRlZCBhbmQgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzk5NkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc5OTZfZWVwcm9tX2NoZWNrX29yX3VzZV9kZWZhdWx0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayBmb3IgZmlybXdhcmUgc2l6ZSBpbiBgbXQ3OTk2X2VlcHJvbV9jaGVja19vcl91c2VfZGVmYXVsdGAgdG8gcHJldmVudCBhbiBvdXQtb2YtYm91bmRzIHJlYWQgZHVyaW5nIGBtZW1jcHlgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGRyaXZlcidzIGluaXRpYWxpemF0aW9uIHBhdGguIFRoZSBkcml2ZXIgaXMgYSBQQ0kgZHJpdmVyIHdoaWNoIGNhbiBiZSBmdXp6ZWQgYnkgc3l6a2FsbGVyJ3MgUENJIGZ1enplciwgYW5kIHRoZSBmaXJtd2FyZSBsb2FkaW5nIGNhbiBiZSBpbnRlcmNlcHRlZCBhbmQgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowkmk2x[1] Phase: Succeeded StartedAt: 2026-07-13 15:41:30 +0000 UTC FinishedAt: 2026-07-13 15:41:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkmk2x[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-13 15:41:30 +0000 UTC FinishedAt: 2026-07-13 15:41:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkmk2x[2] Phase: Succeeded StartedAt: 2026-07-13 15:41:30 +0000 UTC FinishedAt: 2026-07-13 17:11:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkmk2x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7996E"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7996_eeprom_check_or_use_default"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7996E"],"series_id":"84347f93-0a22-45a9-9a4a-ef1d0cf52ffc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-13 15:41:30 +0000 UTC FinishedAt: 2026-07-13 17:11:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7996E"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7996_eeprom_check_or_use_default"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7996E"],"series_id":"84347f93-0a22-45a9-9a4a-ef1d0cf52ffc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowkmk2x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7996E"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7996_eeprom_check_or_use_default"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7996E"],"series_id":"84347f93-0a22-45a9-9a4a-ef1d0cf52ffc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-13 15:41:30 +0000 UTC FinishedAt: 2026-07-13 15:42:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkmk2x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7996E"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7996_eeprom_check_or_use_default"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7996E"],"series_id":"84347f93-0a22-45a9-9a4a-ef1d0cf52ffc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-13 15:41:30 +0000 UTC FinishedAt: 2026-07-13 15:42:04 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7996E"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowkmk2x/series-workflowkmk2x-convert-artifact-1203768750/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkmk2x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7996E"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7996_eeprom_check_or_use_default"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7996E"],"series_id":"84347f93-0a22-45a9-9a4a-ef1d0cf52ffc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-13 15:42:11 +0000 UTC FinishedAt: 2026-07-13 16:21:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkmk2x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7996E"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7996_eeprom_check_or_use_default"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7996E"],"series_id":"84347f93-0a22-45a9-9a4a-ef1d0cf52ffc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-13 15:42:11 +0000 UTC FinishedAt: 2026-07-13 16:21:13 +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:*8ed2c543-efa7-4eb0-ae58-1b449ae18d2f,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-workflowkmk2x/series-workflowkmk2x-convert-artifact-1203768750/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": "ba1a225e-f8dc-4bed-9707-9f36f098d326", "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-workflowkmk2x/series-workflowkmk2x-build-action-2832085268/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkmk2x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7996E"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7996_eeprom_check_or_use_default"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7996E"],"series_id":"84347f93-0a22-45a9-9a4a-ef1d0cf52ffc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-13 15:42:11 +0000 UTC FinishedAt: 2026-07-13 16:21:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*8ed2c543-efa7-4eb0-ae58-1b449ae18d2f,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-workflowkmk2x/series-workflowkmk2x-convert-artifact-1203768750/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": "ba1a225e-f8dc-4bed-9707-9f36f098d326", "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-workflowkmk2x/series-workflowkmk2x-build-action-2832085268/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkmk2x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7996E"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7996_eeprom_check_or_use_default"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7996E"],"series_id":"84347f93-0a22-45a9-9a4a-ef1d0cf52ffc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-13 16:21:13 +0000 UTC FinishedAt: 2026-07-13 16:21:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkmk2x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7996E"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7996_eeprom_check_or_use_default"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7996E"],"series_id":"84347f93-0a22-45a9-9a4a-ef1d0cf52ffc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-13 16:21:13 +0000 UTC FinishedAt: 2026-07-13 16:21:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkmk2x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7996E"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7996_eeprom_check_or_use_default"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7996E"],"series_id":"84347f93-0a22-45a9-9a4a-ef1d0cf52ffc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-13 16:21:13 +0000 UTC FinishedAt: 2026-07-13 16:21:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkmk2x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7996E"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7996_eeprom_check_or_use_default"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7996E"],"series_id":"84347f93-0a22-45a9-9a4a-ef1d0cf52ffc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-13 16:21:13 +0000 UTC FinishedAt: 2026-07-13 16:21:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7996E"],"series_id":"84347f93-0a22-45a9-9a4a-ef1d0cf52ffc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowkmk2x/series-workflowkmk2x-convert-artifact-1216287905/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkmk2x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7996E"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7996_eeprom_check_or_use_default"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7996E"],"series_id":"84347f93-0a22-45a9-9a4a-ef1d0cf52ffc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-13 16:21:24 +0000 UTC FinishedAt: 2026-07-13 16:23:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkmk2x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7996E"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7996_eeprom_check_or_use_default"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7996E"],"series_id":"84347f93-0a22-45a9-9a4a-ef1d0cf52ffc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-13 16:21:24 +0000 UTC FinishedAt: 2026-07-13 16:23:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*ba1a225e-f8dc-4bed-9707-9f36f098d326,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-workflowkmk2x/series-workflowkmk2x-build-action-2832085268/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-workflowkmk2x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7996E"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7996_eeprom_check_or_use_default"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7996E"],"series_id":"84347f93-0a22-45a9-9a4a-ef1d0cf52ffc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-13 16:23:30 +0000 UTC FinishedAt: 2026-07-13 16:23:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkmk2x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7996E"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7996_eeprom_check_or_use_default"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7996E"],"series_id":"84347f93-0a22-45a9-9a4a-ef1d0cf52ffc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-13 16:23:30 +0000 UTC FinishedAt: 2026-07-13 16:23:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkmk2x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7996E"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7996_eeprom_check_or_use_default"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7996E"],"series_id":"84347f93-0a22-45a9-9a4a-ef1d0cf52ffc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-13 16:23:30 +0000 UTC FinishedAt: 2026-07-13 17:06:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkmk2x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7996E"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7996_eeprom_check_or_use_default"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7996E"],"series_id":"84347f93-0a22-45a9-9a4a-ef1d0cf52ffc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-13 16:23:30 +0000 UTC FinishedAt: 2026-07-13 17:06:43 +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:*8ed2c543-efa7-4eb0-ae58-1b449ae18d2f,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-workflowkmk2x/series-workflowkmk2x-convert-artifact-1216287905/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": "0a13cb48-96de-4e4a-9816-9d792fc15841", "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-workflowkmk2x/series-workflowkmk2x-build-action-3204005805/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkmk2x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7996E"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7996_eeprom_check_or_use_default"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7996E"],"series_id":"84347f93-0a22-45a9-9a4a-ef1d0cf52ffc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-13 16:23:30 +0000 UTC FinishedAt: 2026-07-13 17:06:33 +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:*8ed2c543-efa7-4eb0-ae58-1b449ae18d2f,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-workflowkmk2x/series-workflowkmk2x-convert-artifact-1216287905/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": "0a13cb48-96de-4e4a-9816-9d792fc15841", "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-workflowkmk2x/series-workflowkmk2x-build-action-3204005805/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkmk2x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7996E"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7996_eeprom_check_or_use_default"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7996E"],"series_id":"84347f93-0a22-45a9-9a4a-ef1d0cf52ffc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-13 17:06:43 +0000 UTC FinishedAt: 2026-07-13 17:06:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkmk2x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7996E"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7996_eeprom_check_or_use_default"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7996E"],"series_id":"84347f93-0a22-45a9-9a4a-ef1d0cf52ffc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-13 17:06:43 +0000 UTC FinishedAt: 2026-07-13 17:06:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkmk2x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7996E"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7996_eeprom_check_or_use_default"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7996E"],"series_id":"84347f93-0a22-45a9-9a4a-ef1d0cf52ffc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-13 17:06:43 +0000 UTC FinishedAt: 2026-07-13 17:08:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkmk2x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7996E"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7996_eeprom_check_or_use_default"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7996E"],"series_id":"84347f93-0a22-45a9-9a4a-ef1d0cf52ffc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-13 17:06:43 +0000 UTC FinishedAt: 2026-07-13 17:08:26 +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:*0a13cb48-96de-4e4a-9816-9d792fc15841,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-workflowkmk2x/series-workflowkmk2x-build-action-3204005805/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-workflowkmk2x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7996E"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7996_eeprom_check_or_use_default"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7996E"],"series_id":"84347f93-0a22-45a9-9a4a-ef1d0cf52ffc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-13 17:08:36 +0000 UTC FinishedAt: 2026-07-13 17:11:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkmk2x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7996E"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7996_eeprom_check_or_use_default"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7996E"],"series_id":"84347f93-0a22-45a9-9a4a-ef1d0cf52ffc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-13 17:08:36 +0000 UTC FinishedAt: 2026-07-13 17:11:12 +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":["mt7996_eeprom_check_or_use_default"],"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:*ba1a225e-f8dc-4bed-9707-9f36f098d326,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*0a13cb48-96de-4e4a-9816-9d792fc15841,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-workflowkmk2x/series-workflowkmk2x-build-action-2832085268/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-workflowkmk2x/series-workflowkmk2x-build-action-3204005805/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowkmk2x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7996E"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7996_eeprom_check_or_use_default"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7996E"],"series_id":"84347f93-0a22-45a9-9a4a-ef1d0cf52ffc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-13 17:08:36 +0000 UTC FinishedAt: 2026-07-13 17:08:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkmk2x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7996E"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7996_eeprom_check_or_use_default"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7996E"],"series_id":"84347f93-0a22-45a9-9a4a-ef1d0cf52ffc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-13 17:08:36 +0000 UTC FinishedAt: 2026-07-13 17:08:42 +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":["mt7996_eeprom_check_or_use_default"],"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-workflowkmk2x/series-workflowkmk2x-convert-artifact-3342703926/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkmk2x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7996E"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7996_eeprom_check_or_use_default"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7996E"],"series_id":"84347f93-0a22-45a9-9a4a-ef1d0cf52ffc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-13 17:08:36 +0000 UTC FinishedAt: 2026-07-13 17:08:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkmk2x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7996E"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7996_eeprom_check_or_use_default"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7996E"],"series_id":"84347f93-0a22-45a9-9a4a-ef1d0cf52ffc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-13 17:08:36 +0000 UTC FinishedAt: 2026-07-13 17:08:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkmk2x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7996E"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7996_eeprom_check_or_use_default"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7996E"],"series_id":"84347f93-0a22-45a9-9a4a-ef1d0cf52ffc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-13 17:08:36 +0000 UTC FinishedAt: 2026-07-13 17:08:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkmk2x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7996E"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7996_eeprom_check_or_use_default"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7996E"],"series_id":"84347f93-0a22-45a9-9a4a-ef1d0cf52ffc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-13 17:08:46 +0000 UTC FinishedAt: 2026-07-13 17:11:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkmk2x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7996E"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7996_eeprom_check_or_use_default"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7996E"],"series_id":"84347f93-0a22-45a9-9a4a-ef1d0cf52ffc","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-13 17:08:46 +0000 UTC FinishedAt: 2026-07-13 17:10:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*ba1a225e-f8dc-4bed-9707-9f36f098d326,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*0a13cb48-96de-4e4a-9816-9d792fc15841,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-workflowkmk2x/series-workflowkmk2x-build-action-2832085268/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-workflowkmk2x/series-workflowkmk2x-build-action-3204005805/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-workflowkmk2x/series-workflowkmk2x-convert-artifact-3342703926/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,}