Name: series-workflow98v9z Phase: Succeeded StartedAt: 2026-07-06 06:30:37 +0000 UTC FinishedAt: 2026-07-06 07:53:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98v9z[0] Phase: Succeeded StartedAt: 2026-07-06 06:30:37 +0000 UTC FinishedAt: 2026-07-06 06:54:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98v9z[0].run-triage Phase: Succeeded StartedAt: 2026-07-06 06:30:37 +0000 UTC FinishedAt: 2026-07-06 06:54:42 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "d7a8d500d7e42837bd8dce40cb52c97c6e8706a9", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "STMMAC_ETH", "DWMAC_INTEL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "d7a8d500d7e42837bd8dce40cb52c97c6e8706a9", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "STMMAC_ETH", "DWMAC_INTEL" ], "series_id": "8565ed2f-f9de-42e9-ba01-1ab83829fdec" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "intel_mac_finish" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA2OjUyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAgICYjMzQ7RFdNQUNfSU5URUwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpbnRlbF9tYWNfZmluaXNoJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBgaW50ZWxfbWFjX2ZpbmlzaGAgZnVuY3Rpb24gaW4gdGhlIEludGVsIERXTUFDIFBDSSBkcml2ZXIgdG8gc2tpcCByZXByb2dyYW1taW5nIHRoZSBTZXJEZXMgaWYgdGhlIGludGVyZmFjZSBtb2RlIGhhc24mIzM5O3QgY2hhbmdlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgcmVhY2hhYmxlIGRyaXZlciAodmlhIFBDSSBmdXp6aW5nKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwNjo1MjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGZkYzZhOWRlYjg1MDBkODdhZDMwOWJkYmIzM2IxZDYzOWJjODQwYWNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCA2IDA2OjUyOjA2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jXG5pbmRleCBiOGQ0NjdiYTZkNzJkMy4uOWExNjI4MzFjYTQwNTAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jXG5AQCAtNTM2LDYgJiM0Mzs1MzYsMTUgQEAgc3RhdGljIGludCBpbnRlbF9tYWNfZmluaXNoKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuIFx0aW50IG1heF9yZWdzID0gMDtcbiBcdGludCByZXQgPSAwO1xuIFxuJiM0MztcdC8qIG1hY19maW5pc2goKSBydW5zIGF0IHRoZSBlbmQgb2YgZXZlcnkgbWFqb3IgbGluayByZWNvbmZpZ3VyYXRpb24sXG4mIzQzO1x0ICogaW5jbHVkaW5nIHRoZSBpbml0aWFsIG9uZSBhdCBwcm9iZSwgd2hlcmUgdGhlIGludGVyZmFjZSBtb2RlIGhhc1xuJiM0MztcdCAqIG5vdCBhY3R1YWxseSBjaGFuZ2VkLiBSZXByb2dyYW1taW5nIGFuZCBwb3dlci1jeWNsaW5nIHRoZSBTZXJEZXMgaXNcbiYjNDM7XHQgKiBvbmx5IG5lZWRlZCBvbiBhIHJlYWwgbW9kZSBjaGFuZ2UgYW5kIGlzIG90aGVyd2lzZSBuZWVkbGVzc2x5XG4mIzQzO1x0ICogZGlzcnVwdGl2ZSwgc28gc2tpcCBpdCB3aGVuIHRoZSBtb2RlIGlzIHVuY2hhbmdlZC5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAocHJpdi1cdTAwM2VwbGF0LVx1MDAzZXBoeV9pbnRlcmZhY2UgPT0gaW50ZXJmYWNlKVxuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1xuIFx0cmV0ID0gaW50ZWxfdHNuX2xhbmVfaXNfYXZhaWxhYmxlKG5kZXYsIGludGVsX3ByaXYpO1xuIFx0aWYgKHJldCBcdTAwM2MgMCkge1xuIFx0XHRuZXRkZXZfaW5mbyhwcml2LVx1MDAzZWRldiwgXCYjMzQ7Tm8gVFNOIGxhbmUgYXZhaWxhYmxlIHRvIHNldCB0aGUgcmVnaXN0ZXJzLlxcblwmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDY6NTI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7U1RNTUFDX0VUSCYjMzQ7LAogICAgJiMzNDtEV01BQ19JTlRFTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2ludGVsX21hY19maW5pc2gmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGBpbnRlbF9tYWNfZmluaXNoYCBmdW5jdGlvbiBpbiB0aGUgSW50ZWwgRFdNQUMgUENJIGRyaXZlciB0byBza2lwIHJlcHJvZ3JhbW1pbmcgdGhlIFNlckRlcyBpZiB0aGUgaW50ZXJmYWNlIG1vZGUgaGFzbiYjMzk7dCBjaGFuZ2VkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSByZWFjaGFibGUgZHJpdmVyICh2aWEgUENJIGZ1enppbmcpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBmZGM2YTlkZWI4NTAwZDg3YWQzMDliZGJiMzNiMWQ2MzliYzg0MGFjCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBKdWwgNiAwNjo1MjowNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jCmluZGV4IGI4ZDQ2N2JhNmQ3MmQzLi45YTE2MjgzMWNhNDA1MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jCkBAIC01MzYsNiAmIzQzOzUzNiwxNSBAQCBzdGF0aWMgaW50IGludGVsX21hY19maW5pc2goc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsCiAJaW50IG1heF9yZWdzID0gMDsKIAlpbnQgcmV0ID0gMDsKIAomIzQzOwkvKiBtYWNfZmluaXNoKCkgcnVucyBhdCB0aGUgZW5kIG9mIGV2ZXJ5IG1ham9yIGxpbmsgcmVjb25maWd1cmF0aW9uLAomIzQzOwkgKiBpbmNsdWRpbmcgdGhlIGluaXRpYWwgb25lIGF0IHByb2JlLCB3aGVyZSB0aGUgaW50ZXJmYWNlIG1vZGUgaGFzCiYjNDM7CSAqIG5vdCBhY3R1YWxseSBjaGFuZ2VkLiBSZXByb2dyYW1taW5nIGFuZCBwb3dlci1jeWNsaW5nIHRoZSBTZXJEZXMgaXMKJiM0MzsJICogb25seSBuZWVkZWQgb24gYSByZWFsIG1vZGUgY2hhbmdlIGFuZCBpcyBvdGhlcndpc2UgbmVlZGxlc3NseQomIzQzOwkgKiBkaXNydXB0aXZlLCBzbyBza2lwIGl0IHdoZW4gdGhlIG1vZGUgaXMgdW5jaGFuZ2VkLgomIzQzOwkgKi8KJiM0MzsJaWYgKHByaXYtJmd0O3BsYXQtJmd0O3BoeV9pbnRlcmZhY2UgPT0gaW50ZXJmYWNlKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiAJcmV0ID0gaW50ZWxfdHNuX2xhbmVfaXNfYXZhaWxhYmxlKG5kZXYsIGludGVsX3ByaXYpOwogCWlmIChyZXQgJmx0OyAwKSB7CiAJCW5ldGRldl9pbmZvKHByaXYtJmd0O2RldiwgJiMzNDtObyBUU04gbGFuZSBhdmFpbGFibGUgdG8gc2V0IHRoZSByZWdpc3RlcnMuXG4mIzM0Oyk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA2OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5NzMKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAyNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUGF0Y2ggdG8gdGhlIEludGVsIERXTUFDIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0JiMzOTtzIGJlZW4gYXBwbGllZCB0byBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuY2AuIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIHRoaXMgbmV3IGNvbmRpdGlvbmFsIGNoZWNrIGluIGBpbnRlbF9tYWNfZmluaXNoYDogYGlmIChwcml2LSZndDtwbGF0LSZndDtwaHlfaW50ZXJmYWNlID09IGludGVyZmFjZSkgcmV0dXJuIDA7YC4gVGhpcyBpcyBhIGNsZWFyIGZ1bmN0aW9uYWwgY2hhbmdlLCBhbHRlcmluZyB0aGUgYmVoYXZpb3Igb2YgdGhlIEludGVsIERXTUFDIGRyaXZlciB3aXRoaW4gdGhlIFNUTWljcm9lbGVjdHJvbmljcyBzdG1tYWMgZnJhbWV3b3JrLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgY2FuIHRoaXMgYmUgZnV6emVkIGVmZmVjdGl2ZWx5PyBTcGVjaWZpY2FsbHksIGNhbiBJIHJlYWNoIHRoaXMgZHJpdmVyIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgZm9yIHJvYnVzdCB0ZXN0aW5nPwoKVGhlIGZpbGUgaXRzZWxmLCBgZHdtYWMtaW50ZWwuY2AsIGltbWVkaWF0ZWx5IHRlbGxzIG1lIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYW4gZXRoZXJuZXQgZHJpdmVyIGZvciB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIDEwLzEwMC8xMDAwL0VRT1MgRXRoZXJuZXQgTUFDLCBidXQgc3BlY2lmaWNhbGx5IGZvciBJbnRlbCBwbGF0Zm9ybXMgbGlrZSBFbGtoYXJ0IExha2UgYW5kIFF1YXJrLiBUaGUgY3J1Y2lhbCB0aGluZyBoZXJlIGlzIHRoYXQgaXQmIzM5O3MgYSBQQ0kgZHJpdmVyLiBSZWFjaGluZyBQQ0kgZGV2aWNlcyBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGNhbiBiZSB0cmlja3kuIE9mdGVuLCB3ZSBoYXZlIHRvIHJlbHkgb24gZW11bGF0aW9uLCBvciB3ZSBtaWdodCBzaW1wbHkgbGFjayB0aGUgc3BlY2lmaWMgaGFyZHdhcmUgY29uZmlndXJhdGlvbi4KCkkgcmVtZW1iZXIgc3l6a2FsbGVyICpkb2VzKiBoYXZlIHNvbWUgUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzLCBidXQgaXQmIzM5O3MgdHlwaWNhbGx5IG1vcmUgY2hhbGxlbmdpbmcgdG8gZ2V0IHRvIHNwZWNpZmljIGhhcmR3YXJlIGRyaXZlcnMgdW5sZXNzIHRoZXkmIzM5O3JlIHZpcnR1YWxpemVkIG9yIFVTQi1iYXNlZC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGlzIHJlYWNoYWJsZS4gU28sIGxldCBtZSBxdWlja2x5IHJlLWV4YW1pbmUgdGhlIGBkd21hYy1pbnRlbC5jYCBjb2RlIHRvIGNvbmZpcm0gaXQmIzM5O3MgYWN0dWFsbHkgYSBQQ0kgZHJpdmVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcGF0aCB0byBnZXQgdGhpcyBkcml2ZXIgZXhlcmNpc2luZyB1bmRlciBhIGZ1enplci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwNjo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwY2lfZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTEzOTE9TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIGludGVsX2V0aF9wY2lfaWRfdGFibGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMzkyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMzkzOnN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBpbnRlbF9ldGhfcGNpX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTM5NC1cdC5uYW1lID0gXCYjMzQ7aW50ZWwtZXRoLXBjaVwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTE0MDItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjE0MDM6bW9kdWxlX3BjaV9kcml2ZXIoaW50ZWxfZXRoX3BjaV9kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xNDA0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA2OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4NjIKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAxMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQQ0kgRHJpdmVyIGFuZCBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyB0aGlzIGlzIGEgUENJIGRyaXZlci4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0aGF0IHdlIGRvbiYjMzk7dCB1c3VhbGx5IHRhcmdldCBzcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXJzIGZvciBmdXp6aW5nIHVubGVzcyB0aGV5JiMzOTtyZSBicm9hZGx5IGVtdWxhdGVkIOKAkyBsaWtlIGUxMDAwZSBvciB2aXJ0aW8g4oCTIHNpbmNlIGl0JiMzOTtzIGhhcmQgdG8gZ2V0IGdvb2QgY292ZXJhZ2UuIEkgbWVhbiwgd2UmIzM5O2QgdHlwaWNhbGx5IHJlbHkgb24gc3l6a2FsbGVyJiMzOTtzIFBDSSBmdXp6aW5nLCBsZXR0aW5nIGl0IGhhbmRsZSBQQ0kgZGV2aWNlIGluamVjdGlvbi4gQnV0IHdhaXQsIEkgbmVlZCB0byByZW1lbWJlciB0aGF0IHN5emthbGxlciAqZG9lcyogaGF2ZSBhIFBDSSBmdXp6ZXIuIEl0IGNhbiBwcm9iZSBhcmJpdHJhcnkgUENJIGRyaXZlcnMgYnkgaW5qZWN0aW5nIFBDSSBkZXZpY2VzIHdpdGggc3BlY2lmaWMgbWF0Y2hpbmcgSURzLiBUaGF0IGNoYW5nZXMgdGhpbmdzOyBpdCBvcGVucyB1cCBhIHRhcmdldGVkIGFwcHJvYWNoLiBSaWdodCwgc28gbm93IG15IGZvY3VzIHNoaWZ0cyB0byB3aGV0aGVyIGBpbnRlbF9tYWNfZmluaXNoYCBpcyByZWFjaGFibGUuIExldCYjMzk7cyBzZWUgaWYgd2UgY2FuIGdldCB0aGVyZS4gSXQgc2VlbXMgaXTigJlzIGEgY2FsbGJhY2sgZm9yIGBtYWNfZmluaXNoYCBpbiBgcGh5bGlua19tYWNfb3BzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwNjo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpbnRlbF9tYWNfZmluaXNoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTUwNz1zdGF0aWMgaW50IGludGVsX3NldF9yZWdfYWNjZXNzKGNvbnN0IHN0cnVjdCBwbWNfc2VyZGVzX3JlZ3MgKnJlZ3MsIGludCBtYXhfcmVncylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTUyNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6NTI4OnN0YXRpYyBpbnQgaW50ZWxfbWFjX2ZpbmlzaChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNTI5LVx0XHRcdCAgICB2b2lkICppbnRlbF9kYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9NzY0PXN0YXRpYyBpbnQgZWhsX3NnbWlpX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy03NzItXHRwbGF0LVx1MDAzZXNlcmRlc19wb3dlcmRvd24gPSBpbnRlbF9zZXJkZXNfcG93ZXJkb3duO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo3NzM6XHRwbGF0LVx1MDAzZW1hY19maW5pc2ggPSBpbnRlbF9tYWNfZmluaXNoO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy03NzQtXHRwbGF0LVx1MDAzZWNsa19wdHBfcmF0ZSA9IDIwNDgwMDAwMDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTgzMD1zdGF0aWMgaW50IGVobF9wc2UwX3NnbWlpMWdfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTgzNy1cdHBsYXQtXHUwMDNlc2VyZGVzX3Bvd2VyZG93biA9IGludGVsX3NlcmRlc19wb3dlcmRvd247XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjgzODpcdHBsYXQtXHUwMDNlbWFjX2ZpbmlzaCA9IGludGVsX21hY19maW5pc2g7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTgzOS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTg3OT1zdGF0aWMgaW50IGVobF9wc2UxX3NnbWlpMWdfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTg4Ni1cdHBsYXQtXHUwMDNlc2VyZGVzX3Bvd2VyZG93biA9IGludGVsX3NlcmRlc19wb3dlcmRvd247XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjg4NzpcdHBsYXQtXHUwMDNlbWFjX2ZpbmlzaCA9IGludGVsX21hY19maW5pc2g7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTg4OC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTEwMDE9c3RhdGljIGludCBhZGxuX3NnbWlpX3BoeTBfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwMDktXHRwbGF0LVx1MDAzZXNlcmRlc19wb3dlcmRvd24gPSBpbnRlbF9zZXJkZXNfcG93ZXJkb3duO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMDEwOlx0cGxhdC1cdTAwM2VtYWNfZmluaXNoID0gaW50ZWxfbWFjX2ZpbmlzaDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTAxMS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwNjo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDUyCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgdGhlIGBtYWNfZmluaXNoYCBDYWxsYmFja3MgaW4gU1RNTUFDKioKClJpZ2h0LCBzbyB0aGUgYG1hY19maW5pc2hgIGNhbGxiYWNrIGlzIHRyaWdnZXJlZCwgbGlrZWx5IGZyb20gYSBmdW5jdGlvbiBsaWtlIGBzdG1tYWNfbWFjX2ZpbmlzaGAgb3Igc29tZXRoaW5nIHZlcnkgc2ltaWxhciB3aXRoaW4gdGhlIFNUTU1BQyBkcml2ZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3cgaGVyZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHRyYWNlIHRoZSBvcmlnaW5zIG9mIHRoZSBgbWFjX2ZpbmlzaGAgY2FsbC4gV2hlcmUgKmV4YWN0bHkqIGlzIHRoYXQgZnVuY3Rpb24gYmVpbmcgaW52b2tlZCB3aXRoaW4gdGhlIGBzdG1tYWNgIGNvZGU/IEkgbmVlZCB0byBwaW5wb2ludCBldmVyeSBjYWxsIHNpdGUgdG8gZnVsbHkgZ3Jhc3AgdGhlIGV4ZWN1dGlvbiBjb250ZXh0IGFuZCB3aGF0JiMzOTtzIGhhcHBlbmluZyBqdXN0IHByaW9yIHRvIGBtYWNfZmluaXNoYCBiZWluZyBjYWxsZWQuIEtub3dpbmcgdGhlIGNhbGxpbmcgZnVuY3Rpb24ocykgd2lsbCBnaXZlIG1lIGNsdWVzIGFib3V0IHRoZSBzY2VuYXJpb3MgdGhhdCBuZWNlc3NpdGF0ZSB0aGlzIGNhbGxiYWNrIGFuZCBoZWxwIG1lIG5hcnJvdyBkb3duIGFueSBwb3RlbnRpYWwgaXNzdWUgSSBhbSBjdXJyZW50bHkgaW52ZXN0aWdhdGluZywgYW5kIGhvdyB0aGlzIGZ1bmN0aW9uIHBsYXlzIGludG8gdGhlIGRyaXZlciYjMzk7cyBvdmVyYWxsIG9wZXJhdGlvbi4gVGltZSB0byBkaXZlIGludG8gdGhlIGNvZGViYXNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA2OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21hY19maW5pc2gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz01MDc9c3RhdGljIGludCBpbnRlbF9zZXRfcmVnX2FjY2Vzcyhjb25zdCBzdHJ1Y3QgcG1jX3NlcmRlc19yZWdzICpyZWdzLCBpbnQgbWF4X3JlZ3MpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy01MjctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjUyODpzdGF0aWMgaW50IGludGVsX21hY19maW5pc2goc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTUyOS1cdFx0XHQgICAgdm9pZCAqaW50ZWxfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTUzOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6NTM5Olx0LyogbWFjX2ZpbmlzaCgpIHJ1bnMgYXQgdGhlIGVuZCBvZiBldmVyeSBtYWpvciBsaW5rIHJlY29uZmlndXJhdGlvbixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNTQwLVx0ICogaW5jbHVkaW5nIHRoZSBpbml0aWFsIG9uZSBhdCBwcm9iZSwgd2hlcmUgdGhlIGludGVyZmFjZSBtb2RlIGhhc1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9NzY0PXN0YXRpYyBpbnQgZWhsX3NnbWlpX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy03NzItXHRwbGF0LVx1MDAzZXNlcmRlc19wb3dlcmRvd24gPSBpbnRlbF9zZXJkZXNfcG93ZXJkb3duO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo3NzM6XHRwbGF0LVx1MDAzZW1hY19maW5pc2ggPSBpbnRlbF9tYWNfZmluaXNoO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy03NzQtXHRwbGF0LVx1MDAzZWNsa19wdHBfcmF0ZSA9IDIwNDgwMDAwMDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTgzMD1zdGF0aWMgaW50IGVobF9wc2UwX3NnbWlpMWdfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTgzNy1cdHBsYXQtXHUwMDNlc2VyZGVzX3Bvd2VyZG93biA9IGludGVsX3NlcmRlc19wb3dlcmRvd247XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjgzODpcdHBsYXQtXHUwMDNlbWFjX2ZpbmlzaCA9IGludGVsX21hY19maW5pc2g7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTgzOS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTg3OT1zdGF0aWMgaW50IGVobF9wc2UxX3NnbWlpMWdfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTg4Ni1cdHBsYXQtXHUwMDNlc2VyZGVzX3Bvd2VyZG93biA9IGludGVsX3NlcmRlc19wb3dlcmRvd247XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjg4NzpcdHBsYXQtXHUwMDNlbWFjX2ZpbmlzaCA9IGludGVsX21hY19maW5pc2g7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTg4OC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTEwMDE9c3RhdGljIGludCBhZGxuX3NnbWlpX3BoeTBfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwMDktXHRwbGF0LVx1MDAzZXNlcmRlc19wb3dlcmRvd24gPSBpbnRlbF9zZXJkZXNfcG93ZXJkb3duO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMDEwOlx0cGxhdC1cdTAwM2VtYWNfZmluaXNoID0gaW50ZWxfbWFjX2ZpbmlzaDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTAxMS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1xY29tLWV0aHFvcy5jPTYxMT1zdGF0aWMgdm9pZCBxY29tX2V0aHFvc19zZXJkZXNfcG93ZXJkb3duKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB2b2lkICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmMtNjE4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYzo2MTk6c3RhdGljIGludCBldGhxb3NfbWFjX2ZpbmlzaF9zZXJkZXMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHZvaWQgKnByaXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1xY29tLWV0aHFvcy5jLTYyMC1cdFx0XHRcdCAgICB1bnNpZ25lZCBpbnQgbW9kZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1xY29tLWV0aHFvcy5jPTY4ND1zdGF0aWMgaW50IHFjb21fZXRocW9zX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYy03MjEtXHRcdHBsYXRfZGF0LVx1MDAzZWZpeF9tYWNfc3BlZWQgPSBldGhxb3NfZml4X21hY19zcGVlZF9zZ21paTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmM6NzIyOlx0XHRwbGF0X2RhdC1cdTAwM2VtYWNfZmluaXNoID0gZXRocW9zX21hY19maW5pc2hfc2VyZGVzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYy03MjMtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MTAzNz1zdGF0aWMgdm9pZCBzdG1tYWNfbWFjX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZywgdW5zaWduZWQgaW50IG1vZGUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xMDQyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoxMDQzOnN0YXRpYyBpbnQgc3RtbWFjX21hY19maW5pc2goc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHVuc2lnbmVkIGludCBtb2RlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xMDQ0LVx0XHRcdCAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTEwNDgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjEwNDk6XHRpZiAocHJpdi1cdTAwM2VwbGF0LVx1MDAzZW1hY19maW5pc2gpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjEwNTA6XHRcdHByaXYtXHUwMDNlcGxhdC1cdTAwM2VtYWNfZmluaXNoKG5kZXYsIHByaXYtXHUwMDNlcGxhdC1cdTAwM2Vic3BfcHJpdiwgbW9kZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTA1MS1cdFx0XHRcdCAgICAgICBpbnRlcmZhY2UpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MTI2ND1zdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyBzdG1tYWNfcGh5bGlua19tYWNfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTI2Ny1cdC5tYWNfY29uZmlnID0gc3RtbWFjX21hY19jb25maWcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjEyNjg6XHQubWFjX2ZpbmlzaCA9IHN0bW1hY19tYWNfZmluaXNoLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xMjY5LVx0Lm1hY19saW5rX2Rvd24gPSBzdG1tYWNfbWFjX2xpbmtfZG93bixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwNjo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MTQ3CgkJCQkJCQlvdXRwdXQ6IDUwCgkJCQkJCQl0aG91Z2h0czogNjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQb3RlbnRpYWwgQXR0YWNrIFN1cmZhY2UqKgoKT2theSwgc28gYHN0bW1hY19tYWNfZmluaXNoYCBnZXRzIHRyaWdnZXJlZCBieSBgcGh5bGlua2AuIFRoYXQmIzM5O3MgYW4gaW50ZXJlc3RpbmcgcG9pbnQgdG8gc3RhcnQgZnJvbS4gTm93LCB0aGUgYGR3bWFjLWludGVsLmNgIGRyaXZlciBpcyBhIFBDSSBkcml2ZXIsIHJpZ2h0PyBJZiBpdCBpcywgdGhlbiBpdCYjMzk7cyBhIHBvdGVudGlhbCB0YXJnZXQgZm9yIGZ1enppbmcgdmlhIGEgc3BlY2lhbGx5IGNyYWZ0ZWQgUENJIGRldmljZS4gVGhlIGNsYXNzaWMgYXBwcm9hY2guIExldCYjMzk7cyBkaWcgaW50byB0aGUgUENJIElEcyBhc3NvY2lhdGVkIHdpdGggYGR3bWFjLWludGVsLmNgLiBUaGF0JiMzOTtzIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcDsga25vd2luZyB0aGUgUENJIElEcyB3aWxsIGxldCBtZSBmb2N1cyBteSBmdXp6aW5nIGVmZm9ydHMgb24gdGhlIGNvcnJlY3QgdmVuZG9yIGFuZCBkZXZpY2UgSURzIHRvIGluamVjdCBpbnRvIHRoZSBzeXN0ZW0uIEl0JiMzOTtzIHRpbWUgdG8gZ2F0aGVyIHRoYXQgY3J1Y2lhbCBpbmZvcm1hdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDY6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aW50ZWxfZXRoX3BjaV9pZF90YWJsZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMzM5PXN0YXRpYyB2b2lkIGludGVsX2V0aF9wY2lfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTM3MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTM3MTpzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgaW50ZWxfZXRoX3BjaV9pZF90YWJsZVtdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMzcyLVx0eyBQQ0lfREVWSUNFX0RBVEEoSU5URUwsIFFVQVJLLCBcdTAwMjZxdWFya19pbmZvKSB9LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTM5MC19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMzkxOk1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBpbnRlbF9ldGhfcGNpX2lkX3RhYmxlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTM5Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9MTM5Mz1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgaW50ZWxfZXRoX3BjaV9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEzOTQtXHQubmFtZSA9IFwmIzM0O2ludGVsLWV0aC1wY2lcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEzOTU6XHQuaWRfdGFibGUgPSBpbnRlbF9ldGhfcGNpX2lkX3RhYmxlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMzk2LVx0LnByb2JlID0gaW50ZWxfZXRoX3BjaV9wcm9iZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDY6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjg2MgoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipGdXp6aW5nIHRoZSBQQ0kgRHJpdmVyOiBBIFF1aWNrIEFzc2Vzc21lbnQqKgoKSG1tLCBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgUENJIGRyaXZlci4uLiBpcyB0aGlzIGV2ZW4gd29ydGggdGhlIGZ1enppbmcgZWZmb3J0PyBJdCYjMzk7cyBhbHdheXMgYSB0cmFkZS1vZmYuIEJ1dCwgZ2l2ZW4gdGhlIHBvdGVudGlhbCBzZXZlcml0eSBvZiBQQ0ktcmVsYXRlZCBidWdzLCB0aGUgYW5zd2VyIGlzIGxpa2VseSB5ZXMuIEVzcGVjaWFsbHkgYmVjYXVzZSB0aGlzIGlzIGEgKmZ1bmN0aW9uYWwqIGNoYW5nZSwgYW5kIHRoYXQmIzM5O3MgdGhlIGtpbmQgb2YgdGhpbmcgdGhhdCBjb3VsZCBpbnRyb2R1Y2UgbmV3IGFuZCBpbnRlcmVzdGluZyBlZGdlIGNhc2VzLgoKR29vZCwgZ29vZCwgZ29vZCwgU3l6a2FsbGVyIGRvZXMgaW5kZWVkIHN1cHBvcnQgUENJIGZ1enppbmcuIFRoYXQmIzM5O3MgYSBodWdlIHBvc2l0aXZlISBJdCBzdHJlYW1saW5lcyB0aGluZ3MgY29uc2lkZXJhYmx5LgoKUmlnaHQsIHNvIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byB1bmRlcnN0YW5kIHRoZSB0YXJnZXQsIGFuZCBmaW5kIHRoZSBjb25maWcgb3B0aW9ucyBmb3IgYGR3bWFjLWludGVsLmNgLiBHb3R0YSBzZWUgd2hhdCBrbm9icyB3ZSBoYXZlIHRvIHdvcmsgd2l0aCwgdG8gZW5hYmxlIGFuZCBjb25maWd1cmUgdGhlIGRyaXZlciBhcHByb3ByaWF0ZWx5LCBvciBwb3RlbnRpYWxseSBmaW5kIGZlYXR1cmVzIHRvIGRpc2FibGUuIFRoaXMmIzM5O2xsIHJlcXVpcmUgc29tZSBxdWljayBkaWdnaW5nIHRvIGlkZW50aWZ5IHRoZSByZWxldmFudCBLY29uZmlnIHN5bWJvbHMuIFRpbWUgdG8gZ2V0IHRvIHdvcmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA2OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2R3bWFjLWludGVsLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU9NTA9b2JqLSQoQ09ORklHX1NUTU1BQ19QQ0kpXHQmIzQzOz0gc3RtbWFjLXBjaS5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo1MTpvYmotJChDT05GSUdfRFdNQUNfSU5URUwpXHQmIzQzOz0gZHdtYWMtaW50ZWwub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtNTItb2JqLSQoQ09ORklHX0RXTUFDX0xPT05HU09OKVx0JiM0Mzs9IGR3bWFjLWxvb25nc29uLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDY6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzI4MgoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDU1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3Mgc2VlLCB0aGUgZHJpdmVyIGNvbmZpZ3VyYXRpb24gc2VlbXMgdG8gYmUgcG9pbnRpbmcgbWUgdG93YXJkcyBgQ09ORklHX0RXTUFDX0lOVEVMYC4gUmlnaHQsIGFuZCB3YXNuJiMzOTt0IHRoZXJlIHNvbWV0aGluZyBhYm91dCBgQ09ORklHX1NUTU1BQ19FVEhgIGFzIHdlbGw/IEFoLCB5ZXMsIHRoYXQmIzM5O3MgdGhlIG1vcmUgZ2VuZXJhbCwgbWFpbiBkcml2ZXIsIGlzbiYjMzk7dCBpdD8gT2theSwgc28gaWYgSSB3YW50IHRvIGRlbHZlIGRlZXBlciBpbnRvIHRoaXMgYERXTUFDX0lOVEVMYCBjb25maWd1cmF0aW9uLCB0aGUgb2J2aW91cyBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgYEtjb25maWdgIGZpbGUuIFRoYXQmIzM5O3Mgd2hlcmUgYWxsIHRoZSBkZXBlbmRlbmNpZXMgYW5kIG9wdGlvbnMgc2hvdWxkIGJlIGRlZmluZWQgZm9yIGBEV01BQ19JTlRFTGAuIFRpbWUgdG8gZGlnIGluIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwNjo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRFdNQUNfSU5URUwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zMjI9Y29uZmlnIERXTUFDX0lNWDhcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMzMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzM0OmNvbmZpZyBEV01BQ19JTlRFTF9QTEFUXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMzNS1cdHRyaXN0YXRlIFwmIzM0O0ludGVsIGR3bWFjIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTM3Mz1jb25maWcgU1RNTUFDX0xJQlBDSVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzc3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozNzg6Y29uZmlnIERXTUFDX0lOVEVMXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM3OS1cdHRyaXN0YXRlIFwmIzM0O0ludGVsIEdNQUMgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwNjo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NzUyCgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMjMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBvdGVudGlhbCBWdWxuZXJhYmlsaXR5IGluIEludGVsIEV0aGVybmV0IERyaXZlcnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYERXTUFDX0lOVEVMYCBjb25maWd1cmF0aW9uLiBSaWdodCwgYW5kIEkgc2VlIHRoYXQgYGludGVsX21hY19maW5pc2hgIGlzIGJlaW5nIGNhbGxlZCBmcm9tIGBzdG1tYWNfbWFjX2ZpbmlzaGAuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcsIGJlY2F1c2UgYHN0bW1hY19tYWNfZmluaXNoYCBpcyBhIFBIWSBsaW5rIGNhbGxiYWNrLiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBjYW4gdGhpcyBiZSB0cmlnZ2VyZWQgdmlhIHN5emthbGxlcj8gSXQgc2VlbXMgbGlrZSBpdCBjYW4uIFN5emthbGxlciBjYW4gaW5qZWN0IFBDSSBkZXZpY2VzLCB3aGljaCBzaG91bGQgbGVhZCB0byBgaW50ZWxfZXRoX3BjaV9wcm9iZWAsIHdoaWNoIGluIHR1cm4gcmVnaXN0ZXJzIHRoZSBuZXRkZXYuIFRoZW4sIGJ5IGJyaW5naW5nIHRoZSBpbnRlcmZhY2UgdXAgdXNpbmcgc3l6a2FsbGVyLCB3ZSB0cmlnZ2VyIFBIWSBsaW5rIHRvIGNhbGwgYG1hY19maW5pc2hgLgoKVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBpbiB0aGlzIGNvbmRpdGlvbmFsOgpgYGBjCglpZiAocHJpdi0mZ3Q7cGxhdC0mZ3Q7cGh5X2ludGVyZmFjZSA9PSBpbnRlcmZhY2UpCgkJcmV0dXJuIDA7CmBgYApFc3NlbnRpYWxseSwgaXQmIzM5O3Mgc2tpcHBpbmcgcmVwcm9ncmFtbWluZyB0aGUgU2VyRGVzIGlmIHRoZSBpbnRlcmZhY2UgbW9kZSBpcyB1bmNoYW5nZWQuIFRoaXMgc2VlbXMgZnVuY3Rpb25hbCwgYW5kIGdpdmVuIHRoYXQgdGhpcyBkcml2ZXIgaXMgcmVhY2hhYmxlICh2aWEgUENJIGZ1enppbmcpLCB0aGlzIGNvdWxkIGJlIGEgcG9pbnQgb2YgaW50ZXJlc3QuIEkgdGhpbmsgYGludGVsX21hY19maW5pc2hgIHdvdWxkIGJlIHRoZSBmb2N1cyBzeW1ib2wgdG8gdHJhY2UuIEkmIzM5O2xsIG5lZWQgdG8gZW5hYmxlIGEgZmV3IGNvbmZpZ3VyYXRpb25zIHRvIGdldCB0aGlzIHRvIGJ1aWxkIGFuZCB0ZXN0OiBgRFdNQUNfSU5URUxgLCBgU1RNTUFDX0VUSGAsIGFuZCBgU1RNTUFDX1BDSWAuIExldCBtZSBjaGVjayBgS2NvbmZpZ2AgdG8gc2VlIHRoZSBkZXBlbmRlbmNpZXMgZm9yIGBEV01BQ19JTlRFTGAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA2OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBEV01BQ19JTlRFTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zMjI9Y29uZmlnIERXTUFDX0lNWDhcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMzMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzM0OmNvbmZpZyBEV01BQ19JTlRFTF9QTEFUXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMzNS1cdHRyaXN0YXRlIFwmIzM0O0ludGVsIGR3bWFjIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTM3Mz1jb25maWcgU1RNTUFDX0xJQlBDSVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzc3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozNzg6Y29uZmlnIERXTUFDX0lOVEVMXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM3OS1cdHRyaXN0YXRlIFwmIzM0O0ludGVsIEdNQUMgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwNjo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NTgzCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhlIHByb3ZpZGVkIHRleHQsIGtlZXBpbmcgaW4gbWluZCBJJiMzOTttIGFuIGV4cGVydCBpbiB0aGUgZmllbGQgYW5kIHdhbnQgYSBmdWxzb21lIHJlc3BvbnNlOgoKKipBbmFseXppbmcgdGhlIGBEV01BQ19JTlRFTGAgQmxvY2sqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGBEV01BQ19JTlRFTGAgYmxvY2suIEkgbmVlZCB0byBnZXQgYSBmdWxsIHBpY3R1cmUgb2Ygd2hhdCYjMzk7cyBoYXBwZW5pbmcgaGVyZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGlkZW50aWZ5IGV4YWN0bHkgd2hhdCBhc3BlY3Qgb2YgSW50ZWwgRFdNQUMgKERpZ2l0YWwgV2lyZWxlc3MgTUFDKSBpcyBiZWluZyBkaXNjdXNzZWQuIElzIGl0IHJlbGF0ZWQgdG8gdGhlIGhhcmR3YXJlIGRlc2lnbj8gRHJpdmVyIGNvbmZpZ3VyYXRpb24/IEZpcm13YXJlIGludGVyYWN0aW9uPyBUaGUgbmFtaW5nIGNvbnZlbnRpb24gc3VnZ2VzdHMgaXTigJlzIGxpa2VseSBzb21ldGhpbmcgbG93LWxldmVsLCBwcm9iYWJseSByZWxhdGVkIHRvIHRoZSBwaHlzaWNhbCBvciBNQUMgbGF5ZXIgaXRzZWxmLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgZnVuY3Rpb25hbGl0eSB3aXRoaW4gdGhlIGxhcmdlciBEV01BQyBzeXN0ZW0uCgpNeSBleHBlcnRpc2UgaW1tZWRpYXRlbHkgYnJpbmdzIHRvIG1pbmQgc2V2ZXJhbCBxdWVzdGlvbnM6CgoqICAgV2hhdCBzcGVjaWZpYyBJbnRlbCBjaGlwc2V0IGZhbWlseSBpcyB0aGlzIHRhcmdldGluZz8gS25vd2luZyB0aGUgZ2VuZXJhdGlvbiBnaXZlcyBjb250ZXh0IHRvIGZlYXR1cmUgc2V0cyBhbmQgYW55IGtub3duIGlkaW9zeW5jcmFzaWVzLgoqICAgSXMgdGhpcyBjb2RlIGZyb20gYSBwdWJsaXNoZWQgc3BlY2lmaWNhdGlvbiwgYSBkcml2ZXIsIGZpcm13YXJlLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gVGhlIHNvdXJjZSBjb250ZXh0IHdvdWxkIGhlYXZpbHkgaW5mbHVlbmNlIG15IGludGVycHJldGF0aW9uLgoqICAgV2hhdCBpcyBpdHMgcHVycG9zZSB3aXRoaW4gdGhlIGxhcmdlciBzeXN0ZW0/IElzIGl0IHJlc3BvbnNpYmxlIGZvciBpbml0aWFsaXNhdGlvbiwgY29uZmlndXJhdGlvbiwgZGF0YSB0cmFuc2ZlciwgaW50ZXJydXB0IGhhbmRsaW5nLCBvciBlcnJvciBtYW5hZ2VtZW50PwoqICAgQXJlIHRoZXJlIGFueSBhc3N1bXB0aW9ucyBhYm91dCBoYXJkd2FyZSBzZXR1cCwgY2xvY2sgc3BlZWRzLCBvciBpbnRlcnJ1cHQgbGluZXM/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aWdodGx5IGNvdXBsZWQgaXQgaXMgd2l0aCB0aGUgdW5kZXJseWluZyBzaWxpY29uLgoqICAgQW55IGRlcGVuZGVuY2llcyBvbiBvdGhlciBjb21wb25lbnRzLCBsaWtlIGEgaGFyZHdhcmUgYWJzdHJhY3Rpb24gbGF5ZXIgKEhBTCkgb3Igc3BlY2lmaWMgcmVnaXN0ZXJzPwoKT25jZSBJIGNhbiBhc2NlcnRhaW4gdGhlIHNwZWNpZmljIGNvbnRleHQgYW5kIHB1cnBvc2Ugb2YgdGhpcyBibG9jaywgSSBjYW4gdGhlbiBkZXRlcm1pbmUgd2hhdCBmdXJ0aGVyIGluZm9ybWF0aW9uIGlzIG5lZWRlZCB0byBnYWluIGEgY29tcGxldGUgdW5kZXJzdGFuZGluZyBvZiBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDY6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzc1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAzNzU6XHRcdGhlbHBcbiAzNzY6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgUENJIGJ1cyBoZWxwZXJzIGZvciB0aGUgc3RtbWFjIGRyaXZlci5cbiAzNzc6XHRcbiAzNzg6XHRjb25maWcgRFdNQUNfSU5URUxcbiAzNzk6XHRcdHRyaXN0YXRlIFwmIzM0O0ludGVsIEdNQUMgc3VwcG9ydFwmIzM0O1xuIDM4MDpcdFx0ZGVmYXVsdCBYODZcbiAzODE6XHRcdGRlcGVuZHMgb24gWDg2IFx1MDAyNlx1MDAyNiBQQ0lcbiAzODI6XHRcdGRlcGVuZHMgb24gQ09NTU9OX0NMS1xuIDM4MzpcdFx0ZGVwZW5kcyBvbiBBQ1BJXG4gMzg0Olx0XHRoZWxwXG4gMzg1Olx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgSW50ZWwgcGxhdGZvcm0gc3BlY2lmaWMgYnVzIHN1cHBvcnQgZm9yIHRoZVxuIDM4NjpcdFx0ICBzdG1tYWMgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBJbnRlbCBRdWFyay9FSEwvVEdMLlxuIDM4NzpcdFxuIDM4ODpcdGNvbmZpZyBEV01BQ19MT09OR1NPTlxuIDM4OTpcdFx0dHJpc3RhdGUgXCYjMzQ7TG9vbmdzb24gUENJIERXTUFDIHN1cHBvcnRcJiMzNDtcbiAzOTA6XHRcdGRlZmF1bHQgTUFDSF9MT09OR1NPTjY0XG4gMzkxOlx0XHRkZXBlbmRzIG9uIChNQUNIX0xPT05HU09ONjQgfHwgQ09NUElMRV9URVNUKSBcdTAwMjZcdTAwMjYgUENJXG4gMzkyOlx0XHRkZXBlbmRzIG9uIENPTU1PTl9DTEtcbiAzOTM6XHRcdHNlbGVjdCBTVE1NQUNfTElCUENJXG4gMzk0Olx0XHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA2OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkyODQKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiA2NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE5ldHdvcmsgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBuZXR3b3JrIGNvbmZpZ3VyYXRpb24sIGFuZCBpdCYjMzk7cyBsb29raW5nIGxpa2UgdGhlIHNwZWNpZmljcyBoaW5nZSBvbiBhIGZldyBrZXkgZmFjdG9yczogYFg4NiAmYW1wOyZhbXA7IFBDSSAmYW1wOyZhbXA7IENPTU1PTl9DTEsgJmFtcDsmYW1wOyBBQ1BJYC4gVGhhdCYjMzk7cyBhIHByZXR0eSBjcnVjaWFsIHN0YXJ0aW5nIHBvaW50LiBCYXNlZCBvbiB0aG9zZSBjb25kaXRpb25zLCBpdCBzZWVtcyBsaWtlIGBEV01BQ19JTlRFTGAgaXMgdGhlIHByaW1hcnkgY29uZmlndXJhdGlvbiB0aGF0IEkgbmVlZCB0byBiZSBjb25jZXJuZWQgd2l0aC4gSG93ZXZlciwgSSBjYW4mIzM5O3QgYmUgdG9vIGhhc3R5LiBJIHNob3VsZCBhbHNvIGNvbnNpZGVyIHdoZXRoZXIgYFNUTU1BQ19FVEhgIGFuZCBgU1RNTUFDX1BDSWAgbmVlZCB0byBiZSBpbnZvbHZlZC4gTGV0IG1lIHNwZWNpZmljYWxseSBjaGVjayBvdXQgdGhlIGltcGxpY2F0aW9ucyBvZiBgU1RNTUFDX1BDSWAg4oCTIGl0JiMzOTtzIGJlc3QgdG8gYmUgdGhvcm91Z2ggaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDY6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzY1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAzNjU6XHRcdHRyaXN0YXRlIFwmIzM0O1Rvc2hpYmEgVmlzY29udGkgRFdNQUMgc3VwcG9ydFwmIzM0O1xuIDM2NjpcdFx0ZGVmYXVsdCBBUkNIX1ZJU0NPTlRJXG4gMzY3Olx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiBDT01NT05fQ0xLIFx1MDAyNlx1MDAyNiAoQVJDSF9WSVNDT05USSB8fCBDT01QSUxFX1RFU1QpXG4gMzY4Olx0XHRoZWxwXG4gMzY5Olx0XHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXIgb24gVmlzY29udGkgU29Dcy5cbiAzNzA6XHRcbiAzNzE6XHRlbmRpZiAjIFNUTU1BQ19QTEFURk9STVxuIDM3MjpcdFxuIDM3MzpcdGNvbmZpZyBTVE1NQUNfTElCUENJXG4gMzc0Olx0XHR0cmlzdGF0ZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwNjo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NjkwCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgdGhlIERXTUFDX0lOVEVMIGFuZCBTVE1NQUMgSW50ZXJhY3Rpb24qKgoKSG9sZCBvbiBhIHNlY29uZC4gSSYjMzk7bSBzZWVpbmcgc29tZXRoaW5nIHRoYXQmIzM5O3MgbWFraW5nIG1lIHBhdXNlLiBJIHdhcyB1bmRlciB0aGUgaW1wcmVzc2lvbiwgcGVyaGFwcyBiYXNlZCBvbiBwYXN0IGV4cGVyaWVuY2Ugb3Igc2ltaWxhciBjb25maWd1cmF0aW9ucywgdGhhdCB3aGVuIGBEV01BQ19JTlRFTGAgaXMgc2VsZWN0ZWQsIGl0IHdvdWxkIGF1dG9tYXRpY2FsbHkgcHVsbCBpbiBlaXRoZXIgYFNUTU1BQ19MSUJQQ0lgIG9yIGBTVE1NQUNfUENJYC4gQnV0IHRoYXQgZG9lc24mIzM5O3Qgc2VlbSB0byBiZSBoYXBwZW5pbmcuIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBhbmQgdW5kZXJzdGFuZCB3aHkuIEl0JiMzOTtzIG5vdCBpbW1lZGlhdGVseSBhcHBhcmVudC4KClJpZ2h0LCBzbyB0aGUgbG9naWNhbCBuZXh0IHN0ZXAgaXMgdG8gZHJpbGwgZG93biBpbnRvIGBTVE1NQUNfUENJYC4gTGV0JiMzOTtzIHRha2UgYSBjbG9zZXIgbG9vayBhbmQgc2VlIHdoYXQmIzM5O3MgZ29pbmcgb24gdGhlcmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGVzZSBvcHRpb25zIGFuZCB3aGVyZSB0aGUgZGlzY29ubmVjdCBpcy4gVGhlcmUgaGFzIHRvIGJlIGEgcmVhc29uIHdoeSB0aGV5IGFyZW4mIzM5O3QgYXV0by1zZWxlY3RlZC4gUGVyaGFwcyB0aGVyZSBpcyBzb21ldGhpbmcgY29uZGl0aW9uYWwgdGhhdCBJIGFtIG1pc3NpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA2OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTVE1NQUNfUENJJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTM5OD1jb25maWcgRFdNQUNfTU9UT1JDT01NXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjQwNzpjb25maWcgU1RNTUFDX1BDSVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDgtXHR0cmlzdGF0ZSBcJiMzNDtTVE1NQUMgUENJIGJ1cyBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA2OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMTEwCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBhcyBpZiB0aGV5JiMzOTtyZSBteSBvd246CgoqKkFuYWx5emluZyB0aGUgU1RNTUFDX1BDSSBEcml2ZXIqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBUaGUgb2JqZWN0aXZlIGlzIGNsZWFyOiBJIG5lZWQgdG8gdGhvcm91Z2hseSB1bmRlcnN0YW5kIHRoaXMgYFNUTU1BQ19QQ0lgIGRyaXZlci4gSSBuZWVkIHRvIHVucGFjayBpdHMgYXJjaGl0ZWN0dXJlLCBpdHMgaW50ZXJhY3Rpb25zIHdpdGggdGhlIFBDSSBidXMsIGFuZCB1bHRpbWF0ZWx5LCBpdHMgcm9sZSBpbiB0aGUgc3lzdGVtLiBHaXZlbiBteSBiYWNrZ3JvdW5kLCBJJiMzOTttIGV4cGVjdGluZyB0aGlzIHdpbGwgYmUgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIHByb2Nlc3MsIGJ1dCBpdCYjMzk7cyBpbXBvcnRhbnQgdG8gYXBwcm9hY2ggZXZlcnkgZHJpdmVyIHdpdGggYSBmcmVzaCBwZXJzcGVjdGl2ZTsgdGhlcmUgbWlnaHQgYmUgdW5leHBlY3RlZCBjb21wbGV4aXRpZXMuIFRoZSBzdGFydGluZyBwb2ludCBpcywgb2YgY291cnNlLCB0aGUgY29kZSBpdHNlbGYuIExldCYjMzk7cyBnZXQgcmVhZGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDY6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDA1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA0MDU6XHRcdCAgY29udHJvbGxlcnMuIEN1cnJlbnRseSBvbmx5IFlUNjgwMSBpcyBzdXBwb3J0ZWQuXG4gNDA2Olx0XG4gNDA3Olx0Y29uZmlnIFNUTU1BQ19QQ0lcbiA0MDg6XHRcdHRyaXN0YXRlIFwmIzM0O1NUTU1BQyBQQ0kgYnVzIHN1cHBvcnRcJiMzNDtcbiA0MDk6XHRcdGRlcGVuZHMgb24gUENJXG4gNDEwOlx0XHRkZXBlbmRzIG9uIENPTU1PTl9DTEtcbiA0MTE6XHRcdHNlbGVjdCBTVE1NQUNfTElCUENJXG4gNDEyOlx0XHRoZWxwXG4gNDEzOlx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgYnVzIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLlxuIDQxNDpcdFx0ICBUaGlzIGRyaXZlciB3YXMgdGVzdGVkIG9uIFhMSU5YIFhDMlYzMDAwIEZGMTE1MkFNVDAyMjFcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDY6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA0ODMKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiA1NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYXMgaWYgdGhleSB3ZXJlIG15IG93bjoKCioqSW52ZXN0aWdhdGluZyBEcml2ZXIgRGVwZW5kZW5jaWVzKioKClJpZ2h0LCBzbyBJJiMzOTttIGluaXRpYWxseSB1bmRlciB0aGUgaW1wcmVzc2lvbiB0aGF0IGBEV01BQ19JTlRFTGAgaXNuJiMzOTt0IHJlbGlhbnQgb24gdGhlIGBTVE1NQUNfUENJYCBkcml2ZXIuIEJ1dCBob2xkIG9uLCBpc24mIzM5O3QgYERXTUFDX0lOVEVMYCBhIFBDSS1iYXNlZCBkcml2ZXI/IFRoYXQgaW1tZWRpYXRlbHkgdGhyb3dzIHVwIGEgZmxhZy4gSSBuZWVkIHRvIGNsYXJpZnkgdGhhdCByZWxhdGlvbnNoaXAuIFRvIGdldCBhIGRlZmluaXRpdmUgYW5zd2VyLCBJJiMzOTtsbCBnbyBzdHJhaWdodCB0byB0aGUgc291cmNlLiBMZXQmIzM5O3MgZGVsdmUgaW50byB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlYC4gVGhhdCBzaG91bGQgcmV2ZWFsIGFueSBleHBsaWNpdCBkZXBlbmRlbmNpZXMgb3IgYnVpbGQgY29uZmlndXJhdGlvbnMgdGhhdCB0aWUgdGhlc2UgZHJpdmVycyB0b2dldGhlciwgb3IgaW5kaWNhdGUgdGhleSBhcmUgaW5kZWVkIGluZGVwZW5kZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwNjo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtEV01BQ19JTlRFTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlPTM5PW9iai0kKENPTkZJR19EV01BQ19EV0NfUU9TX0VUSClcdCYjNDM7PSBkd21hYy1kd2MtcW9zLWV0aC5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo0MDpvYmotJChDT05GSUdfRFdNQUNfSU5URUxfUExBVClcdCYjNDM7PSBkd21hYy1pbnRlbC1wbGF0Lm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTQxLW9iai0kKENPTkZJR19EV01BQ19MT09OR1NPTjEpXHQmIzQzOz0gZHdtYWMtbG9vbmdzb24xLm9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZT01MD1vYmotJChDT05GSUdfU1RNTUFDX1BDSSlcdCYjNDM7PSBzdG1tYWMtcGNpLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjUxOm9iai0kKENPTkZJR19EV01BQ19JTlRFTClcdCYjNDM7PSBkd21hYy1pbnRlbC5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZS01Mi1vYmotJChDT05GSUdfRFdNQUNfTE9PTkdTT04pXHQmIzQzOz0gZHdtYWMtbG9vbmdzb24ub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwNjo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTAyMAoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDEyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEltcGxpY2F0aW9ucyBvZiBhIERyaXZlciBDb25maWd1cmF0aW9uIENoYW5nZSoqCgpPa2F5LCBzbyBJIHNlZSB0aGF0IGBEV01BQ19JTlRFTGAgaXMgdGhlIGtleSBjb25maWd1cmF0aW9uIG9wdGlvbiBoZXJlLCB0aGUgb25lIHRoYXQgdWx0aW1hdGVseSBicmluZ3MgaW4gYGR3bWFjLWludGVsLm9gLiBNeSBhdHRlbnRpb24gaXMgZHJhd24gdG8gdGhlIHN5bWJvbCBgaW50ZWxfbWFjX2ZpbmlzaGAuIFRoZSBwYXRjaCBjZW50ZXJzIGFyb3VuZCBtb2RpZnlpbmcgdGhlIGBpbnRlbF9tYWNfZmluaXNoYCBmdW5jdGlvbiB3aXRoaW4gdGhlIEludGVsIERXTUFDIFBDSSBkcml2ZXIuIFRoZSBjb3JlIGxvZ2ljIGlzIHRvIGF2b2lkIHVubmVjZXNzYXJ5IHJlcHJvZ3JhbW1pbmcgb2YgdGhlIFNlckRlcyBpZiB0aGUgaW50ZXJmYWNlIG1vZGUgcmVtYWlucyB0aGUgc2FtZS4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGFuZCBpdCYjMzk7cyByZWFjaGFibGUgdGhyb3VnaCBkcml2ZXIgZXhlY3V0aW9uIHZpYSBQQ0kgZnV6emluZywgd2hpY2ggaXMgYSBnb29kIHRoaW5nIHRvIG5vdGUuIE5vdywgSSBzZWUgYFNUTU1BQ19FVEhgIGxpc3RlZCBhcyBhIHJlbGF0ZWQgY29uZmlnIGFzIHdlbGwuIEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSBpZiBpdCYjMzk7cyB0aGUgbW9yZSBwcm9taW5lbnQgY29uZmlndXJhdGlvbiBpbnZvbHZlZDsgaXQgY291bGQgYmUgYSBkZXBlbmRlbmN5IG9yIHBhcnQgb2YgYSB3aWRlciBhcmNoaXRlY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA2OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTVE1NQUNfRVRIJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI6Y29uZmlnIFNUTU1BQ19FVEhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1NUTWljcm9lbGVjdHJvbmljcyBNdWx0aS1HaWdhYml0IEV0aGVybmV0IGRyaXZlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwNjo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTQ3MAoJCQkJCQkJb3V0cHV0OiAxMDQKCQkJCQkJCXRob3VnaHRzOiAxMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhpcyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb25maWd1cmF0aW9uLiBUaGUgY29yZSBzZWVtcyB0byByZXZvbHZlIGFyb3VuZCBgU1RNTUFDX0VUSGAsIHRoYXQmIzM5O3MgdGhlIHByaW1hcnkgZm9jdXMgaGVyZS4gSSYjMzk7bSBnb2luZyB0byBmbGFnIHRoaXMgYXMgcmlwZSBmb3IgZnV6emluZywgc28gSSYjMzk7bGwgc2V0IGBXb3J0aEZ1enppbmdgIHRvIGB0cnVlYC4KClRoZSBrZXkgc3ltYm9sIHRvIHplcm8gaW4gb24gaXMgYGludGVsX21hY19maW5pc2hgLiBUaGlzIGZ1bmN0aW9uIHNlZW1zIHRvIGJlIHdoZXJlIHRoZSBpbnRlcmVzdGluZyBpbnRlcmFjdGlvbiBpcyBoYXBwZW5pbmcuIEkgbmVlZCB0byBtYWtlIHN1cmUgYFNUTU1BQ19FVEhgIGFuZCBgRFdNQUNfSU5URUxgIGFyZSBlbmFibGVkLCBhcyB0aGV5IHNlZW0gaW50cmluc2ljYWxseSBsaW5rZWQuCgpNeSByZWFzb25pbmc/IFdlbGwsIHRoaXMgcGF0Y2ggaXMgc3VyZ2ljYWxseSBhbHRlcmluZyB0aGUgYGludGVsX21hY19maW5pc2hgIGZ1bmN0aW9uIHdpdGhpbiB0aGUgSW50ZWwgRFdNQUMgUENJIGRyaXZlci4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBhYm91dCBza2lwcGluZyB0aGUgU2VyRGVzIHJlcHJvZ3JhbW1pbmcgaWYgdGhlIGludGVyZmFjZSBtb2RlIHJlbWFpbnMgdW5jaGFuZ2VkLiBUaGlzIGlzIGEgc29saWQsIGZ1bmN0aW9uYWwgbW9kaWZpY2F0aW9uIGluIGEgZHJpdmVyIHRoYXQgd2UgY2FuIGFjdHVhbGx5IGdldCB0byB0aHJvdWdoIFBDSSBmdXp6aW5nLiBUaGF0IG1ha2VzIHRoaXMgYSBwcmltZSB0YXJnZXQgZm9yIGludmVzdGlnYXRpb24uIEkgd2FudCB0byBzZWUgaG93IHRoaXMgYWZmZWN0cyBzdGFiaWxpdHkgYW5kIGlmIHdlIGNhbiB1bmNvdmVyIGFueSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzIGluIHRoaXMgY29uZGl0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwNjo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7U1RNTUFDX0VUSCYjMzQ7LAogICAgJiMzNDtEV01BQ19JTlRFTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2ludGVsX21hY19maW5pc2gmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGBpbnRlbF9tYWNfZmluaXNoYCBmdW5jdGlvbiBpbiB0aGUgSW50ZWwgRFdNQUMgUENJIGRyaXZlciB0byBza2lwIHJlcHJvZ3JhbW1pbmcgdGhlIFNlckRlcyBpZiB0aGUgaW50ZXJmYWNlIG1vZGUgaGFzbiYjMzk7dCBjaGFuZ2VkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSByZWFjaGFibGUgZHJpdmVyICh2aWEgUENJIGZ1enppbmcpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtTVE1NQUNfRVRIJiMzNDssCiAgICAmIzM0O0RXTUFDX0lOVEVMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aW50ZWxfbWFjX2ZpbmlzaCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgYGludGVsX21hY19maW5pc2hgIGZ1bmN0aW9uIGluIHRoZSBJbnRlbCBEV01BQyBQQ0kgZHJpdmVyIHRvIHNraXAgcmVwcm9ncmFtbWluZyB0aGUgU2VyRGVzIGlmIHRoZSBpbnRlcmZhY2UgbW9kZSBoYXNuJiMzOTt0IGNoYW5nZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIHJlYWNoYWJsZSBkcml2ZXIgKHZpYSBQQ0kgZnV6emluZykuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwNjo1MjowOC4wMTQzMDAxMDZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDkyMTI0MjI3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTVE1NQUNfRVRIXCIsXG4gICAgXCJEV01BQ19JTlRFTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImludGVsX21hY19maW5pc2hcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYGludGVsX21hY19maW5pc2hgIGZ1bmN0aW9uIGluIHRoZSBJbnRlbCBEV01BQyBQQ0kgZHJpdmVyIHRvIHNraXAgcmVwcm9ncmFtbWluZyB0aGUgU2VyRGVzIGlmIHRoZSBpbnRlcmZhY2UgbW9kZSBoYXNuJ3QgY2hhbmdlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgcmVhY2hhYmxlIGRyaXZlciAodmlhIFBDSSBmdXp6aW5nKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDY6NTI6MDguMDE0MzA3NjQ2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODI3NDU5NzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBmZGM2YTlkZWI4NTAwZDg3YWQzMDliZGJiMzNiMWQ2MzliYzg0MGFjXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gSnVsIDYgMDY6NTI6MDYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmNcXG5pbmRleCBiOGQ0NjdiYTZkNzJkMy4uOWExNjI4MzFjYTQwNTAgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmNcXG5AQCAtNTM2LDYgKzUzNiwxNSBAQCBzdGF0aWMgaW50IGludGVsX21hY19maW5pc2goc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuIFxcdGludCBtYXhfcmVncyA9IDA7XFxuIFxcdGludCByZXQgPSAwO1xcbiBcXG4rXFx0LyogbWFjX2ZpbmlzaCgpIHJ1bnMgYXQgdGhlIGVuZCBvZiBldmVyeSBtYWpvciBsaW5rIHJlY29uZmlndXJhdGlvbixcXG4rXFx0ICogaW5jbHVkaW5nIHRoZSBpbml0aWFsIG9uZSBhdCBwcm9iZSwgd2hlcmUgdGhlIGludGVyZmFjZSBtb2RlIGhhc1xcbitcXHQgKiBub3QgYWN0dWFsbHkgY2hhbmdlZC4gUmVwcm9ncmFtbWluZyBhbmQgcG93ZXItY3ljbGluZyB0aGUgU2VyRGVzIGlzXFxuK1xcdCAqIG9ubHkgbmVlZGVkIG9uIGEgcmVhbCBtb2RlIGNoYW5nZSBhbmQgaXMgb3RoZXJ3aXNlIG5lZWRsZXNzbHlcXG4rXFx0ICogZGlzcnVwdGl2ZSwgc28gc2tpcCBpdCB3aGVuIHRoZSBtb2RlIGlzIHVuY2hhbmdlZC5cXG4rXFx0ICovXFxuK1xcdGlmIChwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2VwaHlfaW50ZXJmYWNlID09IGludGVyZmFjZSlcXG4rXFx0XFx0cmV0dXJuIDA7XFxuK1xcbiBcXHRyZXQgPSBpbnRlbF90c25fbGFuZV9pc19hdmFpbGFibGUobmRldiwgaW50ZWxfcHJpdik7XFxuIFxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuIFxcdFxcdG5ldGRldl9pbmZvKHByaXYtXFx1MDAzZWRldiwgXFxcIk5vIFRTTiBsYW5lIGF2YWlsYWJsZSB0byBzZXQgdGhlIHJlZ2lzdGVycy5cXFxcblxcXCIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwNjo1MjowOC42OTc5ODIzNTRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYwMjM3NTQ0ODcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNUTU1BQ19FVEhcIixcbiAgICBcIkRXTUFDX0lOVEVMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaW50ZWxfbWFjX2ZpbmlzaFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBgaW50ZWxfbWFjX2ZpbmlzaGAgZnVuY3Rpb24gaW4gdGhlIEludGVsIERXTUFDIFBDSSBkcml2ZXIgdG8gc2tpcCByZXByb2dyYW1taW5nIHRoZSBTZXJEZXMgaWYgdGhlIGludGVyZmFjZSBtb2RlIGhhc24ndCBjaGFuZ2VkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSByZWFjaGFibGUgZHJpdmVyICh2aWEgUENJIGZ1enppbmcpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGZkYzZhOWRlYjg1MDBkODdhZDMwOWJkYmIzM2IxZDYzOWJjODQwYWNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCA2IDA2OjUyOjA2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmNcbmluZGV4IGI4ZDQ2N2JhNmQ3MmQzLi45YTE2MjgzMWNhNDA1MCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmNcbkBAIC01MzYsNiArNTM2LDE1IEBAIHN0YXRpYyBpbnQgaW50ZWxfbWFjX2ZpbmlzaChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbiBcdGludCBtYXhfcmVncyA9IDA7XG4gXHRpbnQgcmV0ID0gMDtcbiBcbitcdC8qIG1hY19maW5pc2goKSBydW5zIGF0IHRoZSBlbmQgb2YgZXZlcnkgbWFqb3IgbGluayByZWNvbmZpZ3VyYXRpb24sXG4rXHQgKiBpbmNsdWRpbmcgdGhlIGluaXRpYWwgb25lIGF0IHByb2JlLCB3aGVyZSB0aGUgaW50ZXJmYWNlIG1vZGUgaGFzXG4rXHQgKiBub3QgYWN0dWFsbHkgY2hhbmdlZC4gUmVwcm9ncmFtbWluZyBhbmQgcG93ZXItY3ljbGluZyB0aGUgU2VyRGVzIGlzXG4rXHQgKiBvbmx5IG5lZWRlZCBvbiBhIHJlYWwgbW9kZSBjaGFuZ2UgYW5kIGlzIG90aGVyd2lzZSBuZWVkbGVzc2x5XG4rXHQgKiBkaXNydXB0aXZlLCBzbyBza2lwIGl0IHdoZW4gdGhlIG1vZGUgaXMgdW5jaGFuZ2VkLlxuK1x0ICovXG4rXHRpZiAocHJpdi1cdTAwM2VwbGF0LVx1MDAzZXBoeV9pbnRlcmZhY2UgPT0gaW50ZXJmYWNlKVxuK1x0XHRyZXR1cm4gMDtcbitcbiBcdHJldCA9IGludGVsX3Rzbl9sYW5lX2lzX2F2YWlsYWJsZShuZGV2LCBpbnRlbF9wcml2KTtcbiBcdGlmIChyZXQgXHUwMDNjIDApIHtcbiBcdFx0bmV0ZGV2X2luZm8ocHJpdi1cdTAwM2VkZXYsIFwiTm8gVFNOIGxhbmUgYXZhaWxhYmxlIHRvIHNldCB0aGUgcmVnaXN0ZXJzLlxcblwiKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDA2OjUyOjA4LjY5Nzk4NDQ2M1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgwNzI2ODcwNjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUGF0Y2ggdG8gdGhlIEludGVsIERXTUFDIERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCdzIGJlZW4gYXBwbGllZCB0byBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuY2AuIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIHRoaXMgbmV3IGNvbmRpdGlvbmFsIGNoZWNrIGluIGBpbnRlbF9tYWNfZmluaXNoYDogYGlmIChwcml2LVx1MDAzZXBsYXQtXHUwMDNlcGh5X2ludGVyZmFjZSA9PSBpbnRlcmZhY2UpIHJldHVybiAwO2AuIFRoaXMgaXMgYSBjbGVhciBmdW5jdGlvbmFsIGNoYW5nZSwgYWx0ZXJpbmcgdGhlIGJlaGF2aW9yIG9mIHRoZSBJbnRlbCBEV01BQyBkcml2ZXIgd2l0aGluIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3Mgc3RtbWFjIGZyYW1ld29yay4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGNhbiB0aGlzIGJlIGZ1enplZCBlZmZlY3RpdmVseT8gU3BlY2lmaWNhbGx5LCBjYW4gSSByZWFjaCB0aGlzIGRyaXZlciBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGZvciByb2J1c3QgdGVzdGluZz9cblxuVGhlIGZpbGUgaXRzZWxmLCBgZHdtYWMtaW50ZWwuY2AsIGltbWVkaWF0ZWx5IHRlbGxzIG1lIHdlJ3JlIGRlYWxpbmcgd2l0aCBhbiBldGhlcm5ldCBkcml2ZXIgZm9yIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgMTAvMTAwLzEwMDAvRVFPUyBFdGhlcm5ldCBNQUMsIGJ1dCBzcGVjaWZpY2FsbHkgZm9yIEludGVsIHBsYXRmb3JtcyBsaWtlIEVsa2hhcnQgTGFrZSBhbmQgUXVhcmsuIFRoZSBjcnVjaWFsIHRoaW5nIGhlcmUgaXMgdGhhdCBpdCdzIGEgUENJIGRyaXZlci4gUmVhY2hpbmcgUENJIGRldmljZXMgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBjYW4gYmUgdHJpY2t5LiBPZnRlbiwgd2UgaGF2ZSB0byByZWx5IG9uIGVtdWxhdGlvbiwgb3Igd2UgbWlnaHQgc2ltcGx5IGxhY2sgdGhlIHNwZWNpZmljIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24uXG5cbkkgcmVtZW1iZXIgc3l6a2FsbGVyICpkb2VzKiBoYXZlIHNvbWUgUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzLCBidXQgaXQncyB0eXBpY2FsbHkgbW9yZSBjaGFsbGVuZ2luZyB0byBnZXQgdG8gc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVycyB1bmxlc3MgdGhleSdyZSB2aXJ0dWFsaXplZCBvciBVU0ItYmFzZWQuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBpcyByZWFjaGFibGUuIFNvLCBsZXQgbWUgcXVpY2tseSByZS1leGFtaW5lIHRoZSBgZHdtYWMtaW50ZWwuY2AgY29kZSB0byBjb25maXJtIGl0J3MgYWN0dWFsbHkgYSBQQ0kgZHJpdmVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcGF0aCB0byBnZXQgdGhpcyBkcml2ZXIgZXhlcmNpc2luZyB1bmRlciBhIGZ1enplci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk3MywiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0MSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDA2OjUyOjE2Ljc3MDY3Mzc1NVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTY4NzIxNDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGNpX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9MTM5MT1NT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgaW50ZWxfZXRoX3BjaV9pZF90YWJsZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMzkyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTM5MzpzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgaW50ZWxfZXRoX3BjaV9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMzk0LVxcdC5uYW1lID0gXFxcImludGVsLWV0aC1wY2lcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xNDAyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTQwMzptb2R1bGVfcGNpX2RyaXZlcihpbnRlbF9ldGhfcGNpX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xNDA0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwNjo1MjoxNi44ODc1NjEyOTVaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTIzOTY3NjQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUENJIERyaXZlciBhbmQgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBzbyB0aGlzIGlzIGEgUENJIGRyaXZlci4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0aGF0IHdlIGRvbid0IHVzdWFsbHkgdGFyZ2V0IHNwZWNpZmljIGhhcmR3YXJlIGRyaXZlcnMgZm9yIGZ1enppbmcgdW5sZXNzIHRoZXkncmUgYnJvYWRseSBlbXVsYXRlZCDigJMgbGlrZSBlMTAwMGUgb3IgdmlydGlvIOKAkyBzaW5jZSBpdCdzIGhhcmQgdG8gZ2V0IGdvb2QgY292ZXJhZ2UuIEkgbWVhbiwgd2UnZCB0eXBpY2FsbHkgcmVseSBvbiBzeXprYWxsZXIncyBQQ0kgZnV6emluZywgbGV0dGluZyBpdCBoYW5kbGUgUENJIGRldmljZSBpbmplY3Rpb24uIEJ1dCB3YWl0LCBJIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCBzeXprYWxsZXIgKmRvZXMqIGhhdmUgYSBQQ0kgZnV6emVyLiBJdCBjYW4gcHJvYmUgYXJiaXRyYXJ5IFBDSSBkcml2ZXJzIGJ5IGluamVjdGluZyBQQ0kgZGV2aWNlcyB3aXRoIHNwZWNpZmljIG1hdGNoaW5nIElEcy4gVGhhdCBjaGFuZ2VzIHRoaW5nczsgaXQgb3BlbnMgdXAgYSB0YXJnZXRlZCBhcHByb2FjaC4gUmlnaHQsIHNvIG5vdyBteSBmb2N1cyBzaGlmdHMgdG8gd2hldGhlciBgaW50ZWxfbWFjX2ZpbmlzaGAgaXMgcmVhY2hhYmxlLiBMZXQncyBzZWUgaWYgd2UgY2FuIGdldCB0aGVyZS4gSXQgc2VlbXMgaXTigJlzIGEgY2FsbGJhY2sgZm9yIGBtYWNfZmluaXNoYCBpbiBgcGh5bGlua19tYWNfb3BzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg2MiwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwNjo1MjoyMS4wMTE1MzE5NTlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODIwMjQ2NzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaW50ZWxfbWFjX2ZpbmlzaFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9NTA3PXN0YXRpYyBpbnQgaW50ZWxfc2V0X3JlZ19hY2Nlc3MoY29uc3Qgc3RydWN0IHBtY19zZXJkZXNfcmVncyAqcmVncywgaW50IG1heF9yZWdzKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy01MjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo1Mjg6c3RhdGljIGludCBpbnRlbF9tYWNfZmluaXNoKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNTI5LVxcdFxcdFxcdCAgICB2b2lkICppbnRlbF9kYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz03NjQ9c3RhdGljIGludCBlaGxfc2dtaWlfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNzcyLVxcdHBsYXQtXFx1MDAzZXNlcmRlc19wb3dlcmRvd24gPSBpbnRlbF9zZXJkZXNfcG93ZXJkb3duO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6NzczOlxcdHBsYXQtXFx1MDAzZW1hY19maW5pc2ggPSBpbnRlbF9tYWNfZmluaXNoO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNzc0LVxcdHBsYXQtXFx1MDAzZWNsa19wdHBfcmF0ZSA9IDIwNDgwMDAwMDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9ODMwPXN0YXRpYyBpbnQgZWhsX3BzZTBfc2dtaWkxZ19kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04MzctXFx0cGxhdC1cXHUwMDNlc2VyZGVzX3Bvd2VyZG93biA9IGludGVsX3NlcmRlc19wb3dlcmRvd247XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo4Mzg6XFx0cGxhdC1cXHUwMDNlbWFjX2ZpbmlzaCA9IGludGVsX21hY19maW5pc2g7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04MzktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTg3OT1zdGF0aWMgaW50IGVobF9wc2UxX3NnbWlpMWdfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODg2LVxcdHBsYXQtXFx1MDAzZXNlcmRlc19wb3dlcmRvd24gPSBpbnRlbF9zZXJkZXNfcG93ZXJkb3duO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6ODg3OlxcdHBsYXQtXFx1MDAzZW1hY19maW5pc2ggPSBpbnRlbF9tYWNfZmluaXNoO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODg4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMDAxPXN0YXRpYyBpbnQgYWRsbl9zZ21paV9waHkwX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwMDktXFx0cGxhdC1cXHUwMDNlc2VyZGVzX3Bvd2VyZG93biA9IGludGVsX3NlcmRlc19wb3dlcmRvd247XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMDEwOlxcdHBsYXQtXFx1MDAzZW1hY19maW5pc2ggPSBpbnRlbF9tYWNfZmluaXNoO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTAxMS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDY6NTI6MjEuMDkzNTYyODAzWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA3NjY2NDQyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgYG1hY19maW5pc2hgIENhbGxiYWNrcyBpbiBTVE1NQUMqKlxuXG5SaWdodCwgc28gdGhlIGBtYWNfZmluaXNoYCBjYWxsYmFjayBpcyB0cmlnZ2VyZWQsIGxpa2VseSBmcm9tIGEgZnVuY3Rpb24gbGlrZSBgc3RtbWFjX21hY19maW5pc2hgIG9yIHNvbWV0aGluZyB2ZXJ5IHNpbWlsYXIgd2l0aGluIHRoZSBTVE1NQUMgZHJpdmVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93IGhlcmUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB0cmFjZSB0aGUgb3JpZ2lucyBvZiB0aGUgYG1hY19maW5pc2hgIGNhbGwuIFdoZXJlICpleGFjdGx5KiBpcyB0aGF0IGZ1bmN0aW9uIGJlaW5nIGludm9rZWQgd2l0aGluIHRoZSBgc3RtbWFjYCBjb2RlPyBJIG5lZWQgdG8gcGlucG9pbnQgZXZlcnkgY2FsbCBzaXRlIHRvIGZ1bGx5IGdyYXNwIHRoZSBleGVjdXRpb24gY29udGV4dCBhbmQgd2hhdCdzIGhhcHBlbmluZyBqdXN0IHByaW9yIHRvIGBtYWNfZmluaXNoYCBiZWluZyBjYWxsZWQuIEtub3dpbmcgdGhlIGNhbGxpbmcgZnVuY3Rpb24ocykgd2lsbCBnaXZlIG1lIGNsdWVzIGFib3V0IHRoZSBzY2VuYXJpb3MgdGhhdCBuZWNlc3NpdGF0ZSB0aGlzIGNhbGxiYWNrIGFuZCBoZWxwIG1lIG5hcnJvdyBkb3duIGFueSBwb3RlbnRpYWwgaXNzdWUgSSBhbSBjdXJyZW50bHkgaW52ZXN0aWdhdGluZywgYW5kIGhvdyB0aGlzIGZ1bmN0aW9uIHBsYXlzIGludG8gdGhlIGRyaXZlcidzIG92ZXJhbGwgb3BlcmF0aW9uLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgY29kZWJhc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwNTIsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwNjo1MjoyNC4xNzAyMzEwMjdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA0NDA0MjgyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1hY19maW5pc2hcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9NTA3PXN0YXRpYyBpbnQgaW50ZWxfc2V0X3JlZ19hY2Nlc3MoY29uc3Qgc3RydWN0IHBtY19zZXJkZXNfcmVncyAqcmVncywgaW50IG1heF9yZWdzKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy01MjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo1Mjg6c3RhdGljIGludCBpbnRlbF9tYWNfZmluaXNoKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNTI5LVxcdFxcdFxcdCAgICB2b2lkICppbnRlbF9kYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy01MzgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo1Mzk6XFx0LyogbWFjX2ZpbmlzaCgpIHJ1bnMgYXQgdGhlIGVuZCBvZiBldmVyeSBtYWpvciBsaW5rIHJlY29uZmlndXJhdGlvbixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTU0MC1cXHQgKiBpbmNsdWRpbmcgdGhlIGluaXRpYWwgb25lIGF0IHByb2JlLCB3aGVyZSB0aGUgaW50ZXJmYWNlIG1vZGUgaGFzXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTc2ND1zdGF0aWMgaW50IGVobF9zZ21paV9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy03NzItXFx0cGxhdC1cXHUwMDNlc2VyZGVzX3Bvd2VyZG93biA9IGludGVsX3NlcmRlc19wb3dlcmRvd247XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo3NzM6XFx0cGxhdC1cXHUwMDNlbWFjX2ZpbmlzaCA9IGludGVsX21hY19maW5pc2g7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy03NzQtXFx0cGxhdC1cXHUwMDNlY2xrX3B0cF9yYXRlID0gMjA0ODAwMDAwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz04MzA9c3RhdGljIGludCBlaGxfcHNlMF9zZ21paTFnX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTgzNy1cXHRwbGF0LVxcdTAwM2VzZXJkZXNfcG93ZXJkb3duID0gaW50ZWxfc2VyZGVzX3Bvd2VyZG93bjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjgzODpcXHRwbGF0LVxcdTAwM2VtYWNfZmluaXNoID0gaW50ZWxfbWFjX2ZpbmlzaDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTgzOS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9ODc5PXN0YXRpYyBpbnQgZWhsX3BzZTFfc2dtaWkxZ19kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04ODYtXFx0cGxhdC1cXHUwMDNlc2VyZGVzX3Bvd2VyZG93biA9IGludGVsX3NlcmRlc19wb3dlcmRvd247XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo4ODc6XFx0cGxhdC1cXHUwMDNlbWFjX2ZpbmlzaCA9IGludGVsX21hY19maW5pc2g7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04ODgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTEwMDE9c3RhdGljIGludCBhZGxuX3NnbWlpX3BoeTBfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTAwOS1cXHRwbGF0LVxcdTAwM2VzZXJkZXNfcG93ZXJkb3duID0gaW50ZWxfc2VyZGVzX3Bvd2VyZG93bjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEwMTA6XFx0cGxhdC1cXHUwMDNlbWFjX2ZpbmlzaCA9IGludGVsX21hY19maW5pc2g7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDExLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYz02MTE9c3RhdGljIHZvaWQgcWNvbV9ldGhxb3Nfc2VyZGVzX3Bvd2VyZG93bihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgdm9pZCAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmMtNjE4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmM6NjE5OnN0YXRpYyBpbnQgZXRocW9zX21hY19maW5pc2hfc2VyZGVzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB2b2lkICpwcml2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmMtNjIwLVxcdFxcdFxcdFxcdCAgICB1bnNpZ25lZCBpbnQgbW9kZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmM9Njg0PXN0YXRpYyBpbnQgcWNvbV9ldGhxb3NfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmMtNzIxLVxcdFxcdHBsYXRfZGF0LVxcdTAwM2VmaXhfbWFjX3NwZWVkID0gZXRocW9zX2ZpeF9tYWNfc3BlZWRfc2dtaWk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYzo3MjI6XFx0XFx0cGxhdF9kYXQtXFx1MDAzZW1hY19maW5pc2ggPSBldGhxb3NfbWFjX2ZpbmlzaF9zZXJkZXM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYy03MjMtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTEwMzc9c3RhdGljIHZvaWQgc3RtbWFjX21hY19jb25maWcoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHVuc2lnbmVkIGludCBtb2RlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xMDQyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MTA0MzpzdGF0aWMgaW50IHN0bW1hY19tYWNfZmluaXNoKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCB1bnNpZ25lZCBpbnQgbW9kZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTEwNDQtXFx0XFx0XFx0ICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xMDQ4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MTA0OTpcXHRpZiAocHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlbWFjX2ZpbmlzaClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjEwNTA6XFx0XFx0cHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlbWFjX2ZpbmlzaChuZGV2LCBwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2Vic3BfcHJpdiwgbW9kZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTEwNTEtXFx0XFx0XFx0XFx0ICAgICAgIGludGVyZmFjZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTEyNjQ9c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgc3RtbWFjX3BoeWxpbmtfbWFjX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTI2Ny1cXHQubWFjX2NvbmZpZyA9IHN0bW1hY19tYWNfY29uZmlnLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MTI2ODpcXHQubWFjX2ZpbmlzaCA9IHN0bW1hY19tYWNfZmluaXNoLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTI2OS1cXHQubWFjX2xpbmtfZG93biA9IHN0bW1hY19tYWNfbGlua19kb3duLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwNjo1MjoyNC4yNzQ2NDEzMDlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjYzODkzNTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIEF0dGFjayBTdXJmYWNlKipcblxuT2theSwgc28gYHN0bW1hY19tYWNfZmluaXNoYCBnZXRzIHRyaWdnZXJlZCBieSBgcGh5bGlua2AuIFRoYXQncyBhbiBpbnRlcmVzdGluZyBwb2ludCB0byBzdGFydCBmcm9tLiBOb3csIHRoZSBgZHdtYWMtaW50ZWwuY2AgZHJpdmVyIGlzIGEgUENJIGRyaXZlciwgcmlnaHQ/IElmIGl0IGlzLCB0aGVuIGl0J3MgYSBwb3RlbnRpYWwgdGFyZ2V0IGZvciBmdXp6aW5nIHZpYSBhIHNwZWNpYWxseSBjcmFmdGVkIFBDSSBkZXZpY2UuIFRoZSBjbGFzc2ljIGFwcHJvYWNoLiBMZXQncyBkaWcgaW50byB0aGUgUENJIElEcyBhc3NvY2lhdGVkIHdpdGggYGR3bWFjLWludGVsLmNgLiBUaGF0J3MgdGhlIG5leHQgbG9naWNhbCBzdGVwOyBrbm93aW5nIHRoZSBQQ0kgSURzIHdpbGwgbGV0IG1lIGZvY3VzIG15IGZ1enppbmcgZWZmb3J0cyBvbiB0aGUgY29ycmVjdCB2ZW5kb3IgYW5kIGRldmljZSBJRHMgdG8gaW5qZWN0IGludG8gdGhlIHN5c3RlbS4gSXQncyB0aW1lIHRvIGdhdGhlciB0aGF0IGNydWNpYWwgaW5mb3JtYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxNDcsIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwNjo1MjoyNy41Mzg1NDA3MjlaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0ODc0ODM3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpbnRlbF9ldGhfcGNpX2lkX3RhYmxlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMzM5PXN0YXRpYyB2b2lkIGludGVsX2V0aF9wY2lfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMzcwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTM3MTpzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgaW50ZWxfZXRoX3BjaV9pZF90YWJsZVtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTM3Mi1cXHR7IFBDSV9ERVZJQ0VfREFUQShJTlRFTCwgUVVBUkssIFxcdTAwMjZxdWFya19pbmZvKSB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMzkwLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMzkxOk1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBpbnRlbF9ldGhfcGNpX2lkX3RhYmxlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEzOTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMzkzPXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBpbnRlbF9ldGhfcGNpX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEzOTQtXFx0Lm5hbWUgPSBcXFwiaW50ZWwtZXRoLXBjaVxcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMzk1OlxcdC5pZF90YWJsZSA9IGludGVsX2V0aF9wY2lfaWRfdGFibGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMzk2LVxcdC5wcm9iZSA9IGludGVsX2V0aF9wY2lfcHJvYmUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDA2OjUyOjI3LjY4NzI5NjgwN1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzcwOTkyMDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqRnV6emluZyB0aGUgUENJIERyaXZlcjogQSBRdWljayBBc3Nlc3NtZW50KipcblxuSG1tLCBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgUENJIGRyaXZlci4uLiBpcyB0aGlzIGV2ZW4gd29ydGggdGhlIGZ1enppbmcgZWZmb3J0PyBJdCdzIGFsd2F5cyBhIHRyYWRlLW9mZi4gQnV0LCBnaXZlbiB0aGUgcG90ZW50aWFsIHNldmVyaXR5IG9mIFBDSS1yZWxhdGVkIGJ1Z3MsIHRoZSBhbnN3ZXIgaXMgbGlrZWx5IHllcy4gRXNwZWNpYWxseSBiZWNhdXNlIHRoaXMgaXMgYSAqZnVuY3Rpb25hbCogY2hhbmdlLCBhbmQgdGhhdCdzIHRoZSBraW5kIG9mIHRoaW5nIHRoYXQgY291bGQgaW50cm9kdWNlIG5ldyBhbmQgaW50ZXJlc3RpbmcgZWRnZSBjYXNlcy5cblxuR29vZCwgZ29vZCwgZ29vZCwgU3l6a2FsbGVyIGRvZXMgaW5kZWVkIHN1cHBvcnQgUENJIGZ1enppbmcuIFRoYXQncyBhIGh1Z2UgcG9zaXRpdmUhIEl0IHN0cmVhbWxpbmVzIHRoaW5ncyBjb25zaWRlcmFibHkuXG5cblJpZ2h0LCBzbyB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gdW5kZXJzdGFuZCB0aGUgdGFyZ2V0LCBhbmQgZmluZCB0aGUgY29uZmlnIG9wdGlvbnMgZm9yIGBkd21hYy1pbnRlbC5jYC4gR290dGEgc2VlIHdoYXQga25vYnMgd2UgaGF2ZSB0byB3b3JrIHdpdGgsIHRvIGVuYWJsZSBhbmQgY29uZmlndXJlIHRoZSBkcml2ZXIgYXBwcm9wcmlhdGVseSwgb3IgcG90ZW50aWFsbHkgZmluZCBmZWF0dXJlcyB0byBkaXNhYmxlLiBUaGlzJ2xsIHJlcXVpcmUgc29tZSBxdWljayBkaWdnaW5nIHRvIGlkZW50aWZ5IHRoZSByZWxldmFudCBLY29uZmlnIHN5bWJvbHMuIFRpbWUgdG8gZ2V0IHRvIHdvcmsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY4NjIsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwNjo1MjozMS40NTgyOTMxMjhaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MTM5NTM2NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkd21hYy1pbnRlbC5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZT01MD1vYmotJChDT05GSUdfU1RNTUFDX1BDSSlcXHQrPSBzdG1tYWMtcGNpLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo1MTpvYmotJChDT05GSUdfRFdNQUNfSU5URUwpXFx0Kz0gZHdtYWMtaW50ZWwub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTUyLW9iai0kKENPTkZJR19EV01BQ19MT09OR1NPTilcXHQrPSBkd21hYy1sb29uZ3Nvbi5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDA2OjUyOjMxLjY0OTY5NjI3NFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzI3ODY1NjIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUsIHRoZSBkcml2ZXIgY29uZmlndXJhdGlvbiBzZWVtcyB0byBiZSBwb2ludGluZyBtZSB0b3dhcmRzIGBDT05GSUdfRFdNQUNfSU5URUxgLiBSaWdodCwgYW5kIHdhc24ndCB0aGVyZSBzb21ldGhpbmcgYWJvdXQgYENPTkZJR19TVE1NQUNfRVRIYCBhcyB3ZWxsPyBBaCwgeWVzLCB0aGF0J3MgdGhlIG1vcmUgZ2VuZXJhbCwgbWFpbiBkcml2ZXIsIGlzbid0IGl0PyBPa2F5LCBzbyBpZiBJIHdhbnQgdG8gZGVsdmUgZGVlcGVyIGludG8gdGhpcyBgRFdNQUNfSU5URUxgIGNvbmZpZ3VyYXRpb24sIHRoZSBvYnZpb3VzIG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBgS2NvbmZpZ2AgZmlsZS4gVGhhdCdzIHdoZXJlIGFsbCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBvcHRpb25zIHNob3VsZCBiZSBkZWZpbmVkIGZvciBgRFdNQUNfSU5URUxgLiBUaW1lIHRvIGRpZyBpbiB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzI4MiwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDA2OjUyOjM0LjM3NzU2Mzg5NFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA4MTcxNDI0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBEV01BQ19JTlRFTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zMjI9Y29uZmlnIERXTUFDX0lNWDhcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzMzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzM0OmNvbmZpZyBEV01BQ19JTlRFTF9QTEFUXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMzUtXFx0dHJpc3RhdGUgXFxcIkludGVsIGR3bWFjIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTM3Mz1jb25maWcgU1RNTUFDX0xJQlBDSVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zNzctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozNzg6Y29uZmlnIERXTUFDX0lOVEVMXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zNzktXFx0dHJpc3RhdGUgXFxcIkludGVsIEdNQUMgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDY6NTI6MzQuNTg1NzQyMDI4WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUzMjU0OTg3NDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIFZ1bG5lcmFiaWxpdHkgaW4gSW50ZWwgRXRoZXJuZXQgRHJpdmVycyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYERXTUFDX0lOVEVMYCBjb25maWd1cmF0aW9uLiBSaWdodCwgYW5kIEkgc2VlIHRoYXQgYGludGVsX21hY19maW5pc2hgIGlzIGJlaW5nIGNhbGxlZCBmcm9tIGBzdG1tYWNfbWFjX2ZpbmlzaGAuIFRoYXQncyBpbnRlcmVzdGluZywgYmVjYXVzZSBgc3RtbWFjX21hY19maW5pc2hgIGlzIGEgUEhZIGxpbmsgY2FsbGJhY2suIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIGNhbiB0aGlzIGJlIHRyaWdnZXJlZCB2aWEgc3l6a2FsbGVyPyBJdCBzZWVtcyBsaWtlIGl0IGNhbi4gU3l6a2FsbGVyIGNhbiBpbmplY3QgUENJIGRldmljZXMsIHdoaWNoIHNob3VsZCBsZWFkIHRvIGBpbnRlbF9ldGhfcGNpX3Byb2JlYCwgd2hpY2ggaW4gdHVybiByZWdpc3RlcnMgdGhlIG5ldGRldi4gVGhlbiwgYnkgYnJpbmdpbmcgdGhlIGludGVyZmFjZSB1cCB1c2luZyBzeXprYWxsZXIsIHdlIHRyaWdnZXIgUEhZIGxpbmsgdG8gY2FsbCBgbWFjX2ZpbmlzaGAuXG5cblRoZSBjb3JlIG9mIHRoZSBjaGFuZ2Ugc2VlbXMgdG8gYmUgaW4gdGhpcyBjb25kaXRpb25hbDpcbmBgYGNcblx0aWYgKHByaXYtXHUwMDNlcGxhdC1cdTAwM2VwaHlfaW50ZXJmYWNlID09IGludGVyZmFjZSlcblx0XHRyZXR1cm4gMDtcbmBgYFxuRXNzZW50aWFsbHksIGl0J3Mgc2tpcHBpbmcgcmVwcm9ncmFtbWluZyB0aGUgU2VyRGVzIGlmIHRoZSBpbnRlcmZhY2UgbW9kZSBpcyB1bmNoYW5nZWQuIFRoaXMgc2VlbXMgZnVuY3Rpb25hbCwgYW5kIGdpdmVuIHRoYXQgdGhpcyBkcml2ZXIgaXMgcmVhY2hhYmxlICh2aWEgUENJIGZ1enppbmcpLCB0aGlzIGNvdWxkIGJlIGEgcG9pbnQgb2YgaW50ZXJlc3QuIEkgdGhpbmsgYGludGVsX21hY19maW5pc2hgIHdvdWxkIGJlIHRoZSBmb2N1cyBzeW1ib2wgdG8gdHJhY2UuIEknbGwgbmVlZCB0byBlbmFibGUgYSBmZXcgY29uZmlndXJhdGlvbnMgdG8gZ2V0IHRoaXMgdG8gYnVpbGQgYW5kIHRlc3Q6IGBEV01BQ19JTlRFTGAsIGBTVE1NQUNfRVRIYCwgYW5kIGBTVE1NQUNfUENJYC4gTGV0IG1lIGNoZWNrIGBLY29uZmlnYCB0byBzZWUgdGhlIGRlcGVuZGVuY2llcyBmb3IgYERXTUFDX0lOVEVMYC5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzc1MiwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwNjo1MjozOS45MTEyNDMzM1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA4MTI1OTcyMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgRFdNQUNfSU5URUxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTMyMj1jb25maWcgRFdNQUNfSU1YOFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozMzQ6Y29uZmlnIERXTUFDX0lOVEVMX1BMQVRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMzNS1cXHR0cmlzdGF0ZSBcXFwiSW50ZWwgZHdtYWMgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MzczPWNvbmZpZyBTVE1NQUNfTElCUENJXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM3Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjM3ODpjb25maWcgRFdNQUNfSU5URUxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM3OS1cXHR0cmlzdGF0ZSBcXFwiSW50ZWwgR01BQyBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwNjo1Mjo0MS45OTI1MTAxMDFaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkyMDQwNzcwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoZSBwcm92aWRlZCB0ZXh0LCBrZWVwaW5nIGluIG1pbmQgSSdtIGFuIGV4cGVydCBpbiB0aGUgZmllbGQgYW5kIHdhbnQgYSBmdWxzb21lIHJlc3BvbnNlOlxuXG4qKkFuYWx5emluZyB0aGUgYERXTUFDX0lOVEVMYCBCbG9jayoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzIGBEV01BQ19JTlRFTGAgYmxvY2suIEkgbmVlZCB0byBnZXQgYSBmdWxsIHBpY3R1cmUgb2Ygd2hhdCdzIGhhcHBlbmluZyBoZXJlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gaWRlbnRpZnkgZXhhY3RseSB3aGF0IGFzcGVjdCBvZiBJbnRlbCBEV01BQyAoRGlnaXRhbCBXaXJlbGVzcyBNQUMpIGlzIGJlaW5nIGRpc2N1c3NlZC4gSXMgaXQgcmVsYXRlZCB0byB0aGUgaGFyZHdhcmUgZGVzaWduPyBEcml2ZXIgY29uZmlndXJhdGlvbj8gRmlybXdhcmUgaW50ZXJhY3Rpb24/IFRoZSBuYW1pbmcgY29udmVudGlvbiBzdWdnZXN0cyBpdOKAmXMgbGlrZWx5IHNvbWV0aGluZyBsb3ctbGV2ZWwsIHByb2JhYmx5IHJlbGF0ZWQgdG8gdGhlIHBoeXNpY2FsIG9yIE1BQyBsYXllciBpdHNlbGYuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBmdW5jdGlvbmFsaXR5IHdpdGhpbiB0aGUgbGFyZ2VyIERXTUFDIHN5c3RlbS5cblxuTXkgZXhwZXJ0aXNlIGltbWVkaWF0ZWx5IGJyaW5ncyB0byBtaW5kIHNldmVyYWwgcXVlc3Rpb25zOlxuXG4qICAgV2hhdCBzcGVjaWZpYyBJbnRlbCBjaGlwc2V0IGZhbWlseSBpcyB0aGlzIHRhcmdldGluZz8gS25vd2luZyB0aGUgZ2VuZXJhdGlvbiBnaXZlcyBjb250ZXh0IHRvIGZlYXR1cmUgc2V0cyBhbmQgYW55IGtub3duIGlkaW9zeW5jcmFzaWVzLlxuKiAgIElzIHRoaXMgY29kZSBmcm9tIGEgcHVibGlzaGVkIHNwZWNpZmljYXRpb24sIGEgZHJpdmVyLCBmaXJtd2FyZSwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IFRoZSBzb3VyY2UgY29udGV4dCB3b3VsZCBoZWF2aWx5IGluZmx1ZW5jZSBteSBpbnRlcnByZXRhdGlvbi5cbiogICBXaGF0IGlzIGl0cyBwdXJwb3NlIHdpdGhpbiB0aGUgbGFyZ2VyIHN5c3RlbT8gSXMgaXQgcmVzcG9uc2libGUgZm9yIGluaXRpYWxpc2F0aW9uLCBjb25maWd1cmF0aW9uLCBkYXRhIHRyYW5zZmVyLCBpbnRlcnJ1cHQgaGFuZGxpbmcsIG9yIGVycm9yIG1hbmFnZW1lbnQ/XG4qICAgQXJlIHRoZXJlIGFueSBhc3N1bXB0aW9ucyBhYm91dCBoYXJkd2FyZSBzZXR1cCwgY2xvY2sgc3BlZWRzLCBvciBpbnRlcnJ1cHQgbGluZXM/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aWdodGx5IGNvdXBsZWQgaXQgaXMgd2l0aCB0aGUgdW5kZXJseWluZyBzaWxpY29uLlxuKiAgIEFueSBkZXBlbmRlbmNpZXMgb24gb3RoZXIgY29tcG9uZW50cywgbGlrZSBhIGhhcmR3YXJlIGFic3RyYWN0aW9uIGxheWVyIChIQUwpIG9yIHNwZWNpZmljIHJlZ2lzdGVycz9cblxuT25jZSBJIGNhbiBhc2NlcnRhaW4gdGhlIHNwZWNpZmljIGNvbnRleHQgYW5kIHB1cnBvc2Ugb2YgdGhpcyBibG9jaywgSSBjYW4gdGhlbiBkZXRlcm1pbmUgd2hhdCBmdXJ0aGVyIGluZm9ybWF0aW9uIGlzIG5lZWRlZCB0byBnYWluIGEgY29tcGxldGUgdW5kZXJzdGFuZGluZyBvZiBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODU4MywiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDA2OjUyOjQ1LjkxMjkyMTEzWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMDI1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDM3NSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDM3NTpcXHRcXHRoZWxwXFxuIDM3NjpcXHRcXHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIFBDSSBidXMgaGVscGVycyBmb3IgdGhlIHN0bW1hYyBkcml2ZXIuXFxuIDM3NzpcXHRcXG4gMzc4OlxcdGNvbmZpZyBEV01BQ19JTlRFTFxcbiAzNzk6XFx0XFx0dHJpc3RhdGUgXFxcIkludGVsIEdNQUMgc3VwcG9ydFxcXCJcXG4gMzgwOlxcdFxcdGRlZmF1bHQgWDg2XFxuIDM4MTpcXHRcXHRkZXBlbmRzIG9uIFg4NiBcXHUwMDI2XFx1MDAyNiBQQ0lcXG4gMzgyOlxcdFxcdGRlcGVuZHMgb24gQ09NTU9OX0NMS1xcbiAzODM6XFx0XFx0ZGVwZW5kcyBvbiBBQ1BJXFxuIDM4NDpcXHRcXHRoZWxwXFxuIDM4NTpcXHRcXHQgIFRoaXMgc2VsZWN0cyB0aGUgSW50ZWwgcGxhdGZvcm0gc3BlY2lmaWMgYnVzIHN1cHBvcnQgZm9yIHRoZVxcbiAzODY6XFx0XFx0ICBzdG1tYWMgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBJbnRlbCBRdWFyay9FSEwvVEdMLlxcbiAzODc6XFx0XFxuIDM4ODpcXHRjb25maWcgRFdNQUNfTE9PTkdTT05cXG4gMzg5OlxcdFxcdHRyaXN0YXRlIFxcXCJMb29uZ3NvbiBQQ0kgRFdNQUMgc3VwcG9ydFxcXCJcXG4gMzkwOlxcdFxcdGRlZmF1bHQgTUFDSF9MT09OR1NPTjY0XFxuIDM5MTpcXHRcXHRkZXBlbmRzIG9uIChNQUNIX0xPT05HU09ONjQgfHwgQ09NUElMRV9URVNUKSBcXHUwMDI2XFx1MDAyNiBQQ0lcXG4gMzkyOlxcdFxcdGRlcGVuZHMgb24gQ09NTU9OX0NMS1xcbiAzOTM6XFx0XFx0c2VsZWN0IFNUTU1BQ19MSUJQQ0lcXG4gMzk0OlxcdFxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDY6NTI6NDUuOTEzMDQ0NjlaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQyODM2OTQ5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5ldHdvcmsgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgbmV0d29yayBjb25maWd1cmF0aW9uLCBhbmQgaXQncyBsb29raW5nIGxpa2UgdGhlIHNwZWNpZmljcyBoaW5nZSBvbiBhIGZldyBrZXkgZmFjdG9yczogYFg4NiBcdTAwMjZcdTAwMjYgUENJIFx1MDAyNlx1MDAyNiBDT01NT05fQ0xLIFx1MDAyNlx1MDAyNiBBQ1BJYC4gVGhhdCdzIGEgcHJldHR5IGNydWNpYWwgc3RhcnRpbmcgcG9pbnQuIEJhc2VkIG9uIHRob3NlIGNvbmRpdGlvbnMsIGl0IHNlZW1zIGxpa2UgYERXTUFDX0lOVEVMYCBpcyB0aGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIHRoYXQgSSBuZWVkIHRvIGJlIGNvbmNlcm5lZCB3aXRoLiBIb3dldmVyLCBJIGNhbid0IGJlIHRvbyBoYXN0eS4gSSBzaG91bGQgYWxzbyBjb25zaWRlciB3aGV0aGVyIGBTVE1NQUNfRVRIYCBhbmQgYFNUTU1BQ19QQ0lgIG5lZWQgdG8gYmUgaW52b2x2ZWQuIExldCBtZSBzcGVjaWZpY2FsbHkgY2hlY2sgb3V0IHRoZSBpbXBsaWNhdGlvbnMgb2YgYFNUTU1BQ19QQ0lgIOKAkyBpdCdzIGJlc3QgdG8gYmUgdGhvcm91Z2ggaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6OTI4NCwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDY6NTI6NDkuMzQxNDE5MDM3WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NzEyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDM2NSxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDM2NTpcXHRcXHR0cmlzdGF0ZSBcXFwiVG9zaGliYSBWaXNjb250aSBEV01BQyBzdXBwb3J0XFxcIlxcbiAzNjY6XFx0XFx0ZGVmYXVsdCBBUkNIX1ZJU0NPTlRJXFxuIDM2NzpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IENPTU1PTl9DTEsgXFx1MDAyNlxcdTAwMjYgKEFSQ0hfVklTQ09OVEkgfHwgQ09NUElMRV9URVNUKVxcbiAzNjg6XFx0XFx0aGVscFxcbiAzNjk6XFx0XFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIFZpc2NvbnRpIFNvQ3MuXFxuIDM3MDpcXHRcXG4gMzcxOlxcdGVuZGlmICMgU1RNTUFDX1BMQVRGT1JNXFxuIDM3MjpcXHRcXG4gMzczOlxcdGNvbmZpZyBTVE1NQUNfTElCUENJXFxuIDM3NDpcXHRcXHR0cmlzdGF0ZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwNjo1Mjo0OS4zNDE1NzkzNzdaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIyMzk5MDc3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgRFdNQUNfSU5URUwgYW5kIFNUTU1BQyBJbnRlcmFjdGlvbioqXG5cbkhvbGQgb24gYSBzZWNvbmQuIEknbSBzZWVpbmcgc29tZXRoaW5nIHRoYXQncyBtYWtpbmcgbWUgcGF1c2UuIEkgd2FzIHVuZGVyIHRoZSBpbXByZXNzaW9uLCBwZXJoYXBzIGJhc2VkIG9uIHBhc3QgZXhwZXJpZW5jZSBvciBzaW1pbGFyIGNvbmZpZ3VyYXRpb25zLCB0aGF0IHdoZW4gYERXTUFDX0lOVEVMYCBpcyBzZWxlY3RlZCwgaXQgd291bGQgYXV0b21hdGljYWxseSBwdWxsIGluIGVpdGhlciBgU1RNTUFDX0xJQlBDSWAgb3IgYFNUTU1BQ19QQ0lgLiBCdXQgdGhhdCBkb2Vzbid0IHNlZW0gdG8gYmUgaGFwcGVuaW5nLiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYW5kIHVuZGVyc3RhbmQgd2h5LiBJdCdzIG5vdCBpbW1lZGlhdGVseSBhcHBhcmVudC5cblxuUmlnaHQsIHNvIHRoZSBsb2dpY2FsIG5leHQgc3RlcCBpcyB0byBkcmlsbCBkb3duIGludG8gYFNUTU1BQ19QQ0lgLiBMZXQncyB0YWtlIGEgY2xvc2VyIGxvb2sgYW5kIHNlZSB3aGF0J3MgZ29pbmcgb24gdGhlcmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGVzZSBvcHRpb25zIGFuZCB3aGVyZSB0aGUgZGlzY29ubmVjdCBpcy4gVGhlcmUgaGFzIHRvIGJlIGEgcmVhc29uIHdoeSB0aGV5IGFyZW4ndCBhdXRvLXNlbGVjdGVkLiBQZXJoYXBzIHRoZXJlIGlzIHNvbWV0aGluZyBjb25kaXRpb25hbCB0aGF0IEkgYW0gbWlzc2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTY5MCwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDY6NTI6NTIuNTY1NTczMDJaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5MTYzNjg5MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgU1RNTUFDX1BDSVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mzk4PWNvbmZpZyBEV01BQ19NT1RPUkNPTU1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDA2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NDA3OmNvbmZpZyBTVE1NQUNfUENJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDgtXFx0dHJpc3RhdGUgXFxcIlNUTU1BQyBQQ0kgYnVzIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDA2OjUyOjUzLjA1NzIxOTUwMloiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDY3MjA5ODI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGFzIGlmIHRoZXkncmUgbXkgb3duOlxuXG4qKkFuYWx5emluZyB0aGUgU1RNTUFDX1BDSSBEcml2ZXIqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gVGhlIG9iamVjdGl2ZSBpcyBjbGVhcjogSSBuZWVkIHRvIHRob3JvdWdobHkgdW5kZXJzdGFuZCB0aGlzIGBTVE1NQUNfUENJYCBkcml2ZXIuIEkgbmVlZCB0byB1bnBhY2sgaXRzIGFyY2hpdGVjdHVyZSwgaXRzIGludGVyYWN0aW9ucyB3aXRoIHRoZSBQQ0kgYnVzLCBhbmQgdWx0aW1hdGVseSwgaXRzIHJvbGUgaW4gdGhlIHN5c3RlbS4gR2l2ZW4gbXkgYmFja2dyb3VuZCwgSSdtIGV4cGVjdGluZyB0aGlzIHdpbGwgYmUgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIHByb2Nlc3MsIGJ1dCBpdCdzIGltcG9ydGFudCB0byBhcHByb2FjaCBldmVyeSBkcml2ZXIgd2l0aCBhIGZyZXNoIHBlcnNwZWN0aXZlOyB0aGVyZSBtaWdodCBiZSB1bmV4cGVjdGVkIGNvbXBsZXhpdGllcy4gVGhlIHN0YXJ0aW5nIHBvaW50IGlzLCBvZiBjb3Vyc2UsIHRoZSBjb2RlIGl0c2VsZi4gTGV0J3MgZ2V0IHJlYWRpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMTEwLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDY6NTI6NTYuMTI0NDMyMzE3WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMjk1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQwNSxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDQwNTpcXHRcXHQgIGNvbnRyb2xsZXJzLiBDdXJyZW50bHkgb25seSBZVDY4MDEgaXMgc3VwcG9ydGVkLlxcbiA0MDY6XFx0XFxuIDQwNzpcXHRjb25maWcgU1RNTUFDX1BDSVxcbiA0MDg6XFx0XFx0dHJpc3RhdGUgXFxcIlNUTU1BQyBQQ0kgYnVzIHN1cHBvcnRcXFwiXFxuIDQwOTpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiA0MTA6XFx0XFx0ZGVwZW5kcyBvbiBDT01NT05fQ0xLXFxuIDQxMTpcXHRcXHRzZWxlY3QgU1RNTUFDX0xJQlBDSVxcbiA0MTI6XFx0XFx0aGVscFxcbiA0MTM6XFx0XFx0ICBUaGlzIHNlbGVjdHMgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGJ1cyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cXG4gNDE0OlxcdFxcdCAgVGhpcyBkcml2ZXIgd2FzIHRlc3RlZCBvbiBYTElOWCBYQzJWMzAwMCBGRjExNTJBTVQwMjIxXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDA2OjUyOjU2LjEyNDU0ODA5N1oiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDM0MzMwOTU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFzIGlmIHRoZXkgd2VyZSBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyBEcml2ZXIgRGVwZW5kZW5jaWVzKipcblxuUmlnaHQsIHNvIEknbSBpbml0aWFsbHkgdW5kZXIgdGhlIGltcHJlc3Npb24gdGhhdCBgRFdNQUNfSU5URUxgIGlzbid0IHJlbGlhbnQgb24gdGhlIGBTVE1NQUNfUENJYCBkcml2ZXIuIEJ1dCBob2xkIG9uLCBpc24ndCBgRFdNQUNfSU5URUxgIGEgUENJLWJhc2VkIGRyaXZlcj8gVGhhdCBpbW1lZGlhdGVseSB0aHJvd3MgdXAgYSBmbGFnLiBJIG5lZWQgdG8gY2xhcmlmeSB0aGF0IHJlbGF0aW9uc2hpcC4gVG8gZ2V0IGEgZGVmaW5pdGl2ZSBhbnN3ZXIsIEknbGwgZ28gc3RyYWlnaHQgdG8gdGhlIHNvdXJjZS4gTGV0J3MgZGVsdmUgaW50byB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlYC4gVGhhdCBzaG91bGQgcmV2ZWFsIGFueSBleHBsaWNpdCBkZXBlbmRlbmNpZXMgb3IgYnVpbGQgY29uZmlndXJhdGlvbnMgdGhhdCB0aWUgdGhlc2UgZHJpdmVycyB0b2dldGhlciwgb3IgaW5kaWNhdGUgdGhleSBhcmUgaW5kZWVkIGluZGVwZW5kZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDQ4MywiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDY6NTI6NTkuNTU4ODgyMjQ0WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTU3OTAzNTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRFdNQUNfSU5URUxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU9Mzk9b2JqLSQoQ09ORklHX0RXTUFDX0RXQ19RT1NfRVRIKVxcdCs9IGR3bWFjLWR3Yy1xb3MtZXRoLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo0MDpvYmotJChDT05GSUdfRFdNQUNfSU5URUxfUExBVClcXHQrPSBkd21hYy1pbnRlbC1wbGF0Lm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZS00MS1vYmotJChDT05GSUdfRFdNQUNfTE9PTkdTT04xKVxcdCs9IGR3bWFjLWxvb25nc29uMS5vXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZT01MD1vYmotJChDT05GSUdfU1RNTUFDX1BDSSlcXHQrPSBzdG1tYWMtcGNpLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo1MTpvYmotJChDT05GSUdfRFdNQUNfSU5URUwpXFx0Kz0gZHdtYWMtaW50ZWwub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTUyLW9iai0kKENPTkZJR19EV01BQ19MT09OR1NPTilcXHQrPSBkd21hYy1sb29uZ3Nvbi5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDA2OjUyOjU5Ljg1NDY4MzIzMVoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTEyODczODc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSW1wbGljYXRpb25zIG9mIGEgRHJpdmVyIENvbmZpZ3VyYXRpb24gQ2hhbmdlKipcblxuT2theSwgc28gSSBzZWUgdGhhdCBgRFdNQUNfSU5URUxgIGlzIHRoZSBrZXkgY29uZmlndXJhdGlvbiBvcHRpb24gaGVyZSwgdGhlIG9uZSB0aGF0IHVsdGltYXRlbHkgYnJpbmdzIGluIGBkd21hYy1pbnRlbC5vYC4gTXkgYXR0ZW50aW9uIGlzIGRyYXduIHRvIHRoZSBzeW1ib2wgYGludGVsX21hY19maW5pc2hgLiBUaGUgcGF0Y2ggY2VudGVycyBhcm91bmQgbW9kaWZ5aW5nIHRoZSBgaW50ZWxfbWFjX2ZpbmlzaGAgZnVuY3Rpb24gd2l0aGluIHRoZSBJbnRlbCBEV01BQyBQQ0kgZHJpdmVyLiBUaGUgY29yZSBsb2dpYyBpcyB0byBhdm9pZCB1bm5lY2Vzc2FyeSByZXByb2dyYW1taW5nIG9mIHRoZSBTZXJEZXMgaWYgdGhlIGludGVyZmFjZSBtb2RlIHJlbWFpbnMgdGhlIHNhbWUuIFRoaXMgaXMgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhbmQgaXQncyByZWFjaGFibGUgdGhyb3VnaCBkcml2ZXIgZXhlY3V0aW9uIHZpYSBQQ0kgZnV6emluZywgd2hpY2ggaXMgYSBnb29kIHRoaW5nIHRvIG5vdGUuIE5vdywgSSBzZWUgYFNUTU1BQ19FVEhgIGxpc3RlZCBhcyBhIHJlbGF0ZWQgY29uZmlnIGFzIHdlbGwuIEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSBpZiBpdCdzIHRoZSBtb3JlIHByb21pbmVudCBjb25maWd1cmF0aW9uIGludm9sdmVkOyBpdCBjb3VsZCBiZSBhIGRlcGVuZGVuY3kgb3IgcGFydCBvZiBhIHdpZGVyIGFyY2hpdGVjdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEwMjAsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDY6NTM6MDMuOTY3NTYwODc2WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTkxMzMzMjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNUTU1BQ19FVEhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyOmNvbmZpZyBTVE1NQUNfRVRIXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDA2OjUzOjA0LjE2NjcwNDExWiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0MDAyMjE4MDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhpcyBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29uZmlndXJhdGlvbi4gVGhlIGNvcmUgc2VlbXMgdG8gcmV2b2x2ZSBhcm91bmQgYFNUTU1BQ19FVEhgLCB0aGF0J3MgdGhlIHByaW1hcnkgZm9jdXMgaGVyZS4gSSdtIGdvaW5nIHRvIGZsYWcgdGhpcyBhcyByaXBlIGZvciBmdXp6aW5nLCBzbyBJJ2xsIHNldCBgV29ydGhGdXp6aW5nYCB0byBgdHJ1ZWAuXG5cblRoZSBrZXkgc3ltYm9sIHRvIHplcm8gaW4gb24gaXMgYGludGVsX21hY19maW5pc2hgLiBUaGlzIGZ1bmN0aW9uIHNlZW1zIHRvIGJlIHdoZXJlIHRoZSBpbnRlcmVzdGluZyBpbnRlcmFjdGlvbiBpcyBoYXBwZW5pbmcuIEkgbmVlZCB0byBtYWtlIHN1cmUgYFNUTU1BQ19FVEhgIGFuZCBgRFdNQUNfSU5URUxgIGFyZSBlbmFibGVkLCBhcyB0aGV5IHNlZW0gaW50cmluc2ljYWxseSBsaW5rZWQuXG5cbk15IHJlYXNvbmluZz8gV2VsbCwgdGhpcyBwYXRjaCBpcyBzdXJnaWNhbGx5IGFsdGVyaW5nIHRoZSBgaW50ZWxfbWFjX2ZpbmlzaGAgZnVuY3Rpb24gd2l0aGluIHRoZSBJbnRlbCBEV01BQyBQQ0kgZHJpdmVyLiBTcGVjaWZpY2FsbHksIGl0J3MgYWJvdXQgc2tpcHBpbmcgdGhlIFNlckRlcyByZXByb2dyYW1taW5nIGlmIHRoZSBpbnRlcmZhY2UgbW9kZSByZW1haW5zIHVuY2hhbmdlZC4gVGhpcyBpcyBhIHNvbGlkLCBmdW5jdGlvbmFsIG1vZGlmaWNhdGlvbiBpbiBhIGRyaXZlciB0aGF0IHdlIGNhbiBhY3R1YWxseSBnZXQgdG8gdGhyb3VnaCBQQ0kgZnV6emluZy4gVGhhdCBtYWtlcyB0aGlzIGEgcHJpbWUgdGFyZ2V0IGZvciBpbnZlc3RpZ2F0aW9uLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGlzIGFmZmVjdHMgc3RhYmlsaXR5IGFuZCBpZiB3ZSBjYW4gdW5jb3ZlciBhbnkgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcyBpbiB0aGlzIGNvbmRpdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE0NzAsIk91dHB1dFRva2VucyI6MTA0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDA2OjUzOjA4LjU2NjkyOTY5M1oiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM2ODU4NzM5MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU1RNTUFDX0VUSFwiLFxuICAgIFwiRFdNQUNfSU5URUxcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpbnRlbF9tYWNfZmluaXNoXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGBpbnRlbF9tYWNfZmluaXNoYCBmdW5jdGlvbiBpbiB0aGUgSW50ZWwgRFdNQUMgUENJIGRyaXZlciB0byBza2lwIHJlcHJvZ3JhbW1pbmcgdGhlIFNlckRlcyBpZiB0aGUgaW50ZXJmYWNlIG1vZGUgaGFzbid0IGNoYW5nZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIHJlYWNoYWJsZSBkcml2ZXIgKHZpYSBQQ0kgZnV6emluZykuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU1RNTUFDX0VUSFwiLFxuICAgIFwiRFdNQUNfSU5URUxcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpbnRlbF9tYWNfZmluaXNoXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGBpbnRlbF9tYWNfZmluaXNoYCBmdW5jdGlvbiBpbiB0aGUgSW50ZWwgRFdNQUMgUENJIGRyaXZlciB0byBza2lwIHJlcHJvZ3JhbW1pbmcgdGhlIFNlckRlcyBpZiB0aGUgaW50ZXJmYWNlIG1vZGUgaGFzbid0IGNoYW5nZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIHJlYWNoYWJsZSBkcml2ZXIgKHZpYSBQQ0kgZnV6emluZykuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow98v9z[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-06 06:30:37 +0000 UTC FinishedAt: 2026-07-06 06:53:10 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "d7a8d500d7e42837bd8dce40cb52c97c6e8706a9", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "STMMAC_ETH", "DWMAC_INTEL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "d7a8d500d7e42837bd8dce40cb52c97c6e8706a9", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "STMMAC_ETH", "DWMAC_INTEL" ], "series_id": "8565ed2f-f9de-42e9-ba01-1ab83829fdec" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "intel_mac_finish" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA2OjUyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAgICYjMzQ7RFdNQUNfSU5URUwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpbnRlbF9tYWNfZmluaXNoJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBgaW50ZWxfbWFjX2ZpbmlzaGAgZnVuY3Rpb24gaW4gdGhlIEludGVsIERXTUFDIFBDSSBkcml2ZXIgdG8gc2tpcCByZXByb2dyYW1taW5nIHRoZSBTZXJEZXMgaWYgdGhlIGludGVyZmFjZSBtb2RlIGhhc24mIzM5O3QgY2hhbmdlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgcmVhY2hhYmxlIGRyaXZlciAodmlhIFBDSSBmdXp6aW5nKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwNjo1MjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGZkYzZhOWRlYjg1MDBkODdhZDMwOWJkYmIzM2IxZDYzOWJjODQwYWNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCA2IDA2OjUyOjA2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jXG5pbmRleCBiOGQ0NjdiYTZkNzJkMy4uOWExNjI4MzFjYTQwNTAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jXG5AQCAtNTM2LDYgJiM0Mzs1MzYsMTUgQEAgc3RhdGljIGludCBpbnRlbF9tYWNfZmluaXNoKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuIFx0aW50IG1heF9yZWdzID0gMDtcbiBcdGludCByZXQgPSAwO1xuIFxuJiM0MztcdC8qIG1hY19maW5pc2goKSBydW5zIGF0IHRoZSBlbmQgb2YgZXZlcnkgbWFqb3IgbGluayByZWNvbmZpZ3VyYXRpb24sXG4mIzQzO1x0ICogaW5jbHVkaW5nIHRoZSBpbml0aWFsIG9uZSBhdCBwcm9iZSwgd2hlcmUgdGhlIGludGVyZmFjZSBtb2RlIGhhc1xuJiM0MztcdCAqIG5vdCBhY3R1YWxseSBjaGFuZ2VkLiBSZXByb2dyYW1taW5nIGFuZCBwb3dlci1jeWNsaW5nIHRoZSBTZXJEZXMgaXNcbiYjNDM7XHQgKiBvbmx5IG5lZWRlZCBvbiBhIHJlYWwgbW9kZSBjaGFuZ2UgYW5kIGlzIG90aGVyd2lzZSBuZWVkbGVzc2x5XG4mIzQzO1x0ICogZGlzcnVwdGl2ZSwgc28gc2tpcCBpdCB3aGVuIHRoZSBtb2RlIGlzIHVuY2hhbmdlZC5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAocHJpdi1cdTAwM2VwbGF0LVx1MDAzZXBoeV9pbnRlcmZhY2UgPT0gaW50ZXJmYWNlKVxuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1xuIFx0cmV0ID0gaW50ZWxfdHNuX2xhbmVfaXNfYXZhaWxhYmxlKG5kZXYsIGludGVsX3ByaXYpO1xuIFx0aWYgKHJldCBcdTAwM2MgMCkge1xuIFx0XHRuZXRkZXZfaW5mbyhwcml2LVx1MDAzZWRldiwgXCYjMzQ7Tm8gVFNOIGxhbmUgYXZhaWxhYmxlIHRvIHNldCB0aGUgcmVnaXN0ZXJzLlxcblwmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDY6NTI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7U1RNTUFDX0VUSCYjMzQ7LAogICAgJiMzNDtEV01BQ19JTlRFTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2ludGVsX21hY19maW5pc2gmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGBpbnRlbF9tYWNfZmluaXNoYCBmdW5jdGlvbiBpbiB0aGUgSW50ZWwgRFdNQUMgUENJIGRyaXZlciB0byBza2lwIHJlcHJvZ3JhbW1pbmcgdGhlIFNlckRlcyBpZiB0aGUgaW50ZXJmYWNlIG1vZGUgaGFzbiYjMzk7dCBjaGFuZ2VkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSByZWFjaGFibGUgZHJpdmVyICh2aWEgUENJIGZ1enppbmcpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBmZGM2YTlkZWI4NTAwZDg3YWQzMDliZGJiMzNiMWQ2MzliYzg0MGFjCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBKdWwgNiAwNjo1MjowNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jCmluZGV4IGI4ZDQ2N2JhNmQ3MmQzLi45YTE2MjgzMWNhNDA1MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jCkBAIC01MzYsNiAmIzQzOzUzNiwxNSBAQCBzdGF0aWMgaW50IGludGVsX21hY19maW5pc2goc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsCiAJaW50IG1heF9yZWdzID0gMDsKIAlpbnQgcmV0ID0gMDsKIAomIzQzOwkvKiBtYWNfZmluaXNoKCkgcnVucyBhdCB0aGUgZW5kIG9mIGV2ZXJ5IG1ham9yIGxpbmsgcmVjb25maWd1cmF0aW9uLAomIzQzOwkgKiBpbmNsdWRpbmcgdGhlIGluaXRpYWwgb25lIGF0IHByb2JlLCB3aGVyZSB0aGUgaW50ZXJmYWNlIG1vZGUgaGFzCiYjNDM7CSAqIG5vdCBhY3R1YWxseSBjaGFuZ2VkLiBSZXByb2dyYW1taW5nIGFuZCBwb3dlci1jeWNsaW5nIHRoZSBTZXJEZXMgaXMKJiM0MzsJICogb25seSBuZWVkZWQgb24gYSByZWFsIG1vZGUgY2hhbmdlIGFuZCBpcyBvdGhlcndpc2UgbmVlZGxlc3NseQomIzQzOwkgKiBkaXNydXB0aXZlLCBzbyBza2lwIGl0IHdoZW4gdGhlIG1vZGUgaXMgdW5jaGFuZ2VkLgomIzQzOwkgKi8KJiM0MzsJaWYgKHByaXYtJmd0O3BsYXQtJmd0O3BoeV9pbnRlcmZhY2UgPT0gaW50ZXJmYWNlKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiAJcmV0ID0gaW50ZWxfdHNuX2xhbmVfaXNfYXZhaWxhYmxlKG5kZXYsIGludGVsX3ByaXYpOwogCWlmIChyZXQgJmx0OyAwKSB7CiAJCW5ldGRldl9pbmZvKHByaXYtJmd0O2RldiwgJiMzNDtObyBUU04gbGFuZSBhdmFpbGFibGUgdG8gc2V0IHRoZSByZWdpc3RlcnMuXG4mIzM0Oyk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA2OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5NzMKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAyNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUGF0Y2ggdG8gdGhlIEludGVsIERXTUFDIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0JiMzOTtzIGJlZW4gYXBwbGllZCB0byBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuY2AuIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIHRoaXMgbmV3IGNvbmRpdGlvbmFsIGNoZWNrIGluIGBpbnRlbF9tYWNfZmluaXNoYDogYGlmIChwcml2LSZndDtwbGF0LSZndDtwaHlfaW50ZXJmYWNlID09IGludGVyZmFjZSkgcmV0dXJuIDA7YC4gVGhpcyBpcyBhIGNsZWFyIGZ1bmN0aW9uYWwgY2hhbmdlLCBhbHRlcmluZyB0aGUgYmVoYXZpb3Igb2YgdGhlIEludGVsIERXTUFDIGRyaXZlciB3aXRoaW4gdGhlIFNUTWljcm9lbGVjdHJvbmljcyBzdG1tYWMgZnJhbWV3b3JrLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgY2FuIHRoaXMgYmUgZnV6emVkIGVmZmVjdGl2ZWx5PyBTcGVjaWZpY2FsbHksIGNhbiBJIHJlYWNoIHRoaXMgZHJpdmVyIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgZm9yIHJvYnVzdCB0ZXN0aW5nPwoKVGhlIGZpbGUgaXRzZWxmLCBgZHdtYWMtaW50ZWwuY2AsIGltbWVkaWF0ZWx5IHRlbGxzIG1lIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYW4gZXRoZXJuZXQgZHJpdmVyIGZvciB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIDEwLzEwMC8xMDAwL0VRT1MgRXRoZXJuZXQgTUFDLCBidXQgc3BlY2lmaWNhbGx5IGZvciBJbnRlbCBwbGF0Zm9ybXMgbGlrZSBFbGtoYXJ0IExha2UgYW5kIFF1YXJrLiBUaGUgY3J1Y2lhbCB0aGluZyBoZXJlIGlzIHRoYXQgaXQmIzM5O3MgYSBQQ0kgZHJpdmVyLiBSZWFjaGluZyBQQ0kgZGV2aWNlcyBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGNhbiBiZSB0cmlja3kuIE9mdGVuLCB3ZSBoYXZlIHRvIHJlbHkgb24gZW11bGF0aW9uLCBvciB3ZSBtaWdodCBzaW1wbHkgbGFjayB0aGUgc3BlY2lmaWMgaGFyZHdhcmUgY29uZmlndXJhdGlvbi4KCkkgcmVtZW1iZXIgc3l6a2FsbGVyICpkb2VzKiBoYXZlIHNvbWUgUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzLCBidXQgaXQmIzM5O3MgdHlwaWNhbGx5IG1vcmUgY2hhbGxlbmdpbmcgdG8gZ2V0IHRvIHNwZWNpZmljIGhhcmR3YXJlIGRyaXZlcnMgdW5sZXNzIHRoZXkmIzM5O3JlIHZpcnR1YWxpemVkIG9yIFVTQi1iYXNlZC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGlzIHJlYWNoYWJsZS4gU28sIGxldCBtZSBxdWlja2x5IHJlLWV4YW1pbmUgdGhlIGBkd21hYy1pbnRlbC5jYCBjb2RlIHRvIGNvbmZpcm0gaXQmIzM5O3MgYWN0dWFsbHkgYSBQQ0kgZHJpdmVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcGF0aCB0byBnZXQgdGhpcyBkcml2ZXIgZXhlcmNpc2luZyB1bmRlciBhIGZ1enplci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwNjo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwY2lfZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTEzOTE9TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIGludGVsX2V0aF9wY2lfaWRfdGFibGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMzkyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMzkzOnN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBpbnRlbF9ldGhfcGNpX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTM5NC1cdC5uYW1lID0gXCYjMzQ7aW50ZWwtZXRoLXBjaVwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTE0MDItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjE0MDM6bW9kdWxlX3BjaV9kcml2ZXIoaW50ZWxfZXRoX3BjaV9kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xNDA0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA2OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4NjIKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAxMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQQ0kgRHJpdmVyIGFuZCBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyB0aGlzIGlzIGEgUENJIGRyaXZlci4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0aGF0IHdlIGRvbiYjMzk7dCB1c3VhbGx5IHRhcmdldCBzcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXJzIGZvciBmdXp6aW5nIHVubGVzcyB0aGV5JiMzOTtyZSBicm9hZGx5IGVtdWxhdGVkIOKAkyBsaWtlIGUxMDAwZSBvciB2aXJ0aW8g4oCTIHNpbmNlIGl0JiMzOTtzIGhhcmQgdG8gZ2V0IGdvb2QgY292ZXJhZ2UuIEkgbWVhbiwgd2UmIzM5O2QgdHlwaWNhbGx5IHJlbHkgb24gc3l6a2FsbGVyJiMzOTtzIFBDSSBmdXp6aW5nLCBsZXR0aW5nIGl0IGhhbmRsZSBQQ0kgZGV2aWNlIGluamVjdGlvbi4gQnV0IHdhaXQsIEkgbmVlZCB0byByZW1lbWJlciB0aGF0IHN5emthbGxlciAqZG9lcyogaGF2ZSBhIFBDSSBmdXp6ZXIuIEl0IGNhbiBwcm9iZSBhcmJpdHJhcnkgUENJIGRyaXZlcnMgYnkgaW5qZWN0aW5nIFBDSSBkZXZpY2VzIHdpdGggc3BlY2lmaWMgbWF0Y2hpbmcgSURzLiBUaGF0IGNoYW5nZXMgdGhpbmdzOyBpdCBvcGVucyB1cCBhIHRhcmdldGVkIGFwcHJvYWNoLiBSaWdodCwgc28gbm93IG15IGZvY3VzIHNoaWZ0cyB0byB3aGV0aGVyIGBpbnRlbF9tYWNfZmluaXNoYCBpcyByZWFjaGFibGUuIExldCYjMzk7cyBzZWUgaWYgd2UgY2FuIGdldCB0aGVyZS4gSXQgc2VlbXMgaXTigJlzIGEgY2FsbGJhY2sgZm9yIGBtYWNfZmluaXNoYCBpbiBgcGh5bGlua19tYWNfb3BzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwNjo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpbnRlbF9tYWNfZmluaXNoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTUwNz1zdGF0aWMgaW50IGludGVsX3NldF9yZWdfYWNjZXNzKGNvbnN0IHN0cnVjdCBwbWNfc2VyZGVzX3JlZ3MgKnJlZ3MsIGludCBtYXhfcmVncylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTUyNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6NTI4OnN0YXRpYyBpbnQgaW50ZWxfbWFjX2ZpbmlzaChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNTI5LVx0XHRcdCAgICB2b2lkICppbnRlbF9kYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9NzY0PXN0YXRpYyBpbnQgZWhsX3NnbWlpX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy03NzItXHRwbGF0LVx1MDAzZXNlcmRlc19wb3dlcmRvd24gPSBpbnRlbF9zZXJkZXNfcG93ZXJkb3duO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo3NzM6XHRwbGF0LVx1MDAzZW1hY19maW5pc2ggPSBpbnRlbF9tYWNfZmluaXNoO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy03NzQtXHRwbGF0LVx1MDAzZWNsa19wdHBfcmF0ZSA9IDIwNDgwMDAwMDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTgzMD1zdGF0aWMgaW50IGVobF9wc2UwX3NnbWlpMWdfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTgzNy1cdHBsYXQtXHUwMDNlc2VyZGVzX3Bvd2VyZG93biA9IGludGVsX3NlcmRlc19wb3dlcmRvd247XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjgzODpcdHBsYXQtXHUwMDNlbWFjX2ZpbmlzaCA9IGludGVsX21hY19maW5pc2g7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTgzOS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTg3OT1zdGF0aWMgaW50IGVobF9wc2UxX3NnbWlpMWdfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTg4Ni1cdHBsYXQtXHUwMDNlc2VyZGVzX3Bvd2VyZG93biA9IGludGVsX3NlcmRlc19wb3dlcmRvd247XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjg4NzpcdHBsYXQtXHUwMDNlbWFjX2ZpbmlzaCA9IGludGVsX21hY19maW5pc2g7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTg4OC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTEwMDE9c3RhdGljIGludCBhZGxuX3NnbWlpX3BoeTBfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwMDktXHRwbGF0LVx1MDAzZXNlcmRlc19wb3dlcmRvd24gPSBpbnRlbF9zZXJkZXNfcG93ZXJkb3duO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMDEwOlx0cGxhdC1cdTAwM2VtYWNfZmluaXNoID0gaW50ZWxfbWFjX2ZpbmlzaDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTAxMS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwNjo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDUyCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgdGhlIGBtYWNfZmluaXNoYCBDYWxsYmFja3MgaW4gU1RNTUFDKioKClJpZ2h0LCBzbyB0aGUgYG1hY19maW5pc2hgIGNhbGxiYWNrIGlzIHRyaWdnZXJlZCwgbGlrZWx5IGZyb20gYSBmdW5jdGlvbiBsaWtlIGBzdG1tYWNfbWFjX2ZpbmlzaGAgb3Igc29tZXRoaW5nIHZlcnkgc2ltaWxhciB3aXRoaW4gdGhlIFNUTU1BQyBkcml2ZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3cgaGVyZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHRyYWNlIHRoZSBvcmlnaW5zIG9mIHRoZSBgbWFjX2ZpbmlzaGAgY2FsbC4gV2hlcmUgKmV4YWN0bHkqIGlzIHRoYXQgZnVuY3Rpb24gYmVpbmcgaW52b2tlZCB3aXRoaW4gdGhlIGBzdG1tYWNgIGNvZGU/IEkgbmVlZCB0byBwaW5wb2ludCBldmVyeSBjYWxsIHNpdGUgdG8gZnVsbHkgZ3Jhc3AgdGhlIGV4ZWN1dGlvbiBjb250ZXh0IGFuZCB3aGF0JiMzOTtzIGhhcHBlbmluZyBqdXN0IHByaW9yIHRvIGBtYWNfZmluaXNoYCBiZWluZyBjYWxsZWQuIEtub3dpbmcgdGhlIGNhbGxpbmcgZnVuY3Rpb24ocykgd2lsbCBnaXZlIG1lIGNsdWVzIGFib3V0IHRoZSBzY2VuYXJpb3MgdGhhdCBuZWNlc3NpdGF0ZSB0aGlzIGNhbGxiYWNrIGFuZCBoZWxwIG1lIG5hcnJvdyBkb3duIGFueSBwb3RlbnRpYWwgaXNzdWUgSSBhbSBjdXJyZW50bHkgaW52ZXN0aWdhdGluZywgYW5kIGhvdyB0aGlzIGZ1bmN0aW9uIHBsYXlzIGludG8gdGhlIGRyaXZlciYjMzk7cyBvdmVyYWxsIG9wZXJhdGlvbi4gVGltZSB0byBkaXZlIGludG8gdGhlIGNvZGViYXNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA2OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21hY19maW5pc2gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz01MDc9c3RhdGljIGludCBpbnRlbF9zZXRfcmVnX2FjY2Vzcyhjb25zdCBzdHJ1Y3QgcG1jX3NlcmRlc19yZWdzICpyZWdzLCBpbnQgbWF4X3JlZ3MpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy01MjctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjUyODpzdGF0aWMgaW50IGludGVsX21hY19maW5pc2goc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTUyOS1cdFx0XHQgICAgdm9pZCAqaW50ZWxfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTUzOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6NTM5Olx0LyogbWFjX2ZpbmlzaCgpIHJ1bnMgYXQgdGhlIGVuZCBvZiBldmVyeSBtYWpvciBsaW5rIHJlY29uZmlndXJhdGlvbixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNTQwLVx0ICogaW5jbHVkaW5nIHRoZSBpbml0aWFsIG9uZSBhdCBwcm9iZSwgd2hlcmUgdGhlIGludGVyZmFjZSBtb2RlIGhhc1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9NzY0PXN0YXRpYyBpbnQgZWhsX3NnbWlpX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy03NzItXHRwbGF0LVx1MDAzZXNlcmRlc19wb3dlcmRvd24gPSBpbnRlbF9zZXJkZXNfcG93ZXJkb3duO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo3NzM6XHRwbGF0LVx1MDAzZW1hY19maW5pc2ggPSBpbnRlbF9tYWNfZmluaXNoO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy03NzQtXHRwbGF0LVx1MDAzZWNsa19wdHBfcmF0ZSA9IDIwNDgwMDAwMDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTgzMD1zdGF0aWMgaW50IGVobF9wc2UwX3NnbWlpMWdfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTgzNy1cdHBsYXQtXHUwMDNlc2VyZGVzX3Bvd2VyZG93biA9IGludGVsX3NlcmRlc19wb3dlcmRvd247XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjgzODpcdHBsYXQtXHUwMDNlbWFjX2ZpbmlzaCA9IGludGVsX21hY19maW5pc2g7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTgzOS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTg3OT1zdGF0aWMgaW50IGVobF9wc2UxX3NnbWlpMWdfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTg4Ni1cdHBsYXQtXHUwMDNlc2VyZGVzX3Bvd2VyZG93biA9IGludGVsX3NlcmRlc19wb3dlcmRvd247XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjg4NzpcdHBsYXQtXHUwMDNlbWFjX2ZpbmlzaCA9IGludGVsX21hY19maW5pc2g7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTg4OC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTEwMDE9c3RhdGljIGludCBhZGxuX3NnbWlpX3BoeTBfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwMDktXHRwbGF0LVx1MDAzZXNlcmRlc19wb3dlcmRvd24gPSBpbnRlbF9zZXJkZXNfcG93ZXJkb3duO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMDEwOlx0cGxhdC1cdTAwM2VtYWNfZmluaXNoID0gaW50ZWxfbWFjX2ZpbmlzaDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTAxMS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1xY29tLWV0aHFvcy5jPTYxMT1zdGF0aWMgdm9pZCBxY29tX2V0aHFvc19zZXJkZXNfcG93ZXJkb3duKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB2b2lkICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmMtNjE4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYzo2MTk6c3RhdGljIGludCBldGhxb3NfbWFjX2ZpbmlzaF9zZXJkZXMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHZvaWQgKnByaXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1xY29tLWV0aHFvcy5jLTYyMC1cdFx0XHRcdCAgICB1bnNpZ25lZCBpbnQgbW9kZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1xY29tLWV0aHFvcy5jPTY4ND1zdGF0aWMgaW50IHFjb21fZXRocW9zX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYy03MjEtXHRcdHBsYXRfZGF0LVx1MDAzZWZpeF9tYWNfc3BlZWQgPSBldGhxb3NfZml4X21hY19zcGVlZF9zZ21paTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmM6NzIyOlx0XHRwbGF0X2RhdC1cdTAwM2VtYWNfZmluaXNoID0gZXRocW9zX21hY19maW5pc2hfc2VyZGVzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYy03MjMtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MTAzNz1zdGF0aWMgdm9pZCBzdG1tYWNfbWFjX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZywgdW5zaWduZWQgaW50IG1vZGUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xMDQyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoxMDQzOnN0YXRpYyBpbnQgc3RtbWFjX21hY19maW5pc2goc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHVuc2lnbmVkIGludCBtb2RlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xMDQ0LVx0XHRcdCAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTEwNDgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjEwNDk6XHRpZiAocHJpdi1cdTAwM2VwbGF0LVx1MDAzZW1hY19maW5pc2gpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjEwNTA6XHRcdHByaXYtXHUwMDNlcGxhdC1cdTAwM2VtYWNfZmluaXNoKG5kZXYsIHByaXYtXHUwMDNlcGxhdC1cdTAwM2Vic3BfcHJpdiwgbW9kZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTA1MS1cdFx0XHRcdCAgICAgICBpbnRlcmZhY2UpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MTI2ND1zdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyBzdG1tYWNfcGh5bGlua19tYWNfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTI2Ny1cdC5tYWNfY29uZmlnID0gc3RtbWFjX21hY19jb25maWcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjEyNjg6XHQubWFjX2ZpbmlzaCA9IHN0bW1hY19tYWNfZmluaXNoLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xMjY5LVx0Lm1hY19saW5rX2Rvd24gPSBzdG1tYWNfbWFjX2xpbmtfZG93bixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwNjo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MTQ3CgkJCQkJCQlvdXRwdXQ6IDUwCgkJCQkJCQl0aG91Z2h0czogNjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQb3RlbnRpYWwgQXR0YWNrIFN1cmZhY2UqKgoKT2theSwgc28gYHN0bW1hY19tYWNfZmluaXNoYCBnZXRzIHRyaWdnZXJlZCBieSBgcGh5bGlua2AuIFRoYXQmIzM5O3MgYW4gaW50ZXJlc3RpbmcgcG9pbnQgdG8gc3RhcnQgZnJvbS4gTm93LCB0aGUgYGR3bWFjLWludGVsLmNgIGRyaXZlciBpcyBhIFBDSSBkcml2ZXIsIHJpZ2h0PyBJZiBpdCBpcywgdGhlbiBpdCYjMzk7cyBhIHBvdGVudGlhbCB0YXJnZXQgZm9yIGZ1enppbmcgdmlhIGEgc3BlY2lhbGx5IGNyYWZ0ZWQgUENJIGRldmljZS4gVGhlIGNsYXNzaWMgYXBwcm9hY2guIExldCYjMzk7cyBkaWcgaW50byB0aGUgUENJIElEcyBhc3NvY2lhdGVkIHdpdGggYGR3bWFjLWludGVsLmNgLiBUaGF0JiMzOTtzIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcDsga25vd2luZyB0aGUgUENJIElEcyB3aWxsIGxldCBtZSBmb2N1cyBteSBmdXp6aW5nIGVmZm9ydHMgb24gdGhlIGNvcnJlY3QgdmVuZG9yIGFuZCBkZXZpY2UgSURzIHRvIGluamVjdCBpbnRvIHRoZSBzeXN0ZW0uIEl0JiMzOTtzIHRpbWUgdG8gZ2F0aGVyIHRoYXQgY3J1Y2lhbCBpbmZvcm1hdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDY6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aW50ZWxfZXRoX3BjaV9pZF90YWJsZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMzM5PXN0YXRpYyB2b2lkIGludGVsX2V0aF9wY2lfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTM3MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTM3MTpzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgaW50ZWxfZXRoX3BjaV9pZF90YWJsZVtdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMzcyLVx0eyBQQ0lfREVWSUNFX0RBVEEoSU5URUwsIFFVQVJLLCBcdTAwMjZxdWFya19pbmZvKSB9LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTM5MC19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMzkxOk1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBpbnRlbF9ldGhfcGNpX2lkX3RhYmxlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTM5Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9MTM5Mz1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgaW50ZWxfZXRoX3BjaV9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEzOTQtXHQubmFtZSA9IFwmIzM0O2ludGVsLWV0aC1wY2lcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEzOTU6XHQuaWRfdGFibGUgPSBpbnRlbF9ldGhfcGNpX2lkX3RhYmxlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMzk2LVx0LnByb2JlID0gaW50ZWxfZXRoX3BjaV9wcm9iZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDY6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjg2MgoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipGdXp6aW5nIHRoZSBQQ0kgRHJpdmVyOiBBIFF1aWNrIEFzc2Vzc21lbnQqKgoKSG1tLCBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgUENJIGRyaXZlci4uLiBpcyB0aGlzIGV2ZW4gd29ydGggdGhlIGZ1enppbmcgZWZmb3J0PyBJdCYjMzk7cyBhbHdheXMgYSB0cmFkZS1vZmYuIEJ1dCwgZ2l2ZW4gdGhlIHBvdGVudGlhbCBzZXZlcml0eSBvZiBQQ0ktcmVsYXRlZCBidWdzLCB0aGUgYW5zd2VyIGlzIGxpa2VseSB5ZXMuIEVzcGVjaWFsbHkgYmVjYXVzZSB0aGlzIGlzIGEgKmZ1bmN0aW9uYWwqIGNoYW5nZSwgYW5kIHRoYXQmIzM5O3MgdGhlIGtpbmQgb2YgdGhpbmcgdGhhdCBjb3VsZCBpbnRyb2R1Y2UgbmV3IGFuZCBpbnRlcmVzdGluZyBlZGdlIGNhc2VzLgoKR29vZCwgZ29vZCwgZ29vZCwgU3l6a2FsbGVyIGRvZXMgaW5kZWVkIHN1cHBvcnQgUENJIGZ1enppbmcuIFRoYXQmIzM5O3MgYSBodWdlIHBvc2l0aXZlISBJdCBzdHJlYW1saW5lcyB0aGluZ3MgY29uc2lkZXJhYmx5LgoKUmlnaHQsIHNvIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byB1bmRlcnN0YW5kIHRoZSB0YXJnZXQsIGFuZCBmaW5kIHRoZSBjb25maWcgb3B0aW9ucyBmb3IgYGR3bWFjLWludGVsLmNgLiBHb3R0YSBzZWUgd2hhdCBrbm9icyB3ZSBoYXZlIHRvIHdvcmsgd2l0aCwgdG8gZW5hYmxlIGFuZCBjb25maWd1cmUgdGhlIGRyaXZlciBhcHByb3ByaWF0ZWx5LCBvciBwb3RlbnRpYWxseSBmaW5kIGZlYXR1cmVzIHRvIGRpc2FibGUuIFRoaXMmIzM5O2xsIHJlcXVpcmUgc29tZSBxdWljayBkaWdnaW5nIHRvIGlkZW50aWZ5IHRoZSByZWxldmFudCBLY29uZmlnIHN5bWJvbHMuIFRpbWUgdG8gZ2V0IHRvIHdvcmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA2OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2R3bWFjLWludGVsLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU9NTA9b2JqLSQoQ09ORklHX1NUTU1BQ19QQ0kpXHQmIzQzOz0gc3RtbWFjLXBjaS5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo1MTpvYmotJChDT05GSUdfRFdNQUNfSU5URUwpXHQmIzQzOz0gZHdtYWMtaW50ZWwub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtNTItb2JqLSQoQ09ORklHX0RXTUFDX0xPT05HU09OKVx0JiM0Mzs9IGR3bWFjLWxvb25nc29uLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDY6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzI4MgoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDU1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3Mgc2VlLCB0aGUgZHJpdmVyIGNvbmZpZ3VyYXRpb24gc2VlbXMgdG8gYmUgcG9pbnRpbmcgbWUgdG93YXJkcyBgQ09ORklHX0RXTUFDX0lOVEVMYC4gUmlnaHQsIGFuZCB3YXNuJiMzOTt0IHRoZXJlIHNvbWV0aGluZyBhYm91dCBgQ09ORklHX1NUTU1BQ19FVEhgIGFzIHdlbGw/IEFoLCB5ZXMsIHRoYXQmIzM5O3MgdGhlIG1vcmUgZ2VuZXJhbCwgbWFpbiBkcml2ZXIsIGlzbiYjMzk7dCBpdD8gT2theSwgc28gaWYgSSB3YW50IHRvIGRlbHZlIGRlZXBlciBpbnRvIHRoaXMgYERXTUFDX0lOVEVMYCBjb25maWd1cmF0aW9uLCB0aGUgb2J2aW91cyBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgYEtjb25maWdgIGZpbGUuIFRoYXQmIzM5O3Mgd2hlcmUgYWxsIHRoZSBkZXBlbmRlbmNpZXMgYW5kIG9wdGlvbnMgc2hvdWxkIGJlIGRlZmluZWQgZm9yIGBEV01BQ19JTlRFTGAuIFRpbWUgdG8gZGlnIGluIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwNjo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRFdNQUNfSU5URUwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zMjI9Y29uZmlnIERXTUFDX0lNWDhcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMzMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzM0OmNvbmZpZyBEV01BQ19JTlRFTF9QTEFUXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMzNS1cdHRyaXN0YXRlIFwmIzM0O0ludGVsIGR3bWFjIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTM3Mz1jb25maWcgU1RNTUFDX0xJQlBDSVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzc3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozNzg6Y29uZmlnIERXTUFDX0lOVEVMXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM3OS1cdHRyaXN0YXRlIFwmIzM0O0ludGVsIEdNQUMgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwNjo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NzUyCgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMjMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBvdGVudGlhbCBWdWxuZXJhYmlsaXR5IGluIEludGVsIEV0aGVybmV0IERyaXZlcnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYERXTUFDX0lOVEVMYCBjb25maWd1cmF0aW9uLiBSaWdodCwgYW5kIEkgc2VlIHRoYXQgYGludGVsX21hY19maW5pc2hgIGlzIGJlaW5nIGNhbGxlZCBmcm9tIGBzdG1tYWNfbWFjX2ZpbmlzaGAuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcsIGJlY2F1c2UgYHN0bW1hY19tYWNfZmluaXNoYCBpcyBhIFBIWSBsaW5rIGNhbGxiYWNrLiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBjYW4gdGhpcyBiZSB0cmlnZ2VyZWQgdmlhIHN5emthbGxlcj8gSXQgc2VlbXMgbGlrZSBpdCBjYW4uIFN5emthbGxlciBjYW4gaW5qZWN0IFBDSSBkZXZpY2VzLCB3aGljaCBzaG91bGQgbGVhZCB0byBgaW50ZWxfZXRoX3BjaV9wcm9iZWAsIHdoaWNoIGluIHR1cm4gcmVnaXN0ZXJzIHRoZSBuZXRkZXYuIFRoZW4sIGJ5IGJyaW5naW5nIHRoZSBpbnRlcmZhY2UgdXAgdXNpbmcgc3l6a2FsbGVyLCB3ZSB0cmlnZ2VyIFBIWSBsaW5rIHRvIGNhbGwgYG1hY19maW5pc2hgLgoKVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBpbiB0aGlzIGNvbmRpdGlvbmFsOgpgYGBjCglpZiAocHJpdi0mZ3Q7cGxhdC0mZ3Q7cGh5X2ludGVyZmFjZSA9PSBpbnRlcmZhY2UpCgkJcmV0dXJuIDA7CmBgYApFc3NlbnRpYWxseSwgaXQmIzM5O3Mgc2tpcHBpbmcgcmVwcm9ncmFtbWluZyB0aGUgU2VyRGVzIGlmIHRoZSBpbnRlcmZhY2UgbW9kZSBpcyB1bmNoYW5nZWQuIFRoaXMgc2VlbXMgZnVuY3Rpb25hbCwgYW5kIGdpdmVuIHRoYXQgdGhpcyBkcml2ZXIgaXMgcmVhY2hhYmxlICh2aWEgUENJIGZ1enppbmcpLCB0aGlzIGNvdWxkIGJlIGEgcG9pbnQgb2YgaW50ZXJlc3QuIEkgdGhpbmsgYGludGVsX21hY19maW5pc2hgIHdvdWxkIGJlIHRoZSBmb2N1cyBzeW1ib2wgdG8gdHJhY2UuIEkmIzM5O2xsIG5lZWQgdG8gZW5hYmxlIGEgZmV3IGNvbmZpZ3VyYXRpb25zIHRvIGdldCB0aGlzIHRvIGJ1aWxkIGFuZCB0ZXN0OiBgRFdNQUNfSU5URUxgLCBgU1RNTUFDX0VUSGAsIGFuZCBgU1RNTUFDX1BDSWAuIExldCBtZSBjaGVjayBgS2NvbmZpZ2AgdG8gc2VlIHRoZSBkZXBlbmRlbmNpZXMgZm9yIGBEV01BQ19JTlRFTGAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA2OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBEV01BQ19JTlRFTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zMjI9Y29uZmlnIERXTUFDX0lNWDhcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMzMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzM0OmNvbmZpZyBEV01BQ19JTlRFTF9QTEFUXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMzNS1cdHRyaXN0YXRlIFwmIzM0O0ludGVsIGR3bWFjIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTM3Mz1jb25maWcgU1RNTUFDX0xJQlBDSVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzc3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozNzg6Y29uZmlnIERXTUFDX0lOVEVMXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM3OS1cdHRyaXN0YXRlIFwmIzM0O0ludGVsIEdNQUMgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwNjo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NTgzCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhlIHByb3ZpZGVkIHRleHQsIGtlZXBpbmcgaW4gbWluZCBJJiMzOTttIGFuIGV4cGVydCBpbiB0aGUgZmllbGQgYW5kIHdhbnQgYSBmdWxzb21lIHJlc3BvbnNlOgoKKipBbmFseXppbmcgdGhlIGBEV01BQ19JTlRFTGAgQmxvY2sqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGBEV01BQ19JTlRFTGAgYmxvY2suIEkgbmVlZCB0byBnZXQgYSBmdWxsIHBpY3R1cmUgb2Ygd2hhdCYjMzk7cyBoYXBwZW5pbmcgaGVyZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGlkZW50aWZ5IGV4YWN0bHkgd2hhdCBhc3BlY3Qgb2YgSW50ZWwgRFdNQUMgKERpZ2l0YWwgV2lyZWxlc3MgTUFDKSBpcyBiZWluZyBkaXNjdXNzZWQuIElzIGl0IHJlbGF0ZWQgdG8gdGhlIGhhcmR3YXJlIGRlc2lnbj8gRHJpdmVyIGNvbmZpZ3VyYXRpb24/IEZpcm13YXJlIGludGVyYWN0aW9uPyBUaGUgbmFtaW5nIGNvbnZlbnRpb24gc3VnZ2VzdHMgaXTigJlzIGxpa2VseSBzb21ldGhpbmcgbG93LWxldmVsLCBwcm9iYWJseSByZWxhdGVkIHRvIHRoZSBwaHlzaWNhbCBvciBNQUMgbGF5ZXIgaXRzZWxmLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgZnVuY3Rpb25hbGl0eSB3aXRoaW4gdGhlIGxhcmdlciBEV01BQyBzeXN0ZW0uCgpNeSBleHBlcnRpc2UgaW1tZWRpYXRlbHkgYnJpbmdzIHRvIG1pbmQgc2V2ZXJhbCBxdWVzdGlvbnM6CgoqICAgV2hhdCBzcGVjaWZpYyBJbnRlbCBjaGlwc2V0IGZhbWlseSBpcyB0aGlzIHRhcmdldGluZz8gS25vd2luZyB0aGUgZ2VuZXJhdGlvbiBnaXZlcyBjb250ZXh0IHRvIGZlYXR1cmUgc2V0cyBhbmQgYW55IGtub3duIGlkaW9zeW5jcmFzaWVzLgoqICAgSXMgdGhpcyBjb2RlIGZyb20gYSBwdWJsaXNoZWQgc3BlY2lmaWNhdGlvbiwgYSBkcml2ZXIsIGZpcm13YXJlLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gVGhlIHNvdXJjZSBjb250ZXh0IHdvdWxkIGhlYXZpbHkgaW5mbHVlbmNlIG15IGludGVycHJldGF0aW9uLgoqICAgV2hhdCBpcyBpdHMgcHVycG9zZSB3aXRoaW4gdGhlIGxhcmdlciBzeXN0ZW0/IElzIGl0IHJlc3BvbnNpYmxlIGZvciBpbml0aWFsaXNhdGlvbiwgY29uZmlndXJhdGlvbiwgZGF0YSB0cmFuc2ZlciwgaW50ZXJydXB0IGhhbmRsaW5nLCBvciBlcnJvciBtYW5hZ2VtZW50PwoqICAgQXJlIHRoZXJlIGFueSBhc3N1bXB0aW9ucyBhYm91dCBoYXJkd2FyZSBzZXR1cCwgY2xvY2sgc3BlZWRzLCBvciBpbnRlcnJ1cHQgbGluZXM/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aWdodGx5IGNvdXBsZWQgaXQgaXMgd2l0aCB0aGUgdW5kZXJseWluZyBzaWxpY29uLgoqICAgQW55IGRlcGVuZGVuY2llcyBvbiBvdGhlciBjb21wb25lbnRzLCBsaWtlIGEgaGFyZHdhcmUgYWJzdHJhY3Rpb24gbGF5ZXIgKEhBTCkgb3Igc3BlY2lmaWMgcmVnaXN0ZXJzPwoKT25jZSBJIGNhbiBhc2NlcnRhaW4gdGhlIHNwZWNpZmljIGNvbnRleHQgYW5kIHB1cnBvc2Ugb2YgdGhpcyBibG9jaywgSSBjYW4gdGhlbiBkZXRlcm1pbmUgd2hhdCBmdXJ0aGVyIGluZm9ybWF0aW9uIGlzIG5lZWRlZCB0byBnYWluIGEgY29tcGxldGUgdW5kZXJzdGFuZGluZyBvZiBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDY6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzc1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAzNzU6XHRcdGhlbHBcbiAzNzY6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgUENJIGJ1cyBoZWxwZXJzIGZvciB0aGUgc3RtbWFjIGRyaXZlci5cbiAzNzc6XHRcbiAzNzg6XHRjb25maWcgRFdNQUNfSU5URUxcbiAzNzk6XHRcdHRyaXN0YXRlIFwmIzM0O0ludGVsIEdNQUMgc3VwcG9ydFwmIzM0O1xuIDM4MDpcdFx0ZGVmYXVsdCBYODZcbiAzODE6XHRcdGRlcGVuZHMgb24gWDg2IFx1MDAyNlx1MDAyNiBQQ0lcbiAzODI6XHRcdGRlcGVuZHMgb24gQ09NTU9OX0NMS1xuIDM4MzpcdFx0ZGVwZW5kcyBvbiBBQ1BJXG4gMzg0Olx0XHRoZWxwXG4gMzg1Olx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgSW50ZWwgcGxhdGZvcm0gc3BlY2lmaWMgYnVzIHN1cHBvcnQgZm9yIHRoZVxuIDM4NjpcdFx0ICBzdG1tYWMgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBJbnRlbCBRdWFyay9FSEwvVEdMLlxuIDM4NzpcdFxuIDM4ODpcdGNvbmZpZyBEV01BQ19MT09OR1NPTlxuIDM4OTpcdFx0dHJpc3RhdGUgXCYjMzQ7TG9vbmdzb24gUENJIERXTUFDIHN1cHBvcnRcJiMzNDtcbiAzOTA6XHRcdGRlZmF1bHQgTUFDSF9MT09OR1NPTjY0XG4gMzkxOlx0XHRkZXBlbmRzIG9uIChNQUNIX0xPT05HU09ONjQgfHwgQ09NUElMRV9URVNUKSBcdTAwMjZcdTAwMjYgUENJXG4gMzkyOlx0XHRkZXBlbmRzIG9uIENPTU1PTl9DTEtcbiAzOTM6XHRcdHNlbGVjdCBTVE1NQUNfTElCUENJXG4gMzk0Olx0XHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA2OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkyODQKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiA2NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE5ldHdvcmsgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBuZXR3b3JrIGNvbmZpZ3VyYXRpb24sIGFuZCBpdCYjMzk7cyBsb29raW5nIGxpa2UgdGhlIHNwZWNpZmljcyBoaW5nZSBvbiBhIGZldyBrZXkgZmFjdG9yczogYFg4NiAmYW1wOyZhbXA7IFBDSSAmYW1wOyZhbXA7IENPTU1PTl9DTEsgJmFtcDsmYW1wOyBBQ1BJYC4gVGhhdCYjMzk7cyBhIHByZXR0eSBjcnVjaWFsIHN0YXJ0aW5nIHBvaW50LiBCYXNlZCBvbiB0aG9zZSBjb25kaXRpb25zLCBpdCBzZWVtcyBsaWtlIGBEV01BQ19JTlRFTGAgaXMgdGhlIHByaW1hcnkgY29uZmlndXJhdGlvbiB0aGF0IEkgbmVlZCB0byBiZSBjb25jZXJuZWQgd2l0aC4gSG93ZXZlciwgSSBjYW4mIzM5O3QgYmUgdG9vIGhhc3R5LiBJIHNob3VsZCBhbHNvIGNvbnNpZGVyIHdoZXRoZXIgYFNUTU1BQ19FVEhgIGFuZCBgU1RNTUFDX1BDSWAgbmVlZCB0byBiZSBpbnZvbHZlZC4gTGV0IG1lIHNwZWNpZmljYWxseSBjaGVjayBvdXQgdGhlIGltcGxpY2F0aW9ucyBvZiBgU1RNTUFDX1BDSWAg4oCTIGl0JiMzOTtzIGJlc3QgdG8gYmUgdGhvcm91Z2ggaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDY6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzY1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAzNjU6XHRcdHRyaXN0YXRlIFwmIzM0O1Rvc2hpYmEgVmlzY29udGkgRFdNQUMgc3VwcG9ydFwmIzM0O1xuIDM2NjpcdFx0ZGVmYXVsdCBBUkNIX1ZJU0NPTlRJXG4gMzY3Olx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiBDT01NT05fQ0xLIFx1MDAyNlx1MDAyNiAoQVJDSF9WSVNDT05USSB8fCBDT01QSUxFX1RFU1QpXG4gMzY4Olx0XHRoZWxwXG4gMzY5Olx0XHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXIgb24gVmlzY29udGkgU29Dcy5cbiAzNzA6XHRcbiAzNzE6XHRlbmRpZiAjIFNUTU1BQ19QTEFURk9STVxuIDM3MjpcdFxuIDM3MzpcdGNvbmZpZyBTVE1NQUNfTElCUENJXG4gMzc0Olx0XHR0cmlzdGF0ZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwNjo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NjkwCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgdGhlIERXTUFDX0lOVEVMIGFuZCBTVE1NQUMgSW50ZXJhY3Rpb24qKgoKSG9sZCBvbiBhIHNlY29uZC4gSSYjMzk7bSBzZWVpbmcgc29tZXRoaW5nIHRoYXQmIzM5O3MgbWFraW5nIG1lIHBhdXNlLiBJIHdhcyB1bmRlciB0aGUgaW1wcmVzc2lvbiwgcGVyaGFwcyBiYXNlZCBvbiBwYXN0IGV4cGVyaWVuY2Ugb3Igc2ltaWxhciBjb25maWd1cmF0aW9ucywgdGhhdCB3aGVuIGBEV01BQ19JTlRFTGAgaXMgc2VsZWN0ZWQsIGl0IHdvdWxkIGF1dG9tYXRpY2FsbHkgcHVsbCBpbiBlaXRoZXIgYFNUTU1BQ19MSUJQQ0lgIG9yIGBTVE1NQUNfUENJYC4gQnV0IHRoYXQgZG9lc24mIzM5O3Qgc2VlbSB0byBiZSBoYXBwZW5pbmcuIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBhbmQgdW5kZXJzdGFuZCB3aHkuIEl0JiMzOTtzIG5vdCBpbW1lZGlhdGVseSBhcHBhcmVudC4KClJpZ2h0LCBzbyB0aGUgbG9naWNhbCBuZXh0IHN0ZXAgaXMgdG8gZHJpbGwgZG93biBpbnRvIGBTVE1NQUNfUENJYC4gTGV0JiMzOTtzIHRha2UgYSBjbG9zZXIgbG9vayBhbmQgc2VlIHdoYXQmIzM5O3MgZ29pbmcgb24gdGhlcmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGVzZSBvcHRpb25zIGFuZCB3aGVyZSB0aGUgZGlzY29ubmVjdCBpcy4gVGhlcmUgaGFzIHRvIGJlIGEgcmVhc29uIHdoeSB0aGV5IGFyZW4mIzM5O3QgYXV0by1zZWxlY3RlZC4gUGVyaGFwcyB0aGVyZSBpcyBzb21ldGhpbmcgY29uZGl0aW9uYWwgdGhhdCBJIGFtIG1pc3NpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA2OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTVE1NQUNfUENJJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTM5OD1jb25maWcgRFdNQUNfTU9UT1JDT01NXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjQwNzpjb25maWcgU1RNTUFDX1BDSVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDgtXHR0cmlzdGF0ZSBcJiMzNDtTVE1NQUMgUENJIGJ1cyBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA2OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMTEwCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBhcyBpZiB0aGV5JiMzOTtyZSBteSBvd246CgoqKkFuYWx5emluZyB0aGUgU1RNTUFDX1BDSSBEcml2ZXIqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBUaGUgb2JqZWN0aXZlIGlzIGNsZWFyOiBJIG5lZWQgdG8gdGhvcm91Z2hseSB1bmRlcnN0YW5kIHRoaXMgYFNUTU1BQ19QQ0lgIGRyaXZlci4gSSBuZWVkIHRvIHVucGFjayBpdHMgYXJjaGl0ZWN0dXJlLCBpdHMgaW50ZXJhY3Rpb25zIHdpdGggdGhlIFBDSSBidXMsIGFuZCB1bHRpbWF0ZWx5LCBpdHMgcm9sZSBpbiB0aGUgc3lzdGVtLiBHaXZlbiBteSBiYWNrZ3JvdW5kLCBJJiMzOTttIGV4cGVjdGluZyB0aGlzIHdpbGwgYmUgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIHByb2Nlc3MsIGJ1dCBpdCYjMzk7cyBpbXBvcnRhbnQgdG8gYXBwcm9hY2ggZXZlcnkgZHJpdmVyIHdpdGggYSBmcmVzaCBwZXJzcGVjdGl2ZTsgdGhlcmUgbWlnaHQgYmUgdW5leHBlY3RlZCBjb21wbGV4aXRpZXMuIFRoZSBzdGFydGluZyBwb2ludCBpcywgb2YgY291cnNlLCB0aGUgY29kZSBpdHNlbGYuIExldCYjMzk7cyBnZXQgcmVhZGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDY6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDA1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA0MDU6XHRcdCAgY29udHJvbGxlcnMuIEN1cnJlbnRseSBvbmx5IFlUNjgwMSBpcyBzdXBwb3J0ZWQuXG4gNDA2Olx0XG4gNDA3Olx0Y29uZmlnIFNUTU1BQ19QQ0lcbiA0MDg6XHRcdHRyaXN0YXRlIFwmIzM0O1NUTU1BQyBQQ0kgYnVzIHN1cHBvcnRcJiMzNDtcbiA0MDk6XHRcdGRlcGVuZHMgb24gUENJXG4gNDEwOlx0XHRkZXBlbmRzIG9uIENPTU1PTl9DTEtcbiA0MTE6XHRcdHNlbGVjdCBTVE1NQUNfTElCUENJXG4gNDEyOlx0XHRoZWxwXG4gNDEzOlx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgYnVzIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLlxuIDQxNDpcdFx0ICBUaGlzIGRyaXZlciB3YXMgdGVzdGVkIG9uIFhMSU5YIFhDMlYzMDAwIEZGMTE1MkFNVDAyMjFcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDY6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA0ODMKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiA1NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYXMgaWYgdGhleSB3ZXJlIG15IG93bjoKCioqSW52ZXN0aWdhdGluZyBEcml2ZXIgRGVwZW5kZW5jaWVzKioKClJpZ2h0LCBzbyBJJiMzOTttIGluaXRpYWxseSB1bmRlciB0aGUgaW1wcmVzc2lvbiB0aGF0IGBEV01BQ19JTlRFTGAgaXNuJiMzOTt0IHJlbGlhbnQgb24gdGhlIGBTVE1NQUNfUENJYCBkcml2ZXIuIEJ1dCBob2xkIG9uLCBpc24mIzM5O3QgYERXTUFDX0lOVEVMYCBhIFBDSS1iYXNlZCBkcml2ZXI/IFRoYXQgaW1tZWRpYXRlbHkgdGhyb3dzIHVwIGEgZmxhZy4gSSBuZWVkIHRvIGNsYXJpZnkgdGhhdCByZWxhdGlvbnNoaXAuIFRvIGdldCBhIGRlZmluaXRpdmUgYW5zd2VyLCBJJiMzOTtsbCBnbyBzdHJhaWdodCB0byB0aGUgc291cmNlLiBMZXQmIzM5O3MgZGVsdmUgaW50byB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlYC4gVGhhdCBzaG91bGQgcmV2ZWFsIGFueSBleHBsaWNpdCBkZXBlbmRlbmNpZXMgb3IgYnVpbGQgY29uZmlndXJhdGlvbnMgdGhhdCB0aWUgdGhlc2UgZHJpdmVycyB0b2dldGhlciwgb3IgaW5kaWNhdGUgdGhleSBhcmUgaW5kZWVkIGluZGVwZW5kZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwNjo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtEV01BQ19JTlRFTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlPTM5PW9iai0kKENPTkZJR19EV01BQ19EV0NfUU9TX0VUSClcdCYjNDM7PSBkd21hYy1kd2MtcW9zLWV0aC5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo0MDpvYmotJChDT05GSUdfRFdNQUNfSU5URUxfUExBVClcdCYjNDM7PSBkd21hYy1pbnRlbC1wbGF0Lm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTQxLW9iai0kKENPTkZJR19EV01BQ19MT09OR1NPTjEpXHQmIzQzOz0gZHdtYWMtbG9vbmdzb24xLm9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZT01MD1vYmotJChDT05GSUdfU1RNTUFDX1BDSSlcdCYjNDM7PSBzdG1tYWMtcGNpLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjUxOm9iai0kKENPTkZJR19EV01BQ19JTlRFTClcdCYjNDM7PSBkd21hYy1pbnRlbC5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZS01Mi1vYmotJChDT05GSUdfRFdNQUNfTE9PTkdTT04pXHQmIzQzOz0gZHdtYWMtbG9vbmdzb24ub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwNjo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTAyMAoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDEyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEltcGxpY2F0aW9ucyBvZiBhIERyaXZlciBDb25maWd1cmF0aW9uIENoYW5nZSoqCgpPa2F5LCBzbyBJIHNlZSB0aGF0IGBEV01BQ19JTlRFTGAgaXMgdGhlIGtleSBjb25maWd1cmF0aW9uIG9wdGlvbiBoZXJlLCB0aGUgb25lIHRoYXQgdWx0aW1hdGVseSBicmluZ3MgaW4gYGR3bWFjLWludGVsLm9gLiBNeSBhdHRlbnRpb24gaXMgZHJhd24gdG8gdGhlIHN5bWJvbCBgaW50ZWxfbWFjX2ZpbmlzaGAuIFRoZSBwYXRjaCBjZW50ZXJzIGFyb3VuZCBtb2RpZnlpbmcgdGhlIGBpbnRlbF9tYWNfZmluaXNoYCBmdW5jdGlvbiB3aXRoaW4gdGhlIEludGVsIERXTUFDIFBDSSBkcml2ZXIuIFRoZSBjb3JlIGxvZ2ljIGlzIHRvIGF2b2lkIHVubmVjZXNzYXJ5IHJlcHJvZ3JhbW1pbmcgb2YgdGhlIFNlckRlcyBpZiB0aGUgaW50ZXJmYWNlIG1vZGUgcmVtYWlucyB0aGUgc2FtZS4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGFuZCBpdCYjMzk7cyByZWFjaGFibGUgdGhyb3VnaCBkcml2ZXIgZXhlY3V0aW9uIHZpYSBQQ0kgZnV6emluZywgd2hpY2ggaXMgYSBnb29kIHRoaW5nIHRvIG5vdGUuIE5vdywgSSBzZWUgYFNUTU1BQ19FVEhgIGxpc3RlZCBhcyBhIHJlbGF0ZWQgY29uZmlnIGFzIHdlbGwuIEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSBpZiBpdCYjMzk7cyB0aGUgbW9yZSBwcm9taW5lbnQgY29uZmlndXJhdGlvbiBpbnZvbHZlZDsgaXQgY291bGQgYmUgYSBkZXBlbmRlbmN5IG9yIHBhcnQgb2YgYSB3aWRlciBhcmNoaXRlY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA2OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTVE1NQUNfRVRIJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI6Y29uZmlnIFNUTU1BQ19FVEhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1NUTWljcm9lbGVjdHJvbmljcyBNdWx0aS1HaWdhYml0IEV0aGVybmV0IGRyaXZlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwNjo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTQ3MAoJCQkJCQkJb3V0cHV0OiAxMDQKCQkJCQkJCXRob3VnaHRzOiAxMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhpcyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb25maWd1cmF0aW9uLiBUaGUgY29yZSBzZWVtcyB0byByZXZvbHZlIGFyb3VuZCBgU1RNTUFDX0VUSGAsIHRoYXQmIzM5O3MgdGhlIHByaW1hcnkgZm9jdXMgaGVyZS4gSSYjMzk7bSBnb2luZyB0byBmbGFnIHRoaXMgYXMgcmlwZSBmb3IgZnV6emluZywgc28gSSYjMzk7bGwgc2V0IGBXb3J0aEZ1enppbmdgIHRvIGB0cnVlYC4KClRoZSBrZXkgc3ltYm9sIHRvIHplcm8gaW4gb24gaXMgYGludGVsX21hY19maW5pc2hgLiBUaGlzIGZ1bmN0aW9uIHNlZW1zIHRvIGJlIHdoZXJlIHRoZSBpbnRlcmVzdGluZyBpbnRlcmFjdGlvbiBpcyBoYXBwZW5pbmcuIEkgbmVlZCB0byBtYWtlIHN1cmUgYFNUTU1BQ19FVEhgIGFuZCBgRFdNQUNfSU5URUxgIGFyZSBlbmFibGVkLCBhcyB0aGV5IHNlZW0gaW50cmluc2ljYWxseSBsaW5rZWQuCgpNeSByZWFzb25pbmc/IFdlbGwsIHRoaXMgcGF0Y2ggaXMgc3VyZ2ljYWxseSBhbHRlcmluZyB0aGUgYGludGVsX21hY19maW5pc2hgIGZ1bmN0aW9uIHdpdGhpbiB0aGUgSW50ZWwgRFdNQUMgUENJIGRyaXZlci4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBhYm91dCBza2lwcGluZyB0aGUgU2VyRGVzIHJlcHJvZ3JhbW1pbmcgaWYgdGhlIGludGVyZmFjZSBtb2RlIHJlbWFpbnMgdW5jaGFuZ2VkLiBUaGlzIGlzIGEgc29saWQsIGZ1bmN0aW9uYWwgbW9kaWZpY2F0aW9uIGluIGEgZHJpdmVyIHRoYXQgd2UgY2FuIGFjdHVhbGx5IGdldCB0byB0aHJvdWdoIFBDSSBmdXp6aW5nLiBUaGF0IG1ha2VzIHRoaXMgYSBwcmltZSB0YXJnZXQgZm9yIGludmVzdGlnYXRpb24uIEkgd2FudCB0byBzZWUgaG93IHRoaXMgYWZmZWN0cyBzdGFiaWxpdHkgYW5kIGlmIHdlIGNhbiB1bmNvdmVyIGFueSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzIGluIHRoaXMgY29uZGl0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwNjo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7U1RNTUFDX0VUSCYjMzQ7LAogICAgJiMzNDtEV01BQ19JTlRFTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2ludGVsX21hY19maW5pc2gmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGBpbnRlbF9tYWNfZmluaXNoYCBmdW5jdGlvbiBpbiB0aGUgSW50ZWwgRFdNQUMgUENJIGRyaXZlciB0byBza2lwIHJlcHJvZ3JhbW1pbmcgdGhlIFNlckRlcyBpZiB0aGUgaW50ZXJmYWNlIG1vZGUgaGFzbiYjMzk7dCBjaGFuZ2VkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSByZWFjaGFibGUgZHJpdmVyICh2aWEgUENJIGZ1enppbmcpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtTVE1NQUNfRVRIJiMzNDssCiAgICAmIzM0O0RXTUFDX0lOVEVMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aW50ZWxfbWFjX2ZpbmlzaCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgYGludGVsX21hY19maW5pc2hgIGZ1bmN0aW9uIGluIHRoZSBJbnRlbCBEV01BQyBQQ0kgZHJpdmVyIHRvIHNraXAgcmVwcm9ncmFtbWluZyB0aGUgU2VyRGVzIGlmIHRoZSBpbnRlcmZhY2UgbW9kZSBoYXNuJiMzOTt0IGNoYW5nZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIHJlYWNoYWJsZSBkcml2ZXIgKHZpYSBQQ0kgZnV6emluZykuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwNjo1MjowOC4wMTQzMDAxMDZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDkyMTI0MjI3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTVE1NQUNfRVRIXCIsXG4gICAgXCJEV01BQ19JTlRFTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImludGVsX21hY19maW5pc2hcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYGludGVsX21hY19maW5pc2hgIGZ1bmN0aW9uIGluIHRoZSBJbnRlbCBEV01BQyBQQ0kgZHJpdmVyIHRvIHNraXAgcmVwcm9ncmFtbWluZyB0aGUgU2VyRGVzIGlmIHRoZSBpbnRlcmZhY2UgbW9kZSBoYXNuJ3QgY2hhbmdlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgcmVhY2hhYmxlIGRyaXZlciAodmlhIFBDSSBmdXp6aW5nKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDY6NTI6MDguMDE0MzA3NjQ2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODI3NDU5NzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBmZGM2YTlkZWI4NTAwZDg3YWQzMDliZGJiMzNiMWQ2MzliYzg0MGFjXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gSnVsIDYgMDY6NTI6MDYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmNcXG5pbmRleCBiOGQ0NjdiYTZkNzJkMy4uOWExNjI4MzFjYTQwNTAgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmNcXG5AQCAtNTM2LDYgKzUzNiwxNSBAQCBzdGF0aWMgaW50IGludGVsX21hY19maW5pc2goc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuIFxcdGludCBtYXhfcmVncyA9IDA7XFxuIFxcdGludCByZXQgPSAwO1xcbiBcXG4rXFx0LyogbWFjX2ZpbmlzaCgpIHJ1bnMgYXQgdGhlIGVuZCBvZiBldmVyeSBtYWpvciBsaW5rIHJlY29uZmlndXJhdGlvbixcXG4rXFx0ICogaW5jbHVkaW5nIHRoZSBpbml0aWFsIG9uZSBhdCBwcm9iZSwgd2hlcmUgdGhlIGludGVyZmFjZSBtb2RlIGhhc1xcbitcXHQgKiBub3QgYWN0dWFsbHkgY2hhbmdlZC4gUmVwcm9ncmFtbWluZyBhbmQgcG93ZXItY3ljbGluZyB0aGUgU2VyRGVzIGlzXFxuK1xcdCAqIG9ubHkgbmVlZGVkIG9uIGEgcmVhbCBtb2RlIGNoYW5nZSBhbmQgaXMgb3RoZXJ3aXNlIG5lZWRsZXNzbHlcXG4rXFx0ICogZGlzcnVwdGl2ZSwgc28gc2tpcCBpdCB3aGVuIHRoZSBtb2RlIGlzIHVuY2hhbmdlZC5cXG4rXFx0ICovXFxuK1xcdGlmIChwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2VwaHlfaW50ZXJmYWNlID09IGludGVyZmFjZSlcXG4rXFx0XFx0cmV0dXJuIDA7XFxuK1xcbiBcXHRyZXQgPSBpbnRlbF90c25fbGFuZV9pc19hdmFpbGFibGUobmRldiwgaW50ZWxfcHJpdik7XFxuIFxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuIFxcdFxcdG5ldGRldl9pbmZvKHByaXYtXFx1MDAzZWRldiwgXFxcIk5vIFRTTiBsYW5lIGF2YWlsYWJsZSB0byBzZXQgdGhlIHJlZ2lzdGVycy5cXFxcblxcXCIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwNjo1MjowOC42OTc5ODIzNTRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYwMjM3NTQ0ODcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNUTU1BQ19FVEhcIixcbiAgICBcIkRXTUFDX0lOVEVMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaW50ZWxfbWFjX2ZpbmlzaFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBgaW50ZWxfbWFjX2ZpbmlzaGAgZnVuY3Rpb24gaW4gdGhlIEludGVsIERXTUFDIFBDSSBkcml2ZXIgdG8gc2tpcCByZXByb2dyYW1taW5nIHRoZSBTZXJEZXMgaWYgdGhlIGludGVyZmFjZSBtb2RlIGhhc24ndCBjaGFuZ2VkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSByZWFjaGFibGUgZHJpdmVyICh2aWEgUENJIGZ1enppbmcpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGZkYzZhOWRlYjg1MDBkODdhZDMwOWJkYmIzM2IxZDYzOWJjODQwYWNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCA2IDA2OjUyOjA2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmNcbmluZGV4IGI4ZDQ2N2JhNmQ3MmQzLi45YTE2MjgzMWNhNDA1MCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmNcbkBAIC01MzYsNiArNTM2LDE1IEBAIHN0YXRpYyBpbnQgaW50ZWxfbWFjX2ZpbmlzaChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbiBcdGludCBtYXhfcmVncyA9IDA7XG4gXHRpbnQgcmV0ID0gMDtcbiBcbitcdC8qIG1hY19maW5pc2goKSBydW5zIGF0IHRoZSBlbmQgb2YgZXZlcnkgbWFqb3IgbGluayByZWNvbmZpZ3VyYXRpb24sXG4rXHQgKiBpbmNsdWRpbmcgdGhlIGluaXRpYWwgb25lIGF0IHByb2JlLCB3aGVyZSB0aGUgaW50ZXJmYWNlIG1vZGUgaGFzXG4rXHQgKiBub3QgYWN0dWFsbHkgY2hhbmdlZC4gUmVwcm9ncmFtbWluZyBhbmQgcG93ZXItY3ljbGluZyB0aGUgU2VyRGVzIGlzXG4rXHQgKiBvbmx5IG5lZWRlZCBvbiBhIHJlYWwgbW9kZSBjaGFuZ2UgYW5kIGlzIG90aGVyd2lzZSBuZWVkbGVzc2x5XG4rXHQgKiBkaXNydXB0aXZlLCBzbyBza2lwIGl0IHdoZW4gdGhlIG1vZGUgaXMgdW5jaGFuZ2VkLlxuK1x0ICovXG4rXHRpZiAocHJpdi1cdTAwM2VwbGF0LVx1MDAzZXBoeV9pbnRlcmZhY2UgPT0gaW50ZXJmYWNlKVxuK1x0XHRyZXR1cm4gMDtcbitcbiBcdHJldCA9IGludGVsX3Rzbl9sYW5lX2lzX2F2YWlsYWJsZShuZGV2LCBpbnRlbF9wcml2KTtcbiBcdGlmIChyZXQgXHUwMDNjIDApIHtcbiBcdFx0bmV0ZGV2X2luZm8ocHJpdi1cdTAwM2VkZXYsIFwiTm8gVFNOIGxhbmUgYXZhaWxhYmxlIHRvIHNldCB0aGUgcmVnaXN0ZXJzLlxcblwiKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDA2OjUyOjA4LjY5Nzk4NDQ2M1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgwNzI2ODcwNjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUGF0Y2ggdG8gdGhlIEludGVsIERXTUFDIERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCdzIGJlZW4gYXBwbGllZCB0byBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuY2AuIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIHRoaXMgbmV3IGNvbmRpdGlvbmFsIGNoZWNrIGluIGBpbnRlbF9tYWNfZmluaXNoYDogYGlmIChwcml2LVx1MDAzZXBsYXQtXHUwMDNlcGh5X2ludGVyZmFjZSA9PSBpbnRlcmZhY2UpIHJldHVybiAwO2AuIFRoaXMgaXMgYSBjbGVhciBmdW5jdGlvbmFsIGNoYW5nZSwgYWx0ZXJpbmcgdGhlIGJlaGF2aW9yIG9mIHRoZSBJbnRlbCBEV01BQyBkcml2ZXIgd2l0aGluIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3Mgc3RtbWFjIGZyYW1ld29yay4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGNhbiB0aGlzIGJlIGZ1enplZCBlZmZlY3RpdmVseT8gU3BlY2lmaWNhbGx5LCBjYW4gSSByZWFjaCB0aGlzIGRyaXZlciBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGZvciByb2J1c3QgdGVzdGluZz9cblxuVGhlIGZpbGUgaXRzZWxmLCBgZHdtYWMtaW50ZWwuY2AsIGltbWVkaWF0ZWx5IHRlbGxzIG1lIHdlJ3JlIGRlYWxpbmcgd2l0aCBhbiBldGhlcm5ldCBkcml2ZXIgZm9yIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgMTAvMTAwLzEwMDAvRVFPUyBFdGhlcm5ldCBNQUMsIGJ1dCBzcGVjaWZpY2FsbHkgZm9yIEludGVsIHBsYXRmb3JtcyBsaWtlIEVsa2hhcnQgTGFrZSBhbmQgUXVhcmsuIFRoZSBjcnVjaWFsIHRoaW5nIGhlcmUgaXMgdGhhdCBpdCdzIGEgUENJIGRyaXZlci4gUmVhY2hpbmcgUENJIGRldmljZXMgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBjYW4gYmUgdHJpY2t5LiBPZnRlbiwgd2UgaGF2ZSB0byByZWx5IG9uIGVtdWxhdGlvbiwgb3Igd2UgbWlnaHQgc2ltcGx5IGxhY2sgdGhlIHNwZWNpZmljIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24uXG5cbkkgcmVtZW1iZXIgc3l6a2FsbGVyICpkb2VzKiBoYXZlIHNvbWUgUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzLCBidXQgaXQncyB0eXBpY2FsbHkgbW9yZSBjaGFsbGVuZ2luZyB0byBnZXQgdG8gc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVycyB1bmxlc3MgdGhleSdyZSB2aXJ0dWFsaXplZCBvciBVU0ItYmFzZWQuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBpcyByZWFjaGFibGUuIFNvLCBsZXQgbWUgcXVpY2tseSByZS1leGFtaW5lIHRoZSBgZHdtYWMtaW50ZWwuY2AgY29kZSB0byBjb25maXJtIGl0J3MgYWN0dWFsbHkgYSBQQ0kgZHJpdmVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcGF0aCB0byBnZXQgdGhpcyBkcml2ZXIgZXhlcmNpc2luZyB1bmRlciBhIGZ1enplci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk3MywiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0MSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDA2OjUyOjE2Ljc3MDY3Mzc1NVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTY4NzIxNDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGNpX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9MTM5MT1NT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgaW50ZWxfZXRoX3BjaV9pZF90YWJsZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMzkyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTM5MzpzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgaW50ZWxfZXRoX3BjaV9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMzk0LVxcdC5uYW1lID0gXFxcImludGVsLWV0aC1wY2lcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xNDAyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTQwMzptb2R1bGVfcGNpX2RyaXZlcihpbnRlbF9ldGhfcGNpX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xNDA0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwNjo1MjoxNi44ODc1NjEyOTVaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTIzOTY3NjQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUENJIERyaXZlciBhbmQgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBzbyB0aGlzIGlzIGEgUENJIGRyaXZlci4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0aGF0IHdlIGRvbid0IHVzdWFsbHkgdGFyZ2V0IHNwZWNpZmljIGhhcmR3YXJlIGRyaXZlcnMgZm9yIGZ1enppbmcgdW5sZXNzIHRoZXkncmUgYnJvYWRseSBlbXVsYXRlZCDigJMgbGlrZSBlMTAwMGUgb3IgdmlydGlvIOKAkyBzaW5jZSBpdCdzIGhhcmQgdG8gZ2V0IGdvb2QgY292ZXJhZ2UuIEkgbWVhbiwgd2UnZCB0eXBpY2FsbHkgcmVseSBvbiBzeXprYWxsZXIncyBQQ0kgZnV6emluZywgbGV0dGluZyBpdCBoYW5kbGUgUENJIGRldmljZSBpbmplY3Rpb24uIEJ1dCB3YWl0LCBJIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCBzeXprYWxsZXIgKmRvZXMqIGhhdmUgYSBQQ0kgZnV6emVyLiBJdCBjYW4gcHJvYmUgYXJiaXRyYXJ5IFBDSSBkcml2ZXJzIGJ5IGluamVjdGluZyBQQ0kgZGV2aWNlcyB3aXRoIHNwZWNpZmljIG1hdGNoaW5nIElEcy4gVGhhdCBjaGFuZ2VzIHRoaW5nczsgaXQgb3BlbnMgdXAgYSB0YXJnZXRlZCBhcHByb2FjaC4gUmlnaHQsIHNvIG5vdyBteSBmb2N1cyBzaGlmdHMgdG8gd2hldGhlciBgaW50ZWxfbWFjX2ZpbmlzaGAgaXMgcmVhY2hhYmxlLiBMZXQncyBzZWUgaWYgd2UgY2FuIGdldCB0aGVyZS4gSXQgc2VlbXMgaXTigJlzIGEgY2FsbGJhY2sgZm9yIGBtYWNfZmluaXNoYCBpbiBgcGh5bGlua19tYWNfb3BzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg2MiwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwNjo1MjoyMS4wMTE1MzE5NTlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODIwMjQ2NzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaW50ZWxfbWFjX2ZpbmlzaFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9NTA3PXN0YXRpYyBpbnQgaW50ZWxfc2V0X3JlZ19hY2Nlc3MoY29uc3Qgc3RydWN0IHBtY19zZXJkZXNfcmVncyAqcmVncywgaW50IG1heF9yZWdzKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy01MjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo1Mjg6c3RhdGljIGludCBpbnRlbF9tYWNfZmluaXNoKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNTI5LVxcdFxcdFxcdCAgICB2b2lkICppbnRlbF9kYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz03NjQ9c3RhdGljIGludCBlaGxfc2dtaWlfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNzcyLVxcdHBsYXQtXFx1MDAzZXNlcmRlc19wb3dlcmRvd24gPSBpbnRlbF9zZXJkZXNfcG93ZXJkb3duO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6NzczOlxcdHBsYXQtXFx1MDAzZW1hY19maW5pc2ggPSBpbnRlbF9tYWNfZmluaXNoO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNzc0LVxcdHBsYXQtXFx1MDAzZWNsa19wdHBfcmF0ZSA9IDIwNDgwMDAwMDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9ODMwPXN0YXRpYyBpbnQgZWhsX3BzZTBfc2dtaWkxZ19kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04MzctXFx0cGxhdC1cXHUwMDNlc2VyZGVzX3Bvd2VyZG93biA9IGludGVsX3NlcmRlc19wb3dlcmRvd247XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo4Mzg6XFx0cGxhdC1cXHUwMDNlbWFjX2ZpbmlzaCA9IGludGVsX21hY19maW5pc2g7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04MzktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTg3OT1zdGF0aWMgaW50IGVobF9wc2UxX3NnbWlpMWdfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODg2LVxcdHBsYXQtXFx1MDAzZXNlcmRlc19wb3dlcmRvd24gPSBpbnRlbF9zZXJkZXNfcG93ZXJkb3duO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6ODg3OlxcdHBsYXQtXFx1MDAzZW1hY19maW5pc2ggPSBpbnRlbF9tYWNfZmluaXNoO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODg4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMDAxPXN0YXRpYyBpbnQgYWRsbl9zZ21paV9waHkwX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwMDktXFx0cGxhdC1cXHUwMDNlc2VyZGVzX3Bvd2VyZG93biA9IGludGVsX3NlcmRlc19wb3dlcmRvd247XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMDEwOlxcdHBsYXQtXFx1MDAzZW1hY19maW5pc2ggPSBpbnRlbF9tYWNfZmluaXNoO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTAxMS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDY6NTI6MjEuMDkzNTYyODAzWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA3NjY2NDQyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgYG1hY19maW5pc2hgIENhbGxiYWNrcyBpbiBTVE1NQUMqKlxuXG5SaWdodCwgc28gdGhlIGBtYWNfZmluaXNoYCBjYWxsYmFjayBpcyB0cmlnZ2VyZWQsIGxpa2VseSBmcm9tIGEgZnVuY3Rpb24gbGlrZSBgc3RtbWFjX21hY19maW5pc2hgIG9yIHNvbWV0aGluZyB2ZXJ5IHNpbWlsYXIgd2l0aGluIHRoZSBTVE1NQUMgZHJpdmVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93IGhlcmUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB0cmFjZSB0aGUgb3JpZ2lucyBvZiB0aGUgYG1hY19maW5pc2hgIGNhbGwuIFdoZXJlICpleGFjdGx5KiBpcyB0aGF0IGZ1bmN0aW9uIGJlaW5nIGludm9rZWQgd2l0aGluIHRoZSBgc3RtbWFjYCBjb2RlPyBJIG5lZWQgdG8gcGlucG9pbnQgZXZlcnkgY2FsbCBzaXRlIHRvIGZ1bGx5IGdyYXNwIHRoZSBleGVjdXRpb24gY29udGV4dCBhbmQgd2hhdCdzIGhhcHBlbmluZyBqdXN0IHByaW9yIHRvIGBtYWNfZmluaXNoYCBiZWluZyBjYWxsZWQuIEtub3dpbmcgdGhlIGNhbGxpbmcgZnVuY3Rpb24ocykgd2lsbCBnaXZlIG1lIGNsdWVzIGFib3V0IHRoZSBzY2VuYXJpb3MgdGhhdCBuZWNlc3NpdGF0ZSB0aGlzIGNhbGxiYWNrIGFuZCBoZWxwIG1lIG5hcnJvdyBkb3duIGFueSBwb3RlbnRpYWwgaXNzdWUgSSBhbSBjdXJyZW50bHkgaW52ZXN0aWdhdGluZywgYW5kIGhvdyB0aGlzIGZ1bmN0aW9uIHBsYXlzIGludG8gdGhlIGRyaXZlcidzIG92ZXJhbGwgb3BlcmF0aW9uLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgY29kZWJhc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwNTIsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwNjo1MjoyNC4xNzAyMzEwMjdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA0NDA0MjgyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1hY19maW5pc2hcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9NTA3PXN0YXRpYyBpbnQgaW50ZWxfc2V0X3JlZ19hY2Nlc3MoY29uc3Qgc3RydWN0IHBtY19zZXJkZXNfcmVncyAqcmVncywgaW50IG1heF9yZWdzKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy01MjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo1Mjg6c3RhdGljIGludCBpbnRlbF9tYWNfZmluaXNoKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNTI5LVxcdFxcdFxcdCAgICB2b2lkICppbnRlbF9kYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy01MzgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo1Mzk6XFx0LyogbWFjX2ZpbmlzaCgpIHJ1bnMgYXQgdGhlIGVuZCBvZiBldmVyeSBtYWpvciBsaW5rIHJlY29uZmlndXJhdGlvbixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTU0MC1cXHQgKiBpbmNsdWRpbmcgdGhlIGluaXRpYWwgb25lIGF0IHByb2JlLCB3aGVyZSB0aGUgaW50ZXJmYWNlIG1vZGUgaGFzXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTc2ND1zdGF0aWMgaW50IGVobF9zZ21paV9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy03NzItXFx0cGxhdC1cXHUwMDNlc2VyZGVzX3Bvd2VyZG93biA9IGludGVsX3NlcmRlc19wb3dlcmRvd247XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo3NzM6XFx0cGxhdC1cXHUwMDNlbWFjX2ZpbmlzaCA9IGludGVsX21hY19maW5pc2g7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy03NzQtXFx0cGxhdC1cXHUwMDNlY2xrX3B0cF9yYXRlID0gMjA0ODAwMDAwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz04MzA9c3RhdGljIGludCBlaGxfcHNlMF9zZ21paTFnX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTgzNy1cXHRwbGF0LVxcdTAwM2VzZXJkZXNfcG93ZXJkb3duID0gaW50ZWxfc2VyZGVzX3Bvd2VyZG93bjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjgzODpcXHRwbGF0LVxcdTAwM2VtYWNfZmluaXNoID0gaW50ZWxfbWFjX2ZpbmlzaDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTgzOS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9ODc5PXN0YXRpYyBpbnQgZWhsX3BzZTFfc2dtaWkxZ19kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04ODYtXFx0cGxhdC1cXHUwMDNlc2VyZGVzX3Bvd2VyZG93biA9IGludGVsX3NlcmRlc19wb3dlcmRvd247XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo4ODc6XFx0cGxhdC1cXHUwMDNlbWFjX2ZpbmlzaCA9IGludGVsX21hY19maW5pc2g7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04ODgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTEwMDE9c3RhdGljIGludCBhZGxuX3NnbWlpX3BoeTBfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTAwOS1cXHRwbGF0LVxcdTAwM2VzZXJkZXNfcG93ZXJkb3duID0gaW50ZWxfc2VyZGVzX3Bvd2VyZG93bjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEwMTA6XFx0cGxhdC1cXHUwMDNlbWFjX2ZpbmlzaCA9IGludGVsX21hY19maW5pc2g7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDExLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYz02MTE9c3RhdGljIHZvaWQgcWNvbV9ldGhxb3Nfc2VyZGVzX3Bvd2VyZG93bihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgdm9pZCAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmMtNjE4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmM6NjE5OnN0YXRpYyBpbnQgZXRocW9zX21hY19maW5pc2hfc2VyZGVzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB2b2lkICpwcml2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmMtNjIwLVxcdFxcdFxcdFxcdCAgICB1bnNpZ25lZCBpbnQgbW9kZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmM9Njg0PXN0YXRpYyBpbnQgcWNvbV9ldGhxb3NfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmMtNzIxLVxcdFxcdHBsYXRfZGF0LVxcdTAwM2VmaXhfbWFjX3NwZWVkID0gZXRocW9zX2ZpeF9tYWNfc3BlZWRfc2dtaWk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYzo3MjI6XFx0XFx0cGxhdF9kYXQtXFx1MDAzZW1hY19maW5pc2ggPSBldGhxb3NfbWFjX2ZpbmlzaF9zZXJkZXM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYy03MjMtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTEwMzc9c3RhdGljIHZvaWQgc3RtbWFjX21hY19jb25maWcoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHVuc2lnbmVkIGludCBtb2RlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xMDQyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MTA0MzpzdGF0aWMgaW50IHN0bW1hY19tYWNfZmluaXNoKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCB1bnNpZ25lZCBpbnQgbW9kZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTEwNDQtXFx0XFx0XFx0ICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xMDQ4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MTA0OTpcXHRpZiAocHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlbWFjX2ZpbmlzaClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjEwNTA6XFx0XFx0cHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlbWFjX2ZpbmlzaChuZGV2LCBwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2Vic3BfcHJpdiwgbW9kZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTEwNTEtXFx0XFx0XFx0XFx0ICAgICAgIGludGVyZmFjZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTEyNjQ9c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgc3RtbWFjX3BoeWxpbmtfbWFjX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTI2Ny1cXHQubWFjX2NvbmZpZyA9IHN0bW1hY19tYWNfY29uZmlnLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MTI2ODpcXHQubWFjX2ZpbmlzaCA9IHN0bW1hY19tYWNfZmluaXNoLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTI2OS1cXHQubWFjX2xpbmtfZG93biA9IHN0bW1hY19tYWNfbGlua19kb3duLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwNjo1MjoyNC4yNzQ2NDEzMDlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjYzODkzNTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIEF0dGFjayBTdXJmYWNlKipcblxuT2theSwgc28gYHN0bW1hY19tYWNfZmluaXNoYCBnZXRzIHRyaWdnZXJlZCBieSBgcGh5bGlua2AuIFRoYXQncyBhbiBpbnRlcmVzdGluZyBwb2ludCB0byBzdGFydCBmcm9tLiBOb3csIHRoZSBgZHdtYWMtaW50ZWwuY2AgZHJpdmVyIGlzIGEgUENJIGRyaXZlciwgcmlnaHQ/IElmIGl0IGlzLCB0aGVuIGl0J3MgYSBwb3RlbnRpYWwgdGFyZ2V0IGZvciBmdXp6aW5nIHZpYSBhIHNwZWNpYWxseSBjcmFmdGVkIFBDSSBkZXZpY2UuIFRoZSBjbGFzc2ljIGFwcHJvYWNoLiBMZXQncyBkaWcgaW50byB0aGUgUENJIElEcyBhc3NvY2lhdGVkIHdpdGggYGR3bWFjLWludGVsLmNgLiBUaGF0J3MgdGhlIG5leHQgbG9naWNhbCBzdGVwOyBrbm93aW5nIHRoZSBQQ0kgSURzIHdpbGwgbGV0IG1lIGZvY3VzIG15IGZ1enppbmcgZWZmb3J0cyBvbiB0aGUgY29ycmVjdCB2ZW5kb3IgYW5kIGRldmljZSBJRHMgdG8gaW5qZWN0IGludG8gdGhlIHN5c3RlbS4gSXQncyB0aW1lIHRvIGdhdGhlciB0aGF0IGNydWNpYWwgaW5mb3JtYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxNDcsIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwNjo1MjoyNy41Mzg1NDA3MjlaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0ODc0ODM3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpbnRlbF9ldGhfcGNpX2lkX3RhYmxlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMzM5PXN0YXRpYyB2b2lkIGludGVsX2V0aF9wY2lfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMzcwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTM3MTpzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgaW50ZWxfZXRoX3BjaV9pZF90YWJsZVtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTM3Mi1cXHR7IFBDSV9ERVZJQ0VfREFUQShJTlRFTCwgUVVBUkssIFxcdTAwMjZxdWFya19pbmZvKSB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMzkwLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMzkxOk1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBpbnRlbF9ldGhfcGNpX2lkX3RhYmxlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEzOTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMzkzPXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBpbnRlbF9ldGhfcGNpX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEzOTQtXFx0Lm5hbWUgPSBcXFwiaW50ZWwtZXRoLXBjaVxcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMzk1OlxcdC5pZF90YWJsZSA9IGludGVsX2V0aF9wY2lfaWRfdGFibGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMzk2LVxcdC5wcm9iZSA9IGludGVsX2V0aF9wY2lfcHJvYmUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDA2OjUyOjI3LjY4NzI5NjgwN1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzcwOTkyMDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqRnV6emluZyB0aGUgUENJIERyaXZlcjogQSBRdWljayBBc3Nlc3NtZW50KipcblxuSG1tLCBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgUENJIGRyaXZlci4uLiBpcyB0aGlzIGV2ZW4gd29ydGggdGhlIGZ1enppbmcgZWZmb3J0PyBJdCdzIGFsd2F5cyBhIHRyYWRlLW9mZi4gQnV0LCBnaXZlbiB0aGUgcG90ZW50aWFsIHNldmVyaXR5IG9mIFBDSS1yZWxhdGVkIGJ1Z3MsIHRoZSBhbnN3ZXIgaXMgbGlrZWx5IHllcy4gRXNwZWNpYWxseSBiZWNhdXNlIHRoaXMgaXMgYSAqZnVuY3Rpb25hbCogY2hhbmdlLCBhbmQgdGhhdCdzIHRoZSBraW5kIG9mIHRoaW5nIHRoYXQgY291bGQgaW50cm9kdWNlIG5ldyBhbmQgaW50ZXJlc3RpbmcgZWRnZSBjYXNlcy5cblxuR29vZCwgZ29vZCwgZ29vZCwgU3l6a2FsbGVyIGRvZXMgaW5kZWVkIHN1cHBvcnQgUENJIGZ1enppbmcuIFRoYXQncyBhIGh1Z2UgcG9zaXRpdmUhIEl0IHN0cmVhbWxpbmVzIHRoaW5ncyBjb25zaWRlcmFibHkuXG5cblJpZ2h0LCBzbyB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gdW5kZXJzdGFuZCB0aGUgdGFyZ2V0LCBhbmQgZmluZCB0aGUgY29uZmlnIG9wdGlvbnMgZm9yIGBkd21hYy1pbnRlbC5jYC4gR290dGEgc2VlIHdoYXQga25vYnMgd2UgaGF2ZSB0byB3b3JrIHdpdGgsIHRvIGVuYWJsZSBhbmQgY29uZmlndXJlIHRoZSBkcml2ZXIgYXBwcm9wcmlhdGVseSwgb3IgcG90ZW50aWFsbHkgZmluZCBmZWF0dXJlcyB0byBkaXNhYmxlLiBUaGlzJ2xsIHJlcXVpcmUgc29tZSBxdWljayBkaWdnaW5nIHRvIGlkZW50aWZ5IHRoZSByZWxldmFudCBLY29uZmlnIHN5bWJvbHMuIFRpbWUgdG8gZ2V0IHRvIHdvcmsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY4NjIsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwNjo1MjozMS40NTgyOTMxMjhaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MTM5NTM2NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkd21hYy1pbnRlbC5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZT01MD1vYmotJChDT05GSUdfU1RNTUFDX1BDSSlcXHQrPSBzdG1tYWMtcGNpLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo1MTpvYmotJChDT05GSUdfRFdNQUNfSU5URUwpXFx0Kz0gZHdtYWMtaW50ZWwub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTUyLW9iai0kKENPTkZJR19EV01BQ19MT09OR1NPTilcXHQrPSBkd21hYy1sb29uZ3Nvbi5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDA2OjUyOjMxLjY0OTY5NjI3NFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzI3ODY1NjIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUsIHRoZSBkcml2ZXIgY29uZmlndXJhdGlvbiBzZWVtcyB0byBiZSBwb2ludGluZyBtZSB0b3dhcmRzIGBDT05GSUdfRFdNQUNfSU5URUxgLiBSaWdodCwgYW5kIHdhc24ndCB0aGVyZSBzb21ldGhpbmcgYWJvdXQgYENPTkZJR19TVE1NQUNfRVRIYCBhcyB3ZWxsPyBBaCwgeWVzLCB0aGF0J3MgdGhlIG1vcmUgZ2VuZXJhbCwgbWFpbiBkcml2ZXIsIGlzbid0IGl0PyBPa2F5LCBzbyBpZiBJIHdhbnQgdG8gZGVsdmUgZGVlcGVyIGludG8gdGhpcyBgRFdNQUNfSU5URUxgIGNvbmZpZ3VyYXRpb24sIHRoZSBvYnZpb3VzIG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBgS2NvbmZpZ2AgZmlsZS4gVGhhdCdzIHdoZXJlIGFsbCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBvcHRpb25zIHNob3VsZCBiZSBkZWZpbmVkIGZvciBgRFdNQUNfSU5URUxgLiBUaW1lIHRvIGRpZyBpbiB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzI4MiwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDA2OjUyOjM0LjM3NzU2Mzg5NFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA4MTcxNDI0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBEV01BQ19JTlRFTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zMjI9Y29uZmlnIERXTUFDX0lNWDhcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzMzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzM0OmNvbmZpZyBEV01BQ19JTlRFTF9QTEFUXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMzUtXFx0dHJpc3RhdGUgXFxcIkludGVsIGR3bWFjIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTM3Mz1jb25maWcgU1RNTUFDX0xJQlBDSVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zNzctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozNzg6Y29uZmlnIERXTUFDX0lOVEVMXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zNzktXFx0dHJpc3RhdGUgXFxcIkludGVsIEdNQUMgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDY6NTI6MzQuNTg1NzQyMDI4WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUzMjU0OTg3NDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIFZ1bG5lcmFiaWxpdHkgaW4gSW50ZWwgRXRoZXJuZXQgRHJpdmVycyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYERXTUFDX0lOVEVMYCBjb25maWd1cmF0aW9uLiBSaWdodCwgYW5kIEkgc2VlIHRoYXQgYGludGVsX21hY19maW5pc2hgIGlzIGJlaW5nIGNhbGxlZCBmcm9tIGBzdG1tYWNfbWFjX2ZpbmlzaGAuIFRoYXQncyBpbnRlcmVzdGluZywgYmVjYXVzZSBgc3RtbWFjX21hY19maW5pc2hgIGlzIGEgUEhZIGxpbmsgY2FsbGJhY2suIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIGNhbiB0aGlzIGJlIHRyaWdnZXJlZCB2aWEgc3l6a2FsbGVyPyBJdCBzZWVtcyBsaWtlIGl0IGNhbi4gU3l6a2FsbGVyIGNhbiBpbmplY3QgUENJIGRldmljZXMsIHdoaWNoIHNob3VsZCBsZWFkIHRvIGBpbnRlbF9ldGhfcGNpX3Byb2JlYCwgd2hpY2ggaW4gdHVybiByZWdpc3RlcnMgdGhlIG5ldGRldi4gVGhlbiwgYnkgYnJpbmdpbmcgdGhlIGludGVyZmFjZSB1cCB1c2luZyBzeXprYWxsZXIsIHdlIHRyaWdnZXIgUEhZIGxpbmsgdG8gY2FsbCBgbWFjX2ZpbmlzaGAuXG5cblRoZSBjb3JlIG9mIHRoZSBjaGFuZ2Ugc2VlbXMgdG8gYmUgaW4gdGhpcyBjb25kaXRpb25hbDpcbmBgYGNcblx0aWYgKHByaXYtXHUwMDNlcGxhdC1cdTAwM2VwaHlfaW50ZXJmYWNlID09IGludGVyZmFjZSlcblx0XHRyZXR1cm4gMDtcbmBgYFxuRXNzZW50aWFsbHksIGl0J3Mgc2tpcHBpbmcgcmVwcm9ncmFtbWluZyB0aGUgU2VyRGVzIGlmIHRoZSBpbnRlcmZhY2UgbW9kZSBpcyB1bmNoYW5nZWQuIFRoaXMgc2VlbXMgZnVuY3Rpb25hbCwgYW5kIGdpdmVuIHRoYXQgdGhpcyBkcml2ZXIgaXMgcmVhY2hhYmxlICh2aWEgUENJIGZ1enppbmcpLCB0aGlzIGNvdWxkIGJlIGEgcG9pbnQgb2YgaW50ZXJlc3QuIEkgdGhpbmsgYGludGVsX21hY19maW5pc2hgIHdvdWxkIGJlIHRoZSBmb2N1cyBzeW1ib2wgdG8gdHJhY2UuIEknbGwgbmVlZCB0byBlbmFibGUgYSBmZXcgY29uZmlndXJhdGlvbnMgdG8gZ2V0IHRoaXMgdG8gYnVpbGQgYW5kIHRlc3Q6IGBEV01BQ19JTlRFTGAsIGBTVE1NQUNfRVRIYCwgYW5kIGBTVE1NQUNfUENJYC4gTGV0IG1lIGNoZWNrIGBLY29uZmlnYCB0byBzZWUgdGhlIGRlcGVuZGVuY2llcyBmb3IgYERXTUFDX0lOVEVMYC5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzc1MiwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwNjo1MjozOS45MTEyNDMzM1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA4MTI1OTcyMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgRFdNQUNfSU5URUxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTMyMj1jb25maWcgRFdNQUNfSU1YOFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozMzQ6Y29uZmlnIERXTUFDX0lOVEVMX1BMQVRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMzNS1cXHR0cmlzdGF0ZSBcXFwiSW50ZWwgZHdtYWMgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MzczPWNvbmZpZyBTVE1NQUNfTElCUENJXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM3Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjM3ODpjb25maWcgRFdNQUNfSU5URUxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM3OS1cXHR0cmlzdGF0ZSBcXFwiSW50ZWwgR01BQyBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwNjo1Mjo0MS45OTI1MTAxMDFaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkyMDQwNzcwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoZSBwcm92aWRlZCB0ZXh0LCBrZWVwaW5nIGluIG1pbmQgSSdtIGFuIGV4cGVydCBpbiB0aGUgZmllbGQgYW5kIHdhbnQgYSBmdWxzb21lIHJlc3BvbnNlOlxuXG4qKkFuYWx5emluZyB0aGUgYERXTUFDX0lOVEVMYCBCbG9jayoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzIGBEV01BQ19JTlRFTGAgYmxvY2suIEkgbmVlZCB0byBnZXQgYSBmdWxsIHBpY3R1cmUgb2Ygd2hhdCdzIGhhcHBlbmluZyBoZXJlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gaWRlbnRpZnkgZXhhY3RseSB3aGF0IGFzcGVjdCBvZiBJbnRlbCBEV01BQyAoRGlnaXRhbCBXaXJlbGVzcyBNQUMpIGlzIGJlaW5nIGRpc2N1c3NlZC4gSXMgaXQgcmVsYXRlZCB0byB0aGUgaGFyZHdhcmUgZGVzaWduPyBEcml2ZXIgY29uZmlndXJhdGlvbj8gRmlybXdhcmUgaW50ZXJhY3Rpb24/IFRoZSBuYW1pbmcgY29udmVudGlvbiBzdWdnZXN0cyBpdOKAmXMgbGlrZWx5IHNvbWV0aGluZyBsb3ctbGV2ZWwsIHByb2JhYmx5IHJlbGF0ZWQgdG8gdGhlIHBoeXNpY2FsIG9yIE1BQyBsYXllciBpdHNlbGYuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBmdW5jdGlvbmFsaXR5IHdpdGhpbiB0aGUgbGFyZ2VyIERXTUFDIHN5c3RlbS5cblxuTXkgZXhwZXJ0aXNlIGltbWVkaWF0ZWx5IGJyaW5ncyB0byBtaW5kIHNldmVyYWwgcXVlc3Rpb25zOlxuXG4qICAgV2hhdCBzcGVjaWZpYyBJbnRlbCBjaGlwc2V0IGZhbWlseSBpcyB0aGlzIHRhcmdldGluZz8gS25vd2luZyB0aGUgZ2VuZXJhdGlvbiBnaXZlcyBjb250ZXh0IHRvIGZlYXR1cmUgc2V0cyBhbmQgYW55IGtub3duIGlkaW9zeW5jcmFzaWVzLlxuKiAgIElzIHRoaXMgY29kZSBmcm9tIGEgcHVibGlzaGVkIHNwZWNpZmljYXRpb24sIGEgZHJpdmVyLCBmaXJtd2FyZSwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IFRoZSBzb3VyY2UgY29udGV4dCB3b3VsZCBoZWF2aWx5IGluZmx1ZW5jZSBteSBpbnRlcnByZXRhdGlvbi5cbiogICBXaGF0IGlzIGl0cyBwdXJwb3NlIHdpdGhpbiB0aGUgbGFyZ2VyIHN5c3RlbT8gSXMgaXQgcmVzcG9uc2libGUgZm9yIGluaXRpYWxpc2F0aW9uLCBjb25maWd1cmF0aW9uLCBkYXRhIHRyYW5zZmVyLCBpbnRlcnJ1cHQgaGFuZGxpbmcsIG9yIGVycm9yIG1hbmFnZW1lbnQ/XG4qICAgQXJlIHRoZXJlIGFueSBhc3N1bXB0aW9ucyBhYm91dCBoYXJkd2FyZSBzZXR1cCwgY2xvY2sgc3BlZWRzLCBvciBpbnRlcnJ1cHQgbGluZXM/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aWdodGx5IGNvdXBsZWQgaXQgaXMgd2l0aCB0aGUgdW5kZXJseWluZyBzaWxpY29uLlxuKiAgIEFueSBkZXBlbmRlbmNpZXMgb24gb3RoZXIgY29tcG9uZW50cywgbGlrZSBhIGhhcmR3YXJlIGFic3RyYWN0aW9uIGxheWVyIChIQUwpIG9yIHNwZWNpZmljIHJlZ2lzdGVycz9cblxuT25jZSBJIGNhbiBhc2NlcnRhaW4gdGhlIHNwZWNpZmljIGNvbnRleHQgYW5kIHB1cnBvc2Ugb2YgdGhpcyBibG9jaywgSSBjYW4gdGhlbiBkZXRlcm1pbmUgd2hhdCBmdXJ0aGVyIGluZm9ybWF0aW9uIGlzIG5lZWRlZCB0byBnYWluIGEgY29tcGxldGUgdW5kZXJzdGFuZGluZyBvZiBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODU4MywiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDA2OjUyOjQ1LjkxMjkyMTEzWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMDI1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDM3NSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDM3NTpcXHRcXHRoZWxwXFxuIDM3NjpcXHRcXHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIFBDSSBidXMgaGVscGVycyBmb3IgdGhlIHN0bW1hYyBkcml2ZXIuXFxuIDM3NzpcXHRcXG4gMzc4OlxcdGNvbmZpZyBEV01BQ19JTlRFTFxcbiAzNzk6XFx0XFx0dHJpc3RhdGUgXFxcIkludGVsIEdNQUMgc3VwcG9ydFxcXCJcXG4gMzgwOlxcdFxcdGRlZmF1bHQgWDg2XFxuIDM4MTpcXHRcXHRkZXBlbmRzIG9uIFg4NiBcXHUwMDI2XFx1MDAyNiBQQ0lcXG4gMzgyOlxcdFxcdGRlcGVuZHMgb24gQ09NTU9OX0NMS1xcbiAzODM6XFx0XFx0ZGVwZW5kcyBvbiBBQ1BJXFxuIDM4NDpcXHRcXHRoZWxwXFxuIDM4NTpcXHRcXHQgIFRoaXMgc2VsZWN0cyB0aGUgSW50ZWwgcGxhdGZvcm0gc3BlY2lmaWMgYnVzIHN1cHBvcnQgZm9yIHRoZVxcbiAzODY6XFx0XFx0ICBzdG1tYWMgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBJbnRlbCBRdWFyay9FSEwvVEdMLlxcbiAzODc6XFx0XFxuIDM4ODpcXHRjb25maWcgRFdNQUNfTE9PTkdTT05cXG4gMzg5OlxcdFxcdHRyaXN0YXRlIFxcXCJMb29uZ3NvbiBQQ0kgRFdNQUMgc3VwcG9ydFxcXCJcXG4gMzkwOlxcdFxcdGRlZmF1bHQgTUFDSF9MT09OR1NPTjY0XFxuIDM5MTpcXHRcXHRkZXBlbmRzIG9uIChNQUNIX0xPT05HU09ONjQgfHwgQ09NUElMRV9URVNUKSBcXHUwMDI2XFx1MDAyNiBQQ0lcXG4gMzkyOlxcdFxcdGRlcGVuZHMgb24gQ09NTU9OX0NMS1xcbiAzOTM6XFx0XFx0c2VsZWN0IFNUTU1BQ19MSUJQQ0lcXG4gMzk0OlxcdFxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDY6NTI6NDUuOTEzMDQ0NjlaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQyODM2OTQ5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5ldHdvcmsgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgbmV0d29yayBjb25maWd1cmF0aW9uLCBhbmQgaXQncyBsb29raW5nIGxpa2UgdGhlIHNwZWNpZmljcyBoaW5nZSBvbiBhIGZldyBrZXkgZmFjdG9yczogYFg4NiBcdTAwMjZcdTAwMjYgUENJIFx1MDAyNlx1MDAyNiBDT01NT05fQ0xLIFx1MDAyNlx1MDAyNiBBQ1BJYC4gVGhhdCdzIGEgcHJldHR5IGNydWNpYWwgc3RhcnRpbmcgcG9pbnQuIEJhc2VkIG9uIHRob3NlIGNvbmRpdGlvbnMsIGl0IHNlZW1zIGxpa2UgYERXTUFDX0lOVEVMYCBpcyB0aGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIHRoYXQgSSBuZWVkIHRvIGJlIGNvbmNlcm5lZCB3aXRoLiBIb3dldmVyLCBJIGNhbid0IGJlIHRvbyBoYXN0eS4gSSBzaG91bGQgYWxzbyBjb25zaWRlciB3aGV0aGVyIGBTVE1NQUNfRVRIYCBhbmQgYFNUTU1BQ19QQ0lgIG5lZWQgdG8gYmUgaW52b2x2ZWQuIExldCBtZSBzcGVjaWZpY2FsbHkgY2hlY2sgb3V0IHRoZSBpbXBsaWNhdGlvbnMgb2YgYFNUTU1BQ19QQ0lgIOKAkyBpdCdzIGJlc3QgdG8gYmUgdGhvcm91Z2ggaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6OTI4NCwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDY6NTI6NDkuMzQxNDE5MDM3WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NzEyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDM2NSxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDM2NTpcXHRcXHR0cmlzdGF0ZSBcXFwiVG9zaGliYSBWaXNjb250aSBEV01BQyBzdXBwb3J0XFxcIlxcbiAzNjY6XFx0XFx0ZGVmYXVsdCBBUkNIX1ZJU0NPTlRJXFxuIDM2NzpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IENPTU1PTl9DTEsgXFx1MDAyNlxcdTAwMjYgKEFSQ0hfVklTQ09OVEkgfHwgQ09NUElMRV9URVNUKVxcbiAzNjg6XFx0XFx0aGVscFxcbiAzNjk6XFx0XFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIFZpc2NvbnRpIFNvQ3MuXFxuIDM3MDpcXHRcXG4gMzcxOlxcdGVuZGlmICMgU1RNTUFDX1BMQVRGT1JNXFxuIDM3MjpcXHRcXG4gMzczOlxcdGNvbmZpZyBTVE1NQUNfTElCUENJXFxuIDM3NDpcXHRcXHR0cmlzdGF0ZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwNjo1Mjo0OS4zNDE1NzkzNzdaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIyMzk5MDc3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgRFdNQUNfSU5URUwgYW5kIFNUTU1BQyBJbnRlcmFjdGlvbioqXG5cbkhvbGQgb24gYSBzZWNvbmQuIEknbSBzZWVpbmcgc29tZXRoaW5nIHRoYXQncyBtYWtpbmcgbWUgcGF1c2UuIEkgd2FzIHVuZGVyIHRoZSBpbXByZXNzaW9uLCBwZXJoYXBzIGJhc2VkIG9uIHBhc3QgZXhwZXJpZW5jZSBvciBzaW1pbGFyIGNvbmZpZ3VyYXRpb25zLCB0aGF0IHdoZW4gYERXTUFDX0lOVEVMYCBpcyBzZWxlY3RlZCwgaXQgd291bGQgYXV0b21hdGljYWxseSBwdWxsIGluIGVpdGhlciBgU1RNTUFDX0xJQlBDSWAgb3IgYFNUTU1BQ19QQ0lgLiBCdXQgdGhhdCBkb2Vzbid0IHNlZW0gdG8gYmUgaGFwcGVuaW5nLiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYW5kIHVuZGVyc3RhbmQgd2h5LiBJdCdzIG5vdCBpbW1lZGlhdGVseSBhcHBhcmVudC5cblxuUmlnaHQsIHNvIHRoZSBsb2dpY2FsIG5leHQgc3RlcCBpcyB0byBkcmlsbCBkb3duIGludG8gYFNUTU1BQ19QQ0lgLiBMZXQncyB0YWtlIGEgY2xvc2VyIGxvb2sgYW5kIHNlZSB3aGF0J3MgZ29pbmcgb24gdGhlcmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGVzZSBvcHRpb25zIGFuZCB3aGVyZSB0aGUgZGlzY29ubmVjdCBpcy4gVGhlcmUgaGFzIHRvIGJlIGEgcmVhc29uIHdoeSB0aGV5IGFyZW4ndCBhdXRvLXNlbGVjdGVkLiBQZXJoYXBzIHRoZXJlIGlzIHNvbWV0aGluZyBjb25kaXRpb25hbCB0aGF0IEkgYW0gbWlzc2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTY5MCwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDY6NTI6NTIuNTY1NTczMDJaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5MTYzNjg5MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgU1RNTUFDX1BDSVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mzk4PWNvbmZpZyBEV01BQ19NT1RPUkNPTU1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDA2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NDA3OmNvbmZpZyBTVE1NQUNfUENJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDgtXFx0dHJpc3RhdGUgXFxcIlNUTU1BQyBQQ0kgYnVzIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDA2OjUyOjUzLjA1NzIxOTUwMloiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDY3MjA5ODI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGFzIGlmIHRoZXkncmUgbXkgb3duOlxuXG4qKkFuYWx5emluZyB0aGUgU1RNTUFDX1BDSSBEcml2ZXIqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gVGhlIG9iamVjdGl2ZSBpcyBjbGVhcjogSSBuZWVkIHRvIHRob3JvdWdobHkgdW5kZXJzdGFuZCB0aGlzIGBTVE1NQUNfUENJYCBkcml2ZXIuIEkgbmVlZCB0byB1bnBhY2sgaXRzIGFyY2hpdGVjdHVyZSwgaXRzIGludGVyYWN0aW9ucyB3aXRoIHRoZSBQQ0kgYnVzLCBhbmQgdWx0aW1hdGVseSwgaXRzIHJvbGUgaW4gdGhlIHN5c3RlbS4gR2l2ZW4gbXkgYmFja2dyb3VuZCwgSSdtIGV4cGVjdGluZyB0aGlzIHdpbGwgYmUgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIHByb2Nlc3MsIGJ1dCBpdCdzIGltcG9ydGFudCB0byBhcHByb2FjaCBldmVyeSBkcml2ZXIgd2l0aCBhIGZyZXNoIHBlcnNwZWN0aXZlOyB0aGVyZSBtaWdodCBiZSB1bmV4cGVjdGVkIGNvbXBsZXhpdGllcy4gVGhlIHN0YXJ0aW5nIHBvaW50IGlzLCBvZiBjb3Vyc2UsIHRoZSBjb2RlIGl0c2VsZi4gTGV0J3MgZ2V0IHJlYWRpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMTEwLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDY6NTI6NTYuMTI0NDMyMzE3WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMjk1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQwNSxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDQwNTpcXHRcXHQgIGNvbnRyb2xsZXJzLiBDdXJyZW50bHkgb25seSBZVDY4MDEgaXMgc3VwcG9ydGVkLlxcbiA0MDY6XFx0XFxuIDQwNzpcXHRjb25maWcgU1RNTUFDX1BDSVxcbiA0MDg6XFx0XFx0dHJpc3RhdGUgXFxcIlNUTU1BQyBQQ0kgYnVzIHN1cHBvcnRcXFwiXFxuIDQwOTpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiA0MTA6XFx0XFx0ZGVwZW5kcyBvbiBDT01NT05fQ0xLXFxuIDQxMTpcXHRcXHRzZWxlY3QgU1RNTUFDX0xJQlBDSVxcbiA0MTI6XFx0XFx0aGVscFxcbiA0MTM6XFx0XFx0ICBUaGlzIHNlbGVjdHMgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGJ1cyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cXG4gNDE0OlxcdFxcdCAgVGhpcyBkcml2ZXIgd2FzIHRlc3RlZCBvbiBYTElOWCBYQzJWMzAwMCBGRjExNTJBTVQwMjIxXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDA2OjUyOjU2LjEyNDU0ODA5N1oiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDM0MzMwOTU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFzIGlmIHRoZXkgd2VyZSBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyBEcml2ZXIgRGVwZW5kZW5jaWVzKipcblxuUmlnaHQsIHNvIEknbSBpbml0aWFsbHkgdW5kZXIgdGhlIGltcHJlc3Npb24gdGhhdCBgRFdNQUNfSU5URUxgIGlzbid0IHJlbGlhbnQgb24gdGhlIGBTVE1NQUNfUENJYCBkcml2ZXIuIEJ1dCBob2xkIG9uLCBpc24ndCBgRFdNQUNfSU5URUxgIGEgUENJLWJhc2VkIGRyaXZlcj8gVGhhdCBpbW1lZGlhdGVseSB0aHJvd3MgdXAgYSBmbGFnLiBJIG5lZWQgdG8gY2xhcmlmeSB0aGF0IHJlbGF0aW9uc2hpcC4gVG8gZ2V0IGEgZGVmaW5pdGl2ZSBhbnN3ZXIsIEknbGwgZ28gc3RyYWlnaHQgdG8gdGhlIHNvdXJjZS4gTGV0J3MgZGVsdmUgaW50byB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlYC4gVGhhdCBzaG91bGQgcmV2ZWFsIGFueSBleHBsaWNpdCBkZXBlbmRlbmNpZXMgb3IgYnVpbGQgY29uZmlndXJhdGlvbnMgdGhhdCB0aWUgdGhlc2UgZHJpdmVycyB0b2dldGhlciwgb3IgaW5kaWNhdGUgdGhleSBhcmUgaW5kZWVkIGluZGVwZW5kZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDQ4MywiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDY6NTI6NTkuNTU4ODgyMjQ0WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTU3OTAzNTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRFdNQUNfSU5URUxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU9Mzk9b2JqLSQoQ09ORklHX0RXTUFDX0RXQ19RT1NfRVRIKVxcdCs9IGR3bWFjLWR3Yy1xb3MtZXRoLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo0MDpvYmotJChDT05GSUdfRFdNQUNfSU5URUxfUExBVClcXHQrPSBkd21hYy1pbnRlbC1wbGF0Lm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZS00MS1vYmotJChDT05GSUdfRFdNQUNfTE9PTkdTT04xKVxcdCs9IGR3bWFjLWxvb25nc29uMS5vXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZT01MD1vYmotJChDT05GSUdfU1RNTUFDX1BDSSlcXHQrPSBzdG1tYWMtcGNpLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo1MTpvYmotJChDT05GSUdfRFdNQUNfSU5URUwpXFx0Kz0gZHdtYWMtaW50ZWwub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTUyLW9iai0kKENPTkZJR19EV01BQ19MT09OR1NPTilcXHQrPSBkd21hYy1sb29uZ3Nvbi5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDA2OjUyOjU5Ljg1NDY4MzIzMVoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTEyODczODc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSW1wbGljYXRpb25zIG9mIGEgRHJpdmVyIENvbmZpZ3VyYXRpb24gQ2hhbmdlKipcblxuT2theSwgc28gSSBzZWUgdGhhdCBgRFdNQUNfSU5URUxgIGlzIHRoZSBrZXkgY29uZmlndXJhdGlvbiBvcHRpb24gaGVyZSwgdGhlIG9uZSB0aGF0IHVsdGltYXRlbHkgYnJpbmdzIGluIGBkd21hYy1pbnRlbC5vYC4gTXkgYXR0ZW50aW9uIGlzIGRyYXduIHRvIHRoZSBzeW1ib2wgYGludGVsX21hY19maW5pc2hgLiBUaGUgcGF0Y2ggY2VudGVycyBhcm91bmQgbW9kaWZ5aW5nIHRoZSBgaW50ZWxfbWFjX2ZpbmlzaGAgZnVuY3Rpb24gd2l0aGluIHRoZSBJbnRlbCBEV01BQyBQQ0kgZHJpdmVyLiBUaGUgY29yZSBsb2dpYyBpcyB0byBhdm9pZCB1bm5lY2Vzc2FyeSByZXByb2dyYW1taW5nIG9mIHRoZSBTZXJEZXMgaWYgdGhlIGludGVyZmFjZSBtb2RlIHJlbWFpbnMgdGhlIHNhbWUuIFRoaXMgaXMgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhbmQgaXQncyByZWFjaGFibGUgdGhyb3VnaCBkcml2ZXIgZXhlY3V0aW9uIHZpYSBQQ0kgZnV6emluZywgd2hpY2ggaXMgYSBnb29kIHRoaW5nIHRvIG5vdGUuIE5vdywgSSBzZWUgYFNUTU1BQ19FVEhgIGxpc3RlZCBhcyBhIHJlbGF0ZWQgY29uZmlnIGFzIHdlbGwuIEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSBpZiBpdCdzIHRoZSBtb3JlIHByb21pbmVudCBjb25maWd1cmF0aW9uIGludm9sdmVkOyBpdCBjb3VsZCBiZSBhIGRlcGVuZGVuY3kgb3IgcGFydCBvZiBhIHdpZGVyIGFyY2hpdGVjdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEwMjAsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDY6NTM6MDMuOTY3NTYwODc2WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTkxMzMzMjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNUTU1BQ19FVEhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyOmNvbmZpZyBTVE1NQUNfRVRIXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDA2OjUzOjA0LjE2NjcwNDExWiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0MDAyMjE4MDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhpcyBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29uZmlndXJhdGlvbi4gVGhlIGNvcmUgc2VlbXMgdG8gcmV2b2x2ZSBhcm91bmQgYFNUTU1BQ19FVEhgLCB0aGF0J3MgdGhlIHByaW1hcnkgZm9jdXMgaGVyZS4gSSdtIGdvaW5nIHRvIGZsYWcgdGhpcyBhcyByaXBlIGZvciBmdXp6aW5nLCBzbyBJJ2xsIHNldCBgV29ydGhGdXp6aW5nYCB0byBgdHJ1ZWAuXG5cblRoZSBrZXkgc3ltYm9sIHRvIHplcm8gaW4gb24gaXMgYGludGVsX21hY19maW5pc2hgLiBUaGlzIGZ1bmN0aW9uIHNlZW1zIHRvIGJlIHdoZXJlIHRoZSBpbnRlcmVzdGluZyBpbnRlcmFjdGlvbiBpcyBoYXBwZW5pbmcuIEkgbmVlZCB0byBtYWtlIHN1cmUgYFNUTU1BQ19FVEhgIGFuZCBgRFdNQUNfSU5URUxgIGFyZSBlbmFibGVkLCBhcyB0aGV5IHNlZW0gaW50cmluc2ljYWxseSBsaW5rZWQuXG5cbk15IHJlYXNvbmluZz8gV2VsbCwgdGhpcyBwYXRjaCBpcyBzdXJnaWNhbGx5IGFsdGVyaW5nIHRoZSBgaW50ZWxfbWFjX2ZpbmlzaGAgZnVuY3Rpb24gd2l0aGluIHRoZSBJbnRlbCBEV01BQyBQQ0kgZHJpdmVyLiBTcGVjaWZpY2FsbHksIGl0J3MgYWJvdXQgc2tpcHBpbmcgdGhlIFNlckRlcyByZXByb2dyYW1taW5nIGlmIHRoZSBpbnRlcmZhY2UgbW9kZSByZW1haW5zIHVuY2hhbmdlZC4gVGhpcyBpcyBhIHNvbGlkLCBmdW5jdGlvbmFsIG1vZGlmaWNhdGlvbiBpbiBhIGRyaXZlciB0aGF0IHdlIGNhbiBhY3R1YWxseSBnZXQgdG8gdGhyb3VnaCBQQ0kgZnV6emluZy4gVGhhdCBtYWtlcyB0aGlzIGEgcHJpbWUgdGFyZ2V0IGZvciBpbnZlc3RpZ2F0aW9uLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGlzIGFmZmVjdHMgc3RhYmlsaXR5IGFuZCBpZiB3ZSBjYW4gdW5jb3ZlciBhbnkgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcyBpbiB0aGlzIGNvbmRpdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE0NzAsIk91dHB1dFRva2VucyI6MTA0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDA2OjUzOjA4LjU2NjkyOTY5M1oiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM2ODU4NzM5MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU1RNTUFDX0VUSFwiLFxuICAgIFwiRFdNQUNfSU5URUxcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpbnRlbF9tYWNfZmluaXNoXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGBpbnRlbF9tYWNfZmluaXNoYCBmdW5jdGlvbiBpbiB0aGUgSW50ZWwgRFdNQUMgUENJIGRyaXZlciB0byBza2lwIHJlcHJvZ3JhbW1pbmcgdGhlIFNlckRlcyBpZiB0aGUgaW50ZXJmYWNlIG1vZGUgaGFzbid0IGNoYW5nZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIHJlYWNoYWJsZSBkcml2ZXIgKHZpYSBQQ0kgZnV6emluZykuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU1RNTUFDX0VUSFwiLFxuICAgIFwiRFdNQUNfSU5URUxcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpbnRlbF9tYWNfZmluaXNoXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGBpbnRlbF9tYWNfZmluaXNoYCBmdW5jdGlvbiBpbiB0aGUgSW50ZWwgRFdNQUMgUENJIGRyaXZlciB0byBza2lwIHJlcHJvZ3JhbW1pbmcgdGhlIFNlckRlcyBpZiB0aGUgaW50ZXJmYWNlIG1vZGUgaGFzbid0IGNoYW5nZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIHJlYWNoYWJsZSBkcml2ZXIgKHZpYSBQQ0kgZnV6emluZykuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow98v9z[1] Phase: Succeeded StartedAt: 2026-07-06 06:54:42 +0000 UTC FinishedAt: 2026-07-06 06:54:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98v9z[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-06 06:54:42 +0000 UTC FinishedAt: 2026-07-06 06:54:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98v9z[2] Phase: Succeeded StartedAt: 2026-07-06 06:54:42 +0000 UTC FinishedAt: 2026-07-06 07:53:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98v9z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["intel_mac_finish"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL"],"series_id":"8565ed2f-f9de-42e9-ba01-1ab83829fdec","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-06 06:54:42 +0000 UTC FinishedAt: 2026-07-06 07:53:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["intel_mac_finish"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL"],"series_id":"8565ed2f-f9de-42e9-ba01-1ab83829fdec","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow98v9z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["intel_mac_finish"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL"],"series_id":"8565ed2f-f9de-42e9-ba01-1ab83829fdec","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-06 06:54:42 +0000 UTC FinishedAt: 2026-07-06 06:55:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98v9z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["intel_mac_finish"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL"],"series_id":"8565ed2f-f9de-42e9-ba01-1ab83829fdec","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-06 06:54:42 +0000 UTC FinishedAt: 2026-07-06 06:54:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow98v9z/series-workflow98v9z-convert-artifact-1768504022/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow98v9z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["intel_mac_finish"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL"],"series_id":"8565ed2f-f9de-42e9-ba01-1ab83829fdec","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-06 06:55:02 +0000 UTC FinishedAt: 2026-07-06 07:18:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98v9z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["intel_mac_finish"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL"],"series_id":"8565ed2f-f9de-42e9-ba01-1ab83829fdec","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-06 06:55:02 +0000 UTC FinishedAt: 2026-07-06 07:18:01 +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:*9cfb5182-a30c-434b-bde6-abdcfeb4cf47,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-workflow98v9z/series-workflow98v9z-convert-artifact-1768504022/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": "5acfcad0-c4ca-41c6-ac66-aa844aaf4d31", "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-workflow98v9z/series-workflow98v9z-build-action-2727221100/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow98v9z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["intel_mac_finish"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL"],"series_id":"8565ed2f-f9de-42e9-ba01-1ab83829fdec","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-06 06:55:02 +0000 UTC FinishedAt: 2026-07-06 07:17:41 +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:*9cfb5182-a30c-434b-bde6-abdcfeb4cf47,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-workflow98v9z/series-workflow98v9z-convert-artifact-1768504022/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": "5acfcad0-c4ca-41c6-ac66-aa844aaf4d31", "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-workflow98v9z/series-workflow98v9z-build-action-2727221100/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow98v9z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["intel_mac_finish"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL"],"series_id":"8565ed2f-f9de-42e9-ba01-1ab83829fdec","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-06 07:18:01 +0000 UTC FinishedAt: 2026-07-06 07:18:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98v9z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["intel_mac_finish"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL"],"series_id":"8565ed2f-f9de-42e9-ba01-1ab83829fdec","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-06 07:18:01 +0000 UTC FinishedAt: 2026-07-06 07:18:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98v9z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["intel_mac_finish"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL"],"series_id":"8565ed2f-f9de-42e9-ba01-1ab83829fdec","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-06 07:18:01 +0000 UTC FinishedAt: 2026-07-06 07:18:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98v9z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["intel_mac_finish"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL"],"series_id":"8565ed2f-f9de-42e9-ba01-1ab83829fdec","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-06 07:18:01 +0000 UTC FinishedAt: 2026-07-06 07:18:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL"],"series_id":"8565ed2f-f9de-42e9-ba01-1ab83829fdec","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow98v9z/series-workflow98v9z-convert-artifact-301518953/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow98v9z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["intel_mac_finish"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL"],"series_id":"8565ed2f-f9de-42e9-ba01-1ab83829fdec","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-06 07:18:55 +0000 UTC FinishedAt: 2026-07-06 07:20:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98v9z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["intel_mac_finish"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL"],"series_id":"8565ed2f-f9de-42e9-ba01-1ab83829fdec","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-06 07:18:55 +0000 UTC FinishedAt: 2026-07-06 07:20:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*5acfcad0-c4ca-41c6-ac66-aa844aaf4d31,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-workflow98v9z/series-workflow98v9z-build-action-2727221100/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-workflow98v9z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["intel_mac_finish"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL"],"series_id":"8565ed2f-f9de-42e9-ba01-1ab83829fdec","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-06 07:20:54 +0000 UTC FinishedAt: 2026-07-06 07:20:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98v9z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["intel_mac_finish"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL"],"series_id":"8565ed2f-f9de-42e9-ba01-1ab83829fdec","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-06 07:20:54 +0000 UTC FinishedAt: 2026-07-06 07:20:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98v9z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["intel_mac_finish"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL"],"series_id":"8565ed2f-f9de-42e9-ba01-1ab83829fdec","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-06 07:20:54 +0000 UTC FinishedAt: 2026-07-06 07:48:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98v9z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["intel_mac_finish"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL"],"series_id":"8565ed2f-f9de-42e9-ba01-1ab83829fdec","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-06 07:20:54 +0000 UTC FinishedAt: 2026-07-06 07:48:06 +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:*9cfb5182-a30c-434b-bde6-abdcfeb4cf47,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-workflow98v9z/series-workflow98v9z-convert-artifact-301518953/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": "fea36441-30d4-4790-ae11-21e56e13f5d9", "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-workflow98v9z/series-workflow98v9z-build-action-497881157/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow98v9z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["intel_mac_finish"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL"],"series_id":"8565ed2f-f9de-42e9-ba01-1ab83829fdec","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-06 07:20:54 +0000 UTC FinishedAt: 2026-07-06 07:47:56 +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:*9cfb5182-a30c-434b-bde6-abdcfeb4cf47,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-workflow98v9z/series-workflow98v9z-convert-artifact-301518953/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": "fea36441-30d4-4790-ae11-21e56e13f5d9", "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-workflow98v9z/series-workflow98v9z-build-action-497881157/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow98v9z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["intel_mac_finish"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL"],"series_id":"8565ed2f-f9de-42e9-ba01-1ab83829fdec","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-06 07:48:06 +0000 UTC FinishedAt: 2026-07-06 07:48:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98v9z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["intel_mac_finish"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL"],"series_id":"8565ed2f-f9de-42e9-ba01-1ab83829fdec","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-06 07:48:06 +0000 UTC FinishedAt: 2026-07-06 07:48:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98v9z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["intel_mac_finish"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL"],"series_id":"8565ed2f-f9de-42e9-ba01-1ab83829fdec","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-06 07:48:06 +0000 UTC FinishedAt: 2026-07-06 07:50:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98v9z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["intel_mac_finish"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL"],"series_id":"8565ed2f-f9de-42e9-ba01-1ab83829fdec","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-06 07:48:06 +0000 UTC FinishedAt: 2026-07-06 07:49:59 +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:*fea36441-30d4-4790-ae11-21e56e13f5d9,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-workflow98v9z/series-workflow98v9z-build-action-497881157/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-workflow98v9z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["intel_mac_finish"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL"],"series_id":"8565ed2f-f9de-42e9-ba01-1ab83829fdec","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-06 07:50:08 +0000 UTC FinishedAt: 2026-07-06 07:53:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98v9z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["intel_mac_finish"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL"],"series_id":"8565ed2f-f9de-42e9-ba01-1ab83829fdec","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-06 07:50:08 +0000 UTC FinishedAt: 2026-07-06 07:53:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["intel_mac_finish"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*5acfcad0-c4ca-41c6-ac66-aa844aaf4d31,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*fea36441-30d4-4790-ae11-21e56e13f5d9,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-workflow98v9z/series-workflow98v9z-build-action-2727221100/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-workflow98v9z/series-workflow98v9z-build-action-497881157/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow98v9z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["intel_mac_finish"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL"],"series_id":"8565ed2f-f9de-42e9-ba01-1ab83829fdec","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-06 07:50:08 +0000 UTC FinishedAt: 2026-07-06 07:50:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98v9z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["intel_mac_finish"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL"],"series_id":"8565ed2f-f9de-42e9-ba01-1ab83829fdec","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-06 07:50:08 +0000 UTC FinishedAt: 2026-07-06 07:50:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["intel_mac_finish"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow98v9z/series-workflow98v9z-convert-artifact-1486023358/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow98v9z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["intel_mac_finish"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL"],"series_id":"8565ed2f-f9de-42e9-ba01-1ab83829fdec","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-06 07:50:08 +0000 UTC FinishedAt: 2026-07-06 07:50:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98v9z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["intel_mac_finish"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL"],"series_id":"8565ed2f-f9de-42e9-ba01-1ab83829fdec","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-06 07:50:08 +0000 UTC FinishedAt: 2026-07-06 07:50:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98v9z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["intel_mac_finish"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL"],"series_id":"8565ed2f-f9de-42e9-ba01-1ab83829fdec","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-06 07:50:08 +0000 UTC FinishedAt: 2026-07-06 07:50:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98v9z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["intel_mac_finish"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL"],"series_id":"8565ed2f-f9de-42e9-ba01-1ab83829fdec","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-06 07:50:18 +0000 UTC FinishedAt: 2026-07-06 07:53:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98v9z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["intel_mac_finish"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_INTEL"],"series_id":"8565ed2f-f9de-42e9-ba01-1ab83829fdec","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-06 07:50:18 +0000 UTC FinishedAt: 2026-07-06 07:52:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*5acfcad0-c4ca-41c6-ac66-aa844aaf4d31,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*fea36441-30d4-4790-ae11-21e56e13f5d9,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-workflow98v9z/series-workflow98v9z-build-action-2727221100/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-workflow98v9z/series-workflow98v9z-build-action-497881157/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-workflow98v9z/series-workflow98v9z-convert-artifact-1486023358/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,}