Name: series-workflowh2fjt Phase: Succeeded StartedAt: 2026-07-02 03:56:57 +0000 UTC FinishedAt: 2026-07-02 05:19:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh2fjt[0] Phase: Succeeded StartedAt: 2026-07-02 03:56:57 +0000 UTC FinishedAt: 2026-07-02 04:19:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh2fjt[0].run-triage Phase: Succeeded StartedAt: 2026-07-02 03:56:57 +0000 UTC FinishedAt: 2026-07-02 04:19:29 +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": "665159e246749578d4e4bfe106ee3b74edcdab18", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SAMPLE_DAMON_MTIER", "DAMON", "DAMON_PADDR" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "665159e246749578d4e4bfe106ee3b74edcdab18", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SAMPLE_DAMON_MTIER", "DAMON", "DAMON_PADDR" ], "series_id": "51aba591-9ac7-40b0-b976-26917059e3ca" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "damon_sample_mtier_build_ctx" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDA0OjE4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NBTVBMRV9EQU1PTl9NVElFUiYjMzQ7LAogICAgJiMzNDtEQU1PTiYjMzQ7LAogICAgJiMzNDtEQU1PTl9QQUREUiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RhbW9uX3NhbXBsZV9tdGllcl9idWlsZF9jdHgmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGZ1bmN0aW9uYWwgY2hlY2sgdG8gcHJldmVudCBhbiBpbnZhbGlkIG1lbW9yeSByYW5nZSAoYWRkci5zdGFydCBcdTAwM2U9IGFkZHIuZW5kKSBpbiB0aGUgREFNT04gbWVtb3J5IHRpZXJpbmcgc2FtcGxlIG1vZHVsZS4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBieSBlbmFibGluZyB0aGUgbW9kdWxlIGFuZCB3cml0aW5nIHRvIGl0cyBzeXNmcyBwYXJhbWV0ZXIuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDQ6MTg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA4ODg0Y2Y5NDkwOTI0N2QxM2I4NzIyMWY0MzFmZWM1MGE2MDVlMDc5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMiAwNDoxODowMSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9zYW1wbGVzL2RhbW9uL210aWVyLmMgYi9zYW1wbGVzL2RhbW9uL210aWVyLmNcbmluZGV4IGViMTE0M2RlOGRmMTdlLi4zNzg1YjBjN2ZmYjE3NSAxMDA2NDRcbi0tLSBhL3NhbXBsZXMvZGFtb24vbXRpZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvc2FtcGxlcy9kYW1vbi9tdGllci5jXG5AQCAtMTIwLDYgJiM0MzsxMjAsOSBAQCBzdGF0aWMgc3RydWN0IGRhbW9uX2N0eCAqZGFtb25fc2FtcGxlX210aWVyX2J1aWxkX2N0eChib29sIHByb21vdGUpXG4gXHRcdGFkZHIuZW5kID0gcHJvbW90ZSA/IG5vZGUxX2VuZF9hZGRyIDogbm9kZTBfZW5kX2FkZHI7XG4gXHR9XG4gXG4mIzQzO1x0aWYgKGFkZHIuc3RhcnQgXHUwMDNlPSBhZGRyLmVuZClcbiYjNDM7XHRcdGdvdG8gZnJlZV9vdXQ7XG4mIzQzO1xuIFx0cmFuZ2Uuc3RhcnQgPSBhZGRyLnN0YXJ0O1xuIFx0cmFuZ2UuZW5kID0gYWRkci5lbmQ7XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDQ6MTg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7U0FNUExFX0RBTU9OX01USUVSJiMzNDssCiAgICAmIzM0O0RBTU9OJiMzNDssCiAgICAmIzM0O0RBTU9OX1BBRERSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZGFtb25fc2FtcGxlX210aWVyX2J1aWxkX2N0eCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgZnVuY3Rpb25hbCBjaGVjayB0byBwcmV2ZW50IGFuIGludmFsaWQgbWVtb3J5IHJhbmdlIChhZGRyLnN0YXJ0IFx1MDAzZT0gYWRkci5lbmQpIGluIHRoZSBEQU1PTiBtZW1vcnkgdGllcmluZyBzYW1wbGUgbW9kdWxlLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGJ5IGVuYWJsaW5nIHRoZSBtb2R1bGUgYW5kIHdyaXRpbmcgdG8gaXRzIHN5c2ZzIHBhcmFtZXRlci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgODg4NGNmOTQ5MDkyNDdkMTNiODcyMjFmNDMxZmVjNTBhNjA1ZTA3OQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgSnVsIDIgMDQ6MTg6MDEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9zYW1wbGVzL2RhbW9uL210aWVyLmMgYi9zYW1wbGVzL2RhbW9uL210aWVyLmMKaW5kZXggZWIxMTQzZGU4ZGYxN2UuLjM3ODViMGM3ZmZiMTc1IDEwMDY0NAotLS0gYS9zYW1wbGVzL2RhbW9uL210aWVyLmMKJiM0MzsmIzQzOyYjNDM7IGIvc2FtcGxlcy9kYW1vbi9tdGllci5jCkBAIC0xMjAsNiAmIzQzOzEyMCw5IEBAIHN0YXRpYyBzdHJ1Y3QgZGFtb25fY3R4ICpkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4KGJvb2wgcHJvbW90ZSkKIAkJYWRkci5lbmQgPSBwcm9tb3RlID8gbm9kZTFfZW5kX2FkZHIgOiBub2RlMF9lbmRfYWRkcjsKIAl9CiAKJiM0MzsJaWYgKGFkZHIuc3RhcnQgJmd0Oz0gYWRkci5lbmQpCiYjNDM7CQlnb3RvIGZyZWVfb3V0OwomIzQzOwogCXJhbmdlLnN0YXJ0ID0gYWRkci5zdGFydDsKIAlyYW5nZS5lbmQgPSBhZGRyLmVuZDsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwNDoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODI0CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMTQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIERBTU9OIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgc2FtcGxlcy9kYW1vbi9tdGllci5jYC4gSXQgc2VlbXMgdGhleSYjMzk7dmUgYWRkZWQgYSBjaGVjazogYGlmIChhZGRyLnN0YXJ0ICZndDs9IGFkZHIuZW5kKSBnb3RvIGZyZWVfb3V0O2Agd2l0aGluIHRoZSBgZGFtb25fc2FtcGxlX210aWVyX2J1aWxkX2N0eGAgZnVuY3Rpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcywgd2hhdCYjMzk7cyB0aGUgY29udGV4dCBoZXJlPyBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGBtdGllci5jYCBpcyBiZWluZyBjb21waWxlZC4gSXMgaXQgYSBtb2R1bGUsIG9yIGlzIGl0IGJ1aWx0LWluPyBBbmQsIG1vcmUgY3JpdGljYWxseSwgaXMgaXQgZXZlbiAqcmVhY2hhYmxlKj8gSSBtZWFuLCBpdCYjMzk7cyBhICpzYW1wbGUqLCByaWdodD8gVHlwaWNhbGx5LCBzYW1wbGVzIGRvbiYjMzk7dCBnZXQgZnV6emVkIHVubGVzcyB0aGV5IGV4cG9zZSBzb21lIGludGVyZmFjZS4KCkJ1dCB3YWl0LCBob2xkIG9uLi4uIGl0ICppcyogYSBzYW1wbGUgbW9kdWxlLiBPa2F5LCB0aGF0IGNoYW5nZXMgdGhpbmdzIHNsaWdodGx5LiBJJiMzOTtkIGJldHRlciBkaWcgaW50byB0aGUgYnVpbGQgc3lzdGVtIHRvIGdldCBhIGNsZWFyZXIgcGljdHVyZS4gVGltZSB0byBjaGVjayBgc2FtcGxlcy9kYW1vbi9NYWtlZmlsZWAgYW5kIGBzYW1wbGVzL2RhbW9uL0tjb25maWdgIHRvIHNlZSBob3cgaXQmIzM5O3MgYmVpbmcgY29uZmlndXJlZCBhbmQgYnVpbHQuIFRoaXMgY2hlY2ssIHRoaXMgY29uZGl0aW9uLCBpcyBpbnRlcmVzdGluZy4gSXQgaW1wbGllcyBzb21ldGhpbmcgY291bGQgbGVhZCB0byBgYWRkci5zdGFydGAgYmVpbmcgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIGBhZGRyLmVuZGAsIHdoaWNoIGlzbiYjMzk7dCByaWdodC4gSSYjMzk7bSBnb2luZyB0byBmb2xsb3cgdGhlIGxvZ2ljLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDA0OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RhbW9uX3NhbXBsZV9tdGllcl9idWlsZF9jdHgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtzYW1wbGVzL2RhbW9uL210aWVyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7c2FtcGxlcy9kYW1vbi9tdGllci5jPTYwPXN0YXRpYyBpbnQgbmlkX3RvX3BoeXMoaW50IHRhcmdldF9ub2RlLCBzdHJ1Y3QgcmVnaW9uX3JhbmdlICpyYW5nZSlcbi0tXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtNzItXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6NzM6c3RhdGljIHN0cnVjdCBkYW1vbl9jdHggKmRhbW9uX3NhbXBsZV9tdGllcl9idWlsZF9jdHgoYm9vbCBwcm9tb3RlKVxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTc0LXtcbi0tXG5zYW1wbGVzL2RhbW9uL210aWVyLmM9MTc3PXN0YXRpYyBpbnQgZGFtb25fc2FtcGxlX210aWVyX3N0YXJ0KHZvaWQpXG4tLVxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTE4MC1cbnNhbXBsZXMvZGFtb24vbXRpZXIuYzoxODE6XHRjdHggPSBkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4KHRydWUpO1xuc2FtcGxlcy9kYW1vbi9tdGllci5jLTE4Mi1cdGlmICghY3R4KVxuLS1cbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0xODQtXHRjdHhzWzBdID0gY3R4O1xuc2FtcGxlcy9kYW1vbi9tdGllci5jOjE4NTpcdGN0eCA9IGRhbW9uX3NhbXBsZV9tdGllcl9idWlsZF9jdHgoZmFsc2UpO1xuc2FtcGxlcy9kYW1vbi9tdGllci5jLTE4Ni1cdGlmICghY3R4KSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDQ6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU2NgoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEaXZpbmcgaW50byB0aGUgYG10aWVyLmNgIE1vZHVsZSBJbml0aWFsaXphdGlvbioqCgpPa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSB0YWtpbmcgYSBjbG9zZSBsb29rIGF0IHRoZSBtb2R1bGUgaW5pdGlhbGl6YXRpb24gd2l0aGluIGBzYW1wbGVzL2RhbW9uL210aWVyLmNgLiBUaGlzIGlzIHdoZXJlIHRoZSBtYWdpYyByZWFsbHkgYmVnaW5zIOKAkyBpdOKAmXMgdGhlIGJlZHJvY2sgb2YgaG93IHRoZSBgbXRpZXJgIGNvbXBvbmVudCBpbnRlcmFjdHMgd2l0aCB0aGUga2VybmVsIGFuZCBzZXRzIGl0c2VsZiB1cCBmb3Igb3BlcmF0aW9uLiBJIHdhbnQgdG8gc2VlIGhvdyBpdCYjMzk7cyBpbnRlZ3JhdGVkLCBhbnkgcmVzb3VyY2UgYWxsb2NhdGlvbnMsIGFuZCBpbml0aWFsIGRhdGEgc3RydWN0dXJlcyBiZWluZyBkZWZpbmVkIGFuZCBidWlsdCB1cC4gVW5kZXJzdGFuZGluZyB0aGlzIGluaXQgc2VxdWVuY2UgaXMgKmNydWNpYWwqIGZvciBkZWJ1Z2dpbmcsIG1vZGlmaWNhdGlvbiwgb3IgZXZlbiBzaW1wbHkgdHJhY2luZyB0aGUgZXhlY3V0aW9uIGZsb3cgb2YgdGhlIGVudGlyZSBEYW1vbiBzdWJzeXN0ZW0uIExldCYjMzk7cyBzZWUgd2hhdCBnZW1zIGFyZSBoaWRkZW4gaW4gdGhpcyBzdGFydGluZyBwb2ludC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwNDoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttb2R1bGVfaW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O3NhbXBsZXMvZGFtb24vbXRpZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtzYW1wbGVzL2RhbW9uL210aWVyLmM9MjI3PXN0YXRpYyBpbnQgX19pbml0IGRhbW9uX3NhbXBsZV9tdGllcl9pbml0KHZvaWQpXG4tLVxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTI0NC1cbnNhbXBsZXMvZGFtb24vbXRpZXIuYzoyNDU6bW9kdWxlX2luaXQoZGFtb25fc2FtcGxlX210aWVyX2luaXQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDA0OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4NjcKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIGRlbGl2ZXJlZCBhcyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5OgoKKipNb2R1bGUgTG9jYXRpb24gYW5kIEVuYWJsZW1lbnQgSW52ZXN0aWdhdGlvbioqCgpBbHJpZ2h0LCB0aGlzIGlzIGEgc2FtcGxlIG1vZHVsZSDigJMgbm90aGluZyBwYXJ0aWN1bGFybHkgZ3JvdW5kLWJyZWFraW5nIHlldC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCB0aGUgc3RhbmRhcmQgcHJvY2VkdXJlIGZvciBlbmFibGluZyBzb21ldGhpbmcgbGlrZSB0aGlzIHdpdGhpbiB0aGUgYnVpbGQgc3lzdGVtLiBTaW5jZSBpdCYjMzk7cyBhIHNhbXBsZSwgdGhlIHR5cGljYWwgbG9jYXRpb24gZm9yIHRoZSBlbmFibGluZyBjb25maWd1cmF0aW9uIHdvdWxkIGJlIHdpdGhpbiB0aGUgYHNhbXBsZXMvYCBkaXJlY3RvcnksIHNwZWNpZmljYWxseSBpbiBhIGBLY29uZmlnYCBmaWxlLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIGVpdGhlciBgc2FtcGxlcy9kYW1vbi9LY29uZmlnYCAoYXNzdW1pbmcgdGhlcmUmIzM5O3MgYSBkZWRpY2F0ZWQgZGlyZWN0b3J5IGZvciB0aGlzIERhbW9uIHNhbXBsZSkgb3IgdGhlIG1vcmUgZ2VuZXJhbCBgc2FtcGxlcy9LY29uZmlnYCBmaWxlLiBUaGF0JiMzOTtzIHdoZXJlIEkgZXhwZWN0IHRvIGZpbmQgdGhlIHJlbGV2YW50IGBDT05GSUdfYCBvcHRpb24gb3IgZGVwZW5kZW5jeSBjaGFpbiB0aGF0IGNvbnRyb2xzIHRoZSBpbmNsdXNpb24gb2YgdGhpcyBwYXJ0aWN1bGFyIG1vZHVsZSBpbiB0aGUgYnVpbGQuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGxvZ2ljYWwgY29ubmVjdGlvbjsgdW5kZXJzdGFuZGluZyBob3cgdGhpcyBpcyBhY3RpdmF0ZWQgaXMga2V5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDA0OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210aWVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7c2FtcGxlcy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7c2FtcGxlcy9kYW1vbi9NYWtlZmlsZT00PW9iai0kKENPTkZJR19TQU1QTEVfREFNT05fUFJDTCkgJiM0Mzs9IHByY2wub1xuc2FtcGxlcy9kYW1vbi9NYWtlZmlsZTo1Om9iai0kKENPTkZJR19TQU1QTEVfREFNT05fTVRJRVIpICYjNDM7PSBtdGllci5vXG4tLVxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTctXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6ODojZGVmaW5lIHByX2ZtdChmbXQpIFwmIzM0O2RhbW9uX3NhbXBsZV9tdGllcjogXCYjMzQ7IGZtdFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTktXG4tLVxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTE3LSNlbmRpZlxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjE4OiNkZWZpbmUgTU9EVUxFX1BBUkFNX1BSRUZJWCBcJiMzNDtkYW1vbl9zYW1wbGVfbXRpZXIuXCYjMzQ7XG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMTktXG4tLVxuc2FtcGxlcy9kYW1vbi9tdGllci5jPTM2PW1vZHVsZV9wYXJhbShub2RlMF9tZW1fZnJlZV9icCwgdWxvbmcsIDA2MDApO1xuc2FtcGxlcy9kYW1vbi9tdGllci5jLTM3LVxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjM4OnN0YXRpYyBpbnQgZGFtb25fc2FtcGxlX210aWVyX2VuYWJsZV9zdG9yZShcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0zOS1cdFx0Y29uc3QgY2hhciAqdmFsLCBjb25zdCBzdHJ1Y3Qga2VybmVsX3BhcmFtICprcCk7XG4tLVxuc2FtcGxlcy9kYW1vbi9tdGllci5jPTQxPXN0YXRpYyBjb25zdCBzdHJ1Y3Qga2VybmVsX3BhcmFtX29wcyBlbmFibGVkX3BhcmFtX29wcyA9IHtcbnNhbXBsZXMvZGFtb24vbXRpZXIuYzo0MjpcdC5zZXQgPSBkYW1vbl9zYW1wbGVfbXRpZXJfZW5hYmxlX3N0b3JlLFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTQzLVx0LmdldCA9IHBhcmFtX2dldF9ib29sLFxuLS1cbnNhbXBsZXMvZGFtb24vbXRpZXIuYz02MD1zdGF0aWMgaW50IG5pZF90b19waHlzKGludCB0YXJnZXRfbm9kZSwgc3RydWN0IHJlZ2lvbl9yYW5nZSAqcmFuZ2UpXG4tLVxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTcyLVxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjczOnN0YXRpYyBzdHJ1Y3QgZGFtb25fY3R4ICpkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4KGJvb2wgcHJvbW90ZSlcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy03NC17XG4tLVxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTE3Ni1cbnNhbXBsZXMvZGFtb24vbXRpZXIuYzoxNzc6c3RhdGljIGludCBkYW1vbl9zYW1wbGVfbXRpZXJfc3RhcnQodm9pZClcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0xNzgte1xuLS1cbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0xODAtXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6MTgxOlx0Y3R4ID0gZGFtb25fc2FtcGxlX210aWVyX2J1aWxkX2N0eCh0cnVlKTtcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0xODItXHRpZiAoIWN0eClcbi0tXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMTg0LVx0Y3R4c1swXSA9IGN0eDtcbnNhbXBsZXMvZGFtb24vbXRpZXIuYzoxODU6XHRjdHggPSBkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4KGZhbHNlKTtcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0xODYtXHRpZiAoIWN0eCkge1xuLS1cbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0xOTMtXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6MTk0OnN0YXRpYyB2b2lkIGRhbW9uX3NhbXBsZV9tdGllcl9zdG9wKHZvaWQpXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMTk1LXtcbi0tXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMjAwLVxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjIwMTpzdGF0aWMgaW50IGRhbW9uX3NhbXBsZV9tdGllcl9lbmFibGVfc3RvcmUoXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMjAyLVx0XHRjb25zdCBjaGFyICp2YWwsIGNvbnN0IHN0cnVjdCBrZXJuZWxfcGFyYW0gKmtwKVxuLS1cbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yMTctXHRpZiAoZW5hYmxlZCkge1xuc2FtcGxlcy9kYW1vbi9tdGllci5jOjIxODpcdFx0ZXJyID0gZGFtb25fc2FtcGxlX210aWVyX3N0YXJ0KCk7XG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMjE5LVx0XHRpZiAoZXJyKVxuLS1cbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yMjItXHR9XG5zYW1wbGVzL2RhbW9uL210aWVyLmM6MjIzOlx0ZGFtb25fc2FtcGxlX210aWVyX3N0b3AoKTtcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yMjQtXHRyZXR1cm4gMDtcbi0tXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMjI2LVxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjIyNzpzdGF0aWMgaW50IF9faW5pdCBkYW1vbl9zYW1wbGVfbXRpZXJfaW5pdCh2b2lkKVxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTIyOC17XG4tLVxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTIzNy1cdGlmIChlbmFibGVkKSB7XG5zYW1wbGVzL2RhbW9uL210aWVyLmM6MjM4Olx0XHRlcnIgPSBkYW1vbl9zYW1wbGVfbXRpZXJfc3RhcnQoKTtcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yMzktXHRcdGlmIChlcnIpXG4tLVxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTI0NC1cbnNhbXBsZXMvZGFtb24vbXRpZXIuYzoyNDU6bW9kdWxlX2luaXQoZGFtb25fc2FtcGxlX210aWVyX2luaXQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDA0OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyNjIKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA0MzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgYGRhbW9uX3NhbXBsZV9tdGllcmAgTW9kdWxlOiBBIFF1aWNrIEFzc2Vzc21lbnQqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgbW9kdWxlLCBgZGFtb25fc2FtcGxlX210aWVyYCwgYW5kIHRoZSBrZXkgaGVyZSBpcyB0aGUgYGVuYWJsZWRgIG1vZHVsZSBwYXJhbWV0ZXIuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb246IGlzIGl0IHdvcnRoIGZ1enppbmc/IEl0JiMzOTtzIGEgc2FtcGxlIG1vZHVsZSwgYW5kIGdlbmVyYWxseSwgd2UgZG9uJiMzOTt0IGJvdGhlciBmdXp6aW5nIHRob3NlIHVubGVzcyB0aGV5JiMzOTtyZSB0aWVkIGludG8gc29tZSBjcnVjaWFsIGNvcmUgZmVhdHVyZSB0ZXN0cy4gQnV0LCBoYW5nIG9uLi4uIGRvZXNuJiMzOTt0IHN5emthbGxlciBhY3R1YWxseSAqZG9lcyogZnV6eiBgc2FtcGxlcy9gIGNvZGUgaWYgaXQgZXhwb3NlcyB0aGF0IGAvc3lzL21vZHVsZS9kYW1vbl9zYW1wbGVfbXRpZXIvcGFyYW1ldGVycy9lbmFibGVkYCBpbnRlcmZhY2U/IFRoYXQmIzM5O3Mgd2hhdCBJIG5lZWQgdG8gdmVyaWZ5LgoKTm93LCBsZXQmIzM5O3MgZ28gdGhyb3VnaCB0aGUgYFdvcnRoRnV6emluZ2AgY3JpdGVyaWEuIEkgaGF2ZSB0byBzZWUgaWYgdGhlIHBhdGNoIGNvbnRhaW5zIHB1cmVseSBub24tZnVuY3Rpb25hbCBjaGFuZ2VzIG9yIGlzIGltcG9zc2libGUgdG8gcmVhY2guIENhbiB0aGlzIG1vZHVsZSBiZSByZWFjaGVkPyBZZXMsIGl0IGNhbiBiZSByZWFjaGVkIGJ5IGxvYWRpbmcgaXQgb3Igd3JpdGluZyB0byB0aGF0IHBhcmFtZXRlci4gU28sIHRoZSAmIzM0O2ltcG9zc2libGUgdG8gcmVhY2gmIzM0OyBjcml0ZXJpYSBpcyBhIG5vLgoKVGhlIHRyaWNreSBwYXJ0IGlzLCB3aGlsZSBpdCYjMzk7cyBhIHNhbXBsZSwgaXQmIzM5O3MgZnVuY3Rpb25hbC4gSSBuZWVkIHRvIGRldGVybWluZSBpZiBpdCYjMzk7cyBjb25zaWRlcmVkICYjMzQ7cmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLiYjMzQ7IExldCYjMzk7cyBsb29rIGF0IGBzYW1wbGVzL2RhbW9uL210aWVyLmNgLi4uIGFoLCBpdCYjMzk7cyBhIERBTU9OIHNhbXBsZSwgYW5kIHNpbmNlIGl0IGlzIGNvbXBpbGVkLCBpdCBpcywgaW4gZmFjdCwgZnVuY3Rpb25hbC4gVGhlIGNvZGUgaXMgYXZhaWxhYmxlLCBzbyBpdCYjMzk7cyAqdGVjaG5pY2FsbHkqIHJlYWNoYWJsZS4gVGhlIGNyaXRlcmlhIHNheSAmIzM0O0lmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2ggdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuJiMzNDsKCkl0JiMzOTtzIGEgc2FtcGxlLCBidXQgaXQmIzM5O3MgcGFydCBvZiBEQU1PTi4gQXJlIHNhbXBsZSBtb2R1bGVzIGNvbnNpZGVyZWQgJiMzNDtjb3JlIGtlcm5lbCBsb2dpYyYjMzQ7PyBVc3VhbGx5LCB0aGV5JiMzOTtyZSBqdXN0IGV4YW1wbGVzLCBidXQgdGhleSBhcmUgY29tcGlsZWQgYW5kICpjYW4qIGJlIGxvYWRlZC4uLnNvIEkgaGF2ZSB0byBkZXRlcm1pbmUgaWYgdGhpcyBjYW4gcmVhc29uYWJseSBiZSBjb25zaWRlcmVkIGNvcmUgZnVuY3Rpb25hbGl0eS4KCkkgbmVlZCB0byBxdWlja2x5IGNoZWNrIHRoZSBgc2FtcGxlcy9LY29uZmlnYCB0byBzZWUgaWYgYFNBTVBMRV9EQU1PTl9NVElFUmAgaXMgZXZlbiBhbiBvcHRpb24uIElmIGl0IGlzIGF2YWlsYWJsZSwgaXQgd291bGQgc2VlbSByZWFzb25hYmxlIHRvIHNheSB0aGF0IHRoaXMgc2FtcGxlIG1vZHVsZSBpcyBpbnRlbmRlZCB0byBiZSBsb2FkZWQgYW5kIHJ1bi4gSSBjYW4gcmVhc29uYWJseSBjb25zaWRlciB0aGlzIGEgJiMzNDttYXliZSYjMzQ7IHRvIGJlIHdvcnRoIGZ1enppbmcsIGJhc2VkIG9uIHRoaXMgY3JpdGVyaWEgYW5kIHdoYXQgSSBrbm93IG9mIGhvdyBzeXprYWxsZXIgaGFuZGxlcyBzYW1wbGVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwNDoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtTQU1QTEVfREFNT05fTVRJRVImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtzYW1wbGVzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtzYW1wbGVzL01ha2VmaWxlPTQ0PW9iai0kKENPTkZJR19TQU1QTEVfREFNT05fUFJDTClcdFx0JiM0Mzs9IGRhbW9uL1xuc2FtcGxlcy9NYWtlZmlsZTo0NTpvYmotJChDT05GSUdfU0FNUExFX0RBTU9OX01USUVSKVx0JiM0Mzs9IGRhbW9uL1xuc2FtcGxlcy9NYWtlZmlsZS00Ni1vYmotJChDT05GSUdfU0FNUExFX0hVTkdfVEFTSylcdFx0JiM0Mzs9IGh1bmdfdGFzay9cbi0tXG5zYW1wbGVzL2RhbW9uL0tjb25maWc9MTc9Y29uZmlnIFNBTVBMRV9EQU1PTl9QUkNMXG4tLVxuc2FtcGxlcy9kYW1vbi9LY29uZmlnLTI5LVxuc2FtcGxlcy9kYW1vbi9LY29uZmlnOjMwOmNvbmZpZyBTQU1QTEVfREFNT05fTVRJRVJcbnNhbXBsZXMvZGFtb24vS2NvbmZpZy0zMS1cdGJvb2wgXCYjMzQ7REFNT04gc2FtcGxlIG1vZHVsZSBmb3IgbWVtb3J5IHRpZXJpbmdcJiMzNDtcbi0tXG5zYW1wbGVzL2RhbW9uL01ha2VmaWxlPTQ9b2JqLSQoQ09ORklHX1NBTVBMRV9EQU1PTl9QUkNMKSAmIzQzOz0gcHJjbC5vXG5zYW1wbGVzL2RhbW9uL01ha2VmaWxlOjU6b2JqLSQoQ09ORklHX1NBTVBMRV9EQU1PTl9NVElFUikgJiM0Mzs9IG10aWVyLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDQ6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTQ1MAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE3OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFNBTVBMRV9EQU1PTl9NVElFUiBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBTQU1QTEVfREFNT05fTVRJRVJgIGJvb2xlYW4gY29uZmlndXJhdGlvbiBvcHRpb24uIElmIGl0JiMzOTtzIGVuYWJsZWQsIHRoZSBjb2RlIGFzc29jaWF0ZWQgd2l0aCBpdCBpcyBjb21waWxlZC4gTm93LCBJIHNlZSB0aGlzIHBhdGNoIGFkZGluZyBhIGNoZWNrOiBgaWYgKGFkZHIuc3RhcnQgJmd0Oz0gYWRkci5lbmQpIGdvdG8gZnJlZV9vdXQ7YCB3aXRoaW4gdGhlIGBkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4YCBmdW5jdGlvbi4gU2VlbXMgbGlrZSBhIGJhc2ljIHNhbml0eSBjaGVjaywgYnV0IHRoZSBkZXZpbCYjMzk7cyBpbiB0aGUgZGV0YWlscywgcmlnaHQ/CgpUaGUgbmV4dCB0aGluZyBJIG5lZWQgdG8gZG8gaXMgdG8gZGV0ZXJtaW5lIHRoZSByZWFjaGFiaWxpdHkgb2YgdGhpcyBjb2RlLiBJdCYjMzk7cyBmdW5jdGlvbmFsLCBidXQgaXMgaXQgYWN0dWFsbHkgKnVzZWQqPyBMZXQmIzM5O3MgdHJhY2UgaXQgYmFjay4gT2theSwgc28gYGRhbW9uX3NhbXBsZV9tdGllcl9idWlsZF9jdHhgIGlzIGNhbGxlZCBmcm9tIGBkYW1vbl9zYW1wbGVfbXRpZXJfc3RhcnRgLCB3aGljaCBpcyBjYWxsZWQgZnJvbSBgZGFtb25fc2FtcGxlX210aWVyX2VuYWJsZV9zdG9yZWAgYW5kIGBkYW1vbl9zYW1wbGVfbXRpZXJfaW5pdGAuIEdvdCBpdCwgaXQmIzM5O3MgZGVmaW5pdGVseSByZWFjaGFibGUuCgpOb3csIEkmIzM5O20gZ29pbmcgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZSBhY3R1YWwgaW1wbGVtZW50YXRpb24gb2YgYGRhbW9uX3NhbXBsZV9tdGllcl9idWlsZF9jdHhgIHdpdGhpbiBgc2FtcGxlcy9kYW1vbi9tdGllci5jYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBzdWJ0bGUgYnVncyBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwNDoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O3NhbXBsZXMvZGFtb24vbXRpZXIuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTAwOlx0XHRhdHRycy5pbnRlcnZhbHNfZ29hbCA9IChzdHJ1Y3QgZGFtb25faW50ZXJ2YWxzX2dvYWwpIHtcbiAxMDE6XHRcdFx0LmFjY2Vzc19icCA9IDQwMCwgLmFnZ3JzID0gMyxcbiAxMDI6XHRcdFx0Lm1pbl9zYW1wbGVfdXMgPSA1MDAwLCAubWF4X3NhbXBsZV91cyA9IDEwMDAwMDAwLFxuIDEwMzpcdFx0fTtcbiAxMDQ6XHRcdGlmIChkYW1vbl9zZXRfYXR0cnMoY3R4LCBcdTAwMjZhdHRycykpXG4gMTA1Olx0XHRcdGdvdG8gZnJlZV9vdXQ7XG4gMTA2Olx0XHRpZiAoZGFtb25fc2VsZWN0X29wcyhjdHgsIERBTU9OX09QU19QQUREUikpXG4gMTA3Olx0XHRcdGdvdG8gZnJlZV9vdXQ7XG4gMTA4Olx0XG4gMTA5Olx0XHR0YXJnZXQgPSBkYW1vbl9uZXdfdGFyZ2V0KCk7XG4gMTEwOlx0XHRpZiAoIXRhcmdldClcbiAxMTE6XHRcdFx0Z290byBmcmVlX291dDtcbiAxMTI6XHRcdGRhbW9uX2FkZF90YXJnZXQoY3R4LCB0YXJnZXQpO1xuIDExMzpcdFxuIDExNDpcdFx0aWYgKGRldGVjdF9ub2RlX2FkZHJlc3Nlcykge1xuIDExNTpcdFx0XHRyZXQgPSBwcm9tb3RlID8gbmlkX3RvX3BoeXMoMSwgXHUwMDI2YWRkcikgOiBuaWRfdG9fcGh5cygwLCBcdTAwMjZhZGRyKTtcbiAxMTY6XHRcdFx0aWYgKHJldClcbiAxMTc6XHRcdFx0XHRnb3RvIGZyZWVfb3V0O1xuIDExODpcdFx0fSBlbHNlIHtcbiAxMTk6XHRcdFx0YWRkci5zdGFydCA9IHByb21vdGUgPyBub2RlMV9zdGFydF9hZGRyIDogbm9kZTBfc3RhcnRfYWRkcjtcbiAxMjA6XHRcdFx0YWRkci5lbmQgPSBwcm9tb3RlID8gbm9kZTFfZW5kX2FkZHIgOiBub2RlMF9lbmRfYWRkcjtcbiAxMjE6XHRcdH1cbiAxMjI6XHRcbiAxMjM6XHRcdGlmIChhZGRyLnN0YXJ0IFx1MDAzZT0gYWRkci5lbmQpXG4gMTI0Olx0XHRcdGdvdG8gZnJlZV9vdXQ7XG4gMTI1Olx0XG4gMTI2Olx0XHRyYW5nZS5zdGFydCA9IGFkZHIuc3RhcnQ7XG4gMTI3Olx0XHRyYW5nZS5lbmQgPSBhZGRyLmVuZDtcbiAxMjg6XHRcbiAxMjk6XHRcdHJldCA9IGRhbW9uX3NldF9yZWdpb25zKHRhcmdldCwgXHUwMDI2cmFuZ2UsIDEsIERBTU9OX01JTl9SRUdJT05fU1opO1xuIDEzMDpcdFx0aWYgKHJldClcbiAxMzE6XHRcdFx0Z290byBmcmVlX291dDtcbiAxMzI6XHRcbiAxMzM6XHRcdHNjaGVtZSA9IGRhbW9uX25ld19zY2hlbWUoXG4gMTM0Olx0XHRcdFx0LyogYWNjZXNzIHBhdHRlcm4gKi9cbiAxMzU6XHRcdFx0XHRcdTAwMjYoc3RydWN0IGRhbW9zX2FjY2Vzc19wYXR0ZXJuKSB7XG4gMTM2Olx0XHRcdFx0XHQubWluX3N6X3JlZ2lvbiA9IFBBR0VfU0laRSxcbiAxMzc6XHRcdFx0XHRcdC5tYXhfc3pfcmVnaW9uID0gVUxPTkdfTUFYLFxuIDEzODpcdFx0XHRcdFx0Lm1pbl9ucl9hY2Nlc3NlcyA9IHByb21vdGUgPyAxIDogMCxcbiAxMzk6XHRcdFx0XHRcdC5tYXhfbnJfYWNjZXNzZXMgPSBwcm9tb3RlID8gVUlOVF9NQVggOiAwLFxuIDE0MDpcdFx0XHRcdFx0Lm1pbl9hZ2VfcmVnaW9uID0gMCxcbiAxNDE6XHRcdFx0XHRcdC5tYXhfYWdlX3JlZ2lvbiA9IFVJTlRfTUFYfSxcbiAxNDI6XHRcdFx0XHQvKiBhY3Rpb24gKi9cbiAxNDM6XHRcdFx0XHRwcm9tb3RlID8gREFNT1NfTUlHUkFURV9IT1QgOiBEQU1PU19NSUdSQVRFX0NPTEQsXG4gMTQ0Olx0XHRcdFx0MTAwMDAwMCxcdC8qIGFwcGx5IGludGVydmFsICgxcykgKi9cbiAxNDU6XHRcdFx0XHRcdTAwMjYoc3RydWN0IGRhbW9zX3F1b3RhKXtcbiAxNDY6XHRcdFx0XHRcdC8qIDIwMCBNaUIgcGVyIHNlYyBieSBtb3N0ICovXG4gMTQ3Olx0XHRcdFx0XHQucmVzZXRfaW50ZXJ2YWwgPSAxMDAwLFxuIDE0ODpcdFx0XHRcdFx0LnN6ID0gMjAwICogMTAyNCAqIDEwMjQsXG4gMTQ5Olx0XHRcdFx0XHQvKiBpZ25vcmUgc2l6ZSBvZiByZWdpb24gd2hlbiBwcmlvcml0aXppbmcgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDQ6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjc4OAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDEzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBCdWcgRml4IGluIGEgU2FtcGxlIE1vZHVsZSoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBjcnVjaWFsIGNoZWNrOiBgaWYgKGFkZHIuc3RhcnQgJmd0Oz0gYWRkci5lbmQpIGdvdG8gZnJlZV9vdXQ7YC4gUmlnaHQgYXdheSwgSSBzZWUgdGhpcyBpcyBwdXJlbHkgZnVuY3Rpb25hbC4gSXQmIzM5O3MgYSBjbGVhciBhdHRlbXB0IHRvIHByZXZlbnQgYSBidWcgd2hlcmUgdGhlIHN0YXJ0IGFkZHJlc3MgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBlbmQgYWRkcmVzcywgd2hpY2ggbWFrZXMgaW50dWl0aXZlIHNlbnNlIOKAkyB0aGF0JiMzOTtzIGEgcmFuZ2UgZXJyb3IuCgpUaGUgcXVlc3Rpb24gbm93IGlzLCBpcyBpdCB3b3J0aCBmdXp6aW5nIHRoaXM/IE5vcm1hbGx5LCBJIHdvdWxkbiYjMzk7dCBib3RoZXIgd2l0aCBzYW1wbGUgbW9kdWxlcyBpbiBTeXprYWxsZXIgdW5sZXNzIHNwZWNpZmljYWxseSBlbmFibGVkIGFuZCB0YXJnZXRlZC4gVGhleSYjMzk7cmUgdXN1YWxseSBsb3cgcHJpb3JpdHkuIEJ1dCB0aGlzIG9uZS4uLiBpcyBhIHNhbXBsZSBhbmQgaWYgd2UgZW5hYmxlIGBTQU1QTEVfREFNT05fTVRJRVJgLCB0aGUgbW9kdWxlICp3aWxsKiBiZSBjb21waWxlZCBhbmQgbG9hZGVkISBIb2xkIG9uLCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQuIEl0JiMzOTtzIGp1c3QgYSBib29sZWFuIGNvbmZpZywgd2hpY2ggbWVhbnMgaXTigJlzIGVpdGhlciBpbiBvciBvdXQuIEp1c3QgdG8gYmUgY29tcGxldGVseSBzdXJlLCBJJiMzOTtsbCBnbyBiYWNrIGFuZCByZXZpZXcgdGhlIGBzYW1wbGVzL2RhbW9uL0tjb25maWdgIGZpbGUgb25lIG1vcmUgdGltZS4gR290dGEgbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55IGRlcGVuZGVuY2llcyBvciBvdGhlciByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDA0OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7c2FtcGxlcy9kYW1vbi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdFxuICAgMzpcdG1lbnUgXCYjMzQ7REFNT04gU2FtcGxlc1wmIzM0O1xuICAgNDpcdFxuICAgNTpcdGNvbmZpZyBTQU1QTEVfREFNT05fV1NTRVxuICAgNjpcdFx0Ym9vbCBcJiMzNDtEQU1PTiBzYW1wbGUgbW9kdWxlIGZvciB3b3JraW5nIHNldCBzaXplIGVzdGltYXRpb25cJiMzNDtcbiAgIDc6XHRcdGRlcGVuZHMgb24gREFNT04gXHUwMDI2XHUwMDI2IERBTU9OX1ZBRERSXG4gICA4Olx0XHRoZWxwXG4gICA5Olx0XHQgIFRoaXMgYnVpbGRzIERBTU9OIHNhbXBsZSBtb2R1bGUgZm9yIHdvcmtpbmcgc2V0IHNpemUgZXN0aW1hdGlvbi5cbiAgMTA6XHRcbiAgMTE6XHRcdCAgVGhlIG1vZHVsZSByZWNlaXZlcyBhIHBpZCwgbW9uaXRvciBhY2Nlc3MgdG8gdGhlIHZpcnR1YWwgYWRkcmVzc1xuICAxMjpcdFx0ICBzcGFjZSBvZiB0aGUgcHJvY2VzcywgZXN0aW1hdGUgd29ya2luZyBzZXQgc2l6ZSBvZiB0aGUgcHJvY2VzcywgYW5kXG4gIDEzOlx0XHQgIHJlcGVhdGVkbHkgcHJpbnRzIHRoZSBzaXplIG9uIHRoZSBrZXJuZWwgbG9nLlxuICAxNDpcdFxuICAxNTpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuICAxNjpcdFxuICAxNzpcdGNvbmZpZyBTQU1QTEVfREFNT05fUFJDTFxuICAxODpcdFx0Ym9vbCBcJiMzNDtEQU1PTiBzYW1wbGUgbW9kdWxlIGZvciBhY2Nlc3MtYXdhcmUgcHJvYWN0aXZlIHJlY2xhbWF0aW9uXCYjMzQ7XG4gIDE5Olx0XHRkZXBlbmRzIG9uIERBTU9OIFx1MDAyNlx1MDAyNiBEQU1PTl9WQUREUlxuICAyMDpcdFx0aGVscFxuICAyMTpcdFx0ICBUaGlzIGJ1aWxkcyBEQU1PTiBzYW1wbGUgbW9kdWxlIGZvciBhY2Nlc3MtYXdhcmUgcHJvYWN0aXZlXG4gIDIyOlx0XHQgIHJlY2xhbWF0aW9uLlxuICAyMzpcdFxuICAyNDpcdFx0ICBUaGUgbW9kdWxlIHJlY2VpdmVzIGEgcGlkLCBtb25pdG9yIGFjY2VzcyB0byB0aGUgdmlydHVhbCBhZGRyZXNzXG4gIDI1Olx0XHQgIHNwYWNlIG9mIHRoZSBwcm9jZXNzLCBmaW5kIG1lbW9yeSByZWdpb25zIHRoYXQgbm90IGFjY2Vzc2VkLCBhbmRcbiAgMjY6XHRcdCAgcHJvYWN0aXZlbHkgcmVjbGFpbSB0aGUgcmVnaW9ucy5cbiAgMjc6XHRcbiAgMjg6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgMjk6XHRcbiAgMzA6XHRjb25maWcgU0FNUExFX0RBTU9OX01USUVSXG4gIDMxOlx0XHRib29sIFwmIzM0O0RBTU9OIHNhbXBsZSBtb2R1bGUgZm9yIG1lbW9yeSB0aWVyaW5nXCYjMzQ7XG4gIDMyOlx0XHRkZXBlbmRzIG9uIERBTU9OIFx1MDAyNlx1MDAyNiBEQU1PTl9QQUREUlxuICAzMzpcdFx0aGVscFxuICAzNDpcdFx0ICBUaHBzIGJ1aWxkcyBEQU1PTiBzYW1wbGUgbW9kdWxlIGZvciBtZW1vcnkgdGllcmlnbi5cbiAgMzU6XHRcbiAgMzY6XHRcdCAgVGhlIG1vZHVsZSBhc3N1bWVzIHRoZSBzeXN0ZW0gaXMgY29uc3RydWN0ZWQgd2l0aCB0d28gTlVNQSBub2RlcyxcbiAgMzc6XHRcdCAgd2hpY2ggc2VlbXMgYXMgbG9jYWwgYW5kIHJlbW90ZSBub2RlcyB0byBhbGwgQ1BVcy4gIEZvciBleGFtcGxlLFxuICAzODpcdFx0ICBub2RlMCBpcyBmb3IgRERSNSBEUkFNcyBjb25uZWN0ZWQgdmlhIERJTU0sIHdoaWxlIG5vZGUxIGlzIGZvciBERFI0XG4gIDM5Olx0XHQgIERSQU1zIGNvbm5lY3RlZCB2aWEgQ1hMLlxuICA0MDpcdFxuICA0MTpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuICA0MjpcdFxuICA0MzpcdGVuZG1lbnVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDQ6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzc1OAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDk4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgREFNT04gTXVsdGktVGllciBJbml0aWFsaXphdGlvbioqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgYm9vbGVhbiBjb25maWd1cmF0aW9uIGhlcmUuIFRoYXQgbWVhbnMgaXQmIzM5O3MgZWl0aGVyIGVuYWJsZWQgb3IgZGlzYWJsZWQgYnkgZGVmYXVsdCwgYmFrZWQgZGlyZWN0bHkgaW50byB0aGUgc3lzdGVtLCB5ZXM/IElmIHRoaXMgbXVsdGktdGllciBmdW5jdGlvbmFsaXR5IGlzIGluZGVlZCBidWlsdC1pbiBhbmQgYWN0aXZlLCB0aGVuIHRoZSBgZGFtb25fc2FtcGxlX210aWVyX2luaXRgIGZ1bmN0aW9uICpzaG91bGQqIGJlIGNhbGxlZCBkdXJpbmcgdGhlIGJvb3QgcHJvY2Vzcy4gQnV0IGhvbGQgb24uLi4gSSBzZWVtIHRvIHJlY2FsbCB0aGF0IGZ1bmN0aW9uIGhhdmluZyBhIGNoZWNrIHdpdGhpbiBpdDogYGlmIChlbmFibGVkKWAuIE5vdywgdGhhdCYjMzk7cyBpbnRlcmVzdGluZy4gSSBiZXQgYGVuYWJsZWRgIGlzIGEgbW9kdWxlIHBhcmFtZXRlciwgbGlrZWx5IGRlZmF1bHRpbmcgdG8gYGZhbHNlYC4gSSBzaG91bGQgcHJvYmFibHkgY29uZmlybSB0aGF0IGRlZmF1bHQgYW5kIG90aGVyIGFzcGVjdHMuIFJpZ2h0LCBiZXR0ZXIgY2hlY2sgdGhlIHNvdXJjZSBjb2RlIGl0c2VsZiwgc3BlY2lmaWNhbGx5IGBzYW1wbGVzL2RhbW9uL210aWVyLmNgIHRvIHNlZSBob3cgYGVuYWJsZWRgIGlzIGFjdHVhbGx5IGRlZmluZWQgYW5kIHVzZWQuIEdvdHRhIGdldCB0aGUgZGV0YWlscyBzdHJhaWdodCBiZWZvcmUgbW92aW5nIGZvcndhcmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDA0OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2VuYWJsZWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtzYW1wbGVzL2RhbW9uL210aWVyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7c2FtcGxlcy9kYW1vbi9tdGllci5jPTM4PXN0YXRpYyBpbnQgZGFtb25fc2FtcGxlX210aWVyX2VuYWJsZV9zdG9yZShcbi0tXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtNDAtXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6NDE6c3RhdGljIGNvbnN0IHN0cnVjdCBrZXJuZWxfcGFyYW1fb3BzIGVuYWJsZWRfcGFyYW1fb3BzID0ge1xuc2FtcGxlcy9kYW1vbi9tdGllci5jLTQyLVx0LnNldCA9IGRhbW9uX3NhbXBsZV9tdGllcl9lbmFibGVfc3RvcmUsXG4tLVxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTQ1LVxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjQ2OnN0YXRpYyBib29sIGVuYWJsZWQgX19yZWFkX21vc3RseTtcbnNhbXBsZXMvZGFtb24vbXRpZXIuYzo0Nzptb2R1bGVfcGFyYW1fY2IoZW5hYmxlZCwgXHUwMDI2ZW5hYmxlZF9wYXJhbV9vcHMsIFx1MDAyNmVuYWJsZWQsIDA2MDApO1xuc2FtcGxlcy9kYW1vbi9tdGllci5jOjQ4Ok1PRFVMRV9QQVJNX0RFU0MoZW5hYmxlZCwgXCYjMzQ7RW5hYmxlIG9yIGRpc2FibGUgREFNT05fU0FNUExFX01USUVSXCYjMzQ7KTtcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy00OS1cbi0tXG5zYW1wbGVzL2RhbW9uL210aWVyLmM9MjAxPXN0YXRpYyBpbnQgZGFtb25fc2FtcGxlX210aWVyX2VuYWJsZV9zdG9yZShcbi0tXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMjAzLXtcbnNhbXBsZXMvZGFtb24vbXRpZXIuYzoyMDQ6XHRib29sIGlzX2VuYWJsZWQgPSBlbmFibGVkO1xuc2FtcGxlcy9kYW1vbi9tdGllci5jLTIwNS1cdGludCBlcnI7XG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMjA2LVxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjIwNzpcdGVyciA9IGtzdHJ0b2Jvb2wodmFsLCBcdTAwMjZlbmFibGVkKTtcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yMDgtXHRpZiAoZXJyKVxuLS1cbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yMTAtXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6MjExOlx0aWYgKGVuYWJsZWQgPT0gaXNfZW5hYmxlZClcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yMTItXHRcdHJldHVybiAwO1xuLS1cbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yMTYtXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6MjE3Olx0aWYgKGVuYWJsZWQpIHtcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yMTgtXHRcdGVyciA9IGRhbW9uX3NhbXBsZV9tdGllcl9zdGFydCgpO1xuc2FtcGxlcy9kYW1vbi9tdGllci5jLTIxOS1cdFx0aWYgKGVycilcbnNhbXBsZXMvZGFtb24vbXRpZXIuYzoyMjA6XHRcdFx0ZW5hYmxlZCA9IGZhbHNlO1xuc2FtcGxlcy9kYW1vbi9tdGllci5jLTIyMS1cdFx0cmV0dXJuIGVycjtcbi0tXG5zYW1wbGVzL2RhbW9uL210aWVyLmM9MjI3PXN0YXRpYyBpbnQgX19pbml0IGRhbW9uX3NhbXBsZV9tdGllcl9pbml0KHZvaWQpXG4tLVxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTIzMS1cdGlmICghZGFtb25faW5pdGlhbGl6ZWQoKSkge1xuc2FtcGxlcy9kYW1vbi9tdGllci5jOjIzMjpcdFx0aWYgKGVuYWJsZWQpXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6MjMzOlx0XHRcdGVuYWJsZWQgPSBmYWxzZTtcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yMzQtXHRcdHJldHVybiAtRU5PTUVNO1xuLS1cbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yMzYtXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6MjM3Olx0aWYgKGVuYWJsZWQpIHtcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yMzgtXHRcdGVyciA9IGRhbW9uX3NhbXBsZV9tdGllcl9zdGFydCgpO1xuc2FtcGxlcy9kYW1vbi9tdGllci5jLTIzOS1cdFx0aWYgKGVycilcbnNhbXBsZXMvZGFtb24vbXRpZXIuYzoyNDA6XHRcdFx0ZW5hYmxlZCA9IGZhbHNlO1xuc2FtcGxlcy9kYW1vbi9tdGllci5jLTI0MS1cdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDQ6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODg4OQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDcwNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIERlY2lzaW9uIGZvciBkYW1vbl9zYW1wbGVfbXRpZXIqKgoKT2theSwgbGV0JiMzOTtzIHRoaW5rIHRoaXMgdGhyb3VnaC4gVGhpcyBwYXRjaCB0b3VjaGVzIGAvc3lzL21vZHVsZS9kYW1vbl9zYW1wbGVfbXRpZXIvcGFyYW1ldGVycy9lbmFibGVkYCwgd2hpY2ggSSBrbm93IGZyb20gZXhwZXJpZW5jZSB0cmlnZ2VycyBgZGFtb25fc2FtcGxlX210aWVyX2VuYWJsZV9zdG9yZWAsIGxlYWRpbmcgdG8gYGRhbW9uX3NhbXBsZV9tdGllcl9zdGFydGAgYW5kIGZpbmFsbHkgYGRhbW9uX3NhbXBsZV9tdGllcl9idWlsZF9jdHhgLiBTaW5jZSBTeXprYWxsZXIgaGl0cyBgL3N5cy9gIGZpbGVzLCBpdCYjMzk7cyBkZWZpbml0ZWx5IHBvc3NpYmxlIHRvIHRyaWdnZXIgdGhpcyBjb2RlLiBUaGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgaXQmIzM5O3MgKndvcnRoKiBmdXp6aW5nLgoKSSYjMzk7bSBjaGVja2luZyBpZiBTeXprYWxsZXIgYWxyZWFkeSBoYXMgYSBkZXNjcmlwdGlvbiBmb3IgYGRhbW9uX3NhbXBsZV9tdGllcmAsIGJ1dCBldmVuIGlmIGl0IGRvZXNuJiMzOTt0LCBpdCBjYW4gZGlzY292ZXIgaXQgaWYgdGhlIG1vZHVsZSYjMzk7cyBlbmFibGVkLiBUaGUgY2hhbmdlIGl0c2VsZiBpcyBzZWVtaW5nbHkgc2ltcGxlIC0gYSBjaGVjayB0byBwcmV2ZW50IGBhZGRyLnN0YXJ0YCBmcm9tIGJlaW5nIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBgYWRkci5lbmRgLCB3aGljaCBmaXhlcyBhbiBpbnZhbGlkIHJhbmdlLgoKSSBuZWVkIHRvIGRlY2lkZSBgV29ydGhGdXp6aW5nPXRydWVgIG9yIGBmYWxzZWAuCgpGaXJzdCwgbGV0JiMzOTtzIHZlcmlmeSB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zLiBgU0FNUExFX0RBTU9OX01USUVSYCBkZXBlbmRzIG9uIGBEQU1PTiAmYW1wOyZhbXA7IERBTU9OX1BBRERSYCwgc28gdGhhdCYjMzk7cyB0aGUga2V5IGNvbmZpZyB0byBlbmFibGUuCgpJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBpbXBvcnRhbnQgc3ltYm9scy4gYGRhbW9uX3NhbXBsZV9tdGllcl9idWlsZF9jdHhgLCBgZGFtb25fc2FtcGxlX210aWVyX3N0YXJ0YCwgYW5kIGBkYW1vbl9zYW1wbGVfbXRpZXJfZW5hYmxlX3N0b3JlYCBhcmUgdGhlIGZ1bmN0aW9ucyBvZiBpbnRlcmVzdC4gV2FpdCwgSSByZW1lbWJlciB0aGF0IGBkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4YCBpcyBzdGF0aWMuIEkgcXVpY2tseSBjb25maXJtIHRoYXQgaXQmIzM5O3MgaW4gYG10aWVyLmNgLCBzbyBpdCYjMzk7cyBhIGdvb2QgZnVuY3Rpb24gdG8gZm9jdXMgb24uCgpMZXQmIzM5O3MgcXVpY2tseSBjb25maXJtIHRoYXQgYFNBTVBMRV9EQU1PTl9NVElFUmAgaXMgaW5kZWVkIHRoZSBjb25maWd1cmF0aW9uIHRoYXQgZW5hYmxlcyBldmVyeXRoaW5nLiBZZXMuCgpOb3csIGxldCYjMzk7cyByZXZpZXcgdGhlIGluc3RydWN0aW9ucy4gVGhleSBzYXkgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9dHJ1ZWAgaWYgdGhlIGNoYW5nZSBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMuIElzIGEgKnNhbXBsZSogbW9kdWxlICYjMzQ7Y29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMmIzM0Oz8gVXN1YWxseSBub3QsIGJ1dCBoZXJlIGl0IGhhcyBhIHN5c2ZzIGludGVyZmFjZS4gVGhhdCBjaGFuZ2VzIHRoaW5ncy4gSXQmIzM5O3MgYSBzYW1wbGUsIGJ1dCBTeXprYWxsZXIgY2FuIHN0aWxsIGludGVyYWN0IHdpdGggaXQuCgpJZiBJIHNheSB0cnVlLCBTeXprYWxsZXIgd2lsbCBmdXp6IGl0LiBJcyB0aGF0IGNvcnJlY3Q/IFRoZSBwYXRjaCAqaXMqIGEgZnVuY3Rpb25hbCBmaXggaW4gYSBzYW1wbGUgbW9kdWxlLCBub3QgYSBoeXBvdGhldGljYWwgY29kZSBwYXRoLiBJJiMzOTtsbCBhZG1pdCBJJiMzOTttIGxlYW5pbmcgdG93YXJkIHRydWUgYmVjYXVzZSBpdCYjMzk7cyBib3RoIGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZSwgYnV0IGlzIHRoYXQgY29ycmVjdD8KClRoaW5raW5nIGFib3V0IHRoZSBpbnN0cnVjdGlvbnMgYWdhaW4sIGl0IHNwZWNpZmllcyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIGNoYW5nZXMgYXJlIGZvciAmIzM0O0NvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSYjMzQ7LiBTYW1wbGUgbW9kdWxlcyBhcmVuJiMzOTt0IGV4cGxpY2l0bHkgZXhjbHVkZWQuCgpPa2F5LCBJJiMzOTttIGdvaW5nIHRvIHJldHVybiBgdHJ1ZWAuIEl0JiMzOTtzIGEgZnVuY3Rpb25hbCBwYXRjaCBpbiBhIHJlYWNoYWJsZSBjb2RlIHBhdGguIFRoZSByaXNrIHNlZW1zIG1pbmltYWwuCgpIZXJlJiMzOTtzIG15IGNvbmNsdXNpb246CgpDb25maWdzOiBgU0FNUExFX0RBTU9OX01USUVSYApGb2N1c1N5bWJvbHM6IGBkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4YAoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwNDoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7c2FtcGxlcy9kYW1vbi9tdGllci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O3NhbXBsZXMvZGFtb24vbXRpZXIuYz02MD1zdGF0aWMgaW50IG5pZF90b19waHlzKGludCB0YXJnZXRfbm9kZSwgc3RydWN0IHJlZ2lvbl9yYW5nZSAqcmFuZ2UpXG4tLVxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTcyLVxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjczOnN0YXRpYyBzdHJ1Y3QgZGFtb25fY3R4ICpkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4KGJvb2wgcHJvbW90ZSlcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy03NC17XG4tLVxuc2FtcGxlcy9kYW1vbi9tdGllci5jPTE3Nz1zdGF0aWMgaW50IGRhbW9uX3NhbXBsZV9tdGllcl9zdGFydCh2b2lkKVxuLS1cbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0xODAtXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6MTgxOlx0Y3R4ID0gZGFtb25fc2FtcGxlX210aWVyX2J1aWxkX2N0eCh0cnVlKTtcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0xODItXHRpZiAoIWN0eClcbi0tXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMTg0LVx0Y3R4c1swXSA9IGN0eDtcbnNhbXBsZXMvZGFtb24vbXRpZXIuYzoxODU6XHRjdHggPSBkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4KGZhbHNlKTtcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0xODYtXHRpZiAoIWN0eCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwNDoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDU4MgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDEyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB1bmRlcnN0YW5kaW5nLCBjb25zaWRlcmluZyBJJiMzOTttIHRoZSBvbmUgdGhpbmtpbmcgdGhyb3VnaCB0aGlzIGNvbmZpZ3VyYXRpb24gbG9naWM6CgoqKkNvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzIGZvciBgZGFtb25fc2FtcGxlX210aWVyX2J1aWxkX2N0eGAqKgoKQWxyaWdodCwgc28gaXQmIzM5O3MgY29uZmlybWVkIHRoYXQgb25seSBgZGFtb25fc2FtcGxlX210aWVyX2J1aWxkX2N0eGAgaXMgZGlyZWN0bHkgbW9kaWZpZWQgaW4gdGhpcyBzY2VuYXJpby4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gdmVyaWZ5IHdoZXRoZXIgYW55IG90aGVyIGNvbmZpZ3VyYXRpb25zIGFyZSBpbmhlcmVudGx5IHJlcXVpcmVkLCBhcyBhIGRvd25zdHJlYW0gZWZmZWN0IG9mIGVuYWJsaW5nIHRoaXMgb25lLgoKTG9va2luZyBjbG9zZXIsIGBTQU1QTEVfREFNT05fTVRJRVJgIGhhcyBgZGVwZW5kcyBvbiBEQU1PTiAmYW1wOyZhbXA7IERBTU9OX1BBRERSYC4gT2theSwgdGhhdCBtYWtlcyBzZW5zZS4gU3l6a2FsbGVyIHdpbGwgdWx0aW1hdGVseSBhdHRlbXB0IHRvIGVuYWJsZSBgU0FNUExFX0RBTU9OX01USUVSYC4gU2luY2UgdGhlc2UgYXJlIGRlcGVuZGVuY2llcywgYW5kIG5vdCBqdXN0IHNlbGVjdHMsIEkgbmVlZCB0byBlbnN1cmUgYERBTU9OYCBhbmQgYERBTU9OX1BBRERSYCBhcmUgYWxzbyBleHBsaWNpdGx5IGluY2x1ZGVkIGluIHRoZSBmaW5hbCBjb25maWd1cmF0aW9uIGxpc3QuIFN5emthbGxlciYjMzk7cyBhdHRlbXB0IHdpbGwgaW1wbGljaXRseSBlbmFibGUgdGhlbSwgc28gaXQgd291bGQgYmUgbmVnbGlnZW50IHRvIGxlYXZlIHRoZW0gb3V0LiBTbywgdGhvc2UgKm11c3QqIGJlIGluY2x1ZGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwNDoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgU0FNUExFX0RBTU9OX01USUVSJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7c2FtcGxlcy9kYW1vbi9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O3NhbXBsZXMvZGFtb24vS2NvbmZpZz0xNz1jb25maWcgU0FNUExFX0RBTU9OX1BSQ0xcbi0tXG5zYW1wbGVzL2RhbW9uL0tjb25maWctMjktXG5zYW1wbGVzL2RhbW9uL0tjb25maWc6MzA6Y29uZmlnIFNBTVBMRV9EQU1PTl9NVElFUlxuc2FtcGxlcy9kYW1vbi9LY29uZmlnLTMxLVx0Ym9vbCBcJiMzNDtEQU1PTiBzYW1wbGUgbW9kdWxlIGZvciBtZW1vcnkgdGllcmluZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwNDoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTA0MAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqUmV2aXNpdGluZyB0aGUgS2NvbmZpZyBpbiBEYW1vbiYjMzk7cyBTYW1wbGVzKioKCkFscmlnaHQsIGxldCYjMzk7cyBjaXJjbGUgYmFjayB0byBgc2FtcGxlcy9kYW1vbi9LY29uZmlnYC4gSSBuZWVkIHRvIHJldmlzaXQgdGhhdCBjb25maWd1cmF0aW9uIGZpbGUuIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyBpdCYjMzk7cyBwcm9iYWJseSBrZXkgZm9yIHRoZSBjb25maWd1cmF0aW9uIG9mIHRoZSBEYW1vbiAoRHluYW1pYyBBY2Nlc3MgTW9uaXRvcikgc2FtcGxpbmcgd2l0aGluIHRoYXQgc3BlY2lmaWMgc2FtcGxlIGNvZGUuIEkgcHJvYmFibHkgd2FudCB0byBsb29rIGZvciBzcGVjaWZpYyBjb25maWcgb3B0aW9ucywgYW55IGRlcGVuZGVuY2llcyBkZWZpbmVkIHRoZXJlLCBhbmQgdGhlIG92ZXJhbGwgc3RydWN0dXJlIG9mIGhvdyBEYW1vbiYjMzk7cyBmZWF0dXJlcyBhcmUgZXhwb3NlZCBhbmQgY29udHJvbGxlZCB3aXRoaW4gdGhhdCBkZW1vbnN0cmF0aW9uIGNvZGUuIFRoaXMgc2hvdWxkIGluZm9ybSBteSBvbmdvaW5nIHdvcmssIGFuZCBwcm9iYWJseSBhbnkgcmVmaW5lbWVudHMgSSYjMzk7bSBwbGFubmluZyB0byBtYWtlIHRvIGhvdyB3ZSBpbnRlZ3JhdGUgb3IgdXNlIERhbW9uIGluIHByb2R1Y3Rpb24gb3Igd2l0aCBtb3JlIGNvbXBsZXggdXNlIGNhc2VzLiBJdCYjMzk7cyBhIGtleSBzb3VyY2UgdG8gY2xhcmlmeSB0aGUgc2FtcGxlIGltcGxlbWVudGF0aW9uIGNob2ljZXMgYW5kIGNvbmZpZ3VyYXRpb24gZGV0YWlscy4gVGhpcyBzY2FuIHdpbGwgbGlrZWx5IGdpdmUgbWUgYmV0dGVyIGluc2lnaHQgb24gdGhlIHB1cnBvc2Ugb2YgdGhvc2Ugc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwNDoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O3NhbXBsZXMvZGFtb24vS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMjA6XHRcdGhlbHBcbiAgMjE6XHRcdCAgVGhpcyBidWlsZHMgREFNT04gc2FtcGxlIG1vZHVsZSBmb3IgYWNjZXNzLWF3YXJlIHByb2FjdGl2ZVxuICAyMjpcdFx0ICByZWNsYW1hdGlvbi5cbiAgMjM6XHRcbiAgMjQ6XHRcdCAgVGhlIG1vZHVsZSByZWNlaXZlcyBhIHBpZCwgbW9uaXRvciBhY2Nlc3MgdG8gdGhlIHZpcnR1YWwgYWRkcmVzc1xuICAyNTpcdFx0ICBzcGFjZSBvZiB0aGUgcHJvY2VzcywgZmluZCBtZW1vcnkgcmVnaW9ucyB0aGF0IG5vdCBhY2Nlc3NlZCwgYW5kXG4gIDI2Olx0XHQgIHByb2FjdGl2ZWx5IHJlY2xhaW0gdGhlIHJlZ2lvbnMuXG4gIDI3Olx0XG4gIDI4Olx0XHQgIElmIHVuc3VyZSwgc2F5IE4uXG4gIDI5Olx0XG4gIDMwOlx0Y29uZmlnIFNBTVBMRV9EQU1PTl9NVElFUlxuICAzMTpcdFx0Ym9vbCBcJiMzNDtEQU1PTiBzYW1wbGUgbW9kdWxlIGZvciBtZW1vcnkgdGllcmluZ1wmIzM0O1xuICAzMjpcdFx0ZGVwZW5kcyBvbiBEQU1PTiBcdTAwMjZcdTAwMjYgREFNT05fUEFERFJcbiAgMzM6XHRcdGhlbHBcbiAgMzQ6XHRcdCAgVGhwcyBidWlsZHMgREFNT04gc2FtcGxlIG1vZHVsZSBmb3IgbWVtb3J5IHRpZXJpZ24uXG4gIDM1Olx0XG4gIDM2Olx0XHQgIFRoZSBtb2R1bGUgYXNzdW1lcyB0aGUgc3lzdGVtIGlzIGNvbnN0cnVjdGVkIHdpdGggdHdvIE5VTUEgbm9kZXMsXG4gIDM3Olx0XHQgIHdoaWNoIHNlZW1zIGFzIGxvY2FsIGFuZCByZW1vdGUgbm9kZXMgdG8gYWxsIENQVXMuICBGb3IgZXhhbXBsZSxcbiAgMzg6XHRcdCAgbm9kZTAgaXMgZm9yIEREUjUgRFJBTXMgY29ubmVjdGVkIHZpYSBESU1NLCB3aGlsZSBub2RlMSBpcyBmb3IgRERSNFxuICAzOTpcdFx0ICBEUkFNcyBjb25uZWN0ZWQgdmlhIENYTC5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDQ6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE1NjgKCQkJCQkJCW91dHB1dDogMTEzCgkJCQkJCQl0aG91Z2h0czogMTE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHVuZGVyc3RhbmRpbmcsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UgbGlrZSB5b3Vyc2VsZjoKCioqQ29uZmlnIERlcGVuZGVuY2llcyBhbmQgRnVuY3Rpb25hbCBDaGVjayBpbiBEQU1PTiBNZW1vcnkgVGllcmluZyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGcm9tIGEgZGVwZW5kZW5jeSBwZXJzcGVjdGl2ZSwgaXQmIzM5O3MgY2xlYXIgdGhhdCB0aGUgbW9kdWxlIGBTQU1QTEVfREFNT05fTVRJRVJgIGZ1bmRhbWVudGFsbHkgcmVsaWVzIG9uIGJvdGggYERBTU9OYCBhbmQgYERBTU9OX1BBRERSYC4gVGhlcmVmb3JlLCB0byBlbnN1cmUgZXZlcnl0aGluZyBmdW5jdGlvbnMgYXMgaW50ZW5kZWQgYW5kIHRvIHByb3Blcmx5IHRyYWNlIHRoZSBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cywgSSYjMzk7bGwgbmVlZCB0byBhZGQgYWxsIHRocmVlIOKAkyBgU0FNUExFX0RBTU9OX01USUVSYCwgYERBTU9OYCwgYW5kIGBEQU1PTl9QQUREUmAg4oCTIHRvIHRoZSBgRW5hYmxlQ29uZmlnc2AgbGlzdC4gTm8gc3VycHJpc2UgdGhlcmUuCgpNeSByYXRpb25hbGUgaXMgdGhpczogdGhlIHByaW1hcnkgZnVuY3Rpb24gb2YgdGhpcyBwYXRjaCBpcyB0byBwcm92aWRlIGEgc2FmZWd1YXJkOyB0byBhZGQgYSBmdW5jdGlvbmFsIGNoZWNrIHRoYXQgc3BlY2lmaWNhbGx5IGd1YXJkcyBhZ2FpbnN0IGFuIGludmFsaWQgbWVtb3J5IHJhbmdlIHdpdGhpbiB0aGUgREFNT04gbWVtb3J5IHRpZXJpbmcgc2FtcGxlIG1vZHVsZS4gSW4gZXNzZW5jZSwgaXQmIzM5O3MgYSBudWxsIGNoZWNrIG9yIGFuIGVkZ2UtY2FzZSB0ZXN0IGZvciB3aGVyZSBgYWRkci5zdGFydGAgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIGBhZGRyLmVuZGAuIFRoaXMgY2hlY2sgaXMgb25seSB0cmlnZ2VyZWQgaWYgYW5kIHdoZW4gdGhlIG1vZHVsZSBpcyBlbmFibGVkIGFuZCBzb21lb25lIHdyaXRlcyB0byB0aGUgYXNzb2NpYXRlZCBzeXNmcyBwYXJhbWV0ZXIuCgpOb3csIGxldCYjMzk7cyBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDA0OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtTQU1QTEVfREFNT05fTVRJRVImIzM0OywKICAgICYjMzQ7REFNT04mIzM0OywKICAgICYjMzQ7REFNT05fUEFERFImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBmdW5jdGlvbmFsIGNoZWNrIHRvIHByZXZlbnQgYW4gaW52YWxpZCBtZW1vcnkgcmFuZ2UgKGFkZHIuc3RhcnQgXHUwMDNlPSBhZGRyLmVuZCkgaW4gdGhlIERBTU9OIG1lbW9yeSB0aWVyaW5nIHNhbXBsZSBtb2R1bGUuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgYnkgZW5hYmxpbmcgdGhlIG1vZHVsZSBhbmQgd3JpdGluZyB0byBpdHMgc3lzZnMgcGFyYW1ldGVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtTQU1QTEVfREFNT05fTVRJRVImIzM0OywKICAgICYjMzQ7REFNT04mIzM0OywKICAgICYjMzQ7REFNT05fUEFERFImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBmdW5jdGlvbmFsIGNoZWNrIHRvIHByZXZlbnQgYW4gaW52YWxpZCBtZW1vcnkgcmFuZ2UgKGFkZHIuc3RhcnQgXHUwMDNlPSBhZGRyLmVuZCkgaW4gdGhlIERBTU9OIG1lbW9yeSB0aWVyaW5nIHNhbXBsZSBtb2R1bGUuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgYnkgZW5hYmxpbmcgdGhlIG1vZHVsZSBhbmQgd3JpdGluZyB0byBpdHMgc3lzZnMgcGFyYW1ldGVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDJUMDQ6MTg6MDMuMzIwNzkzNTI3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ0MDkyMjM1MTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU0FNUExFX0RBTU9OX01USUVSXCIsXG4gICAgXCJEQU1PTlwiLFxuICAgIFwiREFNT05fUEFERFJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGZ1bmN0aW9uYWwgY2hlY2sgdG8gcHJldmVudCBhbiBpbnZhbGlkIG1lbW9yeSByYW5nZSAoYWRkci5zdGFydCBcXHUwMDNlPSBhZGRyLmVuZCkgaW4gdGhlIERBTU9OIG1lbW9yeSB0aWVyaW5nIHNhbXBsZSBtb2R1bGUuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgYnkgZW5hYmxpbmcgdGhlIG1vZHVsZSBhbmQgd3JpdGluZyB0byBpdHMgc3lzZnMgcGFyYW1ldGVyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwNDoxODowMy4zMjA4MDExNTdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwODgzNTMzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDg4ODRjZjk0OTA5MjQ3ZDEzYjg3MjIxZjQzMWZlYzUwYTYwNWUwNzlcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBKdWwgMiAwNDoxODowMSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9zYW1wbGVzL2RhbW9uL210aWVyLmMgYi9zYW1wbGVzL2RhbW9uL210aWVyLmNcXG5pbmRleCBlYjExNDNkZThkZjE3ZS4uMzc4NWIwYzdmZmIxNzUgMTAwNjQ0XFxuLS0tIGEvc2FtcGxlcy9kYW1vbi9tdGllci5jXFxuKysrIGIvc2FtcGxlcy9kYW1vbi9tdGllci5jXFxuQEAgLTEyMCw2ICsxMjAsOSBAQCBzdGF0aWMgc3RydWN0IGRhbW9uX2N0eCAqZGFtb25fc2FtcGxlX210aWVyX2J1aWxkX2N0eChib29sIHByb21vdGUpXFxuIFxcdFxcdGFkZHIuZW5kID0gcHJvbW90ZSA/IG5vZGUxX2VuZF9hZGRyIDogbm9kZTBfZW5kX2FkZHI7XFxuIFxcdH1cXG4gXFxuK1xcdGlmIChhZGRyLnN0YXJ0IFxcdTAwM2U9IGFkZHIuZW5kKVxcbitcXHRcXHRnb3RvIGZyZWVfb3V0O1xcbitcXG4gXFx0cmFuZ2Uuc3RhcnQgPSBhZGRyLnN0YXJ0O1xcbiBcXHRyYW5nZS5lbmQgPSBhZGRyLmVuZDtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDA0OjE4OjAzLjkzMDI1MDU5MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTM3OTk3NTAyNDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU0FNUExFX0RBTU9OX01USUVSXCIsXG4gICAgXCJEQU1PTlwiLFxuICAgIFwiREFNT05fUEFERFJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGZ1bmN0aW9uYWwgY2hlY2sgdG8gcHJldmVudCBhbiBpbnZhbGlkIG1lbW9yeSByYW5nZSAoYWRkci5zdGFydCBcXHUwMDNlPSBhZGRyLmVuZCkgaW4gdGhlIERBTU9OIG1lbW9yeSB0aWVyaW5nIHNhbXBsZSBtb2R1bGUuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgYnkgZW5hYmxpbmcgdGhlIG1vZHVsZSBhbmQgd3JpdGluZyB0byBpdHMgc3lzZnMgcGFyYW1ldGVyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDg4ODRjZjk0OTA5MjQ3ZDEzYjg3MjIxZjQzMWZlYzUwYTYwNWUwNzlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAyIDA0OjE4OjAxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvc2FtcGxlcy9kYW1vbi9tdGllci5jIGIvc2FtcGxlcy9kYW1vbi9tdGllci5jXG5pbmRleCBlYjExNDNkZThkZjE3ZS4uMzc4NWIwYzdmZmIxNzUgMTAwNjQ0XG4tLS0gYS9zYW1wbGVzL2RhbW9uL210aWVyLmNcbisrKyBiL3NhbXBsZXMvZGFtb24vbXRpZXIuY1xuQEAgLTEyMCw2ICsxMjAsOSBAQCBzdGF0aWMgc3RydWN0IGRhbW9uX2N0eCAqZGFtb25fc2FtcGxlX210aWVyX2J1aWxkX2N0eChib29sIHByb21vdGUpXG4gXHRcdGFkZHIuZW5kID0gcHJvbW90ZSA/IG5vZGUxX2VuZF9hZGRyIDogbm9kZTBfZW5kX2FkZHI7XG4gXHR9XG4gXG4rXHRpZiAoYWRkci5zdGFydCBcdTAwM2U9IGFkZHIuZW5kKVxuK1x0XHRnb3RvIGZyZWVfb3V0O1xuK1xuIFx0cmFuZ2Uuc3RhcnQgPSBhZGRyLnN0YXJ0O1xuIFx0cmFuZ2UuZW5kID0gYWRkci5lbmQ7XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwNDoxODowMy45MzAyNTIxMzJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzEwOTA3MzUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIERBTU9OIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYHNhbXBsZXMvZGFtb24vbXRpZXIuY2AuIEl0IHNlZW1zIHRoZXkndmUgYWRkZWQgYSBjaGVjazogYGlmIChhZGRyLnN0YXJ0IFx1MDAzZT0gYWRkci5lbmQpIGdvdG8gZnJlZV9vdXQ7YCB3aXRoaW4gdGhlIGBkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4YCBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB3aGF0J3MgdGhlIGNvbnRleHQgaGVyZT8gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBgbXRpZXIuY2AgaXMgYmVpbmcgY29tcGlsZWQuIElzIGl0IGEgbW9kdWxlLCBvciBpcyBpdCBidWlsdC1pbj8gQW5kLCBtb3JlIGNyaXRpY2FsbHksIGlzIGl0IGV2ZW4gKnJlYWNoYWJsZSo/IEkgbWVhbiwgaXQncyBhICpzYW1wbGUqLCByaWdodD8gVHlwaWNhbGx5LCBzYW1wbGVzIGRvbid0IGdldCBmdXp6ZWQgdW5sZXNzIHRoZXkgZXhwb3NlIHNvbWUgaW50ZXJmYWNlLlxuXG5CdXQgd2FpdCwgaG9sZCBvbi4uLiBpdCAqaXMqIGEgc2FtcGxlIG1vZHVsZS4gT2theSwgdGhhdCBjaGFuZ2VzIHRoaW5ncyBzbGlnaHRseS4gSSdkIGJldHRlciBkaWcgaW50byB0aGUgYnVpbGQgc3lzdGVtIHRvIGdldCBhIGNsZWFyZXIgcGljdHVyZS4gVGltZSB0byBjaGVjayBgc2FtcGxlcy9kYW1vbi9NYWtlZmlsZWAgYW5kIGBzYW1wbGVzL2RhbW9uL0tjb25maWdgIHRvIHNlZSBob3cgaXQncyBiZWluZyBjb25maWd1cmVkIGFuZCBidWlsdC4gVGhpcyBjaGVjaywgdGhpcyBjb25kaXRpb24sIGlzIGludGVyZXN0aW5nLiBJdCBpbXBsaWVzIHNvbWV0aGluZyBjb3VsZCBsZWFkIHRvIGBhZGRyLnN0YXJ0YCBiZWluZyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gYGFkZHIuZW5kYCwgd2hpY2ggaXNuJ3QgcmlnaHQuIEknbSBnb2luZyB0byBmb2xsb3cgdGhlIGxvZ2ljLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODI0LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDQ6MTg6MDguMjQxMTYxNzgyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM5Njc0ODUxNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInNhbXBsZXMvZGFtb24vbXRpZXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJzYW1wbGVzL2RhbW9uL210aWVyLmM9NjA9c3RhdGljIGludCBuaWRfdG9fcGh5cyhpbnQgdGFyZ2V0X25vZGUsIHN0cnVjdCByZWdpb25fcmFuZ2UgKnJhbmdlKVxcbi0tXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTcyLVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYzo3MzpzdGF0aWMgc3RydWN0IGRhbW9uX2N0eCAqZGFtb25fc2FtcGxlX210aWVyX2J1aWxkX2N0eChib29sIHByb21vdGUpXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTc0LXtcXG4tLVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYz0xNzc9c3RhdGljIGludCBkYW1vbl9zYW1wbGVfbXRpZXJfc3RhcnQodm9pZClcXG4tLVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0xODAtXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjE4MTpcXHRjdHggPSBkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4KHRydWUpO1xcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0xODItXFx0aWYgKCFjdHgpXFxuLS1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMTg0LVxcdGN0eHNbMF0gPSBjdHg7XFxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjE4NTpcXHRjdHggPSBkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4KGZhbHNlKTtcXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMTg2LVxcdGlmICghY3R4KSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDA0OjE4OjA4LjYzNzkxNjU0NloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMTQxODkyMTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEaXZpbmcgaW50byB0aGUgYG10aWVyLmNgIE1vZHVsZSBJbml0aWFsaXphdGlvbioqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgdGFraW5nIGEgY2xvc2UgbG9vayBhdCB0aGUgbW9kdWxlIGluaXRpYWxpemF0aW9uIHdpdGhpbiBgc2FtcGxlcy9kYW1vbi9tdGllci5jYC4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgcmVhbGx5IGJlZ2lucyDigJMgaXTigJlzIHRoZSBiZWRyb2NrIG9mIGhvdyB0aGUgYG10aWVyYCBjb21wb25lbnQgaW50ZXJhY3RzIHdpdGggdGhlIGtlcm5lbCBhbmQgc2V0cyBpdHNlbGYgdXAgZm9yIG9wZXJhdGlvbi4gSSB3YW50IHRvIHNlZSBob3cgaXQncyBpbnRlZ3JhdGVkLCBhbnkgcmVzb3VyY2UgYWxsb2NhdGlvbnMsIGFuZCBpbml0aWFsIGRhdGEgc3RydWN0dXJlcyBiZWluZyBkZWZpbmVkIGFuZCBidWlsdCB1cC4gVW5kZXJzdGFuZGluZyB0aGlzIGluaXQgc2VxdWVuY2UgaXMgKmNydWNpYWwqIGZvciBkZWJ1Z2dpbmcsIG1vZGlmaWNhdGlvbiwgb3IgZXZlbiBzaW1wbHkgdHJhY2luZyB0aGUgZXhlY3V0aW9uIGZsb3cgb2YgdGhlIGVudGlyZSBEYW1vbiBzdWJzeXN0ZW0uIExldCdzIHNlZSB3aGF0IGdlbXMgYXJlIGhpZGRlbiBpbiB0aGlzIHN0YXJ0aW5nIHBvaW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTY2LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDQ6MTg6MTEuNzUyMTA4NjIzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk0NDU1MzI2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZHVsZV9pbml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInNhbXBsZXMvZGFtb24vbXRpZXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJzYW1wbGVzL2RhbW9uL210aWVyLmM9MjI3PXN0YXRpYyBpbnQgX19pbml0IGRhbW9uX3NhbXBsZV9tdGllcl9pbml0KHZvaWQpXFxuLS1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMjQ0LVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYzoyNDU6bW9kdWxlX2luaXQoZGFtb25fc2FtcGxlX210aWVyX2luaXQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwNDoxODoxMS44NDY1NjkzWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU4NjMyMTkyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgZGVsaXZlcmVkIGFzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnk6XG5cbioqTW9kdWxlIExvY2F0aW9uIGFuZCBFbmFibGVtZW50IEludmVzdGlnYXRpb24qKlxuXG5BbHJpZ2h0LCB0aGlzIGlzIGEgc2FtcGxlIG1vZHVsZSDigJMgbm90aGluZyBwYXJ0aWN1bGFybHkgZ3JvdW5kLWJyZWFraW5nIHlldC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCB0aGUgc3RhbmRhcmQgcHJvY2VkdXJlIGZvciBlbmFibGluZyBzb21ldGhpbmcgbGlrZSB0aGlzIHdpdGhpbiB0aGUgYnVpbGQgc3lzdGVtLiBTaW5jZSBpdCdzIGEgc2FtcGxlLCB0aGUgdHlwaWNhbCBsb2NhdGlvbiBmb3IgdGhlIGVuYWJsaW5nIGNvbmZpZ3VyYXRpb24gd291bGQgYmUgd2l0aGluIHRoZSBgc2FtcGxlcy9gIGRpcmVjdG9yeSwgc3BlY2lmaWNhbGx5IGluIGEgYEtjb25maWdgIGZpbGUuIEknbGwgbmVlZCB0byBjaGVjayBlaXRoZXIgYHNhbXBsZXMvZGFtb24vS2NvbmZpZ2AgKGFzc3VtaW5nIHRoZXJlJ3MgYSBkZWRpY2F0ZWQgZGlyZWN0b3J5IGZvciB0aGlzIERhbW9uIHNhbXBsZSkgb3IgdGhlIG1vcmUgZ2VuZXJhbCBgc2FtcGxlcy9LY29uZmlnYCBmaWxlLiBUaGF0J3Mgd2hlcmUgSSBleHBlY3QgdG8gZmluZCB0aGUgcmVsZXZhbnQgYENPTkZJR19gIG9wdGlvbiBvciBkZXBlbmRlbmN5IGNoYWluIHRoYXQgY29udHJvbHMgdGhlIGluY2x1c2lvbiBvZiB0aGlzIHBhcnRpY3VsYXIgbW9kdWxlIGluIHRoZSBidWlsZC4gSSdtIGxvb2tpbmcgZm9yIHRoZSBsb2dpY2FsIGNvbm5lY3Rpb247IHVuZGVyc3RhbmRpbmcgaG93IHRoaXMgaXMgYWN0aXZhdGVkIGlzIGtleS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg2NywiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDA0OjE4OjE1LjQzMjg5NDMzOFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjMwNjQ2ODUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXRpZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwic2FtcGxlcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwic2FtcGxlcy9kYW1vbi9NYWtlZmlsZT00PW9iai0kKENPTkZJR19TQU1QTEVfREFNT05fUFJDTCkgKz0gcHJjbC5vXFxuc2FtcGxlcy9kYW1vbi9NYWtlZmlsZTo1Om9iai0kKENPTkZJR19TQU1QTEVfREFNT05fTVRJRVIpICs9IG10aWVyLm9cXG4tLVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy03LVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYzo4OiNkZWZpbmUgcHJfZm10KGZtdCkgXFxcImRhbW9uX3NhbXBsZV9tdGllcjogXFxcIiBmbXRcXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtOS1cXG4tLVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0xNy0jZW5kaWZcXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6MTg6I2RlZmluZSBNT0RVTEVfUEFSQU1fUFJFRklYIFxcXCJkYW1vbl9zYW1wbGVfbXRpZXIuXFxcIlxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0xOS1cXG4tLVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYz0zNj1tb2R1bGVfcGFyYW0obm9kZTBfbWVtX2ZyZWVfYnAsIHVsb25nLCAwNjAwKTtcXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMzctXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjM4OnN0YXRpYyBpbnQgZGFtb25fc2FtcGxlX210aWVyX2VuYWJsZV9zdG9yZShcXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMzktXFx0XFx0Y29uc3QgY2hhciAqdmFsLCBjb25zdCBzdHJ1Y3Qga2VybmVsX3BhcmFtICprcCk7XFxuLS1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmM9NDE9c3RhdGljIGNvbnN0IHN0cnVjdCBrZXJuZWxfcGFyYW1fb3BzIGVuYWJsZWRfcGFyYW1fb3BzID0ge1xcbnNhbXBsZXMvZGFtb24vbXRpZXIuYzo0MjpcXHQuc2V0ID0gZGFtb25fc2FtcGxlX210aWVyX2VuYWJsZV9zdG9yZSxcXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtNDMtXFx0LmdldCA9IHBhcmFtX2dldF9ib29sLFxcbi0tXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jPTYwPXN0YXRpYyBpbnQgbmlkX3RvX3BoeXMoaW50IHRhcmdldF9ub2RlLCBzdHJ1Y3QgcmVnaW9uX3JhbmdlICpyYW5nZSlcXG4tLVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy03Mi1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6NzM6c3RhdGljIHN0cnVjdCBkYW1vbl9jdHggKmRhbW9uX3NhbXBsZV9tdGllcl9idWlsZF9jdHgoYm9vbCBwcm9tb3RlKVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy03NC17XFxuLS1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMTc2LVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYzoxNzc6c3RhdGljIGludCBkYW1vbl9zYW1wbGVfbXRpZXJfc3RhcnQodm9pZClcXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMTc4LXtcXG4tLVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0xODAtXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjE4MTpcXHRjdHggPSBkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4KHRydWUpO1xcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0xODItXFx0aWYgKCFjdHgpXFxuLS1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMTg0LVxcdGN0eHNbMF0gPSBjdHg7XFxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjE4NTpcXHRjdHggPSBkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4KGZhbHNlKTtcXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMTg2LVxcdGlmICghY3R4KSB7XFxuLS1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMTkzLVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYzoxOTQ6c3RhdGljIHZvaWQgZGFtb25fc2FtcGxlX210aWVyX3N0b3Aodm9pZClcXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMTk1LXtcXG4tLVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yMDAtXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjIwMTpzdGF0aWMgaW50IGRhbW9uX3NhbXBsZV9tdGllcl9lbmFibGVfc3RvcmUoXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTIwMi1cXHRcXHRjb25zdCBjaGFyICp2YWwsIGNvbnN0IHN0cnVjdCBrZXJuZWxfcGFyYW0gKmtwKVxcbi0tXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTIxNy1cXHRpZiAoZW5hYmxlZCkge1xcbnNhbXBsZXMvZGFtb24vbXRpZXIuYzoyMTg6XFx0XFx0ZXJyID0gZGFtb25fc2FtcGxlX210aWVyX3N0YXJ0KCk7XFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTIxOS1cXHRcXHRpZiAoZXJyKVxcbi0tXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTIyMi1cXHR9XFxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjIyMzpcXHRkYW1vbl9zYW1wbGVfbXRpZXJfc3RvcCgpO1xcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yMjQtXFx0cmV0dXJuIDA7XFxuLS1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMjI2LVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYzoyMjc6c3RhdGljIGludCBfX2luaXQgZGFtb25fc2FtcGxlX210aWVyX2luaXQodm9pZClcXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMjI4LXtcXG4tLVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yMzctXFx0aWYgKGVuYWJsZWQpIHtcXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6MjM4OlxcdFxcdGVyciA9IGRhbW9uX3NhbXBsZV9tdGllcl9zdGFydCgpO1xcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yMzktXFx0XFx0aWYgKGVycilcXG4tLVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yNDQtXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjI0NTptb2R1bGVfaW5pdChkYW1vbl9zYW1wbGVfbXRpZXJfaW5pdCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDA0OjE4OjE1LjU1NTk2NTcxM1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjczNTAzMTIzNDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgYGRhbW9uX3NhbXBsZV9tdGllcmAgTW9kdWxlOiBBIFF1aWNrIEFzc2Vzc21lbnQqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIG1vZHVsZSwgYGRhbW9uX3NhbXBsZV9tdGllcmAsIGFuZCB0aGUga2V5IGhlcmUgaXMgdGhlIGBlbmFibGVkYCBtb2R1bGUgcGFyYW1ldGVyLiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uOiBpcyBpdCB3b3J0aCBmdXp6aW5nPyBJdCdzIGEgc2FtcGxlIG1vZHVsZSwgYW5kIGdlbmVyYWxseSwgd2UgZG9uJ3QgYm90aGVyIGZ1enppbmcgdGhvc2UgdW5sZXNzIHRoZXkncmUgdGllZCBpbnRvIHNvbWUgY3J1Y2lhbCBjb3JlIGZlYXR1cmUgdGVzdHMuIEJ1dCwgaGFuZyBvbi4uLiBkb2Vzbid0IHN5emthbGxlciBhY3R1YWxseSAqZG9lcyogZnV6eiBgc2FtcGxlcy9gIGNvZGUgaWYgaXQgZXhwb3NlcyB0aGF0IGAvc3lzL21vZHVsZS9kYW1vbl9zYW1wbGVfbXRpZXIvcGFyYW1ldGVycy9lbmFibGVkYCBpbnRlcmZhY2U/IFRoYXQncyB3aGF0IEkgbmVlZCB0byB2ZXJpZnkuXG5cbk5vdywgbGV0J3MgZ28gdGhyb3VnaCB0aGUgYFdvcnRoRnV6emluZ2AgY3JpdGVyaWEuIEkgaGF2ZSB0byBzZWUgaWYgdGhlIHBhdGNoIGNvbnRhaW5zIHB1cmVseSBub24tZnVuY3Rpb25hbCBjaGFuZ2VzIG9yIGlzIGltcG9zc2libGUgdG8gcmVhY2guIENhbiB0aGlzIG1vZHVsZSBiZSByZWFjaGVkPyBZZXMsIGl0IGNhbiBiZSByZWFjaGVkIGJ5IGxvYWRpbmcgaXQgb3Igd3JpdGluZyB0byB0aGF0IHBhcmFtZXRlci4gU28sIHRoZSBcImltcG9zc2libGUgdG8gcmVhY2hcIiBjcml0ZXJpYSBpcyBhIG5vLlxuXG5UaGUgdHJpY2t5IHBhcnQgaXMsIHdoaWxlIGl0J3MgYSBzYW1wbGUsIGl0J3MgZnVuY3Rpb25hbC4gSSBuZWVkIHRvIGRldGVybWluZSBpZiBpdCdzIGNvbnNpZGVyZWQgXCJyZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMuXCIgTGV0J3MgbG9vayBhdCBgc2FtcGxlcy9kYW1vbi9tdGllci5jYC4uLiBhaCwgaXQncyBhIERBTU9OIHNhbXBsZSwgYW5kIHNpbmNlIGl0IGlzIGNvbXBpbGVkLCBpdCBpcywgaW4gZmFjdCwgZnVuY3Rpb25hbC4gVGhlIGNvZGUgaXMgYXZhaWxhYmxlLCBzbyBpdCdzICp0ZWNobmljYWxseSogcmVhY2hhYmxlLiBUaGUgY3JpdGVyaWEgc2F5IFwiSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaCB0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cIlxuXG5JdCdzIGEgc2FtcGxlLCBidXQgaXQncyBwYXJ0IG9mIERBTU9OLiBBcmUgc2FtcGxlIG1vZHVsZXMgY29uc2lkZXJlZCBcImNvcmUga2VybmVsIGxvZ2ljXCI/IFVzdWFsbHksIHRoZXkncmUganVzdCBleGFtcGxlcywgYnV0IHRoZXkgYXJlIGNvbXBpbGVkIGFuZCAqY2FuKiBiZSBsb2FkZWQuLi5zbyBJIGhhdmUgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgY2FuIHJlYXNvbmFibHkgYmUgY29uc2lkZXJlZCBjb3JlIGZ1bmN0aW9uYWxpdHkuXG5cbkkgbmVlZCB0byBxdWlja2x5IGNoZWNrIHRoZSBgc2FtcGxlcy9LY29uZmlnYCB0byBzZWUgaWYgYFNBTVBMRV9EQU1PTl9NVElFUmAgaXMgZXZlbiBhbiBvcHRpb24uIElmIGl0IGlzIGF2YWlsYWJsZSwgaXQgd291bGQgc2VlbSByZWFzb25hYmxlIHRvIHNheSB0aGF0IHRoaXMgc2FtcGxlIG1vZHVsZSBpcyBpbnRlbmRlZCB0byBiZSBsb2FkZWQgYW5kIHJ1bi4gSSBjYW4gcmVhc29uYWJseSBjb25zaWRlciB0aGlzIGEgXCJtYXliZVwiIHRvIGJlIHdvcnRoIGZ1enppbmcsIGJhc2VkIG9uIHRoaXMgY3JpdGVyaWEgYW5kIHdoYXQgSSBrbm93IG9mIGhvdyBzeXprYWxsZXIgaGFuZGxlcyBzYW1wbGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjYyLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDA0OjE4OjIyLjkwNjI4MTE5MloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMwNDgwMjE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlNBTVBMRV9EQU1PTl9NVElFUlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJzYW1wbGVzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJzYW1wbGVzL01ha2VmaWxlPTQ0PW9iai0kKENPTkZJR19TQU1QTEVfREFNT05fUFJDTClcXHRcXHQrPSBkYW1vbi9cXG5zYW1wbGVzL01ha2VmaWxlOjQ1Om9iai0kKENPTkZJR19TQU1QTEVfREFNT05fTVRJRVIpXFx0Kz0gZGFtb24vXFxuc2FtcGxlcy9NYWtlZmlsZS00Ni1vYmotJChDT05GSUdfU0FNUExFX0hVTkdfVEFTSylcXHRcXHQrPSBodW5nX3Rhc2svXFxuLS1cXG5zYW1wbGVzL2RhbW9uL0tjb25maWc9MTc9Y29uZmlnIFNBTVBMRV9EQU1PTl9QUkNMXFxuLS1cXG5zYW1wbGVzL2RhbW9uL0tjb25maWctMjktXFxuc2FtcGxlcy9kYW1vbi9LY29uZmlnOjMwOmNvbmZpZyBTQU1QTEVfREFNT05fTVRJRVJcXG5zYW1wbGVzL2RhbW9uL0tjb25maWctMzEtXFx0Ym9vbCBcXFwiREFNT04gc2FtcGxlIG1vZHVsZSBmb3IgbWVtb3J5IHRpZXJpbmdcXFwiXFxuLS1cXG5zYW1wbGVzL2RhbW9uL01ha2VmaWxlPTQ9b2JqLSQoQ09ORklHX1NBTVBMRV9EQU1PTl9QUkNMKSArPSBwcmNsLm9cXG5zYW1wbGVzL2RhbW9uL01ha2VmaWxlOjU6b2JqLSQoQ09ORklHX1NBTVBMRV9EQU1PTl9NVElFUikgKz0gbXRpZXIub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwNDoxODoyMy4wMzY3Njg3MDdaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMzODI1NzY2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFNBTVBMRV9EQU1PTl9NVElFUiBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgU0FNUExFX0RBTU9OX01USUVSYCBib29sZWFuIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBJZiBpdCdzIGVuYWJsZWQsIHRoZSBjb2RlIGFzc29jaWF0ZWQgd2l0aCBpdCBpcyBjb21waWxlZC4gTm93LCBJIHNlZSB0aGlzIHBhdGNoIGFkZGluZyBhIGNoZWNrOiBgaWYgKGFkZHIuc3RhcnQgXHUwMDNlPSBhZGRyLmVuZCkgZ290byBmcmVlX291dDtgIHdpdGhpbiB0aGUgYGRhbW9uX3NhbXBsZV9tdGllcl9idWlsZF9jdHhgIGZ1bmN0aW9uLiBTZWVtcyBsaWtlIGEgYmFzaWMgc2FuaXR5IGNoZWNrLCBidXQgdGhlIGRldmlsJ3MgaW4gdGhlIGRldGFpbHMsIHJpZ2h0P1xuXG5UaGUgbmV4dCB0aGluZyBJIG5lZWQgdG8gZG8gaXMgdG8gZGV0ZXJtaW5lIHRoZSByZWFjaGFiaWxpdHkgb2YgdGhpcyBjb2RlLiBJdCdzIGZ1bmN0aW9uYWwsIGJ1dCBpcyBpdCBhY3R1YWxseSAqdXNlZCo/IExldCdzIHRyYWNlIGl0IGJhY2suIE9rYXksIHNvIGBkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4YCBpcyBjYWxsZWQgZnJvbSBgZGFtb25fc2FtcGxlX210aWVyX3N0YXJ0YCwgd2hpY2ggaXMgY2FsbGVkIGZyb20gYGRhbW9uX3NhbXBsZV9tdGllcl9lbmFibGVfc3RvcmVgIGFuZCBgZGFtb25fc2FtcGxlX210aWVyX2luaXRgLiBHb3QgaXQsIGl0J3MgZGVmaW5pdGVseSByZWFjaGFibGUuXG5cbk5vdywgSSdtIGdvaW5nIHRvIHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGUgYWN0dWFsIGltcGxlbWVudGF0aW9uIG9mIGBkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4YCB3aXRoaW4gYHNhbXBsZXMvZGFtb24vbXRpZXIuY2AgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3VidGxlIGJ1Z3MgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTQ1MCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwNDoxODoyNy4zNzUwMzEyMjVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM1MjQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcInNhbXBsZXMvZGFtb24vbXRpZXIuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMDAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxMDA6XFx0XFx0YXR0cnMuaW50ZXJ2YWxzX2dvYWwgPSAoc3RydWN0IGRhbW9uX2ludGVydmFsc19nb2FsKSB7XFxuIDEwMTpcXHRcXHRcXHQuYWNjZXNzX2JwID0gNDAwLCAuYWdncnMgPSAzLFxcbiAxMDI6XFx0XFx0XFx0Lm1pbl9zYW1wbGVfdXMgPSA1MDAwLCAubWF4X3NhbXBsZV91cyA9IDEwMDAwMDAwLFxcbiAxMDM6XFx0XFx0fTtcXG4gMTA0OlxcdFxcdGlmIChkYW1vbl9zZXRfYXR0cnMoY3R4LCBcXHUwMDI2YXR0cnMpKVxcbiAxMDU6XFx0XFx0XFx0Z290byBmcmVlX291dDtcXG4gMTA2OlxcdFxcdGlmIChkYW1vbl9zZWxlY3Rfb3BzKGN0eCwgREFNT05fT1BTX1BBRERSKSlcXG4gMTA3OlxcdFxcdFxcdGdvdG8gZnJlZV9vdXQ7XFxuIDEwODpcXHRcXG4gMTA5OlxcdFxcdHRhcmdldCA9IGRhbW9uX25ld190YXJnZXQoKTtcXG4gMTEwOlxcdFxcdGlmICghdGFyZ2V0KVxcbiAxMTE6XFx0XFx0XFx0Z290byBmcmVlX291dDtcXG4gMTEyOlxcdFxcdGRhbW9uX2FkZF90YXJnZXQoY3R4LCB0YXJnZXQpO1xcbiAxMTM6XFx0XFxuIDExNDpcXHRcXHRpZiAoZGV0ZWN0X25vZGVfYWRkcmVzc2VzKSB7XFxuIDExNTpcXHRcXHRcXHRyZXQgPSBwcm9tb3RlID8gbmlkX3RvX3BoeXMoMSwgXFx1MDAyNmFkZHIpIDogbmlkX3RvX3BoeXMoMCwgXFx1MDAyNmFkZHIpO1xcbiAxMTY6XFx0XFx0XFx0aWYgKHJldClcXG4gMTE3OlxcdFxcdFxcdFxcdGdvdG8gZnJlZV9vdXQ7XFxuIDExODpcXHRcXHR9IGVsc2Uge1xcbiAxMTk6XFx0XFx0XFx0YWRkci5zdGFydCA9IHByb21vdGUgPyBub2RlMV9zdGFydF9hZGRyIDogbm9kZTBfc3RhcnRfYWRkcjtcXG4gMTIwOlxcdFxcdFxcdGFkZHIuZW5kID0gcHJvbW90ZSA/IG5vZGUxX2VuZF9hZGRyIDogbm9kZTBfZW5kX2FkZHI7XFxuIDEyMTpcXHRcXHR9XFxuIDEyMjpcXHRcXG4gMTIzOlxcdFxcdGlmIChhZGRyLnN0YXJ0IFxcdTAwM2U9IGFkZHIuZW5kKVxcbiAxMjQ6XFx0XFx0XFx0Z290byBmcmVlX291dDtcXG4gMTI1OlxcdFxcbiAxMjY6XFx0XFx0cmFuZ2Uuc3RhcnQgPSBhZGRyLnN0YXJ0O1xcbiAxMjc6XFx0XFx0cmFuZ2UuZW5kID0gYWRkci5lbmQ7XFxuIDEyODpcXHRcXG4gMTI5OlxcdFxcdHJldCA9IGRhbW9uX3NldF9yZWdpb25zKHRhcmdldCwgXFx1MDAyNnJhbmdlLCAxLCBEQU1PTl9NSU5fUkVHSU9OX1NaKTtcXG4gMTMwOlxcdFxcdGlmIChyZXQpXFxuIDEzMTpcXHRcXHRcXHRnb3RvIGZyZWVfb3V0O1xcbiAxMzI6XFx0XFxuIDEzMzpcXHRcXHRzY2hlbWUgPSBkYW1vbl9uZXdfc2NoZW1lKFxcbiAxMzQ6XFx0XFx0XFx0XFx0LyogYWNjZXNzIHBhdHRlcm4gKi9cXG4gMTM1OlxcdFxcdFxcdFxcdFxcdTAwMjYoc3RydWN0IGRhbW9zX2FjY2Vzc19wYXR0ZXJuKSB7XFxuIDEzNjpcXHRcXHRcXHRcXHRcXHQubWluX3N6X3JlZ2lvbiA9IFBBR0VfU0laRSxcXG4gMTM3OlxcdFxcdFxcdFxcdFxcdC5tYXhfc3pfcmVnaW9uID0gVUxPTkdfTUFYLFxcbiAxMzg6XFx0XFx0XFx0XFx0XFx0Lm1pbl9ucl9hY2Nlc3NlcyA9IHByb21vdGUgPyAxIDogMCxcXG4gMTM5OlxcdFxcdFxcdFxcdFxcdC5tYXhfbnJfYWNjZXNzZXMgPSBwcm9tb3RlID8gVUlOVF9NQVggOiAwLFxcbiAxNDA6XFx0XFx0XFx0XFx0XFx0Lm1pbl9hZ2VfcmVnaW9uID0gMCxcXG4gMTQxOlxcdFxcdFxcdFxcdFxcdC5tYXhfYWdlX3JlZ2lvbiA9IFVJTlRfTUFYfSxcXG4gMTQyOlxcdFxcdFxcdFxcdC8qIGFjdGlvbiAqL1xcbiAxNDM6XFx0XFx0XFx0XFx0cHJvbW90ZSA/IERBTU9TX01JR1JBVEVfSE9UIDogREFNT1NfTUlHUkFURV9DT0xELFxcbiAxNDQ6XFx0XFx0XFx0XFx0MTAwMDAwMCxcXHQvKiBhcHBseSBpbnRlcnZhbCAoMXMpICovXFxuIDE0NTpcXHRcXHRcXHRcXHRcXHUwMDI2KHN0cnVjdCBkYW1vc19xdW90YSl7XFxuIDE0NjpcXHRcXHRcXHRcXHRcXHQvKiAyMDAgTWlCIHBlciBzZWMgYnkgbW9zdCAqL1xcbiAxNDc6XFx0XFx0XFx0XFx0XFx0LnJlc2V0X2ludGVydmFsID0gMTAwMCxcXG4gMTQ4OlxcdFxcdFxcdFxcdFxcdC5zeiA9IDIwMCAqIDEwMjQgKiAxMDI0LFxcbiAxNDk6XFx0XFx0XFx0XFx0XFx0LyogaWdub3JlIHNpemUgb2YgcmVnaW9uIHdoZW4gcHJpb3JpdGl6aW5nICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDA0OjE4OjI3LjM3NTE2ODgxNloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODYwNjc0Njg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEJ1ZyBGaXggaW4gYSBTYW1wbGUgTW9kdWxlKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgY3J1Y2lhbCBjaGVjazogYGlmIChhZGRyLnN0YXJ0IFx1MDAzZT0gYWRkci5lbmQpIGdvdG8gZnJlZV9vdXQ7YC4gUmlnaHQgYXdheSwgSSBzZWUgdGhpcyBpcyBwdXJlbHkgZnVuY3Rpb25hbC4gSXQncyBhIGNsZWFyIGF0dGVtcHQgdG8gcHJldmVudCBhIGJ1ZyB3aGVyZSB0aGUgc3RhcnQgYWRkcmVzcyBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGVuZCBhZGRyZXNzLCB3aGljaCBtYWtlcyBpbnR1aXRpdmUgc2Vuc2Ug4oCTIHRoYXQncyBhIHJhbmdlIGVycm9yLlxuXG5UaGUgcXVlc3Rpb24gbm93IGlzLCBpcyBpdCB3b3J0aCBmdXp6aW5nIHRoaXM/IE5vcm1hbGx5LCBJIHdvdWxkbid0IGJvdGhlciB3aXRoIHNhbXBsZSBtb2R1bGVzIGluIFN5emthbGxlciB1bmxlc3Mgc3BlY2lmaWNhbGx5IGVuYWJsZWQgYW5kIHRhcmdldGVkLiBUaGV5J3JlIHVzdWFsbHkgbG93IHByaW9yaXR5LiBCdXQgdGhpcyBvbmUuLi4gaXMgYSBzYW1wbGUgYW5kIGlmIHdlIGVuYWJsZSBgU0FNUExFX0RBTU9OX01USUVSYCwgdGhlIG1vZHVsZSAqd2lsbCogYmUgY29tcGlsZWQgYW5kIGxvYWRlZCEgSG9sZCBvbiwgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0LiBJdCdzIGp1c3QgYSBib29sZWFuIGNvbmZpZywgd2hpY2ggbWVhbnMgaXTigJlzIGVpdGhlciBpbiBvciBvdXQuIEp1c3QgdG8gYmUgY29tcGxldGVseSBzdXJlLCBJJ2xsIGdvIGJhY2sgYW5kIHJldmlldyB0aGUgYHNhbXBsZXMvZGFtb24vS2NvbmZpZ2AgZmlsZSBvbmUgbW9yZSB0aW1lLiBHb3R0YSBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueSBkZXBlbmRlbmNpZXMgb3Igb3RoZXIgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2Nzg4LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTM4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDQ6MTg6MzEuMjM1ODQ2MDgzWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc5NzMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcInNhbXBsZXMvZGFtb24vS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdFxcbiAgIDM6XFx0bWVudSBcXFwiREFNT04gU2FtcGxlc1xcXCJcXG4gICA0OlxcdFxcbiAgIDU6XFx0Y29uZmlnIFNBTVBMRV9EQU1PTl9XU1NFXFxuICAgNjpcXHRcXHRib29sIFxcXCJEQU1PTiBzYW1wbGUgbW9kdWxlIGZvciB3b3JraW5nIHNldCBzaXplIGVzdGltYXRpb25cXFwiXFxuICAgNzpcXHRcXHRkZXBlbmRzIG9uIERBTU9OIFxcdTAwMjZcXHUwMDI2IERBTU9OX1ZBRERSXFxuICAgODpcXHRcXHRoZWxwXFxuICAgOTpcXHRcXHQgIFRoaXMgYnVpbGRzIERBTU9OIHNhbXBsZSBtb2R1bGUgZm9yIHdvcmtpbmcgc2V0IHNpemUgZXN0aW1hdGlvbi5cXG4gIDEwOlxcdFxcbiAgMTE6XFx0XFx0ICBUaGUgbW9kdWxlIHJlY2VpdmVzIGEgcGlkLCBtb25pdG9yIGFjY2VzcyB0byB0aGUgdmlydHVhbCBhZGRyZXNzXFxuICAxMjpcXHRcXHQgIHNwYWNlIG9mIHRoZSBwcm9jZXNzLCBlc3RpbWF0ZSB3b3JraW5nIHNldCBzaXplIG9mIHRoZSBwcm9jZXNzLCBhbmRcXG4gIDEzOlxcdFxcdCAgcmVwZWF0ZWRseSBwcmludHMgdGhlIHNpemUgb24gdGhlIGtlcm5lbCBsb2cuXFxuICAxNDpcXHRcXG4gIDE1OlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gIDE2OlxcdFxcbiAgMTc6XFx0Y29uZmlnIFNBTVBMRV9EQU1PTl9QUkNMXFxuICAxODpcXHRcXHRib29sIFxcXCJEQU1PTiBzYW1wbGUgbW9kdWxlIGZvciBhY2Nlc3MtYXdhcmUgcHJvYWN0aXZlIHJlY2xhbWF0aW9uXFxcIlxcbiAgMTk6XFx0XFx0ZGVwZW5kcyBvbiBEQU1PTiBcXHUwMDI2XFx1MDAyNiBEQU1PTl9WQUREUlxcbiAgMjA6XFx0XFx0aGVscFxcbiAgMjE6XFx0XFx0ICBUaGlzIGJ1aWxkcyBEQU1PTiBzYW1wbGUgbW9kdWxlIGZvciBhY2Nlc3MtYXdhcmUgcHJvYWN0aXZlXFxuICAyMjpcXHRcXHQgIHJlY2xhbWF0aW9uLlxcbiAgMjM6XFx0XFxuICAyNDpcXHRcXHQgIFRoZSBtb2R1bGUgcmVjZWl2ZXMgYSBwaWQsIG1vbml0b3IgYWNjZXNzIHRvIHRoZSB2aXJ0dWFsIGFkZHJlc3NcXG4gIDI1OlxcdFxcdCAgc3BhY2Ugb2YgdGhlIHByb2Nlc3MsIGZpbmQgbWVtb3J5IHJlZ2lvbnMgdGhhdCBub3QgYWNjZXNzZWQsIGFuZFxcbiAgMjY6XFx0XFx0ICBwcm9hY3RpdmVseSByZWNsYWltIHRoZSByZWdpb25zLlxcbiAgMjc6XFx0XFxuICAyODpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuICAyOTpcXHRcXG4gIDMwOlxcdGNvbmZpZyBTQU1QTEVfREFNT05fTVRJRVJcXG4gIDMxOlxcdFxcdGJvb2wgXFxcIkRBTU9OIHNhbXBsZSBtb2R1bGUgZm9yIG1lbW9yeSB0aWVyaW5nXFxcIlxcbiAgMzI6XFx0XFx0ZGVwZW5kcyBvbiBEQU1PTiBcXHUwMDI2XFx1MDAyNiBEQU1PTl9QQUREUlxcbiAgMzM6XFx0XFx0aGVscFxcbiAgMzQ6XFx0XFx0ICBUaHBzIGJ1aWxkcyBEQU1PTiBzYW1wbGUgbW9kdWxlIGZvciBtZW1vcnkgdGllcmlnbi5cXG4gIDM1OlxcdFxcbiAgMzY6XFx0XFx0ICBUaGUgbW9kdWxlIGFzc3VtZXMgdGhlIHN5c3RlbSBpcyBjb25zdHJ1Y3RlZCB3aXRoIHR3byBOVU1BIG5vZGVzLFxcbiAgMzc6XFx0XFx0ICB3aGljaCBzZWVtcyBhcyBsb2NhbCBhbmQgcmVtb3RlIG5vZGVzIHRvIGFsbCBDUFVzLiAgRm9yIGV4YW1wbGUsXFxuICAzODpcXHRcXHQgIG5vZGUwIGlzIGZvciBERFI1IERSQU1zIGNvbm5lY3RlZCB2aWEgRElNTSwgd2hpbGUgbm9kZTEgaXMgZm9yIEREUjRcXG4gIDM5OlxcdFxcdCAgRFJBTXMgY29ubmVjdGVkIHZpYSBDWEwuXFxuICA0MDpcXHRcXG4gIDQxOlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gIDQyOlxcdFxcbiAgNDM6XFx0ZW5kbWVudVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwNDoxODozMS4yMzU5MjcxMDNaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzgwOTQ0MjgyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIERBTU9OIE11bHRpLVRpZXIgSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBzbyB3ZSdyZSBkZWFsaW5nIHdpdGggYSBib29sZWFuIGNvbmZpZ3VyYXRpb24gaGVyZS4gVGhhdCBtZWFucyBpdCdzIGVpdGhlciBlbmFibGVkIG9yIGRpc2FibGVkIGJ5IGRlZmF1bHQsIGJha2VkIGRpcmVjdGx5IGludG8gdGhlIHN5c3RlbSwgeWVzPyBJZiB0aGlzIG11bHRpLXRpZXIgZnVuY3Rpb25hbGl0eSBpcyBpbmRlZWQgYnVpbHQtaW4gYW5kIGFjdGl2ZSwgdGhlbiB0aGUgYGRhbW9uX3NhbXBsZV9tdGllcl9pbml0YCBmdW5jdGlvbiAqc2hvdWxkKiBiZSBjYWxsZWQgZHVyaW5nIHRoZSBib290IHByb2Nlc3MuIEJ1dCBob2xkIG9uLi4uIEkgc2VlbSB0byByZWNhbGwgdGhhdCBmdW5jdGlvbiBoYXZpbmcgYSBjaGVjayB3aXRoaW4gaXQ6IGBpZiAoZW5hYmxlZClgLiBOb3csIHRoYXQncyBpbnRlcmVzdGluZy4gSSBiZXQgYGVuYWJsZWRgIGlzIGEgbW9kdWxlIHBhcmFtZXRlciwgbGlrZWx5IGRlZmF1bHRpbmcgdG8gYGZhbHNlYC4gSSBzaG91bGQgcHJvYmFibHkgY29uZmlybSB0aGF0IGRlZmF1bHQgYW5kIG90aGVyIGFzcGVjdHMuIFJpZ2h0LCBiZXR0ZXIgY2hlY2sgdGhlIHNvdXJjZSBjb2RlIGl0c2VsZiwgc3BlY2lmaWNhbGx5IGBzYW1wbGVzL2RhbW9uL210aWVyLmNgIHRvIHNlZSBob3cgYGVuYWJsZWRgIGlzIGFjdHVhbGx5IGRlZmluZWQgYW5kIHVzZWQuIEdvdHRhIGdldCB0aGUgZGV0YWlscyBzdHJhaWdodCBiZWZvcmUgbW92aW5nIGZvcndhcmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc3NTgsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5OCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDA0OjE4OjM1LjA0NTM3MTc5M1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzQ1OTk1NzY2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImVuYWJsZWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwic2FtcGxlcy9kYW1vbi9tdGllci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcInNhbXBsZXMvZGFtb24vbXRpZXIuYz0zOD1zdGF0aWMgaW50IGRhbW9uX3NhbXBsZV9tdGllcl9lbmFibGVfc3RvcmUoXFxuLS1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtNDAtXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjQxOnN0YXRpYyBjb25zdCBzdHJ1Y3Qga2VybmVsX3BhcmFtX29wcyBlbmFibGVkX3BhcmFtX29wcyA9IHtcXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtNDItXFx0LnNldCA9IGRhbW9uX3NhbXBsZV9tdGllcl9lbmFibGVfc3RvcmUsXFxuLS1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtNDUtXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjQ2OnN0YXRpYyBib29sIGVuYWJsZWQgX19yZWFkX21vc3RseTtcXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6NDc6bW9kdWxlX3BhcmFtX2NiKGVuYWJsZWQsIFxcdTAwMjZlbmFibGVkX3BhcmFtX29wcywgXFx1MDAyNmVuYWJsZWQsIDA2MDApO1xcbnNhbXBsZXMvZGFtb24vbXRpZXIuYzo0ODpNT0RVTEVfUEFSTV9ERVNDKGVuYWJsZWQsIFxcXCJFbmFibGUgb3IgZGlzYWJsZSBEQU1PTl9TQU1QTEVfTVRJRVJcXFwiKTtcXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtNDktXFxuLS1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmM9MjAxPXN0YXRpYyBpbnQgZGFtb25fc2FtcGxlX210aWVyX2VuYWJsZV9zdG9yZShcXG4tLVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yMDMte1xcbnNhbXBsZXMvZGFtb24vbXRpZXIuYzoyMDQ6XFx0Ym9vbCBpc19lbmFibGVkID0gZW5hYmxlZDtcXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMjA1LVxcdGludCBlcnI7XFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTIwNi1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6MjA3OlxcdGVyciA9IGtzdHJ0b2Jvb2wodmFsLCBcXHUwMDI2ZW5hYmxlZCk7XFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTIwOC1cXHRpZiAoZXJyKVxcbi0tXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTIxMC1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6MjExOlxcdGlmIChlbmFibGVkID09IGlzX2VuYWJsZWQpXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTIxMi1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yMTYtXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjIxNzpcXHRpZiAoZW5hYmxlZCkge1xcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yMTgtXFx0XFx0ZXJyID0gZGFtb25fc2FtcGxlX210aWVyX3N0YXJ0KCk7XFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTIxOS1cXHRcXHRpZiAoZXJyKVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYzoyMjA6XFx0XFx0XFx0ZW5hYmxlZCA9IGZhbHNlO1xcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yMjEtXFx0XFx0cmV0dXJuIGVycjtcXG4tLVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYz0yMjc9c3RhdGljIGludCBfX2luaXQgZGFtb25fc2FtcGxlX210aWVyX2luaXQodm9pZClcXG4tLVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yMzEtXFx0aWYgKCFkYW1vbl9pbml0aWFsaXplZCgpKSB7XFxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjIzMjpcXHRcXHRpZiAoZW5hYmxlZClcXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6MjMzOlxcdFxcdFxcdGVuYWJsZWQgPSBmYWxzZTtcXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMjM0LVxcdFxcdHJldHVybiAtRU5PTUVNO1xcbi0tXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTIzNi1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6MjM3OlxcdGlmIChlbmFibGVkKSB7XFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTIzOC1cXHRcXHRlcnIgPSBkYW1vbl9zYW1wbGVfbXRpZXJfc3RhcnQoKTtcXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMjM5LVxcdFxcdGlmIChlcnIpXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjI0MDpcXHRcXHRcXHRlbmFibGVkID0gZmFsc2U7XFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTI0MS1cXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDA0OjE4OjM1LjM5MTM3NTIwOVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDI3OTY4MzAzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIERlY2lzaW9uIGZvciBkYW1vbl9zYW1wbGVfbXRpZXIqKlxuXG5Pa2F5LCBsZXQncyB0aGluayB0aGlzIHRocm91Z2guIFRoaXMgcGF0Y2ggdG91Y2hlcyBgL3N5cy9tb2R1bGUvZGFtb25fc2FtcGxlX210aWVyL3BhcmFtZXRlcnMvZW5hYmxlZGAsIHdoaWNoIEkga25vdyBmcm9tIGV4cGVyaWVuY2UgdHJpZ2dlcnMgYGRhbW9uX3NhbXBsZV9tdGllcl9lbmFibGVfc3RvcmVgLCBsZWFkaW5nIHRvIGBkYW1vbl9zYW1wbGVfbXRpZXJfc3RhcnRgIGFuZCBmaW5hbGx5IGBkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4YC4gU2luY2UgU3l6a2FsbGVyIGhpdHMgYC9zeXMvYCBmaWxlcywgaXQncyBkZWZpbml0ZWx5IHBvc3NpYmxlIHRvIHRyaWdnZXIgdGhpcyBjb2RlLiBUaGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgaXQncyAqd29ydGgqIGZ1enppbmcuXG5cbkknbSBjaGVja2luZyBpZiBTeXprYWxsZXIgYWxyZWFkeSBoYXMgYSBkZXNjcmlwdGlvbiBmb3IgYGRhbW9uX3NhbXBsZV9tdGllcmAsIGJ1dCBldmVuIGlmIGl0IGRvZXNuJ3QsIGl0IGNhbiBkaXNjb3ZlciBpdCBpZiB0aGUgbW9kdWxlJ3MgZW5hYmxlZC4gVGhlIGNoYW5nZSBpdHNlbGYgaXMgc2VlbWluZ2x5IHNpbXBsZSAtIGEgY2hlY2sgdG8gcHJldmVudCBgYWRkci5zdGFydGAgZnJvbSBiZWluZyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gYGFkZHIuZW5kYCwgd2hpY2ggZml4ZXMgYW4gaW52YWxpZCByYW5nZS5cblxuSSBuZWVkIHRvIGRlY2lkZSBgV29ydGhGdXp6aW5nPXRydWVgIG9yIGBmYWxzZWAuXG5cbkZpcnN0LCBsZXQncyB2ZXJpZnkgdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9ucy4gYFNBTVBMRV9EQU1PTl9NVElFUmAgZGVwZW5kcyBvbiBgREFNT04gXHUwMDI2XHUwMDI2IERBTU9OX1BBRERSYCwgc28gdGhhdCdzIHRoZSBrZXkgY29uZmlnIHRvIGVuYWJsZS5cblxuSSdtIHRoaW5raW5nIGFib3V0IHRoZSBpbXBvcnRhbnQgc3ltYm9scy4gYGRhbW9uX3NhbXBsZV9tdGllcl9idWlsZF9jdHhgLCBgZGFtb25fc2FtcGxlX210aWVyX3N0YXJ0YCwgYW5kIGBkYW1vbl9zYW1wbGVfbXRpZXJfZW5hYmxlX3N0b3JlYCBhcmUgdGhlIGZ1bmN0aW9ucyBvZiBpbnRlcmVzdC4gV2FpdCwgSSByZW1lbWJlciB0aGF0IGBkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4YCBpcyBzdGF0aWMuIEkgcXVpY2tseSBjb25maXJtIHRoYXQgaXQncyBpbiBgbXRpZXIuY2AsIHNvIGl0J3MgYSBnb29kIGZ1bmN0aW9uIHRvIGZvY3VzIG9uLlxuXG5MZXQncyBxdWlja2x5IGNvbmZpcm0gdGhhdCBgU0FNUExFX0RBTU9OX01USUVSYCBpcyBpbmRlZWQgdGhlIGNvbmZpZ3VyYXRpb24gdGhhdCBlbmFibGVzIGV2ZXJ5dGhpbmcuIFllcy5cblxuTm93LCBsZXQncyByZXZpZXcgdGhlIGluc3RydWN0aW9ucy4gVGhleSBzYXkgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9dHJ1ZWAgaWYgdGhlIGNoYW5nZSBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMuIElzIGEgKnNhbXBsZSogbW9kdWxlIFwiY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXNcIj8gVXN1YWxseSBub3QsIGJ1dCBoZXJlIGl0IGhhcyBhIHN5c2ZzIGludGVyZmFjZS4gVGhhdCBjaGFuZ2VzIHRoaW5ncy4gSXQncyBhIHNhbXBsZSwgYnV0IFN5emthbGxlciBjYW4gc3RpbGwgaW50ZXJhY3Qgd2l0aCBpdC5cblxuSWYgSSBzYXkgdHJ1ZSwgU3l6a2FsbGVyIHdpbGwgZnV6eiBpdC4gSXMgdGhhdCBjb3JyZWN0PyBUaGUgcGF0Y2ggKmlzKiBhIGZ1bmN0aW9uYWwgZml4IGluIGEgc2FtcGxlIG1vZHVsZSwgbm90IGEgaHlwb3RoZXRpY2FsIGNvZGUgcGF0aC4gSSdsbCBhZG1pdCBJJ20gbGVhbmluZyB0b3dhcmQgdHJ1ZSBiZWNhdXNlIGl0J3MgYm90aCBmdW5jdGlvbmFsIGFuZCByZWFjaGFibGUsIGJ1dCBpcyB0aGF0IGNvcnJlY3Q/XG5cblRoaW5raW5nIGFib3V0IHRoZSBpbnN0cnVjdGlvbnMgYWdhaW4sIGl0IHNwZWNpZmllcyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIGNoYW5nZXMgYXJlIGZvciBcIkNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZVwiLiBTYW1wbGUgbW9kdWxlcyBhcmVuJ3QgZXhwbGljaXRseSBleGNsdWRlZC5cblxuT2theSwgSSdtIGdvaW5nIHRvIHJldHVybiBgdHJ1ZWAuIEl0J3MgYSBmdW5jdGlvbmFsIHBhdGNoIGluIGEgcmVhY2hhYmxlIGNvZGUgcGF0aC4gVGhlIHJpc2sgc2VlbXMgbWluaW1hbC5cblxuSGVyZSdzIG15IGNvbmNsdXNpb246XG5cbkNvbmZpZ3M6IGBTQU1QTEVfREFNT05fTVRJRVJgXG5Gb2N1c1N5bWJvbHM6IGBkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4YFxuXG5cbiIsIklucHV0VG9rZW5zIjo4ODg5LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzA0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDA0OjE4OjQ1LjY3MTA2MTc3MloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY5NDAwMjEzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRhbW9uX3NhbXBsZV9tdGllcl9idWlsZF9jdHhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwic2FtcGxlcy9kYW1vbi9tdGllci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcInNhbXBsZXMvZGFtb24vbXRpZXIuYz02MD1zdGF0aWMgaW50IG5pZF90b19waHlzKGludCB0YXJnZXRfbm9kZSwgc3RydWN0IHJlZ2lvbl9yYW5nZSAqcmFuZ2UpXFxuLS1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtNzItXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjczOnN0YXRpYyBzdHJ1Y3QgZGFtb25fY3R4ICpkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4KGJvb2wgcHJvbW90ZSlcXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtNzQte1xcbi0tXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jPTE3Nz1zdGF0aWMgaW50IGRhbW9uX3NhbXBsZV9tdGllcl9zdGFydCh2b2lkKVxcbi0tXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTE4MC1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6MTgxOlxcdGN0eCA9IGRhbW9uX3NhbXBsZV9tdGllcl9idWlsZF9jdHgodHJ1ZSk7XFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTE4Mi1cXHRpZiAoIWN0eClcXG4tLVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0xODQtXFx0Y3R4c1swXSA9IGN0eDtcXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6MTg1OlxcdGN0eCA9IGRhbW9uX3NhbXBsZV9tdGllcl9idWlsZF9jdHgoZmFsc2UpO1xcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0xODYtXFx0aWYgKCFjdHgpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDQ6MTg6NDUuODQwNDcwMjA2WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4MTE2MDY1NjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB1bmRlcnN0YW5kaW5nLCBjb25zaWRlcmluZyBJJ20gdGhlIG9uZSB0aGlua2luZyB0aHJvdWdoIHRoaXMgY29uZmlndXJhdGlvbiBsb2dpYzpcblxuKipDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyBmb3IgYGRhbW9uX3NhbXBsZV9tdGllcl9idWlsZF9jdHhgKipcblxuQWxyaWdodCwgc28gaXQncyBjb25maXJtZWQgdGhhdCBvbmx5IGBkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4YCBpcyBkaXJlY3RseSBtb2RpZmllZCBpbiB0aGlzIHNjZW5hcmlvLiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byB2ZXJpZnkgd2hldGhlciBhbnkgb3RoZXIgY29uZmlndXJhdGlvbnMgYXJlIGluaGVyZW50bHkgcmVxdWlyZWQsIGFzIGEgZG93bnN0cmVhbSBlZmZlY3Qgb2YgZW5hYmxpbmcgdGhpcyBvbmUuXG5cbkxvb2tpbmcgY2xvc2VyLCBgU0FNUExFX0RBTU9OX01USUVSYCBoYXMgYGRlcGVuZHMgb24gREFNT04gXHUwMDI2XHUwMDI2IERBTU9OX1BBRERSYC4gT2theSwgdGhhdCBtYWtlcyBzZW5zZS4gU3l6a2FsbGVyIHdpbGwgdWx0aW1hdGVseSBhdHRlbXB0IHRvIGVuYWJsZSBgU0FNUExFX0RBTU9OX01USUVSYC4gU2luY2UgdGhlc2UgYXJlIGRlcGVuZGVuY2llcywgYW5kIG5vdCBqdXN0IHNlbGVjdHMsIEkgbmVlZCB0byBlbnN1cmUgYERBTU9OYCBhbmQgYERBTU9OX1BBRERSYCBhcmUgYWxzbyBleHBsaWNpdGx5IGluY2x1ZGVkIGluIHRoZSBmaW5hbCBjb25maWd1cmF0aW9uIGxpc3QuIFN5emthbGxlcidzIGF0dGVtcHQgd2lsbCBpbXBsaWNpdGx5IGVuYWJsZSB0aGVtLCBzbyBpdCB3b3VsZCBiZSBuZWdsaWdlbnQgdG8gbGVhdmUgdGhlbSBvdXQuIFNvLCB0aG9zZSAqbXVzdCogYmUgaW5jbHVkZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNTgyLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDA0OjE4OjQ5LjY1MjA3OTY3NVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ0NTgyMDY0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTQU1QTEVfREFNT05fTVRJRVJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwic2FtcGxlcy9kYW1vbi9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcInNhbXBsZXMvZGFtb24vS2NvbmZpZz0xNz1jb25maWcgU0FNUExFX0RBTU9OX1BSQ0xcXG4tLVxcbnNhbXBsZXMvZGFtb24vS2NvbmZpZy0yOS1cXG5zYW1wbGVzL2RhbW9uL0tjb25maWc6MzA6Y29uZmlnIFNBTVBMRV9EQU1PTl9NVElFUlxcbnNhbXBsZXMvZGFtb24vS2NvbmZpZy0zMS1cXHRib29sIFxcXCJEQU1PTiBzYW1wbGUgbW9kdWxlIGZvciBtZW1vcnkgdGllcmluZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDQ6MTg6NDkuNzk2Njc3MjM5WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwODM4OTQ0NTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqUmV2aXNpdGluZyB0aGUgS2NvbmZpZyBpbiBEYW1vbidzIFNhbXBsZXMqKlxuXG5BbHJpZ2h0LCBsZXQncyBjaXJjbGUgYmFjayB0byBgc2FtcGxlcy9kYW1vbi9LY29uZmlnYC4gSSBuZWVkIHRvIHJldmlzaXQgdGhhdCBjb25maWd1cmF0aW9uIGZpbGUuIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyBpdCdzIHByb2JhYmx5IGtleSBmb3IgdGhlIGNvbmZpZ3VyYXRpb24gb2YgdGhlIERhbW9uIChEeW5hbWljIEFjY2VzcyBNb25pdG9yKSBzYW1wbGluZyB3aXRoaW4gdGhhdCBzcGVjaWZpYyBzYW1wbGUgY29kZS4gSSBwcm9iYWJseSB3YW50IHRvIGxvb2sgZm9yIHNwZWNpZmljIGNvbmZpZyBvcHRpb25zLCBhbnkgZGVwZW5kZW5jaWVzIGRlZmluZWQgdGhlcmUsIGFuZCB0aGUgb3ZlcmFsbCBzdHJ1Y3R1cmUgb2YgaG93IERhbW9uJ3MgZmVhdHVyZXMgYXJlIGV4cG9zZWQgYW5kIGNvbnRyb2xsZWQgd2l0aGluIHRoYXQgZGVtb25zdHJhdGlvbiBjb2RlLiBUaGlzIHNob3VsZCBpbmZvcm0gbXkgb25nb2luZyB3b3JrLCBhbmQgcHJvYmFibHkgYW55IHJlZmluZW1lbnRzIEknbSBwbGFubmluZyB0byBtYWtlIHRvIGhvdyB3ZSBpbnRlZ3JhdGUgb3IgdXNlIERhbW9uIGluIHByb2R1Y3Rpb24gb3Igd2l0aCBtb3JlIGNvbXBsZXggdXNlIGNhc2VzLiBJdCdzIGEga2V5IHNvdXJjZSB0byBjbGFyaWZ5IHRoZSBzYW1wbGUgaW1wbGVtZW50YXRpb24gY2hvaWNlcyBhbmQgY29uZmlndXJhdGlvbiBkZXRhaWxzLiBUaGlzIHNjYW4gd2lsbCBsaWtlbHkgZ2l2ZSBtZSBiZXR0ZXIgaW5zaWdodCBvbiB0aGUgcHVycG9zZSBvZiB0aG9zZSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMDQwLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDQ6MTg6NTIuODgwNTc1MjE3WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMjczMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJzYW1wbGVzL2RhbW9uL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMjA6XFx0XFx0aGVscFxcbiAgMjE6XFx0XFx0ICBUaGlzIGJ1aWxkcyBEQU1PTiBzYW1wbGUgbW9kdWxlIGZvciBhY2Nlc3MtYXdhcmUgcHJvYWN0aXZlXFxuICAyMjpcXHRcXHQgIHJlY2xhbWF0aW9uLlxcbiAgMjM6XFx0XFxuICAyNDpcXHRcXHQgIFRoZSBtb2R1bGUgcmVjZWl2ZXMgYSBwaWQsIG1vbml0b3IgYWNjZXNzIHRvIHRoZSB2aXJ0dWFsIGFkZHJlc3NcXG4gIDI1OlxcdFxcdCAgc3BhY2Ugb2YgdGhlIHByb2Nlc3MsIGZpbmQgbWVtb3J5IHJlZ2lvbnMgdGhhdCBub3QgYWNjZXNzZWQsIGFuZFxcbiAgMjY6XFx0XFx0ICBwcm9hY3RpdmVseSByZWNsYWltIHRoZSByZWdpb25zLlxcbiAgMjc6XFx0XFxuICAyODpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuICAyOTpcXHRcXG4gIDMwOlxcdGNvbmZpZyBTQU1QTEVfREFNT05fTVRJRVJcXG4gIDMxOlxcdFxcdGJvb2wgXFxcIkRBTU9OIHNhbXBsZSBtb2R1bGUgZm9yIG1lbW9yeSB0aWVyaW5nXFxcIlxcbiAgMzI6XFx0XFx0ZGVwZW5kcyBvbiBEQU1PTiBcXHUwMDI2XFx1MDAyNiBEQU1PTl9QQUREUlxcbiAgMzM6XFx0XFx0aGVscFxcbiAgMzQ6XFx0XFx0ICBUaHBzIGJ1aWxkcyBEQU1PTiBzYW1wbGUgbW9kdWxlIGZvciBtZW1vcnkgdGllcmlnbi5cXG4gIDM1OlxcdFxcbiAgMzY6XFx0XFx0ICBUaGUgbW9kdWxlIGFzc3VtZXMgdGhlIHN5c3RlbSBpcyBjb25zdHJ1Y3RlZCB3aXRoIHR3byBOVU1BIG5vZGVzLFxcbiAgMzc6XFx0XFx0ICB3aGljaCBzZWVtcyBhcyBsb2NhbCBhbmQgcmVtb3RlIG5vZGVzIHRvIGFsbCBDUFVzLiAgRm9yIGV4YW1wbGUsXFxuICAzODpcXHRcXHQgIG5vZGUwIGlzIGZvciBERFI1IERSQU1zIGNvbm5lY3RlZCB2aWEgRElNTSwgd2hpbGUgbm9kZTEgaXMgZm9yIEREUjRcXG4gIDM5OlxcdFxcdCAgRFJBTXMgY29ubmVjdGVkIHZpYSBDWEwuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDA0OjE4OjUyLjg4MDY4MDUyN1oiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjEwMjczMjk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdW5kZXJzdGFuZGluZywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBsaWtlIHlvdXJzZWxmOlxuXG4qKkNvbmZpZyBEZXBlbmRlbmNpZXMgYW5kIEZ1bmN0aW9uYWwgQ2hlY2sgaW4gREFNT04gTWVtb3J5IFRpZXJpbmcqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZyb20gYSBkZXBlbmRlbmN5IHBlcnNwZWN0aXZlLCBpdCdzIGNsZWFyIHRoYXQgdGhlIG1vZHVsZSBgU0FNUExFX0RBTU9OX01USUVSYCBmdW5kYW1lbnRhbGx5IHJlbGllcyBvbiBib3RoIGBEQU1PTmAgYW5kIGBEQU1PTl9QQUREUmAuIFRoZXJlZm9yZSwgdG8gZW5zdXJlIGV2ZXJ5dGhpbmcgZnVuY3Rpb25zIGFzIGludGVuZGVkIGFuZCB0byBwcm9wZXJseSB0cmFjZSB0aGUgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMsIEknbGwgbmVlZCB0byBhZGQgYWxsIHRocmVlIOKAkyBgU0FNUExFX0RBTU9OX01USUVSYCwgYERBTU9OYCwgYW5kIGBEQU1PTl9QQUREUmAg4oCTIHRvIHRoZSBgRW5hYmxlQ29uZmlnc2AgbGlzdC4gTm8gc3VycHJpc2UgdGhlcmUuXG5cbk15IHJhdGlvbmFsZSBpcyB0aGlzOiB0aGUgcHJpbWFyeSBmdW5jdGlvbiBvZiB0aGlzIHBhdGNoIGlzIHRvIHByb3ZpZGUgYSBzYWZlZ3VhcmQ7IHRvIGFkZCBhIGZ1bmN0aW9uYWwgY2hlY2sgdGhhdCBzcGVjaWZpY2FsbHkgZ3VhcmRzIGFnYWluc3QgYW4gaW52YWxpZCBtZW1vcnkgcmFuZ2Ugd2l0aGluIHRoZSBEQU1PTiBtZW1vcnkgdGllcmluZyBzYW1wbGUgbW9kdWxlLiBJbiBlc3NlbmNlLCBpdCdzIGEgbnVsbCBjaGVjayBvciBhbiBlZGdlLWNhc2UgdGVzdCBmb3Igd2hlcmUgYGFkZHIuc3RhcnRgIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBgYWRkci5lbmRgLiBUaGlzIGNoZWNrIGlzIG9ubHkgdHJpZ2dlcmVkIGlmIGFuZCB3aGVuIHRoZSBtb2R1bGUgaXMgZW5hYmxlZCBhbmQgc29tZW9uZSB3cml0ZXMgdG8gdGhlIGFzc29jaWF0ZWQgc3lzZnMgcGFyYW1ldGVyLlxuXG5Ob3csIGxldCdzIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE1NjgsIk91dHB1dFRva2VucyI6MTEzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDQ6MTg6NTcuNDkwOTYyOTU1WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM5MDI3MTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTQU1QTEVfREFNT05fTVRJRVJcIixcbiAgICBcIkRBTU9OXCIsXG4gICAgXCJEQU1PTl9QQUREUlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRhbW9uX3NhbXBsZV9tdGllcl9idWlsZF9jdHhcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgZnVuY3Rpb25hbCBjaGVjayB0byBwcmV2ZW50IGFuIGludmFsaWQgbWVtb3J5IHJhbmdlIChhZGRyLnN0YXJ0IFxcdTAwM2U9IGFkZHIuZW5kKSBpbiB0aGUgREFNT04gbWVtb3J5IHRpZXJpbmcgc2FtcGxlIG1vZHVsZS4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBieSBlbmFibGluZyB0aGUgbW9kdWxlIGFuZCB3cml0aW5nIHRvIGl0cyBzeXNmcyBwYXJhbWV0ZXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU0FNUExFX0RBTU9OX01USUVSXCIsXG4gICAgXCJEQU1PTlwiLFxuICAgIFwiREFNT05fUEFERFJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGZ1bmN0aW9uYWwgY2hlY2sgdG8gcHJldmVudCBhbiBpbnZhbGlkIG1lbW9yeSByYW5nZSAoYWRkci5zdGFydCBcXHUwMDNlPSBhZGRyLmVuZCkgaW4gdGhlIERBTU9OIG1lbW9yeSB0aWVyaW5nIHNhbXBsZSBtb2R1bGUuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgYnkgZW5hYmxpbmcgdGhlIG1vZHVsZSBhbmQgd3JpdGluZyB0byBpdHMgc3lzZnMgcGFyYW1ldGVyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowh2fjt[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-02 03:56:57 +0000 UTC FinishedAt: 2026-07-02 04:18:59 +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": "665159e246749578d4e4bfe106ee3b74edcdab18", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SAMPLE_DAMON_MTIER", "DAMON", "DAMON_PADDR" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "665159e246749578d4e4bfe106ee3b74edcdab18", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SAMPLE_DAMON_MTIER", "DAMON", "DAMON_PADDR" ], "series_id": "51aba591-9ac7-40b0-b976-26917059e3ca" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "damon_sample_mtier_build_ctx" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDA0OjE4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NBTVBMRV9EQU1PTl9NVElFUiYjMzQ7LAogICAgJiMzNDtEQU1PTiYjMzQ7LAogICAgJiMzNDtEQU1PTl9QQUREUiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RhbW9uX3NhbXBsZV9tdGllcl9idWlsZF9jdHgmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGZ1bmN0aW9uYWwgY2hlY2sgdG8gcHJldmVudCBhbiBpbnZhbGlkIG1lbW9yeSByYW5nZSAoYWRkci5zdGFydCBcdTAwM2U9IGFkZHIuZW5kKSBpbiB0aGUgREFNT04gbWVtb3J5IHRpZXJpbmcgc2FtcGxlIG1vZHVsZS4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBieSBlbmFibGluZyB0aGUgbW9kdWxlIGFuZCB3cml0aW5nIHRvIGl0cyBzeXNmcyBwYXJhbWV0ZXIuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDQ6MTg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA4ODg0Y2Y5NDkwOTI0N2QxM2I4NzIyMWY0MzFmZWM1MGE2MDVlMDc5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMiAwNDoxODowMSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9zYW1wbGVzL2RhbW9uL210aWVyLmMgYi9zYW1wbGVzL2RhbW9uL210aWVyLmNcbmluZGV4IGViMTE0M2RlOGRmMTdlLi4zNzg1YjBjN2ZmYjE3NSAxMDA2NDRcbi0tLSBhL3NhbXBsZXMvZGFtb24vbXRpZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvc2FtcGxlcy9kYW1vbi9tdGllci5jXG5AQCAtMTIwLDYgJiM0MzsxMjAsOSBAQCBzdGF0aWMgc3RydWN0IGRhbW9uX2N0eCAqZGFtb25fc2FtcGxlX210aWVyX2J1aWxkX2N0eChib29sIHByb21vdGUpXG4gXHRcdGFkZHIuZW5kID0gcHJvbW90ZSA/IG5vZGUxX2VuZF9hZGRyIDogbm9kZTBfZW5kX2FkZHI7XG4gXHR9XG4gXG4mIzQzO1x0aWYgKGFkZHIuc3RhcnQgXHUwMDNlPSBhZGRyLmVuZClcbiYjNDM7XHRcdGdvdG8gZnJlZV9vdXQ7XG4mIzQzO1xuIFx0cmFuZ2Uuc3RhcnQgPSBhZGRyLnN0YXJ0O1xuIFx0cmFuZ2UuZW5kID0gYWRkci5lbmQ7XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDQ6MTg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7U0FNUExFX0RBTU9OX01USUVSJiMzNDssCiAgICAmIzM0O0RBTU9OJiMzNDssCiAgICAmIzM0O0RBTU9OX1BBRERSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZGFtb25fc2FtcGxlX210aWVyX2J1aWxkX2N0eCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgZnVuY3Rpb25hbCBjaGVjayB0byBwcmV2ZW50IGFuIGludmFsaWQgbWVtb3J5IHJhbmdlIChhZGRyLnN0YXJ0IFx1MDAzZT0gYWRkci5lbmQpIGluIHRoZSBEQU1PTiBtZW1vcnkgdGllcmluZyBzYW1wbGUgbW9kdWxlLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGJ5IGVuYWJsaW5nIHRoZSBtb2R1bGUgYW5kIHdyaXRpbmcgdG8gaXRzIHN5c2ZzIHBhcmFtZXRlci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgODg4NGNmOTQ5MDkyNDdkMTNiODcyMjFmNDMxZmVjNTBhNjA1ZTA3OQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgSnVsIDIgMDQ6MTg6MDEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9zYW1wbGVzL2RhbW9uL210aWVyLmMgYi9zYW1wbGVzL2RhbW9uL210aWVyLmMKaW5kZXggZWIxMTQzZGU4ZGYxN2UuLjM3ODViMGM3ZmZiMTc1IDEwMDY0NAotLS0gYS9zYW1wbGVzL2RhbW9uL210aWVyLmMKJiM0MzsmIzQzOyYjNDM7IGIvc2FtcGxlcy9kYW1vbi9tdGllci5jCkBAIC0xMjAsNiAmIzQzOzEyMCw5IEBAIHN0YXRpYyBzdHJ1Y3QgZGFtb25fY3R4ICpkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4KGJvb2wgcHJvbW90ZSkKIAkJYWRkci5lbmQgPSBwcm9tb3RlID8gbm9kZTFfZW5kX2FkZHIgOiBub2RlMF9lbmRfYWRkcjsKIAl9CiAKJiM0MzsJaWYgKGFkZHIuc3RhcnQgJmd0Oz0gYWRkci5lbmQpCiYjNDM7CQlnb3RvIGZyZWVfb3V0OwomIzQzOwogCXJhbmdlLnN0YXJ0ID0gYWRkci5zdGFydDsKIAlyYW5nZS5lbmQgPSBhZGRyLmVuZDsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwNDoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODI0CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMTQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIERBTU9OIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgc2FtcGxlcy9kYW1vbi9tdGllci5jYC4gSXQgc2VlbXMgdGhleSYjMzk7dmUgYWRkZWQgYSBjaGVjazogYGlmIChhZGRyLnN0YXJ0ICZndDs9IGFkZHIuZW5kKSBnb3RvIGZyZWVfb3V0O2Agd2l0aGluIHRoZSBgZGFtb25fc2FtcGxlX210aWVyX2J1aWxkX2N0eGAgZnVuY3Rpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcywgd2hhdCYjMzk7cyB0aGUgY29udGV4dCBoZXJlPyBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGBtdGllci5jYCBpcyBiZWluZyBjb21waWxlZC4gSXMgaXQgYSBtb2R1bGUsIG9yIGlzIGl0IGJ1aWx0LWluPyBBbmQsIG1vcmUgY3JpdGljYWxseSwgaXMgaXQgZXZlbiAqcmVhY2hhYmxlKj8gSSBtZWFuLCBpdCYjMzk7cyBhICpzYW1wbGUqLCByaWdodD8gVHlwaWNhbGx5LCBzYW1wbGVzIGRvbiYjMzk7dCBnZXQgZnV6emVkIHVubGVzcyB0aGV5IGV4cG9zZSBzb21lIGludGVyZmFjZS4KCkJ1dCB3YWl0LCBob2xkIG9uLi4uIGl0ICppcyogYSBzYW1wbGUgbW9kdWxlLiBPa2F5LCB0aGF0IGNoYW5nZXMgdGhpbmdzIHNsaWdodGx5LiBJJiMzOTtkIGJldHRlciBkaWcgaW50byB0aGUgYnVpbGQgc3lzdGVtIHRvIGdldCBhIGNsZWFyZXIgcGljdHVyZS4gVGltZSB0byBjaGVjayBgc2FtcGxlcy9kYW1vbi9NYWtlZmlsZWAgYW5kIGBzYW1wbGVzL2RhbW9uL0tjb25maWdgIHRvIHNlZSBob3cgaXQmIzM5O3MgYmVpbmcgY29uZmlndXJlZCBhbmQgYnVpbHQuIFRoaXMgY2hlY2ssIHRoaXMgY29uZGl0aW9uLCBpcyBpbnRlcmVzdGluZy4gSXQgaW1wbGllcyBzb21ldGhpbmcgY291bGQgbGVhZCB0byBgYWRkci5zdGFydGAgYmVpbmcgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIGBhZGRyLmVuZGAsIHdoaWNoIGlzbiYjMzk7dCByaWdodC4gSSYjMzk7bSBnb2luZyB0byBmb2xsb3cgdGhlIGxvZ2ljLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDA0OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RhbW9uX3NhbXBsZV9tdGllcl9idWlsZF9jdHgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtzYW1wbGVzL2RhbW9uL210aWVyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7c2FtcGxlcy9kYW1vbi9tdGllci5jPTYwPXN0YXRpYyBpbnQgbmlkX3RvX3BoeXMoaW50IHRhcmdldF9ub2RlLCBzdHJ1Y3QgcmVnaW9uX3JhbmdlICpyYW5nZSlcbi0tXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtNzItXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6NzM6c3RhdGljIHN0cnVjdCBkYW1vbl9jdHggKmRhbW9uX3NhbXBsZV9tdGllcl9idWlsZF9jdHgoYm9vbCBwcm9tb3RlKVxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTc0LXtcbi0tXG5zYW1wbGVzL2RhbW9uL210aWVyLmM9MTc3PXN0YXRpYyBpbnQgZGFtb25fc2FtcGxlX210aWVyX3N0YXJ0KHZvaWQpXG4tLVxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTE4MC1cbnNhbXBsZXMvZGFtb24vbXRpZXIuYzoxODE6XHRjdHggPSBkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4KHRydWUpO1xuc2FtcGxlcy9kYW1vbi9tdGllci5jLTE4Mi1cdGlmICghY3R4KVxuLS1cbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0xODQtXHRjdHhzWzBdID0gY3R4O1xuc2FtcGxlcy9kYW1vbi9tdGllci5jOjE4NTpcdGN0eCA9IGRhbW9uX3NhbXBsZV9tdGllcl9idWlsZF9jdHgoZmFsc2UpO1xuc2FtcGxlcy9kYW1vbi9tdGllci5jLTE4Ni1cdGlmICghY3R4KSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDQ6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU2NgoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEaXZpbmcgaW50byB0aGUgYG10aWVyLmNgIE1vZHVsZSBJbml0aWFsaXphdGlvbioqCgpPa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSB0YWtpbmcgYSBjbG9zZSBsb29rIGF0IHRoZSBtb2R1bGUgaW5pdGlhbGl6YXRpb24gd2l0aGluIGBzYW1wbGVzL2RhbW9uL210aWVyLmNgLiBUaGlzIGlzIHdoZXJlIHRoZSBtYWdpYyByZWFsbHkgYmVnaW5zIOKAkyBpdOKAmXMgdGhlIGJlZHJvY2sgb2YgaG93IHRoZSBgbXRpZXJgIGNvbXBvbmVudCBpbnRlcmFjdHMgd2l0aCB0aGUga2VybmVsIGFuZCBzZXRzIGl0c2VsZiB1cCBmb3Igb3BlcmF0aW9uLiBJIHdhbnQgdG8gc2VlIGhvdyBpdCYjMzk7cyBpbnRlZ3JhdGVkLCBhbnkgcmVzb3VyY2UgYWxsb2NhdGlvbnMsIGFuZCBpbml0aWFsIGRhdGEgc3RydWN0dXJlcyBiZWluZyBkZWZpbmVkIGFuZCBidWlsdCB1cC4gVW5kZXJzdGFuZGluZyB0aGlzIGluaXQgc2VxdWVuY2UgaXMgKmNydWNpYWwqIGZvciBkZWJ1Z2dpbmcsIG1vZGlmaWNhdGlvbiwgb3IgZXZlbiBzaW1wbHkgdHJhY2luZyB0aGUgZXhlY3V0aW9uIGZsb3cgb2YgdGhlIGVudGlyZSBEYW1vbiBzdWJzeXN0ZW0uIExldCYjMzk7cyBzZWUgd2hhdCBnZW1zIGFyZSBoaWRkZW4gaW4gdGhpcyBzdGFydGluZyBwb2ludC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwNDoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttb2R1bGVfaW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O3NhbXBsZXMvZGFtb24vbXRpZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtzYW1wbGVzL2RhbW9uL210aWVyLmM9MjI3PXN0YXRpYyBpbnQgX19pbml0IGRhbW9uX3NhbXBsZV9tdGllcl9pbml0KHZvaWQpXG4tLVxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTI0NC1cbnNhbXBsZXMvZGFtb24vbXRpZXIuYzoyNDU6bW9kdWxlX2luaXQoZGFtb25fc2FtcGxlX210aWVyX2luaXQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDA0OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4NjcKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIGRlbGl2ZXJlZCBhcyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5OgoKKipNb2R1bGUgTG9jYXRpb24gYW5kIEVuYWJsZW1lbnQgSW52ZXN0aWdhdGlvbioqCgpBbHJpZ2h0LCB0aGlzIGlzIGEgc2FtcGxlIG1vZHVsZSDigJMgbm90aGluZyBwYXJ0aWN1bGFybHkgZ3JvdW5kLWJyZWFraW5nIHlldC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCB0aGUgc3RhbmRhcmQgcHJvY2VkdXJlIGZvciBlbmFibGluZyBzb21ldGhpbmcgbGlrZSB0aGlzIHdpdGhpbiB0aGUgYnVpbGQgc3lzdGVtLiBTaW5jZSBpdCYjMzk7cyBhIHNhbXBsZSwgdGhlIHR5cGljYWwgbG9jYXRpb24gZm9yIHRoZSBlbmFibGluZyBjb25maWd1cmF0aW9uIHdvdWxkIGJlIHdpdGhpbiB0aGUgYHNhbXBsZXMvYCBkaXJlY3RvcnksIHNwZWNpZmljYWxseSBpbiBhIGBLY29uZmlnYCBmaWxlLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIGVpdGhlciBgc2FtcGxlcy9kYW1vbi9LY29uZmlnYCAoYXNzdW1pbmcgdGhlcmUmIzM5O3MgYSBkZWRpY2F0ZWQgZGlyZWN0b3J5IGZvciB0aGlzIERhbW9uIHNhbXBsZSkgb3IgdGhlIG1vcmUgZ2VuZXJhbCBgc2FtcGxlcy9LY29uZmlnYCBmaWxlLiBUaGF0JiMzOTtzIHdoZXJlIEkgZXhwZWN0IHRvIGZpbmQgdGhlIHJlbGV2YW50IGBDT05GSUdfYCBvcHRpb24gb3IgZGVwZW5kZW5jeSBjaGFpbiB0aGF0IGNvbnRyb2xzIHRoZSBpbmNsdXNpb24gb2YgdGhpcyBwYXJ0aWN1bGFyIG1vZHVsZSBpbiB0aGUgYnVpbGQuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGxvZ2ljYWwgY29ubmVjdGlvbjsgdW5kZXJzdGFuZGluZyBob3cgdGhpcyBpcyBhY3RpdmF0ZWQgaXMga2V5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDA0OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210aWVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7c2FtcGxlcy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7c2FtcGxlcy9kYW1vbi9NYWtlZmlsZT00PW9iai0kKENPTkZJR19TQU1QTEVfREFNT05fUFJDTCkgJiM0Mzs9IHByY2wub1xuc2FtcGxlcy9kYW1vbi9NYWtlZmlsZTo1Om9iai0kKENPTkZJR19TQU1QTEVfREFNT05fTVRJRVIpICYjNDM7PSBtdGllci5vXG4tLVxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTctXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6ODojZGVmaW5lIHByX2ZtdChmbXQpIFwmIzM0O2RhbW9uX3NhbXBsZV9tdGllcjogXCYjMzQ7IGZtdFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTktXG4tLVxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTE3LSNlbmRpZlxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjE4OiNkZWZpbmUgTU9EVUxFX1BBUkFNX1BSRUZJWCBcJiMzNDtkYW1vbl9zYW1wbGVfbXRpZXIuXCYjMzQ7XG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMTktXG4tLVxuc2FtcGxlcy9kYW1vbi9tdGllci5jPTM2PW1vZHVsZV9wYXJhbShub2RlMF9tZW1fZnJlZV9icCwgdWxvbmcsIDA2MDApO1xuc2FtcGxlcy9kYW1vbi9tdGllci5jLTM3LVxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjM4OnN0YXRpYyBpbnQgZGFtb25fc2FtcGxlX210aWVyX2VuYWJsZV9zdG9yZShcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0zOS1cdFx0Y29uc3QgY2hhciAqdmFsLCBjb25zdCBzdHJ1Y3Qga2VybmVsX3BhcmFtICprcCk7XG4tLVxuc2FtcGxlcy9kYW1vbi9tdGllci5jPTQxPXN0YXRpYyBjb25zdCBzdHJ1Y3Qga2VybmVsX3BhcmFtX29wcyBlbmFibGVkX3BhcmFtX29wcyA9IHtcbnNhbXBsZXMvZGFtb24vbXRpZXIuYzo0MjpcdC5zZXQgPSBkYW1vbl9zYW1wbGVfbXRpZXJfZW5hYmxlX3N0b3JlLFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTQzLVx0LmdldCA9IHBhcmFtX2dldF9ib29sLFxuLS1cbnNhbXBsZXMvZGFtb24vbXRpZXIuYz02MD1zdGF0aWMgaW50IG5pZF90b19waHlzKGludCB0YXJnZXRfbm9kZSwgc3RydWN0IHJlZ2lvbl9yYW5nZSAqcmFuZ2UpXG4tLVxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTcyLVxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjczOnN0YXRpYyBzdHJ1Y3QgZGFtb25fY3R4ICpkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4KGJvb2wgcHJvbW90ZSlcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy03NC17XG4tLVxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTE3Ni1cbnNhbXBsZXMvZGFtb24vbXRpZXIuYzoxNzc6c3RhdGljIGludCBkYW1vbl9zYW1wbGVfbXRpZXJfc3RhcnQodm9pZClcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0xNzgte1xuLS1cbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0xODAtXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6MTgxOlx0Y3R4ID0gZGFtb25fc2FtcGxlX210aWVyX2J1aWxkX2N0eCh0cnVlKTtcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0xODItXHRpZiAoIWN0eClcbi0tXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMTg0LVx0Y3R4c1swXSA9IGN0eDtcbnNhbXBsZXMvZGFtb24vbXRpZXIuYzoxODU6XHRjdHggPSBkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4KGZhbHNlKTtcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0xODYtXHRpZiAoIWN0eCkge1xuLS1cbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0xOTMtXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6MTk0OnN0YXRpYyB2b2lkIGRhbW9uX3NhbXBsZV9tdGllcl9zdG9wKHZvaWQpXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMTk1LXtcbi0tXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMjAwLVxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjIwMTpzdGF0aWMgaW50IGRhbW9uX3NhbXBsZV9tdGllcl9lbmFibGVfc3RvcmUoXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMjAyLVx0XHRjb25zdCBjaGFyICp2YWwsIGNvbnN0IHN0cnVjdCBrZXJuZWxfcGFyYW0gKmtwKVxuLS1cbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yMTctXHRpZiAoZW5hYmxlZCkge1xuc2FtcGxlcy9kYW1vbi9tdGllci5jOjIxODpcdFx0ZXJyID0gZGFtb25fc2FtcGxlX210aWVyX3N0YXJ0KCk7XG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMjE5LVx0XHRpZiAoZXJyKVxuLS1cbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yMjItXHR9XG5zYW1wbGVzL2RhbW9uL210aWVyLmM6MjIzOlx0ZGFtb25fc2FtcGxlX210aWVyX3N0b3AoKTtcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yMjQtXHRyZXR1cm4gMDtcbi0tXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMjI2LVxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjIyNzpzdGF0aWMgaW50IF9faW5pdCBkYW1vbl9zYW1wbGVfbXRpZXJfaW5pdCh2b2lkKVxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTIyOC17XG4tLVxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTIzNy1cdGlmIChlbmFibGVkKSB7XG5zYW1wbGVzL2RhbW9uL210aWVyLmM6MjM4Olx0XHRlcnIgPSBkYW1vbl9zYW1wbGVfbXRpZXJfc3RhcnQoKTtcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yMzktXHRcdGlmIChlcnIpXG4tLVxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTI0NC1cbnNhbXBsZXMvZGFtb24vbXRpZXIuYzoyNDU6bW9kdWxlX2luaXQoZGFtb25fc2FtcGxlX210aWVyX2luaXQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDA0OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyNjIKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA0MzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgYGRhbW9uX3NhbXBsZV9tdGllcmAgTW9kdWxlOiBBIFF1aWNrIEFzc2Vzc21lbnQqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgbW9kdWxlLCBgZGFtb25fc2FtcGxlX210aWVyYCwgYW5kIHRoZSBrZXkgaGVyZSBpcyB0aGUgYGVuYWJsZWRgIG1vZHVsZSBwYXJhbWV0ZXIuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb246IGlzIGl0IHdvcnRoIGZ1enppbmc/IEl0JiMzOTtzIGEgc2FtcGxlIG1vZHVsZSwgYW5kIGdlbmVyYWxseSwgd2UgZG9uJiMzOTt0IGJvdGhlciBmdXp6aW5nIHRob3NlIHVubGVzcyB0aGV5JiMzOTtyZSB0aWVkIGludG8gc29tZSBjcnVjaWFsIGNvcmUgZmVhdHVyZSB0ZXN0cy4gQnV0LCBoYW5nIG9uLi4uIGRvZXNuJiMzOTt0IHN5emthbGxlciBhY3R1YWxseSAqZG9lcyogZnV6eiBgc2FtcGxlcy9gIGNvZGUgaWYgaXQgZXhwb3NlcyB0aGF0IGAvc3lzL21vZHVsZS9kYW1vbl9zYW1wbGVfbXRpZXIvcGFyYW1ldGVycy9lbmFibGVkYCBpbnRlcmZhY2U/IFRoYXQmIzM5O3Mgd2hhdCBJIG5lZWQgdG8gdmVyaWZ5LgoKTm93LCBsZXQmIzM5O3MgZ28gdGhyb3VnaCB0aGUgYFdvcnRoRnV6emluZ2AgY3JpdGVyaWEuIEkgaGF2ZSB0byBzZWUgaWYgdGhlIHBhdGNoIGNvbnRhaW5zIHB1cmVseSBub24tZnVuY3Rpb25hbCBjaGFuZ2VzIG9yIGlzIGltcG9zc2libGUgdG8gcmVhY2guIENhbiB0aGlzIG1vZHVsZSBiZSByZWFjaGVkPyBZZXMsIGl0IGNhbiBiZSByZWFjaGVkIGJ5IGxvYWRpbmcgaXQgb3Igd3JpdGluZyB0byB0aGF0IHBhcmFtZXRlci4gU28sIHRoZSAmIzM0O2ltcG9zc2libGUgdG8gcmVhY2gmIzM0OyBjcml0ZXJpYSBpcyBhIG5vLgoKVGhlIHRyaWNreSBwYXJ0IGlzLCB3aGlsZSBpdCYjMzk7cyBhIHNhbXBsZSwgaXQmIzM5O3MgZnVuY3Rpb25hbC4gSSBuZWVkIHRvIGRldGVybWluZSBpZiBpdCYjMzk7cyBjb25zaWRlcmVkICYjMzQ7cmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLiYjMzQ7IExldCYjMzk7cyBsb29rIGF0IGBzYW1wbGVzL2RhbW9uL210aWVyLmNgLi4uIGFoLCBpdCYjMzk7cyBhIERBTU9OIHNhbXBsZSwgYW5kIHNpbmNlIGl0IGlzIGNvbXBpbGVkLCBpdCBpcywgaW4gZmFjdCwgZnVuY3Rpb25hbC4gVGhlIGNvZGUgaXMgYXZhaWxhYmxlLCBzbyBpdCYjMzk7cyAqdGVjaG5pY2FsbHkqIHJlYWNoYWJsZS4gVGhlIGNyaXRlcmlhIHNheSAmIzM0O0lmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2ggdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuJiMzNDsKCkl0JiMzOTtzIGEgc2FtcGxlLCBidXQgaXQmIzM5O3MgcGFydCBvZiBEQU1PTi4gQXJlIHNhbXBsZSBtb2R1bGVzIGNvbnNpZGVyZWQgJiMzNDtjb3JlIGtlcm5lbCBsb2dpYyYjMzQ7PyBVc3VhbGx5LCB0aGV5JiMzOTtyZSBqdXN0IGV4YW1wbGVzLCBidXQgdGhleSBhcmUgY29tcGlsZWQgYW5kICpjYW4qIGJlIGxvYWRlZC4uLnNvIEkgaGF2ZSB0byBkZXRlcm1pbmUgaWYgdGhpcyBjYW4gcmVhc29uYWJseSBiZSBjb25zaWRlcmVkIGNvcmUgZnVuY3Rpb25hbGl0eS4KCkkgbmVlZCB0byBxdWlja2x5IGNoZWNrIHRoZSBgc2FtcGxlcy9LY29uZmlnYCB0byBzZWUgaWYgYFNBTVBMRV9EQU1PTl9NVElFUmAgaXMgZXZlbiBhbiBvcHRpb24uIElmIGl0IGlzIGF2YWlsYWJsZSwgaXQgd291bGQgc2VlbSByZWFzb25hYmxlIHRvIHNheSB0aGF0IHRoaXMgc2FtcGxlIG1vZHVsZSBpcyBpbnRlbmRlZCB0byBiZSBsb2FkZWQgYW5kIHJ1bi4gSSBjYW4gcmVhc29uYWJseSBjb25zaWRlciB0aGlzIGEgJiMzNDttYXliZSYjMzQ7IHRvIGJlIHdvcnRoIGZ1enppbmcsIGJhc2VkIG9uIHRoaXMgY3JpdGVyaWEgYW5kIHdoYXQgSSBrbm93IG9mIGhvdyBzeXprYWxsZXIgaGFuZGxlcyBzYW1wbGVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwNDoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtTQU1QTEVfREFNT05fTVRJRVImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtzYW1wbGVzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtzYW1wbGVzL01ha2VmaWxlPTQ0PW9iai0kKENPTkZJR19TQU1QTEVfREFNT05fUFJDTClcdFx0JiM0Mzs9IGRhbW9uL1xuc2FtcGxlcy9NYWtlZmlsZTo0NTpvYmotJChDT05GSUdfU0FNUExFX0RBTU9OX01USUVSKVx0JiM0Mzs9IGRhbW9uL1xuc2FtcGxlcy9NYWtlZmlsZS00Ni1vYmotJChDT05GSUdfU0FNUExFX0hVTkdfVEFTSylcdFx0JiM0Mzs9IGh1bmdfdGFzay9cbi0tXG5zYW1wbGVzL2RhbW9uL0tjb25maWc9MTc9Y29uZmlnIFNBTVBMRV9EQU1PTl9QUkNMXG4tLVxuc2FtcGxlcy9kYW1vbi9LY29uZmlnLTI5LVxuc2FtcGxlcy9kYW1vbi9LY29uZmlnOjMwOmNvbmZpZyBTQU1QTEVfREFNT05fTVRJRVJcbnNhbXBsZXMvZGFtb24vS2NvbmZpZy0zMS1cdGJvb2wgXCYjMzQ7REFNT04gc2FtcGxlIG1vZHVsZSBmb3IgbWVtb3J5IHRpZXJpbmdcJiMzNDtcbi0tXG5zYW1wbGVzL2RhbW9uL01ha2VmaWxlPTQ9b2JqLSQoQ09ORklHX1NBTVBMRV9EQU1PTl9QUkNMKSAmIzQzOz0gcHJjbC5vXG5zYW1wbGVzL2RhbW9uL01ha2VmaWxlOjU6b2JqLSQoQ09ORklHX1NBTVBMRV9EQU1PTl9NVElFUikgJiM0Mzs9IG10aWVyLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDQ6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTQ1MAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE3OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFNBTVBMRV9EQU1PTl9NVElFUiBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBTQU1QTEVfREFNT05fTVRJRVJgIGJvb2xlYW4gY29uZmlndXJhdGlvbiBvcHRpb24uIElmIGl0JiMzOTtzIGVuYWJsZWQsIHRoZSBjb2RlIGFzc29jaWF0ZWQgd2l0aCBpdCBpcyBjb21waWxlZC4gTm93LCBJIHNlZSB0aGlzIHBhdGNoIGFkZGluZyBhIGNoZWNrOiBgaWYgKGFkZHIuc3RhcnQgJmd0Oz0gYWRkci5lbmQpIGdvdG8gZnJlZV9vdXQ7YCB3aXRoaW4gdGhlIGBkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4YCBmdW5jdGlvbi4gU2VlbXMgbGlrZSBhIGJhc2ljIHNhbml0eSBjaGVjaywgYnV0IHRoZSBkZXZpbCYjMzk7cyBpbiB0aGUgZGV0YWlscywgcmlnaHQ/CgpUaGUgbmV4dCB0aGluZyBJIG5lZWQgdG8gZG8gaXMgdG8gZGV0ZXJtaW5lIHRoZSByZWFjaGFiaWxpdHkgb2YgdGhpcyBjb2RlLiBJdCYjMzk7cyBmdW5jdGlvbmFsLCBidXQgaXMgaXQgYWN0dWFsbHkgKnVzZWQqPyBMZXQmIzM5O3MgdHJhY2UgaXQgYmFjay4gT2theSwgc28gYGRhbW9uX3NhbXBsZV9tdGllcl9idWlsZF9jdHhgIGlzIGNhbGxlZCBmcm9tIGBkYW1vbl9zYW1wbGVfbXRpZXJfc3RhcnRgLCB3aGljaCBpcyBjYWxsZWQgZnJvbSBgZGFtb25fc2FtcGxlX210aWVyX2VuYWJsZV9zdG9yZWAgYW5kIGBkYW1vbl9zYW1wbGVfbXRpZXJfaW5pdGAuIEdvdCBpdCwgaXQmIzM5O3MgZGVmaW5pdGVseSByZWFjaGFibGUuCgpOb3csIEkmIzM5O20gZ29pbmcgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZSBhY3R1YWwgaW1wbGVtZW50YXRpb24gb2YgYGRhbW9uX3NhbXBsZV9tdGllcl9idWlsZF9jdHhgIHdpdGhpbiBgc2FtcGxlcy9kYW1vbi9tdGllci5jYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBzdWJ0bGUgYnVncyBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwNDoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O3NhbXBsZXMvZGFtb24vbXRpZXIuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTAwOlx0XHRhdHRycy5pbnRlcnZhbHNfZ29hbCA9IChzdHJ1Y3QgZGFtb25faW50ZXJ2YWxzX2dvYWwpIHtcbiAxMDE6XHRcdFx0LmFjY2Vzc19icCA9IDQwMCwgLmFnZ3JzID0gMyxcbiAxMDI6XHRcdFx0Lm1pbl9zYW1wbGVfdXMgPSA1MDAwLCAubWF4X3NhbXBsZV91cyA9IDEwMDAwMDAwLFxuIDEwMzpcdFx0fTtcbiAxMDQ6XHRcdGlmIChkYW1vbl9zZXRfYXR0cnMoY3R4LCBcdTAwMjZhdHRycykpXG4gMTA1Olx0XHRcdGdvdG8gZnJlZV9vdXQ7XG4gMTA2Olx0XHRpZiAoZGFtb25fc2VsZWN0X29wcyhjdHgsIERBTU9OX09QU19QQUREUikpXG4gMTA3Olx0XHRcdGdvdG8gZnJlZV9vdXQ7XG4gMTA4Olx0XG4gMTA5Olx0XHR0YXJnZXQgPSBkYW1vbl9uZXdfdGFyZ2V0KCk7XG4gMTEwOlx0XHRpZiAoIXRhcmdldClcbiAxMTE6XHRcdFx0Z290byBmcmVlX291dDtcbiAxMTI6XHRcdGRhbW9uX2FkZF90YXJnZXQoY3R4LCB0YXJnZXQpO1xuIDExMzpcdFxuIDExNDpcdFx0aWYgKGRldGVjdF9ub2RlX2FkZHJlc3Nlcykge1xuIDExNTpcdFx0XHRyZXQgPSBwcm9tb3RlID8gbmlkX3RvX3BoeXMoMSwgXHUwMDI2YWRkcikgOiBuaWRfdG9fcGh5cygwLCBcdTAwMjZhZGRyKTtcbiAxMTY6XHRcdFx0aWYgKHJldClcbiAxMTc6XHRcdFx0XHRnb3RvIGZyZWVfb3V0O1xuIDExODpcdFx0fSBlbHNlIHtcbiAxMTk6XHRcdFx0YWRkci5zdGFydCA9IHByb21vdGUgPyBub2RlMV9zdGFydF9hZGRyIDogbm9kZTBfc3RhcnRfYWRkcjtcbiAxMjA6XHRcdFx0YWRkci5lbmQgPSBwcm9tb3RlID8gbm9kZTFfZW5kX2FkZHIgOiBub2RlMF9lbmRfYWRkcjtcbiAxMjE6XHRcdH1cbiAxMjI6XHRcbiAxMjM6XHRcdGlmIChhZGRyLnN0YXJ0IFx1MDAzZT0gYWRkci5lbmQpXG4gMTI0Olx0XHRcdGdvdG8gZnJlZV9vdXQ7XG4gMTI1Olx0XG4gMTI2Olx0XHRyYW5nZS5zdGFydCA9IGFkZHIuc3RhcnQ7XG4gMTI3Olx0XHRyYW5nZS5lbmQgPSBhZGRyLmVuZDtcbiAxMjg6XHRcbiAxMjk6XHRcdHJldCA9IGRhbW9uX3NldF9yZWdpb25zKHRhcmdldCwgXHUwMDI2cmFuZ2UsIDEsIERBTU9OX01JTl9SRUdJT05fU1opO1xuIDEzMDpcdFx0aWYgKHJldClcbiAxMzE6XHRcdFx0Z290byBmcmVlX291dDtcbiAxMzI6XHRcbiAxMzM6XHRcdHNjaGVtZSA9IGRhbW9uX25ld19zY2hlbWUoXG4gMTM0Olx0XHRcdFx0LyogYWNjZXNzIHBhdHRlcm4gKi9cbiAxMzU6XHRcdFx0XHRcdTAwMjYoc3RydWN0IGRhbW9zX2FjY2Vzc19wYXR0ZXJuKSB7XG4gMTM2Olx0XHRcdFx0XHQubWluX3N6X3JlZ2lvbiA9IFBBR0VfU0laRSxcbiAxMzc6XHRcdFx0XHRcdC5tYXhfc3pfcmVnaW9uID0gVUxPTkdfTUFYLFxuIDEzODpcdFx0XHRcdFx0Lm1pbl9ucl9hY2Nlc3NlcyA9IHByb21vdGUgPyAxIDogMCxcbiAxMzk6XHRcdFx0XHRcdC5tYXhfbnJfYWNjZXNzZXMgPSBwcm9tb3RlID8gVUlOVF9NQVggOiAwLFxuIDE0MDpcdFx0XHRcdFx0Lm1pbl9hZ2VfcmVnaW9uID0gMCxcbiAxNDE6XHRcdFx0XHRcdC5tYXhfYWdlX3JlZ2lvbiA9IFVJTlRfTUFYfSxcbiAxNDI6XHRcdFx0XHQvKiBhY3Rpb24gKi9cbiAxNDM6XHRcdFx0XHRwcm9tb3RlID8gREFNT1NfTUlHUkFURV9IT1QgOiBEQU1PU19NSUdSQVRFX0NPTEQsXG4gMTQ0Olx0XHRcdFx0MTAwMDAwMCxcdC8qIGFwcGx5IGludGVydmFsICgxcykgKi9cbiAxNDU6XHRcdFx0XHRcdTAwMjYoc3RydWN0IGRhbW9zX3F1b3RhKXtcbiAxNDY6XHRcdFx0XHRcdC8qIDIwMCBNaUIgcGVyIHNlYyBieSBtb3N0ICovXG4gMTQ3Olx0XHRcdFx0XHQucmVzZXRfaW50ZXJ2YWwgPSAxMDAwLFxuIDE0ODpcdFx0XHRcdFx0LnN6ID0gMjAwICogMTAyNCAqIDEwMjQsXG4gMTQ5Olx0XHRcdFx0XHQvKiBpZ25vcmUgc2l6ZSBvZiByZWdpb24gd2hlbiBwcmlvcml0aXppbmcgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDQ6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjc4OAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDEzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBCdWcgRml4IGluIGEgU2FtcGxlIE1vZHVsZSoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBjcnVjaWFsIGNoZWNrOiBgaWYgKGFkZHIuc3RhcnQgJmd0Oz0gYWRkci5lbmQpIGdvdG8gZnJlZV9vdXQ7YC4gUmlnaHQgYXdheSwgSSBzZWUgdGhpcyBpcyBwdXJlbHkgZnVuY3Rpb25hbC4gSXQmIzM5O3MgYSBjbGVhciBhdHRlbXB0IHRvIHByZXZlbnQgYSBidWcgd2hlcmUgdGhlIHN0YXJ0IGFkZHJlc3MgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBlbmQgYWRkcmVzcywgd2hpY2ggbWFrZXMgaW50dWl0aXZlIHNlbnNlIOKAkyB0aGF0JiMzOTtzIGEgcmFuZ2UgZXJyb3IuCgpUaGUgcXVlc3Rpb24gbm93IGlzLCBpcyBpdCB3b3J0aCBmdXp6aW5nIHRoaXM/IE5vcm1hbGx5LCBJIHdvdWxkbiYjMzk7dCBib3RoZXIgd2l0aCBzYW1wbGUgbW9kdWxlcyBpbiBTeXprYWxsZXIgdW5sZXNzIHNwZWNpZmljYWxseSBlbmFibGVkIGFuZCB0YXJnZXRlZC4gVGhleSYjMzk7cmUgdXN1YWxseSBsb3cgcHJpb3JpdHkuIEJ1dCB0aGlzIG9uZS4uLiBpcyBhIHNhbXBsZSBhbmQgaWYgd2UgZW5hYmxlIGBTQU1QTEVfREFNT05fTVRJRVJgLCB0aGUgbW9kdWxlICp3aWxsKiBiZSBjb21waWxlZCBhbmQgbG9hZGVkISBIb2xkIG9uLCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQuIEl0JiMzOTtzIGp1c3QgYSBib29sZWFuIGNvbmZpZywgd2hpY2ggbWVhbnMgaXTigJlzIGVpdGhlciBpbiBvciBvdXQuIEp1c3QgdG8gYmUgY29tcGxldGVseSBzdXJlLCBJJiMzOTtsbCBnbyBiYWNrIGFuZCByZXZpZXcgdGhlIGBzYW1wbGVzL2RhbW9uL0tjb25maWdgIGZpbGUgb25lIG1vcmUgdGltZS4gR290dGEgbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55IGRlcGVuZGVuY2llcyBvciBvdGhlciByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDA0OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7c2FtcGxlcy9kYW1vbi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdFxuICAgMzpcdG1lbnUgXCYjMzQ7REFNT04gU2FtcGxlc1wmIzM0O1xuICAgNDpcdFxuICAgNTpcdGNvbmZpZyBTQU1QTEVfREFNT05fV1NTRVxuICAgNjpcdFx0Ym9vbCBcJiMzNDtEQU1PTiBzYW1wbGUgbW9kdWxlIGZvciB3b3JraW5nIHNldCBzaXplIGVzdGltYXRpb25cJiMzNDtcbiAgIDc6XHRcdGRlcGVuZHMgb24gREFNT04gXHUwMDI2XHUwMDI2IERBTU9OX1ZBRERSXG4gICA4Olx0XHRoZWxwXG4gICA5Olx0XHQgIFRoaXMgYnVpbGRzIERBTU9OIHNhbXBsZSBtb2R1bGUgZm9yIHdvcmtpbmcgc2V0IHNpemUgZXN0aW1hdGlvbi5cbiAgMTA6XHRcbiAgMTE6XHRcdCAgVGhlIG1vZHVsZSByZWNlaXZlcyBhIHBpZCwgbW9uaXRvciBhY2Nlc3MgdG8gdGhlIHZpcnR1YWwgYWRkcmVzc1xuICAxMjpcdFx0ICBzcGFjZSBvZiB0aGUgcHJvY2VzcywgZXN0aW1hdGUgd29ya2luZyBzZXQgc2l6ZSBvZiB0aGUgcHJvY2VzcywgYW5kXG4gIDEzOlx0XHQgIHJlcGVhdGVkbHkgcHJpbnRzIHRoZSBzaXplIG9uIHRoZSBrZXJuZWwgbG9nLlxuICAxNDpcdFxuICAxNTpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuICAxNjpcdFxuICAxNzpcdGNvbmZpZyBTQU1QTEVfREFNT05fUFJDTFxuICAxODpcdFx0Ym9vbCBcJiMzNDtEQU1PTiBzYW1wbGUgbW9kdWxlIGZvciBhY2Nlc3MtYXdhcmUgcHJvYWN0aXZlIHJlY2xhbWF0aW9uXCYjMzQ7XG4gIDE5Olx0XHRkZXBlbmRzIG9uIERBTU9OIFx1MDAyNlx1MDAyNiBEQU1PTl9WQUREUlxuICAyMDpcdFx0aGVscFxuICAyMTpcdFx0ICBUaGlzIGJ1aWxkcyBEQU1PTiBzYW1wbGUgbW9kdWxlIGZvciBhY2Nlc3MtYXdhcmUgcHJvYWN0aXZlXG4gIDIyOlx0XHQgIHJlY2xhbWF0aW9uLlxuICAyMzpcdFxuICAyNDpcdFx0ICBUaGUgbW9kdWxlIHJlY2VpdmVzIGEgcGlkLCBtb25pdG9yIGFjY2VzcyB0byB0aGUgdmlydHVhbCBhZGRyZXNzXG4gIDI1Olx0XHQgIHNwYWNlIG9mIHRoZSBwcm9jZXNzLCBmaW5kIG1lbW9yeSByZWdpb25zIHRoYXQgbm90IGFjY2Vzc2VkLCBhbmRcbiAgMjY6XHRcdCAgcHJvYWN0aXZlbHkgcmVjbGFpbSB0aGUgcmVnaW9ucy5cbiAgMjc6XHRcbiAgMjg6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgMjk6XHRcbiAgMzA6XHRjb25maWcgU0FNUExFX0RBTU9OX01USUVSXG4gIDMxOlx0XHRib29sIFwmIzM0O0RBTU9OIHNhbXBsZSBtb2R1bGUgZm9yIG1lbW9yeSB0aWVyaW5nXCYjMzQ7XG4gIDMyOlx0XHRkZXBlbmRzIG9uIERBTU9OIFx1MDAyNlx1MDAyNiBEQU1PTl9QQUREUlxuICAzMzpcdFx0aGVscFxuICAzNDpcdFx0ICBUaHBzIGJ1aWxkcyBEQU1PTiBzYW1wbGUgbW9kdWxlIGZvciBtZW1vcnkgdGllcmlnbi5cbiAgMzU6XHRcbiAgMzY6XHRcdCAgVGhlIG1vZHVsZSBhc3N1bWVzIHRoZSBzeXN0ZW0gaXMgY29uc3RydWN0ZWQgd2l0aCB0d28gTlVNQSBub2RlcyxcbiAgMzc6XHRcdCAgd2hpY2ggc2VlbXMgYXMgbG9jYWwgYW5kIHJlbW90ZSBub2RlcyB0byBhbGwgQ1BVcy4gIEZvciBleGFtcGxlLFxuICAzODpcdFx0ICBub2RlMCBpcyBmb3IgRERSNSBEUkFNcyBjb25uZWN0ZWQgdmlhIERJTU0sIHdoaWxlIG5vZGUxIGlzIGZvciBERFI0XG4gIDM5Olx0XHQgIERSQU1zIGNvbm5lY3RlZCB2aWEgQ1hMLlxuICA0MDpcdFxuICA0MTpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuICA0MjpcdFxuICA0MzpcdGVuZG1lbnVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDQ6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzc1OAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDk4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgREFNT04gTXVsdGktVGllciBJbml0aWFsaXphdGlvbioqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgYm9vbGVhbiBjb25maWd1cmF0aW9uIGhlcmUuIFRoYXQgbWVhbnMgaXQmIzM5O3MgZWl0aGVyIGVuYWJsZWQgb3IgZGlzYWJsZWQgYnkgZGVmYXVsdCwgYmFrZWQgZGlyZWN0bHkgaW50byB0aGUgc3lzdGVtLCB5ZXM/IElmIHRoaXMgbXVsdGktdGllciBmdW5jdGlvbmFsaXR5IGlzIGluZGVlZCBidWlsdC1pbiBhbmQgYWN0aXZlLCB0aGVuIHRoZSBgZGFtb25fc2FtcGxlX210aWVyX2luaXRgIGZ1bmN0aW9uICpzaG91bGQqIGJlIGNhbGxlZCBkdXJpbmcgdGhlIGJvb3QgcHJvY2Vzcy4gQnV0IGhvbGQgb24uLi4gSSBzZWVtIHRvIHJlY2FsbCB0aGF0IGZ1bmN0aW9uIGhhdmluZyBhIGNoZWNrIHdpdGhpbiBpdDogYGlmIChlbmFibGVkKWAuIE5vdywgdGhhdCYjMzk7cyBpbnRlcmVzdGluZy4gSSBiZXQgYGVuYWJsZWRgIGlzIGEgbW9kdWxlIHBhcmFtZXRlciwgbGlrZWx5IGRlZmF1bHRpbmcgdG8gYGZhbHNlYC4gSSBzaG91bGQgcHJvYmFibHkgY29uZmlybSB0aGF0IGRlZmF1bHQgYW5kIG90aGVyIGFzcGVjdHMuIFJpZ2h0LCBiZXR0ZXIgY2hlY2sgdGhlIHNvdXJjZSBjb2RlIGl0c2VsZiwgc3BlY2lmaWNhbGx5IGBzYW1wbGVzL2RhbW9uL210aWVyLmNgIHRvIHNlZSBob3cgYGVuYWJsZWRgIGlzIGFjdHVhbGx5IGRlZmluZWQgYW5kIHVzZWQuIEdvdHRhIGdldCB0aGUgZGV0YWlscyBzdHJhaWdodCBiZWZvcmUgbW92aW5nIGZvcndhcmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDA0OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2VuYWJsZWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtzYW1wbGVzL2RhbW9uL210aWVyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7c2FtcGxlcy9kYW1vbi9tdGllci5jPTM4PXN0YXRpYyBpbnQgZGFtb25fc2FtcGxlX210aWVyX2VuYWJsZV9zdG9yZShcbi0tXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtNDAtXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6NDE6c3RhdGljIGNvbnN0IHN0cnVjdCBrZXJuZWxfcGFyYW1fb3BzIGVuYWJsZWRfcGFyYW1fb3BzID0ge1xuc2FtcGxlcy9kYW1vbi9tdGllci5jLTQyLVx0LnNldCA9IGRhbW9uX3NhbXBsZV9tdGllcl9lbmFibGVfc3RvcmUsXG4tLVxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTQ1LVxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjQ2OnN0YXRpYyBib29sIGVuYWJsZWQgX19yZWFkX21vc3RseTtcbnNhbXBsZXMvZGFtb24vbXRpZXIuYzo0Nzptb2R1bGVfcGFyYW1fY2IoZW5hYmxlZCwgXHUwMDI2ZW5hYmxlZF9wYXJhbV9vcHMsIFx1MDAyNmVuYWJsZWQsIDA2MDApO1xuc2FtcGxlcy9kYW1vbi9tdGllci5jOjQ4Ok1PRFVMRV9QQVJNX0RFU0MoZW5hYmxlZCwgXCYjMzQ7RW5hYmxlIG9yIGRpc2FibGUgREFNT05fU0FNUExFX01USUVSXCYjMzQ7KTtcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy00OS1cbi0tXG5zYW1wbGVzL2RhbW9uL210aWVyLmM9MjAxPXN0YXRpYyBpbnQgZGFtb25fc2FtcGxlX210aWVyX2VuYWJsZV9zdG9yZShcbi0tXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMjAzLXtcbnNhbXBsZXMvZGFtb24vbXRpZXIuYzoyMDQ6XHRib29sIGlzX2VuYWJsZWQgPSBlbmFibGVkO1xuc2FtcGxlcy9kYW1vbi9tdGllci5jLTIwNS1cdGludCBlcnI7XG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMjA2LVxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjIwNzpcdGVyciA9IGtzdHJ0b2Jvb2wodmFsLCBcdTAwMjZlbmFibGVkKTtcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yMDgtXHRpZiAoZXJyKVxuLS1cbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yMTAtXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6MjExOlx0aWYgKGVuYWJsZWQgPT0gaXNfZW5hYmxlZClcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yMTItXHRcdHJldHVybiAwO1xuLS1cbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yMTYtXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6MjE3Olx0aWYgKGVuYWJsZWQpIHtcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yMTgtXHRcdGVyciA9IGRhbW9uX3NhbXBsZV9tdGllcl9zdGFydCgpO1xuc2FtcGxlcy9kYW1vbi9tdGllci5jLTIxOS1cdFx0aWYgKGVycilcbnNhbXBsZXMvZGFtb24vbXRpZXIuYzoyMjA6XHRcdFx0ZW5hYmxlZCA9IGZhbHNlO1xuc2FtcGxlcy9kYW1vbi9tdGllci5jLTIyMS1cdFx0cmV0dXJuIGVycjtcbi0tXG5zYW1wbGVzL2RhbW9uL210aWVyLmM9MjI3PXN0YXRpYyBpbnQgX19pbml0IGRhbW9uX3NhbXBsZV9tdGllcl9pbml0KHZvaWQpXG4tLVxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTIzMS1cdGlmICghZGFtb25faW5pdGlhbGl6ZWQoKSkge1xuc2FtcGxlcy9kYW1vbi9tdGllci5jOjIzMjpcdFx0aWYgKGVuYWJsZWQpXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6MjMzOlx0XHRcdGVuYWJsZWQgPSBmYWxzZTtcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yMzQtXHRcdHJldHVybiAtRU5PTUVNO1xuLS1cbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yMzYtXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6MjM3Olx0aWYgKGVuYWJsZWQpIHtcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yMzgtXHRcdGVyciA9IGRhbW9uX3NhbXBsZV9tdGllcl9zdGFydCgpO1xuc2FtcGxlcy9kYW1vbi9tdGllci5jLTIzOS1cdFx0aWYgKGVycilcbnNhbXBsZXMvZGFtb24vbXRpZXIuYzoyNDA6XHRcdFx0ZW5hYmxlZCA9IGZhbHNlO1xuc2FtcGxlcy9kYW1vbi9tdGllci5jLTI0MS1cdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDQ6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODg4OQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDcwNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIERlY2lzaW9uIGZvciBkYW1vbl9zYW1wbGVfbXRpZXIqKgoKT2theSwgbGV0JiMzOTtzIHRoaW5rIHRoaXMgdGhyb3VnaC4gVGhpcyBwYXRjaCB0b3VjaGVzIGAvc3lzL21vZHVsZS9kYW1vbl9zYW1wbGVfbXRpZXIvcGFyYW1ldGVycy9lbmFibGVkYCwgd2hpY2ggSSBrbm93IGZyb20gZXhwZXJpZW5jZSB0cmlnZ2VycyBgZGFtb25fc2FtcGxlX210aWVyX2VuYWJsZV9zdG9yZWAsIGxlYWRpbmcgdG8gYGRhbW9uX3NhbXBsZV9tdGllcl9zdGFydGAgYW5kIGZpbmFsbHkgYGRhbW9uX3NhbXBsZV9tdGllcl9idWlsZF9jdHhgLiBTaW5jZSBTeXprYWxsZXIgaGl0cyBgL3N5cy9gIGZpbGVzLCBpdCYjMzk7cyBkZWZpbml0ZWx5IHBvc3NpYmxlIHRvIHRyaWdnZXIgdGhpcyBjb2RlLiBUaGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgaXQmIzM5O3MgKndvcnRoKiBmdXp6aW5nLgoKSSYjMzk7bSBjaGVja2luZyBpZiBTeXprYWxsZXIgYWxyZWFkeSBoYXMgYSBkZXNjcmlwdGlvbiBmb3IgYGRhbW9uX3NhbXBsZV9tdGllcmAsIGJ1dCBldmVuIGlmIGl0IGRvZXNuJiMzOTt0LCBpdCBjYW4gZGlzY292ZXIgaXQgaWYgdGhlIG1vZHVsZSYjMzk7cyBlbmFibGVkLiBUaGUgY2hhbmdlIGl0c2VsZiBpcyBzZWVtaW5nbHkgc2ltcGxlIC0gYSBjaGVjayB0byBwcmV2ZW50IGBhZGRyLnN0YXJ0YCBmcm9tIGJlaW5nIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBgYWRkci5lbmRgLCB3aGljaCBmaXhlcyBhbiBpbnZhbGlkIHJhbmdlLgoKSSBuZWVkIHRvIGRlY2lkZSBgV29ydGhGdXp6aW5nPXRydWVgIG9yIGBmYWxzZWAuCgpGaXJzdCwgbGV0JiMzOTtzIHZlcmlmeSB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zLiBgU0FNUExFX0RBTU9OX01USUVSYCBkZXBlbmRzIG9uIGBEQU1PTiAmYW1wOyZhbXA7IERBTU9OX1BBRERSYCwgc28gdGhhdCYjMzk7cyB0aGUga2V5IGNvbmZpZyB0byBlbmFibGUuCgpJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBpbXBvcnRhbnQgc3ltYm9scy4gYGRhbW9uX3NhbXBsZV9tdGllcl9idWlsZF9jdHhgLCBgZGFtb25fc2FtcGxlX210aWVyX3N0YXJ0YCwgYW5kIGBkYW1vbl9zYW1wbGVfbXRpZXJfZW5hYmxlX3N0b3JlYCBhcmUgdGhlIGZ1bmN0aW9ucyBvZiBpbnRlcmVzdC4gV2FpdCwgSSByZW1lbWJlciB0aGF0IGBkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4YCBpcyBzdGF0aWMuIEkgcXVpY2tseSBjb25maXJtIHRoYXQgaXQmIzM5O3MgaW4gYG10aWVyLmNgLCBzbyBpdCYjMzk7cyBhIGdvb2QgZnVuY3Rpb24gdG8gZm9jdXMgb24uCgpMZXQmIzM5O3MgcXVpY2tseSBjb25maXJtIHRoYXQgYFNBTVBMRV9EQU1PTl9NVElFUmAgaXMgaW5kZWVkIHRoZSBjb25maWd1cmF0aW9uIHRoYXQgZW5hYmxlcyBldmVyeXRoaW5nLiBZZXMuCgpOb3csIGxldCYjMzk7cyByZXZpZXcgdGhlIGluc3RydWN0aW9ucy4gVGhleSBzYXkgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9dHJ1ZWAgaWYgdGhlIGNoYW5nZSBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMuIElzIGEgKnNhbXBsZSogbW9kdWxlICYjMzQ7Y29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMmIzM0Oz8gVXN1YWxseSBub3QsIGJ1dCBoZXJlIGl0IGhhcyBhIHN5c2ZzIGludGVyZmFjZS4gVGhhdCBjaGFuZ2VzIHRoaW5ncy4gSXQmIzM5O3MgYSBzYW1wbGUsIGJ1dCBTeXprYWxsZXIgY2FuIHN0aWxsIGludGVyYWN0IHdpdGggaXQuCgpJZiBJIHNheSB0cnVlLCBTeXprYWxsZXIgd2lsbCBmdXp6IGl0LiBJcyB0aGF0IGNvcnJlY3Q/IFRoZSBwYXRjaCAqaXMqIGEgZnVuY3Rpb25hbCBmaXggaW4gYSBzYW1wbGUgbW9kdWxlLCBub3QgYSBoeXBvdGhldGljYWwgY29kZSBwYXRoLiBJJiMzOTtsbCBhZG1pdCBJJiMzOTttIGxlYW5pbmcgdG93YXJkIHRydWUgYmVjYXVzZSBpdCYjMzk7cyBib3RoIGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZSwgYnV0IGlzIHRoYXQgY29ycmVjdD8KClRoaW5raW5nIGFib3V0IHRoZSBpbnN0cnVjdGlvbnMgYWdhaW4sIGl0IHNwZWNpZmllcyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIGNoYW5nZXMgYXJlIGZvciAmIzM0O0NvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSYjMzQ7LiBTYW1wbGUgbW9kdWxlcyBhcmVuJiMzOTt0IGV4cGxpY2l0bHkgZXhjbHVkZWQuCgpPa2F5LCBJJiMzOTttIGdvaW5nIHRvIHJldHVybiBgdHJ1ZWAuIEl0JiMzOTtzIGEgZnVuY3Rpb25hbCBwYXRjaCBpbiBhIHJlYWNoYWJsZSBjb2RlIHBhdGguIFRoZSByaXNrIHNlZW1zIG1pbmltYWwuCgpIZXJlJiMzOTtzIG15IGNvbmNsdXNpb246CgpDb25maWdzOiBgU0FNUExFX0RBTU9OX01USUVSYApGb2N1c1N5bWJvbHM6IGBkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4YAoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwNDoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7c2FtcGxlcy9kYW1vbi9tdGllci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O3NhbXBsZXMvZGFtb24vbXRpZXIuYz02MD1zdGF0aWMgaW50IG5pZF90b19waHlzKGludCB0YXJnZXRfbm9kZSwgc3RydWN0IHJlZ2lvbl9yYW5nZSAqcmFuZ2UpXG4tLVxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTcyLVxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjczOnN0YXRpYyBzdHJ1Y3QgZGFtb25fY3R4ICpkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4KGJvb2wgcHJvbW90ZSlcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy03NC17XG4tLVxuc2FtcGxlcy9kYW1vbi9tdGllci5jPTE3Nz1zdGF0aWMgaW50IGRhbW9uX3NhbXBsZV9tdGllcl9zdGFydCh2b2lkKVxuLS1cbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0xODAtXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6MTgxOlx0Y3R4ID0gZGFtb25fc2FtcGxlX210aWVyX2J1aWxkX2N0eCh0cnVlKTtcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0xODItXHRpZiAoIWN0eClcbi0tXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMTg0LVx0Y3R4c1swXSA9IGN0eDtcbnNhbXBsZXMvZGFtb24vbXRpZXIuYzoxODU6XHRjdHggPSBkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4KGZhbHNlKTtcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0xODYtXHRpZiAoIWN0eCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwNDoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDU4MgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDEyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB1bmRlcnN0YW5kaW5nLCBjb25zaWRlcmluZyBJJiMzOTttIHRoZSBvbmUgdGhpbmtpbmcgdGhyb3VnaCB0aGlzIGNvbmZpZ3VyYXRpb24gbG9naWM6CgoqKkNvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzIGZvciBgZGFtb25fc2FtcGxlX210aWVyX2J1aWxkX2N0eGAqKgoKQWxyaWdodCwgc28gaXQmIzM5O3MgY29uZmlybWVkIHRoYXQgb25seSBgZGFtb25fc2FtcGxlX210aWVyX2J1aWxkX2N0eGAgaXMgZGlyZWN0bHkgbW9kaWZpZWQgaW4gdGhpcyBzY2VuYXJpby4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gdmVyaWZ5IHdoZXRoZXIgYW55IG90aGVyIGNvbmZpZ3VyYXRpb25zIGFyZSBpbmhlcmVudGx5IHJlcXVpcmVkLCBhcyBhIGRvd25zdHJlYW0gZWZmZWN0IG9mIGVuYWJsaW5nIHRoaXMgb25lLgoKTG9va2luZyBjbG9zZXIsIGBTQU1QTEVfREFNT05fTVRJRVJgIGhhcyBgZGVwZW5kcyBvbiBEQU1PTiAmYW1wOyZhbXA7IERBTU9OX1BBRERSYC4gT2theSwgdGhhdCBtYWtlcyBzZW5zZS4gU3l6a2FsbGVyIHdpbGwgdWx0aW1hdGVseSBhdHRlbXB0IHRvIGVuYWJsZSBgU0FNUExFX0RBTU9OX01USUVSYC4gU2luY2UgdGhlc2UgYXJlIGRlcGVuZGVuY2llcywgYW5kIG5vdCBqdXN0IHNlbGVjdHMsIEkgbmVlZCB0byBlbnN1cmUgYERBTU9OYCBhbmQgYERBTU9OX1BBRERSYCBhcmUgYWxzbyBleHBsaWNpdGx5IGluY2x1ZGVkIGluIHRoZSBmaW5hbCBjb25maWd1cmF0aW9uIGxpc3QuIFN5emthbGxlciYjMzk7cyBhdHRlbXB0IHdpbGwgaW1wbGljaXRseSBlbmFibGUgdGhlbSwgc28gaXQgd291bGQgYmUgbmVnbGlnZW50IHRvIGxlYXZlIHRoZW0gb3V0LiBTbywgdGhvc2UgKm11c3QqIGJlIGluY2x1ZGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwNDoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgU0FNUExFX0RBTU9OX01USUVSJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7c2FtcGxlcy9kYW1vbi9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O3NhbXBsZXMvZGFtb24vS2NvbmZpZz0xNz1jb25maWcgU0FNUExFX0RBTU9OX1BSQ0xcbi0tXG5zYW1wbGVzL2RhbW9uL0tjb25maWctMjktXG5zYW1wbGVzL2RhbW9uL0tjb25maWc6MzA6Y29uZmlnIFNBTVBMRV9EQU1PTl9NVElFUlxuc2FtcGxlcy9kYW1vbi9LY29uZmlnLTMxLVx0Ym9vbCBcJiMzNDtEQU1PTiBzYW1wbGUgbW9kdWxlIGZvciBtZW1vcnkgdGllcmluZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwNDoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTA0MAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqUmV2aXNpdGluZyB0aGUgS2NvbmZpZyBpbiBEYW1vbiYjMzk7cyBTYW1wbGVzKioKCkFscmlnaHQsIGxldCYjMzk7cyBjaXJjbGUgYmFjayB0byBgc2FtcGxlcy9kYW1vbi9LY29uZmlnYC4gSSBuZWVkIHRvIHJldmlzaXQgdGhhdCBjb25maWd1cmF0aW9uIGZpbGUuIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyBpdCYjMzk7cyBwcm9iYWJseSBrZXkgZm9yIHRoZSBjb25maWd1cmF0aW9uIG9mIHRoZSBEYW1vbiAoRHluYW1pYyBBY2Nlc3MgTW9uaXRvcikgc2FtcGxpbmcgd2l0aGluIHRoYXQgc3BlY2lmaWMgc2FtcGxlIGNvZGUuIEkgcHJvYmFibHkgd2FudCB0byBsb29rIGZvciBzcGVjaWZpYyBjb25maWcgb3B0aW9ucywgYW55IGRlcGVuZGVuY2llcyBkZWZpbmVkIHRoZXJlLCBhbmQgdGhlIG92ZXJhbGwgc3RydWN0dXJlIG9mIGhvdyBEYW1vbiYjMzk7cyBmZWF0dXJlcyBhcmUgZXhwb3NlZCBhbmQgY29udHJvbGxlZCB3aXRoaW4gdGhhdCBkZW1vbnN0cmF0aW9uIGNvZGUuIFRoaXMgc2hvdWxkIGluZm9ybSBteSBvbmdvaW5nIHdvcmssIGFuZCBwcm9iYWJseSBhbnkgcmVmaW5lbWVudHMgSSYjMzk7bSBwbGFubmluZyB0byBtYWtlIHRvIGhvdyB3ZSBpbnRlZ3JhdGUgb3IgdXNlIERhbW9uIGluIHByb2R1Y3Rpb24gb3Igd2l0aCBtb3JlIGNvbXBsZXggdXNlIGNhc2VzLiBJdCYjMzk7cyBhIGtleSBzb3VyY2UgdG8gY2xhcmlmeSB0aGUgc2FtcGxlIGltcGxlbWVudGF0aW9uIGNob2ljZXMgYW5kIGNvbmZpZ3VyYXRpb24gZGV0YWlscy4gVGhpcyBzY2FuIHdpbGwgbGlrZWx5IGdpdmUgbWUgYmV0dGVyIGluc2lnaHQgb24gdGhlIHB1cnBvc2Ugb2YgdGhvc2Ugc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwNDoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O3NhbXBsZXMvZGFtb24vS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMjA6XHRcdGhlbHBcbiAgMjE6XHRcdCAgVGhpcyBidWlsZHMgREFNT04gc2FtcGxlIG1vZHVsZSBmb3IgYWNjZXNzLWF3YXJlIHByb2FjdGl2ZVxuICAyMjpcdFx0ICByZWNsYW1hdGlvbi5cbiAgMjM6XHRcbiAgMjQ6XHRcdCAgVGhlIG1vZHVsZSByZWNlaXZlcyBhIHBpZCwgbW9uaXRvciBhY2Nlc3MgdG8gdGhlIHZpcnR1YWwgYWRkcmVzc1xuICAyNTpcdFx0ICBzcGFjZSBvZiB0aGUgcHJvY2VzcywgZmluZCBtZW1vcnkgcmVnaW9ucyB0aGF0IG5vdCBhY2Nlc3NlZCwgYW5kXG4gIDI2Olx0XHQgIHByb2FjdGl2ZWx5IHJlY2xhaW0gdGhlIHJlZ2lvbnMuXG4gIDI3Olx0XG4gIDI4Olx0XHQgIElmIHVuc3VyZSwgc2F5IE4uXG4gIDI5Olx0XG4gIDMwOlx0Y29uZmlnIFNBTVBMRV9EQU1PTl9NVElFUlxuICAzMTpcdFx0Ym9vbCBcJiMzNDtEQU1PTiBzYW1wbGUgbW9kdWxlIGZvciBtZW1vcnkgdGllcmluZ1wmIzM0O1xuICAzMjpcdFx0ZGVwZW5kcyBvbiBEQU1PTiBcdTAwMjZcdTAwMjYgREFNT05fUEFERFJcbiAgMzM6XHRcdGhlbHBcbiAgMzQ6XHRcdCAgVGhwcyBidWlsZHMgREFNT04gc2FtcGxlIG1vZHVsZSBmb3IgbWVtb3J5IHRpZXJpZ24uXG4gIDM1Olx0XG4gIDM2Olx0XHQgIFRoZSBtb2R1bGUgYXNzdW1lcyB0aGUgc3lzdGVtIGlzIGNvbnN0cnVjdGVkIHdpdGggdHdvIE5VTUEgbm9kZXMsXG4gIDM3Olx0XHQgIHdoaWNoIHNlZW1zIGFzIGxvY2FsIGFuZCByZW1vdGUgbm9kZXMgdG8gYWxsIENQVXMuICBGb3IgZXhhbXBsZSxcbiAgMzg6XHRcdCAgbm9kZTAgaXMgZm9yIEREUjUgRFJBTXMgY29ubmVjdGVkIHZpYSBESU1NLCB3aGlsZSBub2RlMSBpcyBmb3IgRERSNFxuICAzOTpcdFx0ICBEUkFNcyBjb25uZWN0ZWQgdmlhIENYTC5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDQ6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE1NjgKCQkJCQkJCW91dHB1dDogMTEzCgkJCQkJCQl0aG91Z2h0czogMTE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHVuZGVyc3RhbmRpbmcsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UgbGlrZSB5b3Vyc2VsZjoKCioqQ29uZmlnIERlcGVuZGVuY2llcyBhbmQgRnVuY3Rpb25hbCBDaGVjayBpbiBEQU1PTiBNZW1vcnkgVGllcmluZyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGcm9tIGEgZGVwZW5kZW5jeSBwZXJzcGVjdGl2ZSwgaXQmIzM5O3MgY2xlYXIgdGhhdCB0aGUgbW9kdWxlIGBTQU1QTEVfREFNT05fTVRJRVJgIGZ1bmRhbWVudGFsbHkgcmVsaWVzIG9uIGJvdGggYERBTU9OYCBhbmQgYERBTU9OX1BBRERSYC4gVGhlcmVmb3JlLCB0byBlbnN1cmUgZXZlcnl0aGluZyBmdW5jdGlvbnMgYXMgaW50ZW5kZWQgYW5kIHRvIHByb3Blcmx5IHRyYWNlIHRoZSBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cywgSSYjMzk7bGwgbmVlZCB0byBhZGQgYWxsIHRocmVlIOKAkyBgU0FNUExFX0RBTU9OX01USUVSYCwgYERBTU9OYCwgYW5kIGBEQU1PTl9QQUREUmAg4oCTIHRvIHRoZSBgRW5hYmxlQ29uZmlnc2AgbGlzdC4gTm8gc3VycHJpc2UgdGhlcmUuCgpNeSByYXRpb25hbGUgaXMgdGhpczogdGhlIHByaW1hcnkgZnVuY3Rpb24gb2YgdGhpcyBwYXRjaCBpcyB0byBwcm92aWRlIGEgc2FmZWd1YXJkOyB0byBhZGQgYSBmdW5jdGlvbmFsIGNoZWNrIHRoYXQgc3BlY2lmaWNhbGx5IGd1YXJkcyBhZ2FpbnN0IGFuIGludmFsaWQgbWVtb3J5IHJhbmdlIHdpdGhpbiB0aGUgREFNT04gbWVtb3J5IHRpZXJpbmcgc2FtcGxlIG1vZHVsZS4gSW4gZXNzZW5jZSwgaXQmIzM5O3MgYSBudWxsIGNoZWNrIG9yIGFuIGVkZ2UtY2FzZSB0ZXN0IGZvciB3aGVyZSBgYWRkci5zdGFydGAgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIGBhZGRyLmVuZGAuIFRoaXMgY2hlY2sgaXMgb25seSB0cmlnZ2VyZWQgaWYgYW5kIHdoZW4gdGhlIG1vZHVsZSBpcyBlbmFibGVkIGFuZCBzb21lb25lIHdyaXRlcyB0byB0aGUgYXNzb2NpYXRlZCBzeXNmcyBwYXJhbWV0ZXIuCgpOb3csIGxldCYjMzk7cyBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDA0OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtTQU1QTEVfREFNT05fTVRJRVImIzM0OywKICAgICYjMzQ7REFNT04mIzM0OywKICAgICYjMzQ7REFNT05fUEFERFImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBmdW5jdGlvbmFsIGNoZWNrIHRvIHByZXZlbnQgYW4gaW52YWxpZCBtZW1vcnkgcmFuZ2UgKGFkZHIuc3RhcnQgXHUwMDNlPSBhZGRyLmVuZCkgaW4gdGhlIERBTU9OIG1lbW9yeSB0aWVyaW5nIHNhbXBsZSBtb2R1bGUuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgYnkgZW5hYmxpbmcgdGhlIG1vZHVsZSBhbmQgd3JpdGluZyB0byBpdHMgc3lzZnMgcGFyYW1ldGVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtTQU1QTEVfREFNT05fTVRJRVImIzM0OywKICAgICYjMzQ7REFNT04mIzM0OywKICAgICYjMzQ7REFNT05fUEFERFImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBmdW5jdGlvbmFsIGNoZWNrIHRvIHByZXZlbnQgYW4gaW52YWxpZCBtZW1vcnkgcmFuZ2UgKGFkZHIuc3RhcnQgXHUwMDNlPSBhZGRyLmVuZCkgaW4gdGhlIERBTU9OIG1lbW9yeSB0aWVyaW5nIHNhbXBsZSBtb2R1bGUuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgYnkgZW5hYmxpbmcgdGhlIG1vZHVsZSBhbmQgd3JpdGluZyB0byBpdHMgc3lzZnMgcGFyYW1ldGVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDJUMDQ6MTg6MDMuMzIwNzkzNTI3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ0MDkyMjM1MTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU0FNUExFX0RBTU9OX01USUVSXCIsXG4gICAgXCJEQU1PTlwiLFxuICAgIFwiREFNT05fUEFERFJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGZ1bmN0aW9uYWwgY2hlY2sgdG8gcHJldmVudCBhbiBpbnZhbGlkIG1lbW9yeSByYW5nZSAoYWRkci5zdGFydCBcXHUwMDNlPSBhZGRyLmVuZCkgaW4gdGhlIERBTU9OIG1lbW9yeSB0aWVyaW5nIHNhbXBsZSBtb2R1bGUuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgYnkgZW5hYmxpbmcgdGhlIG1vZHVsZSBhbmQgd3JpdGluZyB0byBpdHMgc3lzZnMgcGFyYW1ldGVyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwNDoxODowMy4zMjA4MDExNTdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwODgzNTMzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDg4ODRjZjk0OTA5MjQ3ZDEzYjg3MjIxZjQzMWZlYzUwYTYwNWUwNzlcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBKdWwgMiAwNDoxODowMSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9zYW1wbGVzL2RhbW9uL210aWVyLmMgYi9zYW1wbGVzL2RhbW9uL210aWVyLmNcXG5pbmRleCBlYjExNDNkZThkZjE3ZS4uMzc4NWIwYzdmZmIxNzUgMTAwNjQ0XFxuLS0tIGEvc2FtcGxlcy9kYW1vbi9tdGllci5jXFxuKysrIGIvc2FtcGxlcy9kYW1vbi9tdGllci5jXFxuQEAgLTEyMCw2ICsxMjAsOSBAQCBzdGF0aWMgc3RydWN0IGRhbW9uX2N0eCAqZGFtb25fc2FtcGxlX210aWVyX2J1aWxkX2N0eChib29sIHByb21vdGUpXFxuIFxcdFxcdGFkZHIuZW5kID0gcHJvbW90ZSA/IG5vZGUxX2VuZF9hZGRyIDogbm9kZTBfZW5kX2FkZHI7XFxuIFxcdH1cXG4gXFxuK1xcdGlmIChhZGRyLnN0YXJ0IFxcdTAwM2U9IGFkZHIuZW5kKVxcbitcXHRcXHRnb3RvIGZyZWVfb3V0O1xcbitcXG4gXFx0cmFuZ2Uuc3RhcnQgPSBhZGRyLnN0YXJ0O1xcbiBcXHRyYW5nZS5lbmQgPSBhZGRyLmVuZDtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDA0OjE4OjAzLjkzMDI1MDU5MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTM3OTk3NTAyNDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU0FNUExFX0RBTU9OX01USUVSXCIsXG4gICAgXCJEQU1PTlwiLFxuICAgIFwiREFNT05fUEFERFJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGZ1bmN0aW9uYWwgY2hlY2sgdG8gcHJldmVudCBhbiBpbnZhbGlkIG1lbW9yeSByYW5nZSAoYWRkci5zdGFydCBcXHUwMDNlPSBhZGRyLmVuZCkgaW4gdGhlIERBTU9OIG1lbW9yeSB0aWVyaW5nIHNhbXBsZSBtb2R1bGUuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgYnkgZW5hYmxpbmcgdGhlIG1vZHVsZSBhbmQgd3JpdGluZyB0byBpdHMgc3lzZnMgcGFyYW1ldGVyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDg4ODRjZjk0OTA5MjQ3ZDEzYjg3MjIxZjQzMWZlYzUwYTYwNWUwNzlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAyIDA0OjE4OjAxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvc2FtcGxlcy9kYW1vbi9tdGllci5jIGIvc2FtcGxlcy9kYW1vbi9tdGllci5jXG5pbmRleCBlYjExNDNkZThkZjE3ZS4uMzc4NWIwYzdmZmIxNzUgMTAwNjQ0XG4tLS0gYS9zYW1wbGVzL2RhbW9uL210aWVyLmNcbisrKyBiL3NhbXBsZXMvZGFtb24vbXRpZXIuY1xuQEAgLTEyMCw2ICsxMjAsOSBAQCBzdGF0aWMgc3RydWN0IGRhbW9uX2N0eCAqZGFtb25fc2FtcGxlX210aWVyX2J1aWxkX2N0eChib29sIHByb21vdGUpXG4gXHRcdGFkZHIuZW5kID0gcHJvbW90ZSA/IG5vZGUxX2VuZF9hZGRyIDogbm9kZTBfZW5kX2FkZHI7XG4gXHR9XG4gXG4rXHRpZiAoYWRkci5zdGFydCBcdTAwM2U9IGFkZHIuZW5kKVxuK1x0XHRnb3RvIGZyZWVfb3V0O1xuK1xuIFx0cmFuZ2Uuc3RhcnQgPSBhZGRyLnN0YXJ0O1xuIFx0cmFuZ2UuZW5kID0gYWRkci5lbmQ7XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwNDoxODowMy45MzAyNTIxMzJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzEwOTA3MzUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIERBTU9OIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYHNhbXBsZXMvZGFtb24vbXRpZXIuY2AuIEl0IHNlZW1zIHRoZXkndmUgYWRkZWQgYSBjaGVjazogYGlmIChhZGRyLnN0YXJ0IFx1MDAzZT0gYWRkci5lbmQpIGdvdG8gZnJlZV9vdXQ7YCB3aXRoaW4gdGhlIGBkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4YCBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB3aGF0J3MgdGhlIGNvbnRleHQgaGVyZT8gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBgbXRpZXIuY2AgaXMgYmVpbmcgY29tcGlsZWQuIElzIGl0IGEgbW9kdWxlLCBvciBpcyBpdCBidWlsdC1pbj8gQW5kLCBtb3JlIGNyaXRpY2FsbHksIGlzIGl0IGV2ZW4gKnJlYWNoYWJsZSo/IEkgbWVhbiwgaXQncyBhICpzYW1wbGUqLCByaWdodD8gVHlwaWNhbGx5LCBzYW1wbGVzIGRvbid0IGdldCBmdXp6ZWQgdW5sZXNzIHRoZXkgZXhwb3NlIHNvbWUgaW50ZXJmYWNlLlxuXG5CdXQgd2FpdCwgaG9sZCBvbi4uLiBpdCAqaXMqIGEgc2FtcGxlIG1vZHVsZS4gT2theSwgdGhhdCBjaGFuZ2VzIHRoaW5ncyBzbGlnaHRseS4gSSdkIGJldHRlciBkaWcgaW50byB0aGUgYnVpbGQgc3lzdGVtIHRvIGdldCBhIGNsZWFyZXIgcGljdHVyZS4gVGltZSB0byBjaGVjayBgc2FtcGxlcy9kYW1vbi9NYWtlZmlsZWAgYW5kIGBzYW1wbGVzL2RhbW9uL0tjb25maWdgIHRvIHNlZSBob3cgaXQncyBiZWluZyBjb25maWd1cmVkIGFuZCBidWlsdC4gVGhpcyBjaGVjaywgdGhpcyBjb25kaXRpb24sIGlzIGludGVyZXN0aW5nLiBJdCBpbXBsaWVzIHNvbWV0aGluZyBjb3VsZCBsZWFkIHRvIGBhZGRyLnN0YXJ0YCBiZWluZyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gYGFkZHIuZW5kYCwgd2hpY2ggaXNuJ3QgcmlnaHQuIEknbSBnb2luZyB0byBmb2xsb3cgdGhlIGxvZ2ljLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODI0LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDQ6MTg6MDguMjQxMTYxNzgyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM5Njc0ODUxNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInNhbXBsZXMvZGFtb24vbXRpZXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJzYW1wbGVzL2RhbW9uL210aWVyLmM9NjA9c3RhdGljIGludCBuaWRfdG9fcGh5cyhpbnQgdGFyZ2V0X25vZGUsIHN0cnVjdCByZWdpb25fcmFuZ2UgKnJhbmdlKVxcbi0tXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTcyLVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYzo3MzpzdGF0aWMgc3RydWN0IGRhbW9uX2N0eCAqZGFtb25fc2FtcGxlX210aWVyX2J1aWxkX2N0eChib29sIHByb21vdGUpXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTc0LXtcXG4tLVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYz0xNzc9c3RhdGljIGludCBkYW1vbl9zYW1wbGVfbXRpZXJfc3RhcnQodm9pZClcXG4tLVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0xODAtXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjE4MTpcXHRjdHggPSBkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4KHRydWUpO1xcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0xODItXFx0aWYgKCFjdHgpXFxuLS1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMTg0LVxcdGN0eHNbMF0gPSBjdHg7XFxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjE4NTpcXHRjdHggPSBkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4KGZhbHNlKTtcXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMTg2LVxcdGlmICghY3R4KSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDA0OjE4OjA4LjYzNzkxNjU0NloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMTQxODkyMTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEaXZpbmcgaW50byB0aGUgYG10aWVyLmNgIE1vZHVsZSBJbml0aWFsaXphdGlvbioqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgdGFraW5nIGEgY2xvc2UgbG9vayBhdCB0aGUgbW9kdWxlIGluaXRpYWxpemF0aW9uIHdpdGhpbiBgc2FtcGxlcy9kYW1vbi9tdGllci5jYC4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgcmVhbGx5IGJlZ2lucyDigJMgaXTigJlzIHRoZSBiZWRyb2NrIG9mIGhvdyB0aGUgYG10aWVyYCBjb21wb25lbnQgaW50ZXJhY3RzIHdpdGggdGhlIGtlcm5lbCBhbmQgc2V0cyBpdHNlbGYgdXAgZm9yIG9wZXJhdGlvbi4gSSB3YW50IHRvIHNlZSBob3cgaXQncyBpbnRlZ3JhdGVkLCBhbnkgcmVzb3VyY2UgYWxsb2NhdGlvbnMsIGFuZCBpbml0aWFsIGRhdGEgc3RydWN0dXJlcyBiZWluZyBkZWZpbmVkIGFuZCBidWlsdCB1cC4gVW5kZXJzdGFuZGluZyB0aGlzIGluaXQgc2VxdWVuY2UgaXMgKmNydWNpYWwqIGZvciBkZWJ1Z2dpbmcsIG1vZGlmaWNhdGlvbiwgb3IgZXZlbiBzaW1wbHkgdHJhY2luZyB0aGUgZXhlY3V0aW9uIGZsb3cgb2YgdGhlIGVudGlyZSBEYW1vbiBzdWJzeXN0ZW0uIExldCdzIHNlZSB3aGF0IGdlbXMgYXJlIGhpZGRlbiBpbiB0aGlzIHN0YXJ0aW5nIHBvaW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTY2LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDQ6MTg6MTEuNzUyMTA4NjIzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk0NDU1MzI2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZHVsZV9pbml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInNhbXBsZXMvZGFtb24vbXRpZXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJzYW1wbGVzL2RhbW9uL210aWVyLmM9MjI3PXN0YXRpYyBpbnQgX19pbml0IGRhbW9uX3NhbXBsZV9tdGllcl9pbml0KHZvaWQpXFxuLS1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMjQ0LVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYzoyNDU6bW9kdWxlX2luaXQoZGFtb25fc2FtcGxlX210aWVyX2luaXQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwNDoxODoxMS44NDY1NjkzWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU4NjMyMTkyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgZGVsaXZlcmVkIGFzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnk6XG5cbioqTW9kdWxlIExvY2F0aW9uIGFuZCBFbmFibGVtZW50IEludmVzdGlnYXRpb24qKlxuXG5BbHJpZ2h0LCB0aGlzIGlzIGEgc2FtcGxlIG1vZHVsZSDigJMgbm90aGluZyBwYXJ0aWN1bGFybHkgZ3JvdW5kLWJyZWFraW5nIHlldC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCB0aGUgc3RhbmRhcmQgcHJvY2VkdXJlIGZvciBlbmFibGluZyBzb21ldGhpbmcgbGlrZSB0aGlzIHdpdGhpbiB0aGUgYnVpbGQgc3lzdGVtLiBTaW5jZSBpdCdzIGEgc2FtcGxlLCB0aGUgdHlwaWNhbCBsb2NhdGlvbiBmb3IgdGhlIGVuYWJsaW5nIGNvbmZpZ3VyYXRpb24gd291bGQgYmUgd2l0aGluIHRoZSBgc2FtcGxlcy9gIGRpcmVjdG9yeSwgc3BlY2lmaWNhbGx5IGluIGEgYEtjb25maWdgIGZpbGUuIEknbGwgbmVlZCB0byBjaGVjayBlaXRoZXIgYHNhbXBsZXMvZGFtb24vS2NvbmZpZ2AgKGFzc3VtaW5nIHRoZXJlJ3MgYSBkZWRpY2F0ZWQgZGlyZWN0b3J5IGZvciB0aGlzIERhbW9uIHNhbXBsZSkgb3IgdGhlIG1vcmUgZ2VuZXJhbCBgc2FtcGxlcy9LY29uZmlnYCBmaWxlLiBUaGF0J3Mgd2hlcmUgSSBleHBlY3QgdG8gZmluZCB0aGUgcmVsZXZhbnQgYENPTkZJR19gIG9wdGlvbiBvciBkZXBlbmRlbmN5IGNoYWluIHRoYXQgY29udHJvbHMgdGhlIGluY2x1c2lvbiBvZiB0aGlzIHBhcnRpY3VsYXIgbW9kdWxlIGluIHRoZSBidWlsZC4gSSdtIGxvb2tpbmcgZm9yIHRoZSBsb2dpY2FsIGNvbm5lY3Rpb247IHVuZGVyc3RhbmRpbmcgaG93IHRoaXMgaXMgYWN0aXZhdGVkIGlzIGtleS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg2NywiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDA0OjE4OjE1LjQzMjg5NDMzOFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjMwNjQ2ODUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXRpZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwic2FtcGxlcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwic2FtcGxlcy9kYW1vbi9NYWtlZmlsZT00PW9iai0kKENPTkZJR19TQU1QTEVfREFNT05fUFJDTCkgKz0gcHJjbC5vXFxuc2FtcGxlcy9kYW1vbi9NYWtlZmlsZTo1Om9iai0kKENPTkZJR19TQU1QTEVfREFNT05fTVRJRVIpICs9IG10aWVyLm9cXG4tLVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy03LVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYzo4OiNkZWZpbmUgcHJfZm10KGZtdCkgXFxcImRhbW9uX3NhbXBsZV9tdGllcjogXFxcIiBmbXRcXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtOS1cXG4tLVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0xNy0jZW5kaWZcXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6MTg6I2RlZmluZSBNT0RVTEVfUEFSQU1fUFJFRklYIFxcXCJkYW1vbl9zYW1wbGVfbXRpZXIuXFxcIlxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0xOS1cXG4tLVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYz0zNj1tb2R1bGVfcGFyYW0obm9kZTBfbWVtX2ZyZWVfYnAsIHVsb25nLCAwNjAwKTtcXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMzctXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjM4OnN0YXRpYyBpbnQgZGFtb25fc2FtcGxlX210aWVyX2VuYWJsZV9zdG9yZShcXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMzktXFx0XFx0Y29uc3QgY2hhciAqdmFsLCBjb25zdCBzdHJ1Y3Qga2VybmVsX3BhcmFtICprcCk7XFxuLS1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmM9NDE9c3RhdGljIGNvbnN0IHN0cnVjdCBrZXJuZWxfcGFyYW1fb3BzIGVuYWJsZWRfcGFyYW1fb3BzID0ge1xcbnNhbXBsZXMvZGFtb24vbXRpZXIuYzo0MjpcXHQuc2V0ID0gZGFtb25fc2FtcGxlX210aWVyX2VuYWJsZV9zdG9yZSxcXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtNDMtXFx0LmdldCA9IHBhcmFtX2dldF9ib29sLFxcbi0tXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jPTYwPXN0YXRpYyBpbnQgbmlkX3RvX3BoeXMoaW50IHRhcmdldF9ub2RlLCBzdHJ1Y3QgcmVnaW9uX3JhbmdlICpyYW5nZSlcXG4tLVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy03Mi1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6NzM6c3RhdGljIHN0cnVjdCBkYW1vbl9jdHggKmRhbW9uX3NhbXBsZV9tdGllcl9idWlsZF9jdHgoYm9vbCBwcm9tb3RlKVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy03NC17XFxuLS1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMTc2LVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYzoxNzc6c3RhdGljIGludCBkYW1vbl9zYW1wbGVfbXRpZXJfc3RhcnQodm9pZClcXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMTc4LXtcXG4tLVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0xODAtXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjE4MTpcXHRjdHggPSBkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4KHRydWUpO1xcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0xODItXFx0aWYgKCFjdHgpXFxuLS1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMTg0LVxcdGN0eHNbMF0gPSBjdHg7XFxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjE4NTpcXHRjdHggPSBkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4KGZhbHNlKTtcXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMTg2LVxcdGlmICghY3R4KSB7XFxuLS1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMTkzLVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYzoxOTQ6c3RhdGljIHZvaWQgZGFtb25fc2FtcGxlX210aWVyX3N0b3Aodm9pZClcXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMTk1LXtcXG4tLVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yMDAtXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjIwMTpzdGF0aWMgaW50IGRhbW9uX3NhbXBsZV9tdGllcl9lbmFibGVfc3RvcmUoXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTIwMi1cXHRcXHRjb25zdCBjaGFyICp2YWwsIGNvbnN0IHN0cnVjdCBrZXJuZWxfcGFyYW0gKmtwKVxcbi0tXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTIxNy1cXHRpZiAoZW5hYmxlZCkge1xcbnNhbXBsZXMvZGFtb24vbXRpZXIuYzoyMTg6XFx0XFx0ZXJyID0gZGFtb25fc2FtcGxlX210aWVyX3N0YXJ0KCk7XFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTIxOS1cXHRcXHRpZiAoZXJyKVxcbi0tXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTIyMi1cXHR9XFxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjIyMzpcXHRkYW1vbl9zYW1wbGVfbXRpZXJfc3RvcCgpO1xcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yMjQtXFx0cmV0dXJuIDA7XFxuLS1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMjI2LVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYzoyMjc6c3RhdGljIGludCBfX2luaXQgZGFtb25fc2FtcGxlX210aWVyX2luaXQodm9pZClcXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMjI4LXtcXG4tLVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yMzctXFx0aWYgKGVuYWJsZWQpIHtcXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6MjM4OlxcdFxcdGVyciA9IGRhbW9uX3NhbXBsZV9tdGllcl9zdGFydCgpO1xcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yMzktXFx0XFx0aWYgKGVycilcXG4tLVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yNDQtXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjI0NTptb2R1bGVfaW5pdChkYW1vbl9zYW1wbGVfbXRpZXJfaW5pdCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDA0OjE4OjE1LjU1NTk2NTcxM1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjczNTAzMTIzNDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgYGRhbW9uX3NhbXBsZV9tdGllcmAgTW9kdWxlOiBBIFF1aWNrIEFzc2Vzc21lbnQqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIG1vZHVsZSwgYGRhbW9uX3NhbXBsZV9tdGllcmAsIGFuZCB0aGUga2V5IGhlcmUgaXMgdGhlIGBlbmFibGVkYCBtb2R1bGUgcGFyYW1ldGVyLiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uOiBpcyBpdCB3b3J0aCBmdXp6aW5nPyBJdCdzIGEgc2FtcGxlIG1vZHVsZSwgYW5kIGdlbmVyYWxseSwgd2UgZG9uJ3QgYm90aGVyIGZ1enppbmcgdGhvc2UgdW5sZXNzIHRoZXkncmUgdGllZCBpbnRvIHNvbWUgY3J1Y2lhbCBjb3JlIGZlYXR1cmUgdGVzdHMuIEJ1dCwgaGFuZyBvbi4uLiBkb2Vzbid0IHN5emthbGxlciBhY3R1YWxseSAqZG9lcyogZnV6eiBgc2FtcGxlcy9gIGNvZGUgaWYgaXQgZXhwb3NlcyB0aGF0IGAvc3lzL21vZHVsZS9kYW1vbl9zYW1wbGVfbXRpZXIvcGFyYW1ldGVycy9lbmFibGVkYCBpbnRlcmZhY2U/IFRoYXQncyB3aGF0IEkgbmVlZCB0byB2ZXJpZnkuXG5cbk5vdywgbGV0J3MgZ28gdGhyb3VnaCB0aGUgYFdvcnRoRnV6emluZ2AgY3JpdGVyaWEuIEkgaGF2ZSB0byBzZWUgaWYgdGhlIHBhdGNoIGNvbnRhaW5zIHB1cmVseSBub24tZnVuY3Rpb25hbCBjaGFuZ2VzIG9yIGlzIGltcG9zc2libGUgdG8gcmVhY2guIENhbiB0aGlzIG1vZHVsZSBiZSByZWFjaGVkPyBZZXMsIGl0IGNhbiBiZSByZWFjaGVkIGJ5IGxvYWRpbmcgaXQgb3Igd3JpdGluZyB0byB0aGF0IHBhcmFtZXRlci4gU28sIHRoZSBcImltcG9zc2libGUgdG8gcmVhY2hcIiBjcml0ZXJpYSBpcyBhIG5vLlxuXG5UaGUgdHJpY2t5IHBhcnQgaXMsIHdoaWxlIGl0J3MgYSBzYW1wbGUsIGl0J3MgZnVuY3Rpb25hbC4gSSBuZWVkIHRvIGRldGVybWluZSBpZiBpdCdzIGNvbnNpZGVyZWQgXCJyZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMuXCIgTGV0J3MgbG9vayBhdCBgc2FtcGxlcy9kYW1vbi9tdGllci5jYC4uLiBhaCwgaXQncyBhIERBTU9OIHNhbXBsZSwgYW5kIHNpbmNlIGl0IGlzIGNvbXBpbGVkLCBpdCBpcywgaW4gZmFjdCwgZnVuY3Rpb25hbC4gVGhlIGNvZGUgaXMgYXZhaWxhYmxlLCBzbyBpdCdzICp0ZWNobmljYWxseSogcmVhY2hhYmxlLiBUaGUgY3JpdGVyaWEgc2F5IFwiSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaCB0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cIlxuXG5JdCdzIGEgc2FtcGxlLCBidXQgaXQncyBwYXJ0IG9mIERBTU9OLiBBcmUgc2FtcGxlIG1vZHVsZXMgY29uc2lkZXJlZCBcImNvcmUga2VybmVsIGxvZ2ljXCI/IFVzdWFsbHksIHRoZXkncmUganVzdCBleGFtcGxlcywgYnV0IHRoZXkgYXJlIGNvbXBpbGVkIGFuZCAqY2FuKiBiZSBsb2FkZWQuLi5zbyBJIGhhdmUgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgY2FuIHJlYXNvbmFibHkgYmUgY29uc2lkZXJlZCBjb3JlIGZ1bmN0aW9uYWxpdHkuXG5cbkkgbmVlZCB0byBxdWlja2x5IGNoZWNrIHRoZSBgc2FtcGxlcy9LY29uZmlnYCB0byBzZWUgaWYgYFNBTVBMRV9EQU1PTl9NVElFUmAgaXMgZXZlbiBhbiBvcHRpb24uIElmIGl0IGlzIGF2YWlsYWJsZSwgaXQgd291bGQgc2VlbSByZWFzb25hYmxlIHRvIHNheSB0aGF0IHRoaXMgc2FtcGxlIG1vZHVsZSBpcyBpbnRlbmRlZCB0byBiZSBsb2FkZWQgYW5kIHJ1bi4gSSBjYW4gcmVhc29uYWJseSBjb25zaWRlciB0aGlzIGEgXCJtYXliZVwiIHRvIGJlIHdvcnRoIGZ1enppbmcsIGJhc2VkIG9uIHRoaXMgY3JpdGVyaWEgYW5kIHdoYXQgSSBrbm93IG9mIGhvdyBzeXprYWxsZXIgaGFuZGxlcyBzYW1wbGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjYyLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDA0OjE4OjIyLjkwNjI4MTE5MloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMwNDgwMjE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlNBTVBMRV9EQU1PTl9NVElFUlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJzYW1wbGVzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJzYW1wbGVzL01ha2VmaWxlPTQ0PW9iai0kKENPTkZJR19TQU1QTEVfREFNT05fUFJDTClcXHRcXHQrPSBkYW1vbi9cXG5zYW1wbGVzL01ha2VmaWxlOjQ1Om9iai0kKENPTkZJR19TQU1QTEVfREFNT05fTVRJRVIpXFx0Kz0gZGFtb24vXFxuc2FtcGxlcy9NYWtlZmlsZS00Ni1vYmotJChDT05GSUdfU0FNUExFX0hVTkdfVEFTSylcXHRcXHQrPSBodW5nX3Rhc2svXFxuLS1cXG5zYW1wbGVzL2RhbW9uL0tjb25maWc9MTc9Y29uZmlnIFNBTVBMRV9EQU1PTl9QUkNMXFxuLS1cXG5zYW1wbGVzL2RhbW9uL0tjb25maWctMjktXFxuc2FtcGxlcy9kYW1vbi9LY29uZmlnOjMwOmNvbmZpZyBTQU1QTEVfREFNT05fTVRJRVJcXG5zYW1wbGVzL2RhbW9uL0tjb25maWctMzEtXFx0Ym9vbCBcXFwiREFNT04gc2FtcGxlIG1vZHVsZSBmb3IgbWVtb3J5IHRpZXJpbmdcXFwiXFxuLS1cXG5zYW1wbGVzL2RhbW9uL01ha2VmaWxlPTQ9b2JqLSQoQ09ORklHX1NBTVBMRV9EQU1PTl9QUkNMKSArPSBwcmNsLm9cXG5zYW1wbGVzL2RhbW9uL01ha2VmaWxlOjU6b2JqLSQoQ09ORklHX1NBTVBMRV9EQU1PTl9NVElFUikgKz0gbXRpZXIub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwNDoxODoyMy4wMzY3Njg3MDdaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMzODI1NzY2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFNBTVBMRV9EQU1PTl9NVElFUiBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgU0FNUExFX0RBTU9OX01USUVSYCBib29sZWFuIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBJZiBpdCdzIGVuYWJsZWQsIHRoZSBjb2RlIGFzc29jaWF0ZWQgd2l0aCBpdCBpcyBjb21waWxlZC4gTm93LCBJIHNlZSB0aGlzIHBhdGNoIGFkZGluZyBhIGNoZWNrOiBgaWYgKGFkZHIuc3RhcnQgXHUwMDNlPSBhZGRyLmVuZCkgZ290byBmcmVlX291dDtgIHdpdGhpbiB0aGUgYGRhbW9uX3NhbXBsZV9tdGllcl9idWlsZF9jdHhgIGZ1bmN0aW9uLiBTZWVtcyBsaWtlIGEgYmFzaWMgc2FuaXR5IGNoZWNrLCBidXQgdGhlIGRldmlsJ3MgaW4gdGhlIGRldGFpbHMsIHJpZ2h0P1xuXG5UaGUgbmV4dCB0aGluZyBJIG5lZWQgdG8gZG8gaXMgdG8gZGV0ZXJtaW5lIHRoZSByZWFjaGFiaWxpdHkgb2YgdGhpcyBjb2RlLiBJdCdzIGZ1bmN0aW9uYWwsIGJ1dCBpcyBpdCBhY3R1YWxseSAqdXNlZCo/IExldCdzIHRyYWNlIGl0IGJhY2suIE9rYXksIHNvIGBkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4YCBpcyBjYWxsZWQgZnJvbSBgZGFtb25fc2FtcGxlX210aWVyX3N0YXJ0YCwgd2hpY2ggaXMgY2FsbGVkIGZyb20gYGRhbW9uX3NhbXBsZV9tdGllcl9lbmFibGVfc3RvcmVgIGFuZCBgZGFtb25fc2FtcGxlX210aWVyX2luaXRgLiBHb3QgaXQsIGl0J3MgZGVmaW5pdGVseSByZWFjaGFibGUuXG5cbk5vdywgSSdtIGdvaW5nIHRvIHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGUgYWN0dWFsIGltcGxlbWVudGF0aW9uIG9mIGBkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4YCB3aXRoaW4gYHNhbXBsZXMvZGFtb24vbXRpZXIuY2AgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3VidGxlIGJ1Z3MgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTQ1MCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwNDoxODoyNy4zNzUwMzEyMjVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM1MjQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcInNhbXBsZXMvZGFtb24vbXRpZXIuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMDAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxMDA6XFx0XFx0YXR0cnMuaW50ZXJ2YWxzX2dvYWwgPSAoc3RydWN0IGRhbW9uX2ludGVydmFsc19nb2FsKSB7XFxuIDEwMTpcXHRcXHRcXHQuYWNjZXNzX2JwID0gNDAwLCAuYWdncnMgPSAzLFxcbiAxMDI6XFx0XFx0XFx0Lm1pbl9zYW1wbGVfdXMgPSA1MDAwLCAubWF4X3NhbXBsZV91cyA9IDEwMDAwMDAwLFxcbiAxMDM6XFx0XFx0fTtcXG4gMTA0OlxcdFxcdGlmIChkYW1vbl9zZXRfYXR0cnMoY3R4LCBcXHUwMDI2YXR0cnMpKVxcbiAxMDU6XFx0XFx0XFx0Z290byBmcmVlX291dDtcXG4gMTA2OlxcdFxcdGlmIChkYW1vbl9zZWxlY3Rfb3BzKGN0eCwgREFNT05fT1BTX1BBRERSKSlcXG4gMTA3OlxcdFxcdFxcdGdvdG8gZnJlZV9vdXQ7XFxuIDEwODpcXHRcXG4gMTA5OlxcdFxcdHRhcmdldCA9IGRhbW9uX25ld190YXJnZXQoKTtcXG4gMTEwOlxcdFxcdGlmICghdGFyZ2V0KVxcbiAxMTE6XFx0XFx0XFx0Z290byBmcmVlX291dDtcXG4gMTEyOlxcdFxcdGRhbW9uX2FkZF90YXJnZXQoY3R4LCB0YXJnZXQpO1xcbiAxMTM6XFx0XFxuIDExNDpcXHRcXHRpZiAoZGV0ZWN0X25vZGVfYWRkcmVzc2VzKSB7XFxuIDExNTpcXHRcXHRcXHRyZXQgPSBwcm9tb3RlID8gbmlkX3RvX3BoeXMoMSwgXFx1MDAyNmFkZHIpIDogbmlkX3RvX3BoeXMoMCwgXFx1MDAyNmFkZHIpO1xcbiAxMTY6XFx0XFx0XFx0aWYgKHJldClcXG4gMTE3OlxcdFxcdFxcdFxcdGdvdG8gZnJlZV9vdXQ7XFxuIDExODpcXHRcXHR9IGVsc2Uge1xcbiAxMTk6XFx0XFx0XFx0YWRkci5zdGFydCA9IHByb21vdGUgPyBub2RlMV9zdGFydF9hZGRyIDogbm9kZTBfc3RhcnRfYWRkcjtcXG4gMTIwOlxcdFxcdFxcdGFkZHIuZW5kID0gcHJvbW90ZSA/IG5vZGUxX2VuZF9hZGRyIDogbm9kZTBfZW5kX2FkZHI7XFxuIDEyMTpcXHRcXHR9XFxuIDEyMjpcXHRcXG4gMTIzOlxcdFxcdGlmIChhZGRyLnN0YXJ0IFxcdTAwM2U9IGFkZHIuZW5kKVxcbiAxMjQ6XFx0XFx0XFx0Z290byBmcmVlX291dDtcXG4gMTI1OlxcdFxcbiAxMjY6XFx0XFx0cmFuZ2Uuc3RhcnQgPSBhZGRyLnN0YXJ0O1xcbiAxMjc6XFx0XFx0cmFuZ2UuZW5kID0gYWRkci5lbmQ7XFxuIDEyODpcXHRcXG4gMTI5OlxcdFxcdHJldCA9IGRhbW9uX3NldF9yZWdpb25zKHRhcmdldCwgXFx1MDAyNnJhbmdlLCAxLCBEQU1PTl9NSU5fUkVHSU9OX1NaKTtcXG4gMTMwOlxcdFxcdGlmIChyZXQpXFxuIDEzMTpcXHRcXHRcXHRnb3RvIGZyZWVfb3V0O1xcbiAxMzI6XFx0XFxuIDEzMzpcXHRcXHRzY2hlbWUgPSBkYW1vbl9uZXdfc2NoZW1lKFxcbiAxMzQ6XFx0XFx0XFx0XFx0LyogYWNjZXNzIHBhdHRlcm4gKi9cXG4gMTM1OlxcdFxcdFxcdFxcdFxcdTAwMjYoc3RydWN0IGRhbW9zX2FjY2Vzc19wYXR0ZXJuKSB7XFxuIDEzNjpcXHRcXHRcXHRcXHRcXHQubWluX3N6X3JlZ2lvbiA9IFBBR0VfU0laRSxcXG4gMTM3OlxcdFxcdFxcdFxcdFxcdC5tYXhfc3pfcmVnaW9uID0gVUxPTkdfTUFYLFxcbiAxMzg6XFx0XFx0XFx0XFx0XFx0Lm1pbl9ucl9hY2Nlc3NlcyA9IHByb21vdGUgPyAxIDogMCxcXG4gMTM5OlxcdFxcdFxcdFxcdFxcdC5tYXhfbnJfYWNjZXNzZXMgPSBwcm9tb3RlID8gVUlOVF9NQVggOiAwLFxcbiAxNDA6XFx0XFx0XFx0XFx0XFx0Lm1pbl9hZ2VfcmVnaW9uID0gMCxcXG4gMTQxOlxcdFxcdFxcdFxcdFxcdC5tYXhfYWdlX3JlZ2lvbiA9IFVJTlRfTUFYfSxcXG4gMTQyOlxcdFxcdFxcdFxcdC8qIGFjdGlvbiAqL1xcbiAxNDM6XFx0XFx0XFx0XFx0cHJvbW90ZSA/IERBTU9TX01JR1JBVEVfSE9UIDogREFNT1NfTUlHUkFURV9DT0xELFxcbiAxNDQ6XFx0XFx0XFx0XFx0MTAwMDAwMCxcXHQvKiBhcHBseSBpbnRlcnZhbCAoMXMpICovXFxuIDE0NTpcXHRcXHRcXHRcXHRcXHUwMDI2KHN0cnVjdCBkYW1vc19xdW90YSl7XFxuIDE0NjpcXHRcXHRcXHRcXHRcXHQvKiAyMDAgTWlCIHBlciBzZWMgYnkgbW9zdCAqL1xcbiAxNDc6XFx0XFx0XFx0XFx0XFx0LnJlc2V0X2ludGVydmFsID0gMTAwMCxcXG4gMTQ4OlxcdFxcdFxcdFxcdFxcdC5zeiA9IDIwMCAqIDEwMjQgKiAxMDI0LFxcbiAxNDk6XFx0XFx0XFx0XFx0XFx0LyogaWdub3JlIHNpemUgb2YgcmVnaW9uIHdoZW4gcHJpb3JpdGl6aW5nICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDA0OjE4OjI3LjM3NTE2ODgxNloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODYwNjc0Njg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEJ1ZyBGaXggaW4gYSBTYW1wbGUgTW9kdWxlKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgY3J1Y2lhbCBjaGVjazogYGlmIChhZGRyLnN0YXJ0IFx1MDAzZT0gYWRkci5lbmQpIGdvdG8gZnJlZV9vdXQ7YC4gUmlnaHQgYXdheSwgSSBzZWUgdGhpcyBpcyBwdXJlbHkgZnVuY3Rpb25hbC4gSXQncyBhIGNsZWFyIGF0dGVtcHQgdG8gcHJldmVudCBhIGJ1ZyB3aGVyZSB0aGUgc3RhcnQgYWRkcmVzcyBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGVuZCBhZGRyZXNzLCB3aGljaCBtYWtlcyBpbnR1aXRpdmUgc2Vuc2Ug4oCTIHRoYXQncyBhIHJhbmdlIGVycm9yLlxuXG5UaGUgcXVlc3Rpb24gbm93IGlzLCBpcyBpdCB3b3J0aCBmdXp6aW5nIHRoaXM/IE5vcm1hbGx5LCBJIHdvdWxkbid0IGJvdGhlciB3aXRoIHNhbXBsZSBtb2R1bGVzIGluIFN5emthbGxlciB1bmxlc3Mgc3BlY2lmaWNhbGx5IGVuYWJsZWQgYW5kIHRhcmdldGVkLiBUaGV5J3JlIHVzdWFsbHkgbG93IHByaW9yaXR5LiBCdXQgdGhpcyBvbmUuLi4gaXMgYSBzYW1wbGUgYW5kIGlmIHdlIGVuYWJsZSBgU0FNUExFX0RBTU9OX01USUVSYCwgdGhlIG1vZHVsZSAqd2lsbCogYmUgY29tcGlsZWQgYW5kIGxvYWRlZCEgSG9sZCBvbiwgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0LiBJdCdzIGp1c3QgYSBib29sZWFuIGNvbmZpZywgd2hpY2ggbWVhbnMgaXTigJlzIGVpdGhlciBpbiBvciBvdXQuIEp1c3QgdG8gYmUgY29tcGxldGVseSBzdXJlLCBJJ2xsIGdvIGJhY2sgYW5kIHJldmlldyB0aGUgYHNhbXBsZXMvZGFtb24vS2NvbmZpZ2AgZmlsZSBvbmUgbW9yZSB0aW1lLiBHb3R0YSBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueSBkZXBlbmRlbmNpZXMgb3Igb3RoZXIgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2Nzg4LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTM4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDQ6MTg6MzEuMjM1ODQ2MDgzWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc5NzMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcInNhbXBsZXMvZGFtb24vS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdFxcbiAgIDM6XFx0bWVudSBcXFwiREFNT04gU2FtcGxlc1xcXCJcXG4gICA0OlxcdFxcbiAgIDU6XFx0Y29uZmlnIFNBTVBMRV9EQU1PTl9XU1NFXFxuICAgNjpcXHRcXHRib29sIFxcXCJEQU1PTiBzYW1wbGUgbW9kdWxlIGZvciB3b3JraW5nIHNldCBzaXplIGVzdGltYXRpb25cXFwiXFxuICAgNzpcXHRcXHRkZXBlbmRzIG9uIERBTU9OIFxcdTAwMjZcXHUwMDI2IERBTU9OX1ZBRERSXFxuICAgODpcXHRcXHRoZWxwXFxuICAgOTpcXHRcXHQgIFRoaXMgYnVpbGRzIERBTU9OIHNhbXBsZSBtb2R1bGUgZm9yIHdvcmtpbmcgc2V0IHNpemUgZXN0aW1hdGlvbi5cXG4gIDEwOlxcdFxcbiAgMTE6XFx0XFx0ICBUaGUgbW9kdWxlIHJlY2VpdmVzIGEgcGlkLCBtb25pdG9yIGFjY2VzcyB0byB0aGUgdmlydHVhbCBhZGRyZXNzXFxuICAxMjpcXHRcXHQgIHNwYWNlIG9mIHRoZSBwcm9jZXNzLCBlc3RpbWF0ZSB3b3JraW5nIHNldCBzaXplIG9mIHRoZSBwcm9jZXNzLCBhbmRcXG4gIDEzOlxcdFxcdCAgcmVwZWF0ZWRseSBwcmludHMgdGhlIHNpemUgb24gdGhlIGtlcm5lbCBsb2cuXFxuICAxNDpcXHRcXG4gIDE1OlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gIDE2OlxcdFxcbiAgMTc6XFx0Y29uZmlnIFNBTVBMRV9EQU1PTl9QUkNMXFxuICAxODpcXHRcXHRib29sIFxcXCJEQU1PTiBzYW1wbGUgbW9kdWxlIGZvciBhY2Nlc3MtYXdhcmUgcHJvYWN0aXZlIHJlY2xhbWF0aW9uXFxcIlxcbiAgMTk6XFx0XFx0ZGVwZW5kcyBvbiBEQU1PTiBcXHUwMDI2XFx1MDAyNiBEQU1PTl9WQUREUlxcbiAgMjA6XFx0XFx0aGVscFxcbiAgMjE6XFx0XFx0ICBUaGlzIGJ1aWxkcyBEQU1PTiBzYW1wbGUgbW9kdWxlIGZvciBhY2Nlc3MtYXdhcmUgcHJvYWN0aXZlXFxuICAyMjpcXHRcXHQgIHJlY2xhbWF0aW9uLlxcbiAgMjM6XFx0XFxuICAyNDpcXHRcXHQgIFRoZSBtb2R1bGUgcmVjZWl2ZXMgYSBwaWQsIG1vbml0b3IgYWNjZXNzIHRvIHRoZSB2aXJ0dWFsIGFkZHJlc3NcXG4gIDI1OlxcdFxcdCAgc3BhY2Ugb2YgdGhlIHByb2Nlc3MsIGZpbmQgbWVtb3J5IHJlZ2lvbnMgdGhhdCBub3QgYWNjZXNzZWQsIGFuZFxcbiAgMjY6XFx0XFx0ICBwcm9hY3RpdmVseSByZWNsYWltIHRoZSByZWdpb25zLlxcbiAgMjc6XFx0XFxuICAyODpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuICAyOTpcXHRcXG4gIDMwOlxcdGNvbmZpZyBTQU1QTEVfREFNT05fTVRJRVJcXG4gIDMxOlxcdFxcdGJvb2wgXFxcIkRBTU9OIHNhbXBsZSBtb2R1bGUgZm9yIG1lbW9yeSB0aWVyaW5nXFxcIlxcbiAgMzI6XFx0XFx0ZGVwZW5kcyBvbiBEQU1PTiBcXHUwMDI2XFx1MDAyNiBEQU1PTl9QQUREUlxcbiAgMzM6XFx0XFx0aGVscFxcbiAgMzQ6XFx0XFx0ICBUaHBzIGJ1aWxkcyBEQU1PTiBzYW1wbGUgbW9kdWxlIGZvciBtZW1vcnkgdGllcmlnbi5cXG4gIDM1OlxcdFxcbiAgMzY6XFx0XFx0ICBUaGUgbW9kdWxlIGFzc3VtZXMgdGhlIHN5c3RlbSBpcyBjb25zdHJ1Y3RlZCB3aXRoIHR3byBOVU1BIG5vZGVzLFxcbiAgMzc6XFx0XFx0ICB3aGljaCBzZWVtcyBhcyBsb2NhbCBhbmQgcmVtb3RlIG5vZGVzIHRvIGFsbCBDUFVzLiAgRm9yIGV4YW1wbGUsXFxuICAzODpcXHRcXHQgIG5vZGUwIGlzIGZvciBERFI1IERSQU1zIGNvbm5lY3RlZCB2aWEgRElNTSwgd2hpbGUgbm9kZTEgaXMgZm9yIEREUjRcXG4gIDM5OlxcdFxcdCAgRFJBTXMgY29ubmVjdGVkIHZpYSBDWEwuXFxuICA0MDpcXHRcXG4gIDQxOlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gIDQyOlxcdFxcbiAgNDM6XFx0ZW5kbWVudVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwNDoxODozMS4yMzU5MjcxMDNaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzgwOTQ0MjgyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIERBTU9OIE11bHRpLVRpZXIgSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBzbyB3ZSdyZSBkZWFsaW5nIHdpdGggYSBib29sZWFuIGNvbmZpZ3VyYXRpb24gaGVyZS4gVGhhdCBtZWFucyBpdCdzIGVpdGhlciBlbmFibGVkIG9yIGRpc2FibGVkIGJ5IGRlZmF1bHQsIGJha2VkIGRpcmVjdGx5IGludG8gdGhlIHN5c3RlbSwgeWVzPyBJZiB0aGlzIG11bHRpLXRpZXIgZnVuY3Rpb25hbGl0eSBpcyBpbmRlZWQgYnVpbHQtaW4gYW5kIGFjdGl2ZSwgdGhlbiB0aGUgYGRhbW9uX3NhbXBsZV9tdGllcl9pbml0YCBmdW5jdGlvbiAqc2hvdWxkKiBiZSBjYWxsZWQgZHVyaW5nIHRoZSBib290IHByb2Nlc3MuIEJ1dCBob2xkIG9uLi4uIEkgc2VlbSB0byByZWNhbGwgdGhhdCBmdW5jdGlvbiBoYXZpbmcgYSBjaGVjayB3aXRoaW4gaXQ6IGBpZiAoZW5hYmxlZClgLiBOb3csIHRoYXQncyBpbnRlcmVzdGluZy4gSSBiZXQgYGVuYWJsZWRgIGlzIGEgbW9kdWxlIHBhcmFtZXRlciwgbGlrZWx5IGRlZmF1bHRpbmcgdG8gYGZhbHNlYC4gSSBzaG91bGQgcHJvYmFibHkgY29uZmlybSB0aGF0IGRlZmF1bHQgYW5kIG90aGVyIGFzcGVjdHMuIFJpZ2h0LCBiZXR0ZXIgY2hlY2sgdGhlIHNvdXJjZSBjb2RlIGl0c2VsZiwgc3BlY2lmaWNhbGx5IGBzYW1wbGVzL2RhbW9uL210aWVyLmNgIHRvIHNlZSBob3cgYGVuYWJsZWRgIGlzIGFjdHVhbGx5IGRlZmluZWQgYW5kIHVzZWQuIEdvdHRhIGdldCB0aGUgZGV0YWlscyBzdHJhaWdodCBiZWZvcmUgbW92aW5nIGZvcndhcmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc3NTgsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5OCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDA0OjE4OjM1LjA0NTM3MTc5M1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzQ1OTk1NzY2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImVuYWJsZWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwic2FtcGxlcy9kYW1vbi9tdGllci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcInNhbXBsZXMvZGFtb24vbXRpZXIuYz0zOD1zdGF0aWMgaW50IGRhbW9uX3NhbXBsZV9tdGllcl9lbmFibGVfc3RvcmUoXFxuLS1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtNDAtXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjQxOnN0YXRpYyBjb25zdCBzdHJ1Y3Qga2VybmVsX3BhcmFtX29wcyBlbmFibGVkX3BhcmFtX29wcyA9IHtcXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtNDItXFx0LnNldCA9IGRhbW9uX3NhbXBsZV9tdGllcl9lbmFibGVfc3RvcmUsXFxuLS1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtNDUtXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjQ2OnN0YXRpYyBib29sIGVuYWJsZWQgX19yZWFkX21vc3RseTtcXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6NDc6bW9kdWxlX3BhcmFtX2NiKGVuYWJsZWQsIFxcdTAwMjZlbmFibGVkX3BhcmFtX29wcywgXFx1MDAyNmVuYWJsZWQsIDA2MDApO1xcbnNhbXBsZXMvZGFtb24vbXRpZXIuYzo0ODpNT0RVTEVfUEFSTV9ERVNDKGVuYWJsZWQsIFxcXCJFbmFibGUgb3IgZGlzYWJsZSBEQU1PTl9TQU1QTEVfTVRJRVJcXFwiKTtcXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtNDktXFxuLS1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmM9MjAxPXN0YXRpYyBpbnQgZGFtb25fc2FtcGxlX210aWVyX2VuYWJsZV9zdG9yZShcXG4tLVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yMDMte1xcbnNhbXBsZXMvZGFtb24vbXRpZXIuYzoyMDQ6XFx0Ym9vbCBpc19lbmFibGVkID0gZW5hYmxlZDtcXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMjA1LVxcdGludCBlcnI7XFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTIwNi1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6MjA3OlxcdGVyciA9IGtzdHJ0b2Jvb2wodmFsLCBcXHUwMDI2ZW5hYmxlZCk7XFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTIwOC1cXHRpZiAoZXJyKVxcbi0tXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTIxMC1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6MjExOlxcdGlmIChlbmFibGVkID09IGlzX2VuYWJsZWQpXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTIxMi1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yMTYtXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjIxNzpcXHRpZiAoZW5hYmxlZCkge1xcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yMTgtXFx0XFx0ZXJyID0gZGFtb25fc2FtcGxlX210aWVyX3N0YXJ0KCk7XFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTIxOS1cXHRcXHRpZiAoZXJyKVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYzoyMjA6XFx0XFx0XFx0ZW5hYmxlZCA9IGZhbHNlO1xcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yMjEtXFx0XFx0cmV0dXJuIGVycjtcXG4tLVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYz0yMjc9c3RhdGljIGludCBfX2luaXQgZGFtb25fc2FtcGxlX210aWVyX2luaXQodm9pZClcXG4tLVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yMzEtXFx0aWYgKCFkYW1vbl9pbml0aWFsaXplZCgpKSB7XFxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjIzMjpcXHRcXHRpZiAoZW5hYmxlZClcXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6MjMzOlxcdFxcdFxcdGVuYWJsZWQgPSBmYWxzZTtcXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMjM0LVxcdFxcdHJldHVybiAtRU5PTUVNO1xcbi0tXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTIzNi1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6MjM3OlxcdGlmIChlbmFibGVkKSB7XFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTIzOC1cXHRcXHRlcnIgPSBkYW1vbl9zYW1wbGVfbXRpZXJfc3RhcnQoKTtcXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMjM5LVxcdFxcdGlmIChlcnIpXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjI0MDpcXHRcXHRcXHRlbmFibGVkID0gZmFsc2U7XFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTI0MS1cXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDA0OjE4OjM1LjM5MTM3NTIwOVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDI3OTY4MzAzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIERlY2lzaW9uIGZvciBkYW1vbl9zYW1wbGVfbXRpZXIqKlxuXG5Pa2F5LCBsZXQncyB0aGluayB0aGlzIHRocm91Z2guIFRoaXMgcGF0Y2ggdG91Y2hlcyBgL3N5cy9tb2R1bGUvZGFtb25fc2FtcGxlX210aWVyL3BhcmFtZXRlcnMvZW5hYmxlZGAsIHdoaWNoIEkga25vdyBmcm9tIGV4cGVyaWVuY2UgdHJpZ2dlcnMgYGRhbW9uX3NhbXBsZV9tdGllcl9lbmFibGVfc3RvcmVgLCBsZWFkaW5nIHRvIGBkYW1vbl9zYW1wbGVfbXRpZXJfc3RhcnRgIGFuZCBmaW5hbGx5IGBkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4YC4gU2luY2UgU3l6a2FsbGVyIGhpdHMgYC9zeXMvYCBmaWxlcywgaXQncyBkZWZpbml0ZWx5IHBvc3NpYmxlIHRvIHRyaWdnZXIgdGhpcyBjb2RlLiBUaGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgaXQncyAqd29ydGgqIGZ1enppbmcuXG5cbkknbSBjaGVja2luZyBpZiBTeXprYWxsZXIgYWxyZWFkeSBoYXMgYSBkZXNjcmlwdGlvbiBmb3IgYGRhbW9uX3NhbXBsZV9tdGllcmAsIGJ1dCBldmVuIGlmIGl0IGRvZXNuJ3QsIGl0IGNhbiBkaXNjb3ZlciBpdCBpZiB0aGUgbW9kdWxlJ3MgZW5hYmxlZC4gVGhlIGNoYW5nZSBpdHNlbGYgaXMgc2VlbWluZ2x5IHNpbXBsZSAtIGEgY2hlY2sgdG8gcHJldmVudCBgYWRkci5zdGFydGAgZnJvbSBiZWluZyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gYGFkZHIuZW5kYCwgd2hpY2ggZml4ZXMgYW4gaW52YWxpZCByYW5nZS5cblxuSSBuZWVkIHRvIGRlY2lkZSBgV29ydGhGdXp6aW5nPXRydWVgIG9yIGBmYWxzZWAuXG5cbkZpcnN0LCBsZXQncyB2ZXJpZnkgdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9ucy4gYFNBTVBMRV9EQU1PTl9NVElFUmAgZGVwZW5kcyBvbiBgREFNT04gXHUwMDI2XHUwMDI2IERBTU9OX1BBRERSYCwgc28gdGhhdCdzIHRoZSBrZXkgY29uZmlnIHRvIGVuYWJsZS5cblxuSSdtIHRoaW5raW5nIGFib3V0IHRoZSBpbXBvcnRhbnQgc3ltYm9scy4gYGRhbW9uX3NhbXBsZV9tdGllcl9idWlsZF9jdHhgLCBgZGFtb25fc2FtcGxlX210aWVyX3N0YXJ0YCwgYW5kIGBkYW1vbl9zYW1wbGVfbXRpZXJfZW5hYmxlX3N0b3JlYCBhcmUgdGhlIGZ1bmN0aW9ucyBvZiBpbnRlcmVzdC4gV2FpdCwgSSByZW1lbWJlciB0aGF0IGBkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4YCBpcyBzdGF0aWMuIEkgcXVpY2tseSBjb25maXJtIHRoYXQgaXQncyBpbiBgbXRpZXIuY2AsIHNvIGl0J3MgYSBnb29kIGZ1bmN0aW9uIHRvIGZvY3VzIG9uLlxuXG5MZXQncyBxdWlja2x5IGNvbmZpcm0gdGhhdCBgU0FNUExFX0RBTU9OX01USUVSYCBpcyBpbmRlZWQgdGhlIGNvbmZpZ3VyYXRpb24gdGhhdCBlbmFibGVzIGV2ZXJ5dGhpbmcuIFllcy5cblxuTm93LCBsZXQncyByZXZpZXcgdGhlIGluc3RydWN0aW9ucy4gVGhleSBzYXkgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9dHJ1ZWAgaWYgdGhlIGNoYW5nZSBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMuIElzIGEgKnNhbXBsZSogbW9kdWxlIFwiY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXNcIj8gVXN1YWxseSBub3QsIGJ1dCBoZXJlIGl0IGhhcyBhIHN5c2ZzIGludGVyZmFjZS4gVGhhdCBjaGFuZ2VzIHRoaW5ncy4gSXQncyBhIHNhbXBsZSwgYnV0IFN5emthbGxlciBjYW4gc3RpbGwgaW50ZXJhY3Qgd2l0aCBpdC5cblxuSWYgSSBzYXkgdHJ1ZSwgU3l6a2FsbGVyIHdpbGwgZnV6eiBpdC4gSXMgdGhhdCBjb3JyZWN0PyBUaGUgcGF0Y2ggKmlzKiBhIGZ1bmN0aW9uYWwgZml4IGluIGEgc2FtcGxlIG1vZHVsZSwgbm90IGEgaHlwb3RoZXRpY2FsIGNvZGUgcGF0aC4gSSdsbCBhZG1pdCBJJ20gbGVhbmluZyB0b3dhcmQgdHJ1ZSBiZWNhdXNlIGl0J3MgYm90aCBmdW5jdGlvbmFsIGFuZCByZWFjaGFibGUsIGJ1dCBpcyB0aGF0IGNvcnJlY3Q/XG5cblRoaW5raW5nIGFib3V0IHRoZSBpbnN0cnVjdGlvbnMgYWdhaW4sIGl0IHNwZWNpZmllcyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIGNoYW5nZXMgYXJlIGZvciBcIkNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZVwiLiBTYW1wbGUgbW9kdWxlcyBhcmVuJ3QgZXhwbGljaXRseSBleGNsdWRlZC5cblxuT2theSwgSSdtIGdvaW5nIHRvIHJldHVybiBgdHJ1ZWAuIEl0J3MgYSBmdW5jdGlvbmFsIHBhdGNoIGluIGEgcmVhY2hhYmxlIGNvZGUgcGF0aC4gVGhlIHJpc2sgc2VlbXMgbWluaW1hbC5cblxuSGVyZSdzIG15IGNvbmNsdXNpb246XG5cbkNvbmZpZ3M6IGBTQU1QTEVfREFNT05fTVRJRVJgXG5Gb2N1c1N5bWJvbHM6IGBkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4YFxuXG5cbiIsIklucHV0VG9rZW5zIjo4ODg5LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzA0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDA0OjE4OjQ1LjY3MTA2MTc3MloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY5NDAwMjEzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRhbW9uX3NhbXBsZV9tdGllcl9idWlsZF9jdHhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwic2FtcGxlcy9kYW1vbi9tdGllci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcInNhbXBsZXMvZGFtb24vbXRpZXIuYz02MD1zdGF0aWMgaW50IG5pZF90b19waHlzKGludCB0YXJnZXRfbm9kZSwgc3RydWN0IHJlZ2lvbl9yYW5nZSAqcmFuZ2UpXFxuLS1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtNzItXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjczOnN0YXRpYyBzdHJ1Y3QgZGFtb25fY3R4ICpkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4KGJvb2wgcHJvbW90ZSlcXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtNzQte1xcbi0tXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jPTE3Nz1zdGF0aWMgaW50IGRhbW9uX3NhbXBsZV9tdGllcl9zdGFydCh2b2lkKVxcbi0tXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTE4MC1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6MTgxOlxcdGN0eCA9IGRhbW9uX3NhbXBsZV9tdGllcl9idWlsZF9jdHgodHJ1ZSk7XFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTE4Mi1cXHRpZiAoIWN0eClcXG4tLVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0xODQtXFx0Y3R4c1swXSA9IGN0eDtcXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6MTg1OlxcdGN0eCA9IGRhbW9uX3NhbXBsZV9tdGllcl9idWlsZF9jdHgoZmFsc2UpO1xcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0xODYtXFx0aWYgKCFjdHgpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDQ6MTg6NDUuODQwNDcwMjA2WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4MTE2MDY1NjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB1bmRlcnN0YW5kaW5nLCBjb25zaWRlcmluZyBJJ20gdGhlIG9uZSB0aGlua2luZyB0aHJvdWdoIHRoaXMgY29uZmlndXJhdGlvbiBsb2dpYzpcblxuKipDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyBmb3IgYGRhbW9uX3NhbXBsZV9tdGllcl9idWlsZF9jdHhgKipcblxuQWxyaWdodCwgc28gaXQncyBjb25maXJtZWQgdGhhdCBvbmx5IGBkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4YCBpcyBkaXJlY3RseSBtb2RpZmllZCBpbiB0aGlzIHNjZW5hcmlvLiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byB2ZXJpZnkgd2hldGhlciBhbnkgb3RoZXIgY29uZmlndXJhdGlvbnMgYXJlIGluaGVyZW50bHkgcmVxdWlyZWQsIGFzIGEgZG93bnN0cmVhbSBlZmZlY3Qgb2YgZW5hYmxpbmcgdGhpcyBvbmUuXG5cbkxvb2tpbmcgY2xvc2VyLCBgU0FNUExFX0RBTU9OX01USUVSYCBoYXMgYGRlcGVuZHMgb24gREFNT04gXHUwMDI2XHUwMDI2IERBTU9OX1BBRERSYC4gT2theSwgdGhhdCBtYWtlcyBzZW5zZS4gU3l6a2FsbGVyIHdpbGwgdWx0aW1hdGVseSBhdHRlbXB0IHRvIGVuYWJsZSBgU0FNUExFX0RBTU9OX01USUVSYC4gU2luY2UgdGhlc2UgYXJlIGRlcGVuZGVuY2llcywgYW5kIG5vdCBqdXN0IHNlbGVjdHMsIEkgbmVlZCB0byBlbnN1cmUgYERBTU9OYCBhbmQgYERBTU9OX1BBRERSYCBhcmUgYWxzbyBleHBsaWNpdGx5IGluY2x1ZGVkIGluIHRoZSBmaW5hbCBjb25maWd1cmF0aW9uIGxpc3QuIFN5emthbGxlcidzIGF0dGVtcHQgd2lsbCBpbXBsaWNpdGx5IGVuYWJsZSB0aGVtLCBzbyBpdCB3b3VsZCBiZSBuZWdsaWdlbnQgdG8gbGVhdmUgdGhlbSBvdXQuIFNvLCB0aG9zZSAqbXVzdCogYmUgaW5jbHVkZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNTgyLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDA0OjE4OjQ5LjY1MjA3OTY3NVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ0NTgyMDY0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTQU1QTEVfREFNT05fTVRJRVJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwic2FtcGxlcy9kYW1vbi9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcInNhbXBsZXMvZGFtb24vS2NvbmZpZz0xNz1jb25maWcgU0FNUExFX0RBTU9OX1BSQ0xcXG4tLVxcbnNhbXBsZXMvZGFtb24vS2NvbmZpZy0yOS1cXG5zYW1wbGVzL2RhbW9uL0tjb25maWc6MzA6Y29uZmlnIFNBTVBMRV9EQU1PTl9NVElFUlxcbnNhbXBsZXMvZGFtb24vS2NvbmZpZy0zMS1cXHRib29sIFxcXCJEQU1PTiBzYW1wbGUgbW9kdWxlIGZvciBtZW1vcnkgdGllcmluZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDQ6MTg6NDkuNzk2Njc3MjM5WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwODM4OTQ0NTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqUmV2aXNpdGluZyB0aGUgS2NvbmZpZyBpbiBEYW1vbidzIFNhbXBsZXMqKlxuXG5BbHJpZ2h0LCBsZXQncyBjaXJjbGUgYmFjayB0byBgc2FtcGxlcy9kYW1vbi9LY29uZmlnYC4gSSBuZWVkIHRvIHJldmlzaXQgdGhhdCBjb25maWd1cmF0aW9uIGZpbGUuIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyBpdCdzIHByb2JhYmx5IGtleSBmb3IgdGhlIGNvbmZpZ3VyYXRpb24gb2YgdGhlIERhbW9uIChEeW5hbWljIEFjY2VzcyBNb25pdG9yKSBzYW1wbGluZyB3aXRoaW4gdGhhdCBzcGVjaWZpYyBzYW1wbGUgY29kZS4gSSBwcm9iYWJseSB3YW50IHRvIGxvb2sgZm9yIHNwZWNpZmljIGNvbmZpZyBvcHRpb25zLCBhbnkgZGVwZW5kZW5jaWVzIGRlZmluZWQgdGhlcmUsIGFuZCB0aGUgb3ZlcmFsbCBzdHJ1Y3R1cmUgb2YgaG93IERhbW9uJ3MgZmVhdHVyZXMgYXJlIGV4cG9zZWQgYW5kIGNvbnRyb2xsZWQgd2l0aGluIHRoYXQgZGVtb25zdHJhdGlvbiBjb2RlLiBUaGlzIHNob3VsZCBpbmZvcm0gbXkgb25nb2luZyB3b3JrLCBhbmQgcHJvYmFibHkgYW55IHJlZmluZW1lbnRzIEknbSBwbGFubmluZyB0byBtYWtlIHRvIGhvdyB3ZSBpbnRlZ3JhdGUgb3IgdXNlIERhbW9uIGluIHByb2R1Y3Rpb24gb3Igd2l0aCBtb3JlIGNvbXBsZXggdXNlIGNhc2VzLiBJdCdzIGEga2V5IHNvdXJjZSB0byBjbGFyaWZ5IHRoZSBzYW1wbGUgaW1wbGVtZW50YXRpb24gY2hvaWNlcyBhbmQgY29uZmlndXJhdGlvbiBkZXRhaWxzLiBUaGlzIHNjYW4gd2lsbCBsaWtlbHkgZ2l2ZSBtZSBiZXR0ZXIgaW5zaWdodCBvbiB0aGUgcHVycG9zZSBvZiB0aG9zZSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMDQwLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDQ6MTg6NTIuODgwNTc1MjE3WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMjczMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJzYW1wbGVzL2RhbW9uL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMjA6XFx0XFx0aGVscFxcbiAgMjE6XFx0XFx0ICBUaGlzIGJ1aWxkcyBEQU1PTiBzYW1wbGUgbW9kdWxlIGZvciBhY2Nlc3MtYXdhcmUgcHJvYWN0aXZlXFxuICAyMjpcXHRcXHQgIHJlY2xhbWF0aW9uLlxcbiAgMjM6XFx0XFxuICAyNDpcXHRcXHQgIFRoZSBtb2R1bGUgcmVjZWl2ZXMgYSBwaWQsIG1vbml0b3IgYWNjZXNzIHRvIHRoZSB2aXJ0dWFsIGFkZHJlc3NcXG4gIDI1OlxcdFxcdCAgc3BhY2Ugb2YgdGhlIHByb2Nlc3MsIGZpbmQgbWVtb3J5IHJlZ2lvbnMgdGhhdCBub3QgYWNjZXNzZWQsIGFuZFxcbiAgMjY6XFx0XFx0ICBwcm9hY3RpdmVseSByZWNsYWltIHRoZSByZWdpb25zLlxcbiAgMjc6XFx0XFxuICAyODpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuICAyOTpcXHRcXG4gIDMwOlxcdGNvbmZpZyBTQU1QTEVfREFNT05fTVRJRVJcXG4gIDMxOlxcdFxcdGJvb2wgXFxcIkRBTU9OIHNhbXBsZSBtb2R1bGUgZm9yIG1lbW9yeSB0aWVyaW5nXFxcIlxcbiAgMzI6XFx0XFx0ZGVwZW5kcyBvbiBEQU1PTiBcXHUwMDI2XFx1MDAyNiBEQU1PTl9QQUREUlxcbiAgMzM6XFx0XFx0aGVscFxcbiAgMzQ6XFx0XFx0ICBUaHBzIGJ1aWxkcyBEQU1PTiBzYW1wbGUgbW9kdWxlIGZvciBtZW1vcnkgdGllcmlnbi5cXG4gIDM1OlxcdFxcbiAgMzY6XFx0XFx0ICBUaGUgbW9kdWxlIGFzc3VtZXMgdGhlIHN5c3RlbSBpcyBjb25zdHJ1Y3RlZCB3aXRoIHR3byBOVU1BIG5vZGVzLFxcbiAgMzc6XFx0XFx0ICB3aGljaCBzZWVtcyBhcyBsb2NhbCBhbmQgcmVtb3RlIG5vZGVzIHRvIGFsbCBDUFVzLiAgRm9yIGV4YW1wbGUsXFxuICAzODpcXHRcXHQgIG5vZGUwIGlzIGZvciBERFI1IERSQU1zIGNvbm5lY3RlZCB2aWEgRElNTSwgd2hpbGUgbm9kZTEgaXMgZm9yIEREUjRcXG4gIDM5OlxcdFxcdCAgRFJBTXMgY29ubmVjdGVkIHZpYSBDWEwuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDA0OjE4OjUyLjg4MDY4MDUyN1oiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjEwMjczMjk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdW5kZXJzdGFuZGluZywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBsaWtlIHlvdXJzZWxmOlxuXG4qKkNvbmZpZyBEZXBlbmRlbmNpZXMgYW5kIEZ1bmN0aW9uYWwgQ2hlY2sgaW4gREFNT04gTWVtb3J5IFRpZXJpbmcqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZyb20gYSBkZXBlbmRlbmN5IHBlcnNwZWN0aXZlLCBpdCdzIGNsZWFyIHRoYXQgdGhlIG1vZHVsZSBgU0FNUExFX0RBTU9OX01USUVSYCBmdW5kYW1lbnRhbGx5IHJlbGllcyBvbiBib3RoIGBEQU1PTmAgYW5kIGBEQU1PTl9QQUREUmAuIFRoZXJlZm9yZSwgdG8gZW5zdXJlIGV2ZXJ5dGhpbmcgZnVuY3Rpb25zIGFzIGludGVuZGVkIGFuZCB0byBwcm9wZXJseSB0cmFjZSB0aGUgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMsIEknbGwgbmVlZCB0byBhZGQgYWxsIHRocmVlIOKAkyBgU0FNUExFX0RBTU9OX01USUVSYCwgYERBTU9OYCwgYW5kIGBEQU1PTl9QQUREUmAg4oCTIHRvIHRoZSBgRW5hYmxlQ29uZmlnc2AgbGlzdC4gTm8gc3VycHJpc2UgdGhlcmUuXG5cbk15IHJhdGlvbmFsZSBpcyB0aGlzOiB0aGUgcHJpbWFyeSBmdW5jdGlvbiBvZiB0aGlzIHBhdGNoIGlzIHRvIHByb3ZpZGUgYSBzYWZlZ3VhcmQ7IHRvIGFkZCBhIGZ1bmN0aW9uYWwgY2hlY2sgdGhhdCBzcGVjaWZpY2FsbHkgZ3VhcmRzIGFnYWluc3QgYW4gaW52YWxpZCBtZW1vcnkgcmFuZ2Ugd2l0aGluIHRoZSBEQU1PTiBtZW1vcnkgdGllcmluZyBzYW1wbGUgbW9kdWxlLiBJbiBlc3NlbmNlLCBpdCdzIGEgbnVsbCBjaGVjayBvciBhbiBlZGdlLWNhc2UgdGVzdCBmb3Igd2hlcmUgYGFkZHIuc3RhcnRgIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBgYWRkci5lbmRgLiBUaGlzIGNoZWNrIGlzIG9ubHkgdHJpZ2dlcmVkIGlmIGFuZCB3aGVuIHRoZSBtb2R1bGUgaXMgZW5hYmxlZCBhbmQgc29tZW9uZSB3cml0ZXMgdG8gdGhlIGFzc29jaWF0ZWQgc3lzZnMgcGFyYW1ldGVyLlxuXG5Ob3csIGxldCdzIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE1NjgsIk91dHB1dFRva2VucyI6MTEzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDQ6MTg6NTcuNDkwOTYyOTU1WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM5MDI3MTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTQU1QTEVfREFNT05fTVRJRVJcIixcbiAgICBcIkRBTU9OXCIsXG4gICAgXCJEQU1PTl9QQUREUlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRhbW9uX3NhbXBsZV9tdGllcl9idWlsZF9jdHhcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgZnVuY3Rpb25hbCBjaGVjayB0byBwcmV2ZW50IGFuIGludmFsaWQgbWVtb3J5IHJhbmdlIChhZGRyLnN0YXJ0IFxcdTAwM2U9IGFkZHIuZW5kKSBpbiB0aGUgREFNT04gbWVtb3J5IHRpZXJpbmcgc2FtcGxlIG1vZHVsZS4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBieSBlbmFibGluZyB0aGUgbW9kdWxlIGFuZCB3cml0aW5nIHRvIGl0cyBzeXNmcyBwYXJhbWV0ZXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU0FNUExFX0RBTU9OX01USUVSXCIsXG4gICAgXCJEQU1PTlwiLFxuICAgIFwiREFNT05fUEFERFJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGZ1bmN0aW9uYWwgY2hlY2sgdG8gcHJldmVudCBhbiBpbnZhbGlkIG1lbW9yeSByYW5nZSAoYWRkci5zdGFydCBcXHUwMDNlPSBhZGRyLmVuZCkgaW4gdGhlIERBTU9OIG1lbW9yeSB0aWVyaW5nIHNhbXBsZSBtb2R1bGUuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgYnkgZW5hYmxpbmcgdGhlIG1vZHVsZSBhbmQgd3JpdGluZyB0byBpdHMgc3lzZnMgcGFyYW1ldGVyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowh2fjt[1] Phase: Succeeded StartedAt: 2026-07-02 04:19:29 +0000 UTC FinishedAt: 2026-07-02 04:19:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh2fjt[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-02 04:19:29 +0000 UTC FinishedAt: 2026-07-02 04:19:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh2fjt[2] Phase: Succeeded StartedAt: 2026-07-02 04:19:29 +0000 UTC FinishedAt: 2026-07-02 05:19:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh2fjt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["SAMPLE_DAMON_MTIER","DAMON","DAMON_PADDR"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_sample_mtier_build_ctx"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["SAMPLE_DAMON_MTIER","DAMON","DAMON_PADDR"],"series_id":"51aba591-9ac7-40b0-b976-26917059e3ca","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-02 04:19:29 +0000 UTC FinishedAt: 2026-07-02 05:19:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["SAMPLE_DAMON_MTIER","DAMON","DAMON_PADDR"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_sample_mtier_build_ctx"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["SAMPLE_DAMON_MTIER","DAMON","DAMON_PADDR"],"series_id":"51aba591-9ac7-40b0-b976-26917059e3ca","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-workflowh2fjt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["SAMPLE_DAMON_MTIER","DAMON","DAMON_PADDR"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_sample_mtier_build_ctx"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["SAMPLE_DAMON_MTIER","DAMON","DAMON_PADDR"],"series_id":"51aba591-9ac7-40b0-b976-26917059e3ca","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-02 04:19:29 +0000 UTC FinishedAt: 2026-07-02 04:20:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh2fjt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["SAMPLE_DAMON_MTIER","DAMON","DAMON_PADDR"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_sample_mtier_build_ctx"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["SAMPLE_DAMON_MTIER","DAMON","DAMON_PADDR"],"series_id":"51aba591-9ac7-40b0-b976-26917059e3ca","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-02 04:19:29 +0000 UTC FinishedAt: 2026-07-02 04:19:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["SAMPLE_DAMON_MTIER","DAMON","DAMON_PADDR"],"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-workflowh2fjt/series-workflowh2fjt-convert-artifact-2277066516/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh2fjt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["SAMPLE_DAMON_MTIER","DAMON","DAMON_PADDR"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_sample_mtier_build_ctx"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["SAMPLE_DAMON_MTIER","DAMON","DAMON_PADDR"],"series_id":"51aba591-9ac7-40b0-b976-26917059e3ca","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-02 04:20:56 +0000 UTC FinishedAt: 2026-07-02 04:47:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh2fjt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["SAMPLE_DAMON_MTIER","DAMON","DAMON_PADDR"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_sample_mtier_build_ctx"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["SAMPLE_DAMON_MTIER","DAMON","DAMON_PADDR"],"series_id":"51aba591-9ac7-40b0-b976-26917059e3ca","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-02 04:20:56 +0000 UTC FinishedAt: 2026-07-02 04:47:15 +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:*501e4867-14c8-465c-80ef-c9dca15fab8b,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-workflowh2fjt/series-workflowh2fjt-convert-artifact-2277066516/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": "8429636b-81de-43fa-885a-ac7a9a097141", "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-workflowh2fjt/series-workflowh2fjt-build-action-4145861522/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh2fjt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["SAMPLE_DAMON_MTIER","DAMON","DAMON_PADDR"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_sample_mtier_build_ctx"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["SAMPLE_DAMON_MTIER","DAMON","DAMON_PADDR"],"series_id":"51aba591-9ac7-40b0-b976-26917059e3ca","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-02 04:20:56 +0000 UTC FinishedAt: 2026-07-02 04:47:05 +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:*501e4867-14c8-465c-80ef-c9dca15fab8b,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-workflowh2fjt/series-workflowh2fjt-convert-artifact-2277066516/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": "8429636b-81de-43fa-885a-ac7a9a097141", "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-workflowh2fjt/series-workflowh2fjt-build-action-4145861522/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh2fjt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["SAMPLE_DAMON_MTIER","DAMON","DAMON_PADDR"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_sample_mtier_build_ctx"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["SAMPLE_DAMON_MTIER","DAMON","DAMON_PADDR"],"series_id":"51aba591-9ac7-40b0-b976-26917059e3ca","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-02 04:47:15 +0000 UTC FinishedAt: 2026-07-02 04:47:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh2fjt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["SAMPLE_DAMON_MTIER","DAMON","DAMON_PADDR"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_sample_mtier_build_ctx"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["SAMPLE_DAMON_MTIER","DAMON","DAMON_PADDR"],"series_id":"51aba591-9ac7-40b0-b976-26917059e3ca","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-02 04:47:15 +0000 UTC FinishedAt: 2026-07-02 04:47:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh2fjt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["SAMPLE_DAMON_MTIER","DAMON","DAMON_PADDR"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_sample_mtier_build_ctx"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["SAMPLE_DAMON_MTIER","DAMON","DAMON_PADDR"],"series_id":"51aba591-9ac7-40b0-b976-26917059e3ca","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-02 04:47:15 +0000 UTC FinishedAt: 2026-07-02 04:47:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh2fjt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["SAMPLE_DAMON_MTIER","DAMON","DAMON_PADDR"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_sample_mtier_build_ctx"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["SAMPLE_DAMON_MTIER","DAMON","DAMON_PADDR"],"series_id":"51aba591-9ac7-40b0-b976-26917059e3ca","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-02 04:47:15 +0000 UTC FinishedAt: 2026-07-02 04:47:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["SAMPLE_DAMON_MTIER","DAMON","DAMON_PADDR"],"series_id":"51aba591-9ac7-40b0-b976-26917059e3ca","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-workflowh2fjt/series-workflowh2fjt-convert-artifact-2305990867/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh2fjt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["SAMPLE_DAMON_MTIER","DAMON","DAMON_PADDR"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_sample_mtier_build_ctx"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["SAMPLE_DAMON_MTIER","DAMON","DAMON_PADDR"],"series_id":"51aba591-9ac7-40b0-b976-26917059e3ca","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-02 04:47:49 +0000 UTC FinishedAt: 2026-07-02 04:50:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh2fjt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["SAMPLE_DAMON_MTIER","DAMON","DAMON_PADDR"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_sample_mtier_build_ctx"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["SAMPLE_DAMON_MTIER","DAMON","DAMON_PADDR"],"series_id":"51aba591-9ac7-40b0-b976-26917059e3ca","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-02 04:47:49 +0000 UTC FinishedAt: 2026-07-02 04:49:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*8429636b-81de-43fa-885a-ac7a9a097141,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-workflowh2fjt/series-workflowh2fjt-build-action-4145861522/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-workflowh2fjt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["SAMPLE_DAMON_MTIER","DAMON","DAMON_PADDR"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_sample_mtier_build_ctx"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["SAMPLE_DAMON_MTIER","DAMON","DAMON_PADDR"],"series_id":"51aba591-9ac7-40b0-b976-26917059e3ca","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-02 04:50:04 +0000 UTC FinishedAt: 2026-07-02 04:50:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh2fjt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["SAMPLE_DAMON_MTIER","DAMON","DAMON_PADDR"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_sample_mtier_build_ctx"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["SAMPLE_DAMON_MTIER","DAMON","DAMON_PADDR"],"series_id":"51aba591-9ac7-40b0-b976-26917059e3ca","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-02 04:50:04 +0000 UTC FinishedAt: 2026-07-02 04:50:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh2fjt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["SAMPLE_DAMON_MTIER","DAMON","DAMON_PADDR"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_sample_mtier_build_ctx"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["SAMPLE_DAMON_MTIER","DAMON","DAMON_PADDR"],"series_id":"51aba591-9ac7-40b0-b976-26917059e3ca","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-02 04:50:04 +0000 UTC FinishedAt: 2026-07-02 05:15:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh2fjt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["SAMPLE_DAMON_MTIER","DAMON","DAMON_PADDR"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_sample_mtier_build_ctx"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["SAMPLE_DAMON_MTIER","DAMON","DAMON_PADDR"],"series_id":"51aba591-9ac7-40b0-b976-26917059e3ca","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-02 04:50:04 +0000 UTC FinishedAt: 2026-07-02 05:15:16 +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:*501e4867-14c8-465c-80ef-c9dca15fab8b,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-workflowh2fjt/series-workflowh2fjt-convert-artifact-2305990867/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": "c2140b68-ca7f-42a1-b802-6080b37b2113", "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-workflowh2fjt/series-workflowh2fjt-build-action-3194541575/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh2fjt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["SAMPLE_DAMON_MTIER","DAMON","DAMON_PADDR"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_sample_mtier_build_ctx"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["SAMPLE_DAMON_MTIER","DAMON","DAMON_PADDR"],"series_id":"51aba591-9ac7-40b0-b976-26917059e3ca","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-02 04:50:04 +0000 UTC FinishedAt: 2026-07-02 05:15:05 +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:*501e4867-14c8-465c-80ef-c9dca15fab8b,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-workflowh2fjt/series-workflowh2fjt-convert-artifact-2305990867/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": "c2140b68-ca7f-42a1-b802-6080b37b2113", "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-workflowh2fjt/series-workflowh2fjt-build-action-3194541575/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh2fjt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["SAMPLE_DAMON_MTIER","DAMON","DAMON_PADDR"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_sample_mtier_build_ctx"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["SAMPLE_DAMON_MTIER","DAMON","DAMON_PADDR"],"series_id":"51aba591-9ac7-40b0-b976-26917059e3ca","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-02 05:15:16 +0000 UTC FinishedAt: 2026-07-02 05:15:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh2fjt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["SAMPLE_DAMON_MTIER","DAMON","DAMON_PADDR"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_sample_mtier_build_ctx"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["SAMPLE_DAMON_MTIER","DAMON","DAMON_PADDR"],"series_id":"51aba591-9ac7-40b0-b976-26917059e3ca","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-02 05:15:17 +0000 UTC FinishedAt: 2026-07-02 05:15:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh2fjt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["SAMPLE_DAMON_MTIER","DAMON","DAMON_PADDR"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_sample_mtier_build_ctx"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["SAMPLE_DAMON_MTIER","DAMON","DAMON_PADDR"],"series_id":"51aba591-9ac7-40b0-b976-26917059e3ca","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-02 05:15:17 +0000 UTC FinishedAt: 2026-07-02 05:17:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh2fjt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["SAMPLE_DAMON_MTIER","DAMON","DAMON_PADDR"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_sample_mtier_build_ctx"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["SAMPLE_DAMON_MTIER","DAMON","DAMON_PADDR"],"series_id":"51aba591-9ac7-40b0-b976-26917059e3ca","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-02 05:15:17 +0000 UTC FinishedAt: 2026-07-02 05:17:15 +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:*c2140b68-ca7f-42a1-b802-6080b37b2113,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-workflowh2fjt/series-workflowh2fjt-build-action-3194541575/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-workflowh2fjt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["SAMPLE_DAMON_MTIER","DAMON","DAMON_PADDR"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_sample_mtier_build_ctx"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["SAMPLE_DAMON_MTIER","DAMON","DAMON_PADDR"],"series_id":"51aba591-9ac7-40b0-b976-26917059e3ca","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-02 05:17:25 +0000 UTC FinishedAt: 2026-07-02 05:19:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh2fjt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["SAMPLE_DAMON_MTIER","DAMON","DAMON_PADDR"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_sample_mtier_build_ctx"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["SAMPLE_DAMON_MTIER","DAMON","DAMON_PADDR"],"series_id":"51aba591-9ac7-40b0-b976-26917059e3ca","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-02 05:17:25 +0000 UTC FinishedAt: 2026-07-02 05:19:30 +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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_sample_mtier_build_ctx"],"skip_cover_check":true},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:*8429636b-81de-43fa-885a-ac7a9a097141,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*c2140b68-ca7f-42a1-b802-6080b37b2113,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-workflowh2fjt/series-workflowh2fjt-build-action-4145861522/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-workflowh2fjt/series-workflowh2fjt-build-action-3194541575/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowh2fjt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["SAMPLE_DAMON_MTIER","DAMON","DAMON_PADDR"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_sample_mtier_build_ctx"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["SAMPLE_DAMON_MTIER","DAMON","DAMON_PADDR"],"series_id":"51aba591-9ac7-40b0-b976-26917059e3ca","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-02 05:17:25 +0000 UTC FinishedAt: 2026-07-02 05:18:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh2fjt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["SAMPLE_DAMON_MTIER","DAMON","DAMON_PADDR"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_sample_mtier_build_ctx"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["SAMPLE_DAMON_MTIER","DAMON","DAMON_PADDR"],"series_id":"51aba591-9ac7-40b0-b976-26917059e3ca","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-02 05:17:25 +0000 UTC FinishedAt: 2026-07-02 05:18:12 +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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_sample_mtier_build_ctx"],"skip_cover_check":true},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-workflowh2fjt/series-workflowh2fjt-convert-artifact-1994226764/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh2fjt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["SAMPLE_DAMON_MTIER","DAMON","DAMON_PADDR"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_sample_mtier_build_ctx"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["SAMPLE_DAMON_MTIER","DAMON","DAMON_PADDR"],"series_id":"51aba591-9ac7-40b0-b976-26917059e3ca","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-02 05:17:25 +0000 UTC FinishedAt: 2026-07-02 05:17:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh2fjt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["SAMPLE_DAMON_MTIER","DAMON","DAMON_PADDR"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_sample_mtier_build_ctx"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["SAMPLE_DAMON_MTIER","DAMON","DAMON_PADDR"],"series_id":"51aba591-9ac7-40b0-b976-26917059e3ca","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-02 05:17:25 +0000 UTC FinishedAt: 2026-07-02 05:17:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh2fjt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["SAMPLE_DAMON_MTIER","DAMON","DAMON_PADDR"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_sample_mtier_build_ctx"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["SAMPLE_DAMON_MTIER","DAMON","DAMON_PADDR"],"series_id":"51aba591-9ac7-40b0-b976-26917059e3ca","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-02 05:17:25 +0000 UTC FinishedAt: 2026-07-02 05:17:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh2fjt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["SAMPLE_DAMON_MTIER","DAMON","DAMON_PADDR"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_sample_mtier_build_ctx"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["SAMPLE_DAMON_MTIER","DAMON","DAMON_PADDR"],"series_id":"51aba591-9ac7-40b0-b976-26917059e3ca","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-02 05:18:19 +0000 UTC FinishedAt: 2026-07-02 05:19:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh2fjt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["SAMPLE_DAMON_MTIER","DAMON","DAMON_PADDR"],"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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_sample_mtier_build_ctx"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["SAMPLE_DAMON_MTIER","DAMON","DAMON_PADDR"],"series_id":"51aba591-9ac7-40b0-b976-26917059e3ca","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-02 05:18:19 +0000 UTC FinishedAt: 2026-07-02 05:19:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*8429636b-81de-43fa-885a-ac7a9a097141,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*c2140b68-ca7f-42a1-b802-6080b37b2113,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-workflowh2fjt/series-workflowh2fjt-build-action-4145861522/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-workflowh2fjt/series-workflowh2fjt-build-action-3194541575/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-workflowh2fjt/series-workflowh2fjt-convert-artifact-1994226764/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,}