Name: series-workflowvn4pv Phase: Succeeded StartedAt: 2026-07-31 14:08:12 +0000 UTC FinishedAt: 2026-07-31 17:48:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvn4pv[0] Phase: Succeeded StartedAt: 2026-07-31 14:08:12 +0000 UTC FinishedAt: 2026-07-31 14:11:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvn4pv[0].run-triage Phase: Succeeded StartedAt: 2026-07-31 14:08:12 +0000 UTC FinishedAt: 2026-07-31 14:11:08 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "f5098b6bae761e346ebcd9da7f95622c04733cff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "USB_GADGET", "USB_GADGETFS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "f5098b6bae761e346ebcd9da7f95622c04733cff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "USB_GADGET", "USB_GADGETFS" ], "series_id": "a00f9ca9-f8ba-4337-86bb-c07477596ed2" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "gadgetfs_fill_super", "gadgetfs_create_file", "gadgetfs_evict_inode", "destroy_ep_files", "ep_open", "ep_release", "gadget_dev_open", "dev_release" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE0OjA5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTQl9HQURHRVQmIzM0OywKICAgICYjMzQ7VVNCX0dBREdFVEZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Z2FkZ2V0ZnNfZmlsbF9zdXBlciYjMzQ7LAogICAgJiMzNDtnYWRnZXRmc19jcmVhdGVfZmlsZSYjMzQ7LAogICAgJiMzNDtnYWRnZXRmc19ldmljdF9pbm9kZSYjMzQ7LAogICAgJiMzNDtkZXN0cm95X2VwX2ZpbGVzJiMzNDssCiAgICAmIzM0O2VwX29wZW4mIzM0OywKICAgICYjMzQ7ZXBfcmVsZWFzZSYjMzQ7LAogICAgJiMzNDtnYWRnZXRfZGV2X29wZW4mIzM0OywKICAgICYjMzQ7ZGV2X3JlbGVhc2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByZWZlcmVuY2UgY291bnRpbmcgb3IgbWVtb3J5IG1hbmFnZW1lbnQgaXNzdWUgaW4gdGhlIFVTQiBnYWRnZXRmcyBkcml2ZXIgYnkgbW92aW5nIGBwdXRfZXBgIHRvIHRoZSBpbm9kZSBldmljdGlvbiBwYXRoLiBHYWRnZXRmcyBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBkdW1teV9oY2QsIG1ha2luZyBpdCBzdWl0YWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxNDowOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGVjYzk1YTg1NTUxYzg5MGIyZDFmM2UzMDM4ZjA1NDVmN2I4ZTZhODhcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAzMSAxNDowOTo0MCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmNcbmluZGV4IGQ4N2E4YWI1MTUxMDcuLmEwMzA2Mjk4NmJmMzEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuY1xuQEAgLTE1NzksOCAmIzQzOzE1NzksNiBAQCBzdGF0aWMgdm9pZCBkZXN0cm95X2VwX2ZpbGVzIChzdHJ1Y3QgZGV2X2RhdGEgKmRldilcbiBcdFx0LyogYnJlYWsgbGluayB0byBkY2FjaGUgKi9cbiBcdFx0c2ltcGxlX3JlbW92ZV9ieV9uYW1lKGRldi1cdTAwM2VzYi1cdTAwM2VzX3Jvb3QsIGVwLVx1MDAzZW5hbWUsIE5VTEwpO1xuIFxuLVx0XHRwdXRfZXAgKGVwKTtcbi1cbiBcdFx0c3Bpbl9sb2NrX2lycSAoXHUwMDI2ZGV2LVx1MDAzZWxvY2spO1xuIFx0fVxuIFx0c3Bpbl91bmxvY2tfaXJxIChcdTAwMjZkZXYtXHUwMDNlbG9jayk7XG5AQCAtMTk5Niw2ICYjNDM7MTk5NCw3IEBAIHN0YXRpYyBpbnQgZ2FkZ2V0ZnNfY3JlYXRlX2ZpbGUgKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGNoYXIgY29uc3QgKm5hbWUsXG4gXG4gXHRkZW50cnkgPSBzaW1wbGVfc3RhcnRfY3JlYXRpbmcoc2ItXHUwMDNlc19yb290LCBuYW1lKTtcbiBcdGlmIChJU19FUlIoZGVudHJ5KSkge1xuJiM0MztcdFx0aW5vZGUtXHUwMDNlaV9wcml2YXRlID0gTlVMTDtcbiBcdFx0aXB1dChpbm9kZSk7XG4gXHRcdHJldHVybiBQVFJfRVJSKGRlbnRyeSk7XG4gXHR9XG5AQCAtMjAwNiw5ICYjNDM7MjAwNSwxOCBAQCBzdGF0aWMgaW50IGdhZGdldGZzX2NyZWF0ZV9maWxlIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBjaGFyIGNvbnN0ICpuYW1lLFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuJiM0MztzdGF0aWMgdm9pZCBnYWRnZXRmc19ldmljdF9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlKVxuJiM0Mzt7XG4mIzQzO1x0dHJ1bmNhdGVfaW5vZGVfcGFnZXNfZmluYWwoXHUwMDI2aW5vZGUtXHUwMDNlaV9kYXRhKTtcbiYjNDM7XHRjbGVhcl9pbm9kZShpbm9kZSk7XG4mIzQzO1x0aWYgKGlub2RlLVx1MDAzZWlfcHJpdmF0ZSBcdTAwMjZcdTAwMjYgaW5vZGUtXHUwMDNlaV9mb3AgPT0gXHUwMDI2ZXBfaW9fb3BlcmF0aW9ucylcbiYjNDM7XHRcdHB1dF9lcChpbm9kZS1cdTAwM2VpX3ByaXZhdGUpO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3VwZXJfb3BlcmF0aW9ucyBnYWRnZXRfZnNfb3BlcmF0aW9ucyA9IHtcbiBcdC5zdGF0ZnMgPVx0c2ltcGxlX3N0YXRmcyxcbiBcdC5kcm9wX2lub2RlID1cdGlub2RlX2p1c3RfZHJvcCxcbiYjNDM7XHQuZXZpY3RfaW5vZGUgPVx0Z2FkZ2V0ZnNfZXZpY3RfaW5vZGUsXG4gfTtcbiBcbiBzdGF0aWMgaW50XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTQ6MDk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTQl9HQURHRVQmIzM0OywKICAgICYjMzQ7VVNCX0dBREdFVEZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Z2FkZ2V0ZnNfZmlsbF9zdXBlciYjMzQ7LAogICAgJiMzNDtnYWRnZXRmc19jcmVhdGVfZmlsZSYjMzQ7LAogICAgJiMzNDtnYWRnZXRmc19ldmljdF9pbm9kZSYjMzQ7LAogICAgJiMzNDtkZXN0cm95X2VwX2ZpbGVzJiMzNDssCiAgICAmIzM0O2VwX29wZW4mIzM0OywKICAgICYjMzQ7ZXBfcmVsZWFzZSYjMzQ7LAogICAgJiMzNDtnYWRnZXRfZGV2X29wZW4mIzM0OywKICAgICYjMzQ7ZGV2X3JlbGVhc2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByZWZlcmVuY2UgY291bnRpbmcgb3IgbWVtb3J5IG1hbmFnZW1lbnQgaXNzdWUgaW4gdGhlIFVTQiBnYWRnZXRmcyBkcml2ZXIgYnkgbW92aW5nIGBwdXRfZXBgIHRvIHRoZSBpbm9kZSBldmljdGlvbiBwYXRoLiBHYWRnZXRmcyBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBkdW1teV9oY2QsIG1ha2luZyBpdCBzdWl0YWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGVjYzk1YTg1NTUxYzg5MGIyZDFmM2UzMDM4ZjA1NDVmN2I4ZTZhODgKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1bCAzMSAxNDowOTo0MCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYwppbmRleCBkODdhOGFiNTE1MTA3Li5hMDMwNjI5ODZiZjMxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jCkBAIC0xNTc5LDggJiM0MzsxNTc5LDYgQEAgc3RhdGljIHZvaWQgZGVzdHJveV9lcF9maWxlcyAoc3RydWN0IGRldl9kYXRhICpkZXYpCiAJCS8qIGJyZWFrIGxpbmsgdG8gZGNhY2hlICovCiAJCXNpbXBsZV9yZW1vdmVfYnlfbmFtZShkZXYtJmd0O3NiLSZndDtzX3Jvb3QsIGVwLSZndDtuYW1lLCBOVUxMKTsKIAotCQlwdXRfZXAgKGVwKTsKLQogCQlzcGluX2xvY2tfaXJxICgmYW1wO2Rldi0mZ3Q7bG9jayk7CiAJfQogCXNwaW5fdW5sb2NrX2lycSAoJmFtcDtkZXYtJmd0O2xvY2spOwpAQCAtMTk5Niw2ICYjNDM7MTk5NCw3IEBAIHN0YXRpYyBpbnQgZ2FkZ2V0ZnNfY3JlYXRlX2ZpbGUgKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGNoYXIgY29uc3QgKm5hbWUsCiAKIAlkZW50cnkgPSBzaW1wbGVfc3RhcnRfY3JlYXRpbmcoc2ItJmd0O3Nfcm9vdCwgbmFtZSk7CiAJaWYgKElTX0VSUihkZW50cnkpKSB7CiYjNDM7CQlpbm9kZS0mZ3Q7aV9wcml2YXRlID0gTlVMTDsKIAkJaXB1dChpbm9kZSk7CiAJCXJldHVybiBQVFJfRVJSKGRlbnRyeSk7CiAJfQpAQCAtMjAwNiw5ICYjNDM7MjAwNSwxOCBAQCBzdGF0aWMgaW50IGdhZGdldGZzX2NyZWF0ZV9maWxlIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBjaGFyIGNvbnN0ICpuYW1lLAogCXJldHVybiAwOwogfQogCiYjNDM7c3RhdGljIHZvaWQgZ2FkZ2V0ZnNfZXZpY3RfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSkKJiM0Mzt7CiYjNDM7CXRydW5jYXRlX2lub2RlX3BhZ2VzX2ZpbmFsKCZhbXA7aW5vZGUtJmd0O2lfZGF0YSk7CiYjNDM7CWNsZWFyX2lub2RlKGlub2RlKTsKJiM0MzsJaWYgKGlub2RlLSZndDtpX3ByaXZhdGUgJmFtcDsmYW1wOyBpbm9kZS0mZ3Q7aV9mb3AgPT0gJmFtcDtlcF9pb19vcGVyYXRpb25zKQomIzQzOwkJcHV0X2VwKGlub2RlLSZndDtpX3ByaXZhdGUpOwomIzQzO30KJiM0MzsKIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3VwZXJfb3BlcmF0aW9ucyBnYWRnZXRfZnNfb3BlcmF0aW9ucyA9IHsKIAkuc3RhdGZzID0Jc2ltcGxlX3N0YXRmcywKIAkuZHJvcF9pbm9kZSA9CWlub2RlX2p1c3RfZHJvcCwKJiM0MzsJLmV2aWN0X2lub2RlID0JZ2FkZ2V0ZnNfZXZpY3RfaW5vZGUsCiB9OwogCiBzdGF0aWMgaW50CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE0OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzNjMKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyNTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgVVNCIEdhZGdldGZzIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jYCwgYW5kIGl0IGxvb2tzIGxpa2UgYSB0YXJnZXRlZCBmaXggZm9yIGEgcG90ZW50aWFsIGlzc3VlIGluIHRoZSBVU0IgZ2FkZ2V0ZnMgc3Vic3lzdGVtLiBUaGUgY2hhbmdlIGNlbnRlcnMgYXJvdW5kIGhvdyBgZXBgIChlbmRwb2ludCkgb2JqZWN0cyBhcmUgbWFuYWdlZCBhbmQgcmVsZWFzZWQuIFNwZWNpZmljYWxseSwgdGhleSYjMzk7dmUgcmVtb3ZlZCBhIGBwdXRfZXAoZXApYCBjYWxsIGZyb20gYGRlc3Ryb3lfZXBfZmlsZXNgLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gSXQgYWxzbyBsb29rcyBsaWtlIHRoZXkmIzM5O3JlIGV4cGxpY2l0bHkgc2V0dGluZyBgaW5vZGUtJmd0O2lfcHJpdmF0ZSA9IE5VTExgIGluIGBnYWRnZXRmc19jcmVhdGVfZmlsZWAgd2hlbiBgc2ltcGxlX3N0YXJ0X2NyZWF0aW5nYCBmYWlscy4gVGhhdCYjMzk7cyBnb29kIHByYWN0aWNlIHRvIHByZXZlbnQgc3RhbGUgcG9pbnRlcnMuCgpDcnVjaWFsbHksIHRoZXkmIzM5O3ZlIGFkZGVkIGBnYWRnZXRmc19ldmljdF9pbm9kZWAsIHdoaWNoIGNvbnRhaW5zIHRoZSBsb2dpYyB0byBhY3R1YWxseSBjYWxsIGBwdXRfZXAoaW5vZGUtJmd0O2lfcHJpdmF0ZSlgIGlmIHRoZSBpbm9kZSYjMzk7cyBwcml2YXRlIGRhdGEgaXMgYW4gZW5kcG9pbnQgYW5kIGl0JiMzOTtzIGFzc29jaWF0ZWQgd2l0aCB0aGUgZW5kcG9pbnQgSS9PIG9wZXJhdGlvbnMuIFRoZW4sIHRoYXQgbmV3IGZ1bmN0aW9uIGlzIHJlZ2lzdGVyZWQgYXMgdGhlIGAuZXZpY3RfaW5vZGVgIG9wZXJhdGlvbiBmb3IgdGhlIGBnYWRnZXRfZnNfb3BlcmF0aW9uc2AuIFRoaXMgbG9va3MgbGlrZSBhIGRlZmluaXRlIHN0ZXAgaW4gdGhlIHJpZ2h0IGRpcmVjdGlvbi4KCk15IHRha2UgaXMgdGhhdCB0aGlzIGlzIGxpa2VseSBhIGZ1bmN0aW9uYWwgZml4LCBhbmQgaXQmIzM5O3MgYWRkcmVzc2luZyBhIHJlZmVyZW5jZSBjb3VudGluZyBpc3N1ZSBvciBwb3NzaWJseSBhIG1lbW9yeSBsZWFrIG9yIHVzZS1hZnRlci1mcmVlIHNjZW5hcmlvIHJlbGF0ZWQgdG8gaG93IGVuZHBvaW50IG9iamVjdHMgYXJlIGhhbmRsZWQgaW4gZ2FkZ2V0ZnMuIFNpbmNlIGdhZGdldGZzIGlzIGEgdmlhYmxlIHBhdGggaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCB3aXRoIGEgZHVtbXkgSENELCBvciBzaW1pbGFyIHNldHVwcywgdGhpcyBraW5kIG9mIGZpeCBpcyBjcml0aWNhbC4KCkFscmlnaHQsIEkmIzM5O20gdGhpbmtpbmcgd2UgbmVlZCB0byBmdXp6IHRoaXMhIEkgbmVlZCB0byBkaWcgaW50byBgZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jYCBhbmQgZmlndXJlIG91dCB3aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBlbmFibGUgaXQuIE15IGd1ZXNzIGlzIGl0JiMzOTtzIHByb2JhYmx5IHRpZWQgdG8gYENPTkZJR19VU0JfR0FER0VURlNgLCBidXQgSSYjMzk7bGwgY29uZmlybSB0aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE0OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1VTQl9HQURHRVRGUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz0xOTA9Y29uZmlnIFVTQl9HX05DTVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yMDUtXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6MjA2OmNvbmZpZyBVU0JfR0FER0VURlNcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yMDctXHR0cmlzdGF0ZSBcJiMzNDtHYWRnZXQgRmlsZXN5c3RlbVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvTWFrZWZpbGU9MzA9b2JqLSQoQ09ORklHX1VTQl9FVEgpXHRcdCYjNDM7PSBnX2V0aGVyLm9cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvTWFrZWZpbGU6MzE6b2JqLSQoQ09ORklHX1VTQl9HQURHRVRGUylcdCYjNDM7PSBnYWRnZXRmcy5vXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L01ha2VmaWxlLTMyLW9iai0kKENPTkZJR19VU0JfRlVOQ1RJT05GUylcdCYjNDM7PSBnX2Zmcy5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTQ6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzIzNAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgYFVTQl9HQURHRVRGU2AgRGVwZW5kZW5jaWVzIGluIHRoZSBLZXJuZWwgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBiZWZvcmUgZGl2aW5nIGludG8gdGhlIG1haW4gaXNzdWUsIGl0JiMzOTtzIGFsd2F5cyBhIGdvb2QgcHJhY3RpY2UgdG8gZXhhbWluZSB0aGUgYEtjb25maWdgIGZpbGVzLCBlc3BlY2lhbGx5IGluIGFyZWFzIHRoYXQgaGF2ZSBiZWVuIGFyb3VuZCBmb3IgYSB3aGlsZS4gTGV0JiMzOTtzIHNlZSwgbXkgdGhpbmtpbmcgZ29lcyB0byBgZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnYC4gSSYjMzk7bSBzcGVjaWZpY2FsbHkgbG9va2luZyBmb3IgYW55IGRlcGVuZGVuY2llcyB0aGF0IGBVU0JfR0FER0VURlNgIGhhcy4gVGhpcyBzaG91bGQgc2hlZCBsaWdodCBvbiB3aGljaCBvdGhlciBrZXJuZWwgbW9kdWxlcyBvciBvcHRpb25zIG5lZWQgdG8gYmUgZW5hYmxlZCBmb3IgYGdhZGdldGZzYCB0byB3b3JrIGNvcnJlY3RseSBhbmQgaXQgZ2l2ZXMgaGludHMgaWYgc29tZSBwYXJ0cyBhcmUgbWFya2VkIGZvciByZW1vdmFsLiBJIHdhbnQgdG8gYnVpbGQgYSBjbGVhciBtZW50YWwgcGljdHVyZSBvZiBhbGwgdGhlIGltcGxpY2F0aW9ucy4gVGhpcyB3aWxsIGNsYXJpZnkgaG93IHRoaXMgZmVhdHVyZSBpbnRlcmFjdHMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgVVNCIGdhZGdldCBzdWJzeXN0ZW0gaW4gaXRzIGN1cnJlbnQgc3RhdGUuIE5vIHN1cnByaXNlcyBsYXRlciwgaG9wZWZ1bGx5LiBUaW1lIHRvIGdvIGRpZ2dpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTQ6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDIwMDpcdFx0ICBvZiBzZXZlcmFsIGV0aGVybmV0IGZyYW1lcyBpbnRvIG9uZSBVU0IgdHJhbnNmZXIgYW5kIGRpZmZlcmVudFxuIDIwMTpcdFx0ICBhbGlnbm1lbnQgcG9zc2liaWxpdGllcy5cbiAyMDI6XHRcbiAyMDM6XHRcdCAgU2F5IFwmIzM0O3lcJiMzNDsgdG8gbGluayB0aGUgZHJpdmVyIHN0YXRpY2FsbHksIG9yIFwmIzM0O21cJiMzNDsgdG8gYnVpbGQgYVxuIDIwNDpcdFx0ICBkeW5hbWljYWxseSBsaW5rZWQgbW9kdWxlIGNhbGxlZCBcJiMzNDtnX25jbVwmIzM0Oy5cbiAyMDU6XHRcbiAyMDY6XHRjb25maWcgVVNCX0dBREdFVEZTXG4gMjA3Olx0XHR0cmlzdGF0ZSBcJiMzNDtHYWRnZXQgRmlsZXN5c3RlbVwmIzM0O1xuIDIwODpcdFx0aGVscFxuIDIwOTpcdFx0ICBUaGlzIGRyaXZlciBwcm92aWRlcyBhIGZpbGVzeXN0ZW0gYmFzZWQgQVBJIHRoYXQgbGV0cyB1c2VyIG1vZGVcbiAyMTA6XHRcdCAgcHJvZ3JhbXMgaW1wbGVtZW50IGEgc2luZ2xlLWNvbmZpZ3VyYXRpb24gVVNCIGRldmljZSwgaW5jbHVkaW5nXG4gMjExOlx0XHQgIGVuZHBvaW50IEkvTyBhbmQgY29udHJvbCByZXF1ZXN0cyB0aGF0IGRvbiYjMzk7dCByZWxhdGUgdG8gZW51bWVyYXRpb24uXG4gMjEyOlx0XHQgIEFsbCBlbmRwb2ludHMsIHRyYW5zZmVyIHNwZWVkcywgYW5kIHRyYW5zZmVyIHR5cGVzIHN1cHBvcnRlZCBieVxuIDIxMzpcdFx0ICB0aGUgaGFyZHdhcmUgYXJlIGF2YWlsYWJsZSwgdGhyb3VnaCByZWFkKCkgYW5kIHdyaXRlKCkgY2FsbHMuXG4gMjE0Olx0XG4gMjE1Olx0XHQgIFNheSBcJiMzNDt5XCYjMzQ7IHRvIGxpbmsgdGhlIGRyaXZlciBzdGF0aWNhbGx5LCBvciBcJiMzNDttXCYjMzQ7IHRvIGJ1aWxkIGFcbiAyMTY6XHRcdCAgZHluYW1pY2FsbHkgbGlua2VkIG1vZHVsZSBjYWxsZWQgXCYjMzQ7Z2FkZ2V0ZnNcJiMzNDsuXG4gMjE3Olx0XG4gMjE4Olx0Y29uZmlnIFVTQl9GVU5DVElPTkZTXG4gMjE5Olx0XHR0cmlzdGF0ZSBcJiMzNDtGdW5jdGlvbiBGaWxlc3lzdGVtXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTQ6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzgxMwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHNpdHVhdGlvbjoKCioqSW52ZXN0aWdhdGluZyB0aGUgRGVwZW5kZW5jeSoqCgpPa2F5LCBzbyB0aGlzIGNvbmZpZ3VyYXRpb24gb3B0aW9uJiMzOTtzIGJlaGF2aW9yIGlzIGNsZWFybHkgdGllZCB0byBzb21ldGhpbmcgZWxzZSDigJMgbG9va3MgbGlrZSBgVVNCX0dBREdFVGAgaXMgdGhlIGNvbnRyb2xsaW5nIGZhY3RvciBoZXJlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBpdCYjMzk7cyBsaWtlbHkgdGhlIHBhcmVudCBtZW51IGl0ZW0uIEkgbmVlZCB0byBjb25maXJtIHRoYXQgcmVsYXRpb25zaGlwLiBUaGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIHRoZSBtZW51IHN0cnVjdHVyZSBhbmQgdmVyaWZ5IHRoZSBkZXBlbmRlbmN5IHBhdGguIExldCYjMzk7cyB0cmFjZSBpdCBiYWNrIGFuZCBwaW5wb2ludCBleGFjdGx5IHdoZXJlIHRoaXMgY29uZGl0aW9uYWwgbG9naWMgb3JpZ2luYXRlcy4gVGhhdCYjMzk7cyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGZ1bGwgcGljdHVyZSBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE0OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21lbnVjb25maWcgVVNCX0dBREdFVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTYtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoxNzptZW51Y29uZmlnIFVTQl9HQURHRVRcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTE4LVx0dHJpc3RhdGUgXCYjMzQ7VVNCIEdhZGdldCBTdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTQ6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDA1MwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDEyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFVTQiBHYWRnZXQgRmlsZSBTeXN0ZW0gSW1wbGVtZW50YXRpb24qKgoKT2theSwgc28gSSBzZWUgdGhpcyBwYXRjaCBpcyBkZWFsaW5nIHdpdGggYFVTQl9HQURHRVRgIGFuZCBgVVNCX0dBREdFVEZTYCwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgZGl2aW5nIGludG8gdGhlIGxlZ2FjeSBpbm9kZSBpbXBsZW1lbnRhdGlvbiBpbiBgZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jYC4gVGhhdCBzZWVtcyBsaWtlIHRoZSByaWdodCBwbGFjZSB0byBiZWdpbiwgdG8gdW5kZXJzdGFuZCB0aGUgY29yZSBmdW5jdGlvbnMgYmVpbmcgbW9kaWZpZWQuIFRoZSBkZXNjcmlwdGlvbiBtZW50aW9ucyBjaGFuZ2VzIHRvIGBkZXN0cm95X2VwX2ZpbGVzYCwgYGdhZGdldGZzX2NyZWF0ZV9maWxlYCwgYW5kIHRoZSBhZGRpdGlvbiBvZiBgZ2FkZ2V0ZnNfZXZpY3RfaW5vZGVgLiBUaGlzIGltbWVkaWF0ZWx5IHRlbGxzIG1lIHdoYXQgYXJlYXMgYXJlIGJlaW5nIHRvdWNoZWQgYW5kIHdoYXQgdGhlIHBhdGNoIGlzIHRyeWluZyB0byBhY2hpZXZlLgoKTXkgbmV4dCBzdGVwIGlzIHRvIHRyYWNlIHRoZSBBUEkgZW50cnkgcG9pbnRzIHRvIHNlZSBob3cgdGhlc2UgZnVuY3Rpb25zIGZpdCBpbnRvIHRoZSBsYXJnZXIgcGljdHVyZS4gSSBzdXNwZWN0IHRoYXQgYGdhZGdldGZzX2NyZWF0ZV9maWxlYCB3aWxsIGJlIGNhbGxlZCBmcm9tIHNvbWV3aGVyZSBsaWtlIGBnYWRnZXRmc19maWxsX3N1cGVyYCwgb3Igc29tZXRoaW5nIHNpbWlsYXIgZHVyaW5nIHRoZSBmaWxlc3lzdGVtIGluaXRpYWxpemF0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCBieSBjaGVja2luZyB0aGUgc291cmNlIGNvZGUgb2YgYGRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuY2AsIGxpa2VseSBleGFtaW5pbmcgdGhlIGZ1bmN0aW9uIGNhbGxlcnMgYW5kIG90aGVyIHJlbGV2YW50IGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE0OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2dhZGdldGZzX2NyZWF0ZV9maWxlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xNTU0PXN0YXRpYyB2b2lkIGRlc3Ryb3lfZXBfZmlsZXMgKHN0cnVjdCBkZXZfZGF0YSAqZGV2KVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xNTg3LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjE1ODg6c3RhdGljIGludCBnYWRnZXRmc19jcmVhdGVfZmlsZSAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgY2hhciBjb25zdCAqbmFtZSxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xNTg5LVx0XHR2b2lkICpkYXRhLCBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zICpmb3BzKTtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MTU5MT1zdGF0aWMgaW50IGFjdGl2YXRlX2VwX2ZpbGVzIChzdHJ1Y3QgZGV2X2RhdGEgKmRldilcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTYxNy1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxNjE4Olx0XHRlcnIgPSBnYWRnZXRmc19jcmVhdGVfZmlsZSAoZGV2LVx1MDAzZXNiLCBkYXRhLVx1MDAzZW5hbWUsXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTYxOS1cdFx0XHRcdGRhdGEsIFx1MDAyNmVwX2lvX29wZXJhdGlvbnMpO1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xOTYzPWdhZGdldGZzX21ha2VfaW5vZGUgKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE5ODMtICovXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTk4NDpzdGF0aWMgaW50IGdhZGdldGZzX2NyZWF0ZV9maWxlIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBjaGFyIGNvbnN0ICpuYW1lLFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE5ODUtXHRcdHZvaWQgKmRhdGEsIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgKmZvcHMpXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTIwMjM9Z2FkZ2V0ZnNfZmlsbF9zdXBlciAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzX2NvbnRleHQgKmZjKVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0yMDY2LVx0ZGV2LVx1MDAzZXNiID0gc2I7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MjA2NzpcdHJjID0gZ2FkZ2V0ZnNfY3JlYXRlX2ZpbGUoc2IsIENISVAsIGRldiwgXHUwMDI2ZXAwX29wZXJhdGlvbnMpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTIwNjgtXHRpZiAocmMpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTQ6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDk4NQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDYwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRoZSBleHBlcnQsIHRoaW5raW5nIHRocm91Z2ggdGhpczoKCioqRGVsdmluZyBpbnRvIHRoZSBHYWRnZXRGUyBGaWxlIENyZWF0aW9uIFBhdGgqKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gdHJhY2UgdGhlIGNyZWF0aW9uIG9mIGZpbGVzIHdpdGhpbiB0aGUgYGdhZGdldGZzYCBmaWxlc3lzdGVtLiAgTXkgaW1tZWRpYXRlIHBvaW50IG9mIGVudHJ5IHNlZW1zIHRvIGJlIGBnYWRnZXRmc19jcmVhdGVfZmlsZWAg4oCTIHRoYXQmIzM5O3MgdGhlIG9idmlvdXMgZnVuY3Rpb24gY2FsbCwgYnV0IHdoZXJlIGFyZSB3ZSAqY29taW5nKiBmcm9tPyBUaGUgbm90ZXMgc2F5IGl0JiMzOTtzIGNhbGxlZCBmcm9tIGJvdGggYGFjdGl2YXRlX2VwX2ZpbGVzYCBhbmQgYGdhZGdldGZzX2ZpbGxfc3VwZXJgLiBgZ2FkZ2V0ZnNfZmlsbF9zdXBlcmAgaXMgbGlrZWx5IGR1cmluZyB0aGUgc3VwZXJibG9jayBzZXR1cCwgYnV0IGBhY3RpdmF0ZV9lcF9maWxlc2AgaXMgbW9yZSBpbnRyaWd1aW5nIGFuZCBsaWtlbHkgcmVzcG9uc2libGUgZm9yIGFjdHVhbGx5IG1ha2luZyB0aGUgZmlsZXMgdmlzaWJsZSB0byB0aGUgdXNlci4KCk5vdywgSSBzZWVtIHRvIHZhZ3VlbHkgcmVjYWxsIGBhY3RpdmF0ZV9lcF9maWxlc2AgYmVpbmcgY29ubmVjdGVkIHRvIGBnYWRnZXRmc19iaW5kYCwgYnV0IEkgc2hvdWxkIHZlcmlmeSB0aGlzIGNvbm5lY3Rpb24gdG8gbWFrZSBzdXJlIEkgYW0gb24gdGhlIHJpZ2h0IHRyYWNrLiBNeSBuZXh0IHN0ZXAgc2hvdWxkIGJlIHRvIGRvdWJsZS1jaGVjayB0aGUgY2FsbCBjaGFpbiBieSBpbnZlc3RpZ2F0aW5nIHRoZSBzb3VyY2UgY29kZSBmb3IgYGFjdGl2YXRlX2VwX2ZpbGVzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTQ6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YWN0aXZhdGVfZXBfZmlsZXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTE1ODg9c3RhdGljIGludCBnYWRnZXRmc19jcmVhdGVfZmlsZSAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgY2hhciBjb25zdCAqbmFtZSxcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTU5MC1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxNTkxOnN0YXRpYyBpbnQgYWN0aXZhdGVfZXBfZmlsZXMgKHN0cnVjdCBkZXZfZGF0YSAqZGV2KVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE1OTIte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xNjY2PXN0YXRpYyBpbnQgZ2FkZ2V0ZnNfYmluZChzdHJ1Y3QgdXNiX2dhZGdldCAqZ2FkZ2V0LFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xNjg5LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjE2OTA6XHRpZiAoYWN0aXZhdGVfZXBfZmlsZXMgKGRldikgXHUwMDNjIDApXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTY5MS1cdFx0Z290byBlbm9tZW07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE0OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU1NDQKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA2MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCioqVW5kZXJzdGFuZGluZyB0aGUgR2FkZ2V0ZnMgRHJpdmVyIGFuZCBVc2VyLVNwYWNlIEludGVyYWN0aW9uKioKClJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgZ2FkZ2V0ZnNgIGltcGxlbWVudGF0aW9uLCBhbmQgZmlyc3QgdGhpbmcmIzM5O3MgZmlyc3Q6IGBnYWRnZXRmc19iaW5kYC4gVGhhdCYjMzk7cyB0aGUga2V5IGZ1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciBiaW5kaW5nIHRoZSBkcml2ZXIsIGVzc2VudGlhbGx5IGluaXRpYWxpemluZyBpdCBhbmQgZ2V0dGluZyBpdCByZWFkeSB0byBpbnRlcmZhY2Ugd2l0aCB0aGUgaGFyZHdhcmUuIFRoZW4sIHdlIGhhdmUgYGdhZGdldGZzX2ZpbGxfc3VwZXJgLiBTb3VuZHMgbGlrZSB0aGF0JiMzOTtzIHRyaWdnZXJlZCBkdXJpbmcgdGhlIG1vdW50aW5nIHByb2Nlc3Mg4oCTIHRoYXQgbWFrZXMgcGVyZmVjdCBzZW5zZS4gSXQgd291bGQgaGFuZGxlIHRoZSBjcmVhdGlvbiBhbmQgaW5pdGlhbGl6YXRpb24gb2YgdGhlIHN1cGVyYmxvY2sgZm9yIHRoZSBmaWxlc3lzdGVtLiBOb3cgdGhlIGludGVyZXN0aW5nIHBhcnQsIGhvdyBkb2VzIHRoaXMgaW50ZXJhY3Qgd2l0aCB1c2VyIHNwYWNlPyBMZXQmIzM5O3Mgc2VlLi4uIGFoLCBoZXJlIHdlIGFyZTogYGVwX2lvX29wZXJhdGlvbnNgIGFuZCBgZXAwX29wZXJhdGlvbnNgLiBUaGVzZSBtdXN0IGJlIHRoZSBmdW5kYW1lbnRhbCBzdHJ1Y3R1cmVzIHRoYXQgZXhwb3NlIHRoZSBmdW5jdGlvbmFsaXR5IHRvIHVzZXItc3BhY2UuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gdGhlc2Ugc3RydWN0dXJlcyB0byB1bmRlcnN0YW5kIGV4YWN0bHkgKndoYXQqIG9wZXJhdGlvbnMgYXJlIGV4cG9zZWQg4oCTIHJlYWQsIHdyaXRlLCBjb250cm9sLCBldGMuLCBhbmQgaG93IHRoZXkmIzM5O3JlIG1hcHBlZCB0byB0aGUgc3BlY2lmaWMgZ2FkZ2V0IGZ1bmN0aW9uYWxpdHkuIFRoaXMgaXMgd2hlcmUgdGhlIG1hZ2ljIGhhcHBlbnMsIGFuZCBob3cgdXNlcnNwYWNlIGFwcGxpY2F0aW9ucyBjYW4gYWN0dWFsbHkgKnVzZSogdGhlIHZpcnR1YWwgVVNCIGRldmljZS4gRXhjZWxsZW50LiBUaGlzIGdpdmVzIG1lIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgYW5hbHlzaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE0OjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2VwX2lvX29wZXJhdGlvbnMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTYzOT1lcF93cml0ZV9pdGVyKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tKVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy03MDEtLyogdXNlZCBhZnRlciBlbmRwb2ludCBjb25maWd1cmF0aW9uICovXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6NzAyOnN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGVwX2lvX29wZXJhdGlvbnMgPSB7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtNzAzLVx0Lm93bmVyID1cdFRISVNfTU9EVUxFLFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xNTkxPXN0YXRpYyBpbnQgYWN0aXZhdGVfZXBfZmlsZXMgKHN0cnVjdCBkZXZfZGF0YSAqZGV2KVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xNjE4LVx0XHRlcnIgPSBnYWRnZXRmc19jcmVhdGVfZmlsZSAoZGV2LVx1MDAzZXNiLCBkYXRhLVx1MDAzZW5hbWUsXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTYxOTpcdFx0XHRcdGRhdGEsIFx1MDAyNmVwX2lvX29wZXJhdGlvbnMpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE2MjAtXHRcdGlmIChlcnIpXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTIwMDg9c3RhdGljIHZvaWQgZ2FkZ2V0ZnNfZXZpY3RfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSlcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMjAxMS1cdGNsZWFyX2lub2RlKGlub2RlKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoyMDEyOlx0aWYgKGlub2RlLVx1MDAzZWlfcHJpdmF0ZSBcdTAwMjZcdTAwMjYgaW5vZGUtXHUwMDNlaV9mb3AgPT0gXHUwMDI2ZXBfaW9fb3BlcmF0aW9ucylcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0yMDEzLVx0XHRwdXRfZXAoaW5vZGUtXHUwMDNlaV9wcml2YXRlKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTQ6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjI5MAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDY3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRoZSBleHBlcnQ6CgoqKkRlbHZpbmcgaW50byBFbmRwb2ludCBPcGVyYXRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGxvdy1sZXZlbCBJL08gb3BlcmF0aW9ucyBhbmQgSSYjMzk7bSBsb29raW5nIGF0IGBlcF9pb19vcGVyYXRpb25zYC4gSXQgc2VlbXMgbGlrZSB3ZSBoYXZlIHRoZSBzdGFuZGFyZCBzdWl0ZSBpbiB0aGVyZTogYGVwX3dyaXRlX2l0ZXJgLCBgZXBfcmVhZF9pdGVyYCBmb3IgaXRlcmF0aXZlIEkvTywgdGhlbiB0aGUgdXN1YWwgc3VzcGVjdHMsIGBlcF9vcGVuYCwgYGVwX3JlbGVhc2VgLCBgZXBfaW9jdGxgLCBgZXBfcG9sbGAsIGFuZCBmaW5hbGx5IHRoZSBhc3luY2hyb25vdXMgb3BlcmF0aW9ucyBgZXBfYWlvX3JlYWRgIGFuZCBgZXBfYWlvX3dyaXRlYC4gVGhhdCYjMzk7cyBhIHNvbGlkIGZvdW5kYXRpb24uIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgdGllcyBpbnRvIHRoZSBzcGVjaWZpY3Mgb2YgdmFyaW91cyBlbmRwb2ludHMuIExldCBtZSBzaGlmdCBteSBmb2N1cyB0byBgZXAwX29wZXJhdGlvbnNgIHRvIHN0YXJ0IGV4cGxvcmluZyBob3cgdGhpcyBnZW5lcmFsIHN0cnVjdHVyZSBpcyBpbnN0YW50aWF0ZWQgaW4gYSBjb25jcmV0ZSBleGFtcGxlLCBpbiB0aGlzIGNhc2UsIHRoZSBmaXJzdCBlbmRwb2ludC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTQ6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZXAwX29wZXJhdGlvbnMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTE5MTI9Z2FkZ2V0X2Rldl9vcGVuIChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmQpXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE5MjgtXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTkyOTpzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBlcDBfb3BlcmF0aW9ucyA9IHtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xOTMwLVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0yMDIzPWdhZGdldGZzX2ZpbGxfc3VwZXIgKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBmc19jb250ZXh0ICpmYylcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMjA2Ni1cdGRldi1cdTAwM2VzYiA9IHNiO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjIwNjc6XHRyYyA9IGdhZGdldGZzX2NyZWF0ZV9maWxlKHNiLCBDSElQLCBkZXYsIFx1MDAyNmVwMF9vcGVyYXRpb25zKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0yMDY4LVx0aWYgKHJjKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE0OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY4MzIKCQkJCQkJCW91dHB1dDogNTMKCQkJCQkJCXRob3VnaHRzOiAyMDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRGVidWdnaW5nIGEgVVNCIEdhZGdldCBFbmRwb2ludCBJc3N1ZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBidWcgcmVwb3J0IHJlZ2FyZGluZyBVU0IgZ2FkZ2V0IGVuZHBvaW50cywgYW5kIGl0IHNlZW1zIGxpa2UgdGhlIGNvcmUgb2YgdGhlIHByb2JsZW0gbGllcyB3aXRoIGhvdyBlbmRwb2ludHMgYXJlIG1hbmFnZWQgYW5kIHJlbGVhc2VkLiBTcGVjaWZpY2FsbHksIGl0IGxvb2tzIGxpa2UgYHB1dF9lcGAgaXMgYmVpbmcgY2FsbGVkIHByZW1hdHVyZWx5IGluIGBkZXN0cm95X2VwX2ZpbGVzYCwgcG90ZW50aWFsbHkgd2hpbGUgdGhlIGlub2RlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZW5kcG9pbnQgaXMgc3RpbGwgYWN0aXZlLiBUaGUgcHJvcG9zZWQgZml4LCB3aGljaCBzZWVtcyByZWFzb25hYmxlLCBpbnZvbHZlcyBtb3ZpbmcgdGhlIGBwdXRfZXBgIGNhbGwgdG8gYGdhZGdldGZzX2V2aWN0X2lub2RlYC4gVGhpcyBtYWtlcyBzZW5zZTsgaXQgZW5zdXJlcyB0aGUgZW5kcG9pbnQgaXMgcmVsZWFzZWQgd2hlbiB0aGUgaW5vZGUgaXMgdHJ1bHkgYmVpbmcgZXZpY3RlZC4KCk15IGltbWVkaWF0ZSBmb2N1cywgdGhlcmVmb3JlLCBuZWVkcyB0byBiZSBvbiB1bmRlcnN0YW5kaW5nIHRoZSBsaWZlY3ljbGUgYW5kIGRlcGVuZGVuY2llcyBvZiB0aGVzZSBjb21wb25lbnRzLiBJJiMzOTtsbCBuZWVkIHRvIHNjcnV0aW5pemUgaG93IGBnYWRnZXRmc19maWxsX3N1cGVyYCwgYGdhZGdldGZzX2JpbmRgLCBgZ2FkZ2V0ZnNfZXZpY3RfaW5vZGVgLCBgZ2FkZ2V0ZnNfY3JlYXRlX2ZpbGVgLCBgZGVzdHJveV9lcF9maWxlc2AsIGFuZCBgYWN0aXZhdGVfZXBfZmlsZXNgIGludGVyYWN0LiBUaGVzZSBmdW5jdGlvbnMgYXJlIGtleSB0byBmaWxlc3lzdGVtIGluaXRpYWxpemF0aW9uLCBiaW5kaW5nIGVuZHBvaW50cywgaW5vZGUgbWFuYWdlbWVudCwgZmlsZSBjcmVhdGlvbiwgZW5kcG9pbnQgZmlsZSBkZXN0cnVjdGlvbiwgYW5kIGVuZHBvaW50IGFjdGl2YXRpb24sIHJlc3BlY3RpdmVseS4KCkJleW9uZCB0aGUgY29yZSBmaWxlc3lzdGVtIG9wZXJhdGlvbnMsIEkmIzM5O2xsIGFsc28gbmVlZCB0byBjaGVjayB0aGUgYmVoYXZpb3Igb2YgdGhlIGVuZHBvaW50LXNwZWNpZmljIG9wZXJhdGlvbnMsIGVzcGVjaWFsbHkgdGhlIG9wZW4vcmVsZWFzZSBjeWNsZXM6IGBlcF9vcGVuYCwgYGVwX3JlbGVhc2VgLCBgZ2FkZ2V0X2Rldl9vcGVuYCwgYW5kIGBnYWRnZXRfZGV2X3JlbGVhc2VgLiBJdCYjMzk7cyBhIGdvb2QgZmlyc3Qgc3RlcCB0byBqdXN0IGRvdWJsZS1jaGVjayB0aGUgbmFtaW5nIGNvbnZlbnRpb25zIGFuZCBsb2dpYyB3aXRoaW4gdGhlc2Ugcm91dGluZXMuIFRoZXkgYXJlIGNyaXRpY2FsIHRvIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBidWcgY291bGQgYXJpc2UgaW4gdGhlIGZpcnN0IHBsYWNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxNDoxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtlcF9vcGVufGVwX3JlbGVhc2V8Z2FkZ2V0X2Rldl9vcGVufGdhZGdldF9kZXZfcmVsZWFzZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9ODE9TU9EVUxFX0xJQ0VOU0UgKFwmIzM0O0dQTFwmIzM0Oyk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtODItXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6ODM6c3RhdGljIGludCBlcF9vcGVuKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmlsZSAqKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy04NC1cbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MzgwPXN0YXRpYyBpbnRcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzozODE6ZXBfcmVsZWFzZSAoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZkKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTM4Mi17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTcwMj1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBlcF9pb19vcGVyYXRpb25zID0ge1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy03MDQtXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6NzA1Olx0Lm9wZW4gPVx0XHRlcF9vcGVuLFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjcwNjpcdC5yZWxlYXNlID1cdGVwX3JlbGVhc2UsXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtNzA3LVx0LnVubG9ja2VkX2lvY3RsID0gZXBfaW9jdGwsXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTgxNz1zdGF0aWMgaW50XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6ODE4OmVwX29wZW4gKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmZClcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy04MTkte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xOTExPXN0YXRpYyBpbnRcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxOTEyOmdhZGdldF9kZXZfb3BlbiAoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZkKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE5MTMte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xOTI5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGVwMF9vcGVyYXRpb25zID0ge1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE5MzAtXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTkzMTpcdC5vcGVuID1cdFx0Z2FkZ2V0X2Rldl9vcGVuLFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE5MzItXHQucmVhZCA9XHRcdGVwMF9yZWFkLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxNDoxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3OTg0CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGNyYWZ0ZWQgd2l0aCB0aGUgZXhwZWN0YXRpb24gdGhhdCBJJiMzOTttIGRpc2N1c3NpbmcgdGhpcyB3aXRoIGEgZmVsbG93IGV4cGVydDoKCioqSW50ZXJuYWwgRGlhZ25vc3RpY3M6IFJlbGVhc2UgVmVyc2lvbiB2cy4gT3BlcmF0aW9uYWwgQ29tcG9uZW50cyoqCgpBbHJpZ2h0LCBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGNvZGUgYW5kIG15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGNvbXBhcmUgdGhlIGBlcF9yZWxlYXNlYCBhbmQgYGdhZGdldF9kZXZfcmVsZWFzZWAgdmFyaWFibGVzLiBJJiMzOTttIGV4cGVjdGluZyBgZ2FkZ2V0X2Rldl9yZWxlYXNlYCB0byBiZSBhdmFpbGFibGUuIEh1aCwgaXQgbG9va3MgbGlrZSB0aGF0IHBhcnRpY3VsYXIgdmFyaWFibGUgaXNuJiMzOTt0IGRlZmluZWQgaGVyZS4gVGhhdCYjMzk7cyB1bmV4cGVjdGVkLiBBbHJpZ2h0LCBiYWNrIHRvIGJhc2ljcy4gR2l2ZW4gdGhlIG1pc3NpbmcgcmVsZWFzZSB2YXJpYWJsZSwgbGV0JiMzOTtzIGRvdWJsZS1jaGVjayB0aGUgYGVwMF9vcGVyYXRpb25zYC4gV2UgbmVlZCB0byBkZXRlcm1pbmUgaWYgYW4gYWx0ZXJuYXRlIG9iamVjdCBvciBtZXRob2QgaGFzIGJlZW4gdXNlZC4gVGhlIHJlbGVhc2UgdmFyaWFibGUgd291bGQgYmUgdXNlZCBmb3IgbWVtb3J5IG1hbmFnZW1lbnQgYW5kIGNsZWFudXAuIFdlIG11c3QgZW5zdXJlIHRoYXQgdGhlIG9iamVjdCB0aGF0IGlzIGJlaW5nIHV0aWxpemVkIGlzIGhhbmRsZWQgY29ycmVjdGx5LiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCB0aGF0IGFuZCBzZWUgd2hlcmUgd2UgYXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxNDoxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE5MjUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTkyNTpcdFx0c3Bpbl91bmxvY2tfaXJxKFx1MDAyNmRldi1cdTAwM2Vsb2NrKTtcbjE5MjY6XHRcdHJldHVybiB2YWx1ZTtcbjE5Mjc6XHR9XG4xOTI4Olx0XG4xOTI5Olx0c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZXAwX29wZXJhdGlvbnMgPSB7XG4xOTMwOlx0XG4xOTMxOlx0XHQub3BlbiA9XHRcdGdhZGdldF9kZXZfb3BlbixcbjE5MzI6XHRcdC5yZWFkID1cdFx0ZXAwX3JlYWQsXG4xOTMzOlx0XHQud3JpdGUgPVx0ZGV2X2NvbmZpZyxcbjE5MzQ6XHRcdC5mYXN5bmMgPVx0ZXAwX2Zhc3luYyxcbjE5MzU6XHRcdC5wb2xsID1cdFx0ZXAwX3BvbGwsXG4xOTM2Olx0XHQudW5sb2NrZWRfaW9jdGwgPSBnYWRnZXRfZGV2X2lvY3RsLFxuMTkzNzpcdFx0LnJlbGVhc2UgPVx0ZGV2X3JlbGVhc2UsXG4xOTM4Olx0fTtcbjE5Mzk6XHRcbjE5NDA6XHQvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuMTk0MTpcdFxuMTk0MjpcdC8qIEZJTEVTWVNURU0gQU5EIFNVUEVSQkxPQ0sgT1BFUkFUSU9OU1xuMTk0MzpcdCAqXG4xOTQ0Olx0ICogTW91bnRpbmcgdGhlIGZpbGVzeXN0ZW0gY3JlYXRlcyBhIGNvbnRyb2xsZXIgZmlsZSwgdXNlZCBmaXJzdCBmb3JcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTQ6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODUzMgoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDExNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJlbGVhc2UgQ3ljbGUqKgoKT2theSwgaGVyZSB3ZSBnbywgaXQmIzM5O3MgdGhlIGBkZXZfcmVsZWFzZWAgY3ljbGUgYWdhaW4uIFJpZ2h0LCBzbyB0aGF0IG1lYW5zIHRoZSB1c3VhbCBzdXNwZWN0cyBhcmUgbGluZWQgdXA6IGBkZXZfcmVsZWFzZWAsIGBnYWRnZXRfZGV2X29wZW5gLCBgZXBfb3BlbmAsIGBlcF9yZWxlYXNlYCwgZm9sbG93ZWQgYnkgYGdhZGdldGZzX2V2aWN0X2lub2RlYCwgYGdhZGdldGZzX2NyZWF0ZV9maWxlYCwgYGRlc3Ryb3lfZXBfZmlsZXNgLCBhbmQgdGhlbiwgZmluYWxseSwgYGFjdGl2YXRlX2VwX2ZpbGVzYC4gSG9sZCBvbiBhIG1pbnV0ZS4uLiB3YXNuJiMzOTt0IGBnYWRnZXRmc19ldmljdF9pbm9kZWAgYSBzdGF0aWMgZnVuY3Rpb24/IEkgc2VlbSB0byByZW1lbWJlciB0aGF0IGJlaW5nIHRoZSBjYXNlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O3ZlIGdvdCB0aGlzIHJpZ2h0LiBCZXN0IHRvIGRvdWJsZS1jaGVjayB0aGUgaW1wbGVtZW50YXRpb24gZm9yIGBnYWRnZXRmc19ldmljdF9pbm9kZWAsIGl0IHNob3VsZCBiZSBkZWZpbmVkIGluIGBkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmNgLiBHb3R0YSBnbyB2ZXJpZnkgbXkgYXNzdW1wdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTQ6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Z2FkZ2V0ZnNfZXZpY3RfaW5vZGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTE5ODQ9c3RhdGljIGludCBnYWRnZXRmc19jcmVhdGVfZmlsZSAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgY2hhciBjb25zdCAqbmFtZSxcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMjAwNy1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoyMDA4OnN0YXRpYyB2b2lkIGdhZGdldGZzX2V2aWN0X2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUpXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMjAwOS17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTIwMTY9c3RhdGljIGNvbnN0IHN0cnVjdCBzdXBlcl9vcGVyYXRpb25zIGdhZGdldF9mc19vcGVyYXRpb25zID0ge1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0yMDE4LVx0LmRyb3BfaW5vZGUgPVx0aW5vZGVfanVzdF9kcm9wLFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjIwMTk6XHQuZXZpY3RfaW5vZGUgPVx0Z2FkZ2V0ZnNfZXZpY3RfaW5vZGUsXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMjAyMC19O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxNDoxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MTIzCgkJCQkJCQlvdXRwdXQ6IDU0CgkJCQkJCQl0aG91Z2h0czogMTU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlJlZmxlY3Rpbmcgb24gRnVuY3Rpb24gVmlzaWJpbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgb3ZlciB0aGlzIGNvZGUgYW5kIG5vdGljaW5nIHNvbWV0aGluZyBhYm91dCBob3cgdGhlc2UgZnVuY3Rpb25zIGFyZSBkZWNsYXJlZC4gYGdhZGdldGZzX2V2aWN0X2lub2RlYCwgYGdhZGdldGZzX2NyZWF0ZV9maWxlYCwgYGRlc3Ryb3lfZXBfZmlsZXNgLCBgYWN0aXZhdGVfZXBfZmlsZXNgLCBgZXBfb3BlbmAsIGBlcF9yZWxlYXNlYCwgYGdhZGdldF9kZXZfb3BlbmAsIGFuZCBgZGV2X3JlbGVhc2VgLi4uIHRoZXkmIzM5O3JlIGFsbCBkZWNsYXJlZCBhcyBgc3RhdGljYC4gUmlnaHQsIHJpZ2h0LiBUaGF0IG1lYW5zIHRoZXkmIzM5O3JlIG9ubHkgdmlzaWJsZSB3aXRoaW4gdGhpcyBwYXJ0aWN1bGFyIGNvbXBpbGF0aW9uIHVuaXQuIEhtbS4uLgoKQnV0IHRoZW4gSSByZW1lbWJlciB0aGUgaW5zdHJ1Y3Rpb25zLiBUaGUgcHJlZmVyZW5jZSBpcyBmb3Igbm9uLXN0YXRpYyBlbnRyeSBwb2ludHMgd2hlbmV2ZXIgcG9zc2libGUsIGJlY2F1c2UgdGhvc2Ugd2lsbCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgYWZ0ZXIgY29tcGlsYXRpb24uIFRoZSBjb21waWxlciB3aWxsIGlubGluZSBzdGF0aWMgZnVuY3Rpb25zLCBzbyB0aGVyZSBpc24mIzM5O3QgYSB1bmlxdWUgYWRkcmVzcyB0byByZWZlcmVuY2UuIE1ha2VzIHNlbnNlIGZvciBtYWludGFpbmFiaWxpdHksIGRlYnVnZ2luZywgYW5kIHBvdGVudGlhbCBmdXR1cmUgdXNlLgoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZSBpZiB0aGVyZSBhcmUgYW55IG5vbi1zdGF0aWMgYWx0ZXJuYXRpdmVzIGluIGBkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmNgIHRoYXQgY291bGQgc2VydmUgYXMgdGhlc2UgQVBJIGVudHJ5IHBvaW50cy4gVGltZSB0byBkaWcgaW4gYW5kIHJlLWV2YWx1YXRlIHRoaXMgZGVzaWduLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxNDoxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteW2EtekEtWl9dW2EtekEtWjAtOV9dKlxccypcXCgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTc3PXN0YXRpYyBjb25zdCBjaGFyIHNob3J0bmFtZSBbXSA9IFwmIzM0O2dhZGdldGZzXCYjMzQ7O1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTc4LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjc5Ok1PRFVMRV9ERVNDUklQVElPTiAoRFJJVkVSX0RFU0MpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjgwOk1PRFVMRV9BVVRIT1IgKFwmIzM0O0RhdmlkIEJyb3duZWxsXCYjMzQ7KTtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzo4MTpNT0RVTEVfTElDRU5TRSAoXCYjMzQ7R1BMXCYjMzQ7KTtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy04Mi1cbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9Mjk1PXN0YXRpYyBpbnRcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoyOTY6Z2V0X3JlYWR5X2VwICh1bnNpZ25lZCBmX2ZsYWdzLCBzdHJ1Y3QgZXBfZGF0YSAqZXBkYXRhLCBib29sIGlzX3dyaXRlKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTI5Ny17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTMzNT1zdGF0aWMgc3NpemVfdFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjMzNjplcF9pbyAoc3RydWN0IGVwX2RhdGEgKmVwZGF0YSwgdm9pZCAqYnVmLCB1bnNpZ25lZCBsZW4pXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMzM3LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MzgwPXN0YXRpYyBpbnRcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzozODE6ZXBfcmVsZWFzZSAoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZkKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTM4Mi17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTU3OT1zdGF0aWMgc3NpemVfdFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjU4MDplcF9yZWFkX2l0ZXIoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKnRvKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTU4MS17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTYzOD1zdGF0aWMgc3NpemVfdFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjYzOTplcF93cml0ZV9pdGVyKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTY0MC17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTcyNT1zdGF0aWMgc3NpemVfdFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjcyNjplcF9jb25maWcgKHN0cnVjdCBlcF9kYXRhICpkYXRhLCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBsZW4pXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtNzI3LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9ODE3PXN0YXRpYyBpbnRcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzo4MTg6ZXBfb3BlbiAoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZkKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTgxOS17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTkxMj1zdGF0aWMgc3NpemVfdFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjkxMzplcDBfcmVhZCAoc3RydWN0IGZpbGUgKmZkLCBjaGFyIF9fdXNlciAqYnVmLCBzaXplX3QgbGVuLCBsb2ZmX3QgKnB0cilcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy05MTQte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xMDgyPXN0YXRpYyBzdHJ1Y3QgdXNiX2dhZGdldGZzX2V2ZW50ICpcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxMDgzOm5leHRfZXZlbnQgKHN0cnVjdCBkZXZfZGF0YSAqZGV2LCBlbnVtIHVzYl9nYWRnZXRmc19ldmVudF90eXBlIHR5cGUpXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTA4NC17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTExMjQ9c3RhdGljIHNzaXplX3RcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxMTI1OmVwMF93cml0ZSAoc3RydWN0IGZpbGUgKmZkLCBjb25zdCBjaGFyIF9fdXNlciAqYnVmLCBzaXplX3QgbGVuLCBsb2ZmX3QgKnB0cilcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xMTI2LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MTE3OT1zdGF0aWMgaW50XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTE4MDplcDBfZmFzeW5jIChpbnQgZiwgc3RydWN0IGZpbGUgKmZkLCBpbnQgb24pXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTE4MS17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTExOTA9c3RhdGljIGludFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjExOTE6ZGV2X3JlbGVhc2UgKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmZClcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xMTkyLXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MTIxOT1zdGF0aWMgX19wb2xsX3RcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxMjIwOmVwMF9wb2xsIChzdHJ1Y3QgZmlsZSAqZmQsIHBvbGxfdGFibGUgKndhaXQpXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTIyMS17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTEzMDY9c3RhdGljIGludFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjEzMDc6Y29uZmlnX2J1ZiAoc3RydWN0IGRldl9kYXRhICpkZXYsIHU4IHR5cGUsIHVuc2lnbmVkIGluZGV4KVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTEzMDgte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xMzMyPXN0YXRpYyBpbnRcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxMzMzOmdhZGdldGZzX3NldHVwIChzdHJ1Y3QgdXNiX2dhZGdldCAqZ2FkZ2V0LCBjb25zdCBzdHJ1Y3QgdXNiX2N0cmxyZXF1ZXN0ICpjdHJsKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTEzMzQte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xNjM3PXN0YXRpYyB2b2lkXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTYzODpnYWRnZXRmc191bmJpbmQgKHN0cnVjdCB1c2JfZ2FkZ2V0ICpnYWRnZXQpXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTYzOS17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTE3MDU9c3RhdGljIHZvaWRcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxNzA2OmdhZGdldGZzX2Rpc2Nvbm5lY3QgKHN0cnVjdCB1c2JfZ2FkZ2V0ICpnYWRnZXQpXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTcwNy17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTE3MjM9c3RhdGljIHZvaWRcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxNzI0OmdhZGdldGZzX3N1c3BlbmQgKHN0cnVjdCB1c2JfZ2FkZ2V0ICpnYWRnZXQpXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTcyNS17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTE3OTg9c3RhdGljIHNzaXplX3RcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxNzk5OmRldl9jb25maWcgKHN0cnVjdCBmaWxlICpmZCwgY29uc3QgY2hhciBfX3VzZXIgKmJ1Ziwgc2l6ZV90IGxlbiwgbG9mZl90ICpwdHIpXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTgwMC17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTE5MTE9c3RhdGljIGludFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjE5MTI6Z2FkZ2V0X2Rldl9vcGVuIChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmQpXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTkxMy17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTE5NTU9c3RhdGljIHVuc2lnbmVkIGRlZmF1bHRfcGVybSA9IFNfSVJVU1IgfCBTX0lXVVNSO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE5NTYtXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTk1Nzptb2R1bGVfcGFyYW0gKGRlZmF1bHRfdWlkLCB1aW50LCAwNjQ0KTtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxOTU4Om1vZHVsZV9wYXJhbSAoZGVmYXVsdF9naWQsIHVpbnQsIDA2NDQpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjE5NTk6bW9kdWxlX3BhcmFtIChkZWZhdWx0X3Blcm0sIHVpbnQsIDA2NDQpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE5NjAtXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTE5NjI9c3RhdGljIHN0cnVjdCBpbm9kZSAqXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTk2MzpnYWRnZXRmc19tYWtlX2lub2RlIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE5NjQtXHRcdHZvaWQgKmRhdGEsIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgKmZvcHMsXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTIwMjI9c3RhdGljIGludFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjIwMjM6Z2FkZ2V0ZnNfZmlsbF9zdXBlciAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzX2NvbnRleHQgKmZjKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTIwMjQte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0yMTA2PXN0YXRpYyB2b2lkXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MjEwNzpnYWRnZXRmc19raWxsX3NiIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTIxMDgte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0yMTIyPXN0YXRpYyBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSBnYWRnZXRmc190eXBlID0ge1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0yMTI3LX07XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MjEyODpNT0RVTEVfQUxJQVNfRlMoXCYjMzQ7Z2FkZ2V0ZnNcJiMzNDspO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTIxMjktXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTIxMzI9c3RhdGljIGludCBfX2luaXQgZ2FkZ2V0ZnNfaW5pdCAodm9pZClcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMjE0MS19XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MjE0Mjptb2R1bGVfaW5pdCAoZ2FkZ2V0ZnNfaW5pdCk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMjE0My1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0yMTQ0PXN0YXRpYyB2b2lkIF9fZXhpdCBnYWRnZXRmc19jbGVhbnVwICh2b2lkKVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0yMTQ4LX1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoyMTQ5Om1vZHVsZV9leGl0IChnYWRnZXRmc19jbGVhbnVwKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0yMTUwLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxNDoxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjA1OAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDM5MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFVTQiBHYWRnZXQgRmlsZSBTeXN0ZW0gQVBJKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEl0IHNlZW1zIEkgbmVlZCB0byBpZGVudGlmeSB0aGUga2V5IEFQSSBlbnRyeSBwb2ludHMgd2l0aGluIHRoaXMgZ2FkZ2V0ZnMgaW1wbGVtZW50YXRpb24uIE15IGluaXRpYWwgYXNzdW1wdGlvbiB0aGF0IHRoZSBvbmx5IG5vbi1zdGF0aWMgZnVuY3Rpb25zIHdlcmUgYGdhZGdldGZzX2luaXRgIGFuZCBgZ2FkZ2V0ZnNfY2xlYW51cGAgd2FzIGluY29ycmVjdC4gSSYjMzk7bSBzZWVpbmcgYSB3aG9sZSBzbGV3IG9mIHNlZW1pbmdseSBzdGF0aWMgZnVuY3Rpb25zOiBgZ2FkZ2V0ZnNfZmlsbF9zdXBlcmAsIGBnYWRnZXRmc19tYWtlX2lub2RlYCwgYGdhZGdldF9kZXZfb3BlbmAsIGBkZXZfY29uZmlnYCwgYGdhZGdldGZzX3N1c3BlbmRgLCBgZ2FkZ2V0ZnNfZGlzY29ubmVjdGAsIGBnYWRnZXRmc191bmJpbmRgLCBgZ2FkZ2V0ZnNfc2V0dXBgLCBgZXAwX3BvbGxgLCBgZGV2X3JlbGVhc2VgLCBgZXAwX2Zhc3luY2AsIGBlcDBfd3JpdGVgLCBgZXAwX3JlYWRgLCBgZXBfb3BlbmAsIGBlcF9jb25maWdgLCBgZXBfd3JpdGVfaXRlcmAsIGBlcF9yZWFkX2l0ZXJgLCBgZXBfcmVsZWFzZWAsIGBlcF9pb2AsIGFuZCBgZ2V0X3JlYWR5X2VwYC4KClRoZSBpbXBvcnRhbnQgZGlzdGluY3Rpb24gaGVyZSBpcyBhYm91dCBob3cgdGhlc2Ugc3RhdGljIGZ1bmN0aW9ucyBhcmUgdXNlZC4gVGhlIGluc3RydWN0aW9ucyBhcmUgY2xlYXI6IHByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucy4gQWx0aG91Z2ggdGhleSBhcmUgZGVmaW5lZCBhcyBzdGF0aWMsIHRob3NlIHRoYXQgYXJlIHJlZ2lzdGVyZWQgaW4gc3RydWN0dXJlcyBsaWtlIGBmaWxlX29wZXJhdGlvbnNgIGFuZCBgc3VwZXJfb3BlcmF0aW9uc2AgYXJlIGVzc2VudGlhbGx5IEFQSSBlbnRyeSBwb2ludHMgYmVjYXVzZSB0aGVpciBhZGRyZXNzZXMgYXJlIHRha2VuLiBUaGlzIG1lYW5zIHRoZSBjb21waWxlciB3b24mIzM5O3QgaW5saW5lIHRoZW0sIGFuZCB0aGV5JiMzOTtsbCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMuCgpUaGVyZWZvcmUsIHRoZSBvbmVzIEkgbmVlZCB0byBmb2N1cyBvbiwgYW5kIHRoYXQgbGlrZWx5IHJlcHJlc2VudCB0aGUgcmVhbCBBUEkgZW50cnkgcG9pbnRzIG9mIGludGVyZXN0LCBhcmU6CgoqICAgYGdhZGdldGZzX2ZpbGxfc3VwZXJgCiogICBgZ2FkZ2V0ZnNfZXZpY3RfaW5vZGVgCiogICBgZ2FkZ2V0X2Rldl9vcGVuYAoqICAgYGRldl9yZWxlYXNlYAoqICAgYGVwX29wZW5gCiogICBgZXBfcmVsZWFzZWAKCk5vdywgbGV0JiMzOTtzIGRvdWJsZS1jaGVjayB0aGUgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIEkga25vdyBgVVNCX0dBREdFVEZTYCBkZXBlbmRzIG9uIGBVU0JfR0FER0VUYC4gQXJlIHRoZXJlIGFueSBvdGhlciByZXF1aXJlZCBjb25maWd1cmF0aW9ucyB0aGF0IG5lZWQgbXkgYXR0ZW50aW9uPyBJIG5lZWQgdG8gYmUgc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTQ6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9NjU9Y29uZmlnIFVTQl9aRVJPX0hOUFRFU1RcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy02Ni1cdGJvb2wgXCYjMzQ7SE5QIFRlc3QgRGV2aWNlXCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6Njc6XHRkZXBlbmRzIG9uIFVTQl9aRVJPIFx1MDAyNlx1MDAyNiBVU0JfT1RHXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNjgtXHRoZWxwXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTc1PWNvbmZpZyBVU0JfQVVESU9cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy03Ni1cdHRyaXN0YXRlIFwmIzM0O0F1ZGlvIEdhZGdldFwmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjc3Olx0ZGVwZW5kcyBvbiBTTkRcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy03OC1cdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTEwMD1jb25maWcgR0FER0VUX1VBQzFcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0xMDEtXHRib29sIFwmIzM0O1VBQyAxLjBcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzoxMDI6XHRkZXBlbmRzIG9uIFVTQl9BVURJT1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTEwMy1cdGhlbHBcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9MTA3PWNvbmZpZyBHQURHRVRfVUFDMV9MRUdBQ1lcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0xMDgtXHRib29sIFwmIzM0O1VBQyAxLjAgKExlZ2FjeSlcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzoxMDk6XHRkZXBlbmRzIG9uIEdBREdFVF9VQUMxXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMTEwLVx0aGVscFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz0xMTU9Y29uZmlnIFVTQl9FVEhcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0xMTYtXHR0cmlzdGF0ZSBcJiMzNDtFdGhlcm5ldCBHYWRnZXQgKHdpdGggQ0RDIEV0aGVybmV0IHN1cHBvcnQpXCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6MTE3Olx0ZGVwZW5kcyBvbiBORVRcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0xMTgtXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0xNDAtXHQgIFdpdGhpbiB0aGUgVVNCIGRldmljZSwgdGhpcyBnYWRnZXQgZHJpdmVyIGV4cG9zZXMgYSBuZXR3b3JrIGRldmljZVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjE0MTpcdCAgXCYjMzQ7dXNiWFwmIzM0Oywgd2hlcmUgWCBkZXBlbmRzIG9uIHdoYXQgb3RoZXIgbmV0d29ya2luZyBkZXZpY2VzIHlvdSBoYXZlLlxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTE0Mi1cdCAgVHJlYXQgaXQgbGlrZSBhIHR3by1ub2RlIEV0aGVybmV0IGxpbms6ICBob3N0LCBhbmQgZ2FkZ2V0LlxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz0xNTM9Y29uZmlnIFVTQl9FVEhfUk5ESVNcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0xNTQtXHRib29sIFwmIzM0O1JORElTIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzoxNTU6XHRkZXBlbmRzIG9uIFVTQl9FVEhcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0xNTYtXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz0xNzM9Y29uZmlnIFVTQl9FVEhfRUVNXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMTc0LVx0Ym9vbCBcJiMzNDtFdGhlcm5ldCBFbXVsYXRpb24gTW9kZWwgKEVFTSkgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjE3NTpcdGRlcGVuZHMgb24gVVNCX0VUSFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTE3Ni1cdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTE5MD1jb25maWcgVVNCX0dfTkNNXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMTkxLVx0dHJpc3RhdGUgXCYjMzQ7TmV0d29yayBDb250cm9sIE1vZGVsIChOQ00pIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzoxOTI6XHRkZXBlbmRzIG9uIE5FVFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTE5My1cdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTIzNz1jb25maWcgVVNCX0ZVTkNUSU9ORlNfRVRIXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMjM4LVx0Ym9vbCBcJiMzNDtJbmNsdWRlIGNvbmZpZ3VyYXRpb24gd2l0aCBDREMgRUNNIChFdGhlcm5ldClcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzoyMzk6XHRkZXBlbmRzIG9uIFVTQl9GVU5DVElPTkZTIFx1MDAyNlx1MDAyNiBORVRcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yNDAtXHRzZWxlY3QgVVNCX1VfRVRIRVJcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9MjQ3PWNvbmZpZyBVU0JfRlVOQ1RJT05GU19STkRJU1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTI0OC1cdGJvb2wgXCYjMzQ7SW5jbHVkZSBjb25maWd1cmF0aW9uIHdpdGggUk5ESVMgKEV0aGVybmV0KVwmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjI0OTpcdGRlcGVuZHMgb24gVVNCX0ZVTkNUSU9ORlMgXHUwMDI2XHUwMDI2IE5FVFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTI1MC1cdHNlbGVjdCBVU0JfVV9FVEhFUlxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz0yNTU9Y29uZmlnIFVTQl9GVU5DVElPTkZTX0dFTkVSSUNcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yNTYtXHRib29sIFwmIzM0O0luY2x1ZGUgJiMzOTtwdXJlJiMzOTsgY29uZmlndXJhdGlvblwmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjI1NzpcdGRlcGVuZHMgb24gVVNCX0ZVTkNUSU9ORlNcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yNTgtXHRoZWxwXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTI2Mj1jb25maWcgVVNCX01BU1NfU1RPUkFHRVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTI2My1cdHRyaXN0YXRlIFwmIzM0O01hc3MgU3RvcmFnZSBHYWRnZXRcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzoyNjQ6XHRkZXBlbmRzIG9uIEJMT0NLXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMjY1LVx0c2VsZWN0IFVTQl9MSUJDT01QT1NJVEVcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9Mjc5PWNvbmZpZyBVU0JfR0FER0VUX1RBUkdFVFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTI4MC1cdHRyaXN0YXRlIFwmIzM0O1VTQiBHYWRnZXQgVGFyZ2V0IEZhYnJpYyBNb2R1bGVcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzoyODE6XHRkZXBlbmRzIG9uIFRBUkdFVF9DT1JFXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMjgyLVx0c2VsZWN0IFVTQl9MSUJDT01QT1NJVEVcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9MjkxPWNvbmZpZyBVU0JfR19TRVJJQUxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yOTItXHR0cmlzdGF0ZSBcJiMzNDtTZXJpYWwgR2FkZ2V0ICh3aXRoIENEQyBBQ00gYW5kIENEQyBPQkVYIHN1cHBvcnQpXCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6MjkzOlx0ZGVwZW5kcyBvbiBUVFlcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yOTQtXHRzZWxlY3QgVVNCX1VfU0VSSUFMXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTMxNj1jb25maWcgVVNCX01JRElfR0FER0VUXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMzE3LVx0dHJpc3RhdGUgXCYjMzQ7TUlESSBHYWRnZXRcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzozMTg6XHRkZXBlbmRzIG9uIFNORFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTMxOS1cdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTM1MT1jb25maWcgVVNCX0NEQ19DT01QT1NJVEVcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0zNTItXHR0cmlzdGF0ZSBcJiMzNDtDREMgQ29tcG9zaXRlIERldmljZSAoRXRoZXJuZXQgYW5kIEFDTSlcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzozNTM6XHRkZXBlbmRzIG9uIE5FVFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTM1NC1cdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTM3MD1jb25maWcgVVNCX0dfTk9LSUFcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0zNzEtXHR0cmlzdGF0ZSBcJiMzNDtOb2tpYSBjb21wb3NpdGUgZ2FkZ2V0XCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6MzcyOlx0ZGVwZW5kcyBvbiBQSE9ORVRcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzozNzM6XHRkZXBlbmRzIG9uIEJMT0NLXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMzc0LVx0c2VsZWN0IFVTQl9MSUJDT01QT1NJVEVcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9Mzg5PWNvbmZpZyBVU0JfR19BQ01fTVNcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0zOTAtXHR0cmlzdGF0ZSBcJiMzNDtDREMgQ29tcG9zaXRlIERldmljZSAoQUNNIGFuZCBtYXNzIHN0b3JhZ2UpXCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6MzkxOlx0ZGVwZW5kcyBvbiBCTE9DS1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTM5Mi1cdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTQwMz1jb25maWcgVVNCX0dfTVVMVElcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy00MDQtXHR0cmlzdGF0ZSBcJiMzNDtNdWx0aWZ1bmN0aW9uIENvbXBvc2l0ZSBHYWRnZXRcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzo0MDU6XHRkZXBlbmRzIG9uIEJMT0NLIFx1MDAyNlx1MDAyNiBORVRcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy00MDYtXHRzZWxlY3QgVVNCX0dfTVVMVElfQ0RDIGlmICFVU0JfR19NVUxUSV9STkRJU1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz00Mjc9Y29uZmlnIFVTQl9HX01VTFRJX1JORElTXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNDI4LVx0Ym9vbCBcJiMzNDtSTkRJUyAmIzQzOyBDREMgU2VyaWFsICYjNDM7IFN0b3JhZ2UgY29uZmlndXJhdGlvblwmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjQyOTpcdGRlcGVuZHMgb24gVVNCX0dfTVVMVElcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy00MzAtXHRzZWxlY3QgVVNCX0ZfUk5ESVNcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9NDQwPWNvbmZpZyBVU0JfR19NVUxUSV9DRENcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy00NDEtXHRib29sIFwmIzM0O0NEQyBFdGhlcm5ldCAmIzQzOyBDREMgU2VyaWFsICYjNDM7IFN0b3JhZ2UgY29uZmlndXJhdGlvblwmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjQ0MjpcdGRlcGVuZHMgb24gVVNCX0dfTVVMVElcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy00NDMtXHRzZWxlY3QgVVNCX0ZfRUNNXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTQ2OD1jb25maWcgVVNCX0dfREJHUFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTQ2OS1cdHRyaXN0YXRlIFwmIzM0O0VIQ0kgRGVidWcgRGV2aWNlIEdhZGdldFwmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjQ3MDpcdGRlcGVuZHMgb24gVFRZXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNDcxLVx0c2VsZWN0IFVTQl9MSUJDT01QT1NJVEVcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9NDg0PWNvbmZpZyBVU0JfR19EQkdQX1BSSU5US1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjQ4NTpcdGRlcGVuZHMgb24gVVNCX0dfREJHUFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTQ4Ni1cdGJvb2wgXCYjMzQ7cHJpbnRrXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTQ5MD1jb25maWcgVVNCX0dfREJHUF9TRVJJQUxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzo0OTE6XHRkZXBlbmRzIG9uIFVTQl9HX0RCR1BcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy00OTItXHRzZWxlY3QgVVNCX1VfU0VSSUFMXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTUwMT1jb25maWcgVVNCX0dfV0VCQ0FNXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNTAyLVx0dHJpc3RhdGUgXCYjMzQ7VVNCIFdlYmNhbSBHYWRnZXRcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzo1MDM6XHRkZXBlbmRzIG9uIFZJREVPX0RFVlxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTUwNC1cdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE0OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1NTYzCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFVTQiBHYWRnZXRmcyBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGUga2VybmVsIGNvbmZpZyBhbmQgc3BlY2lmaWNhbGx5IGxvb2tpbmcgYXQgYFVTQl9HQURHRVRGU2AuIE15IGluaXRpYWwgb2JzZXJ2YXRpb24gaXMgdGhhdCwgYmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhlc2UgY29uZmlndXJhdGlvbnMgYXJlIHN0cnVjdHVyZWQsIGBVU0JfR0FER0VURlNgIGRvZXNuJiMzOTt0IHNlZW0gdG8gZXhwbGljaXRseSAqZGVwZW5kIG9uKiBhbnl0aGluZyBiZXlvbmQgdGhlIGRlcGVuZGVuY2llcyBhbHJlYWR5IGJha2VkIGludG8gaXRzIHBhcmVudCwgYFVTQl9HQURHRVRgLiBUaGF0JiMzOTtzIGEga2V5IG9ic2VydmF0aW9uLgoKTm93LCBiZWNhdXNlIG9mIHRoYXQgaW5pdGlhbCByZWFkLCBpdCBpcyBpbXBvcnRhbnQgdG8gZHJpbGwgZG93biBhbmQgdmVyaWZ5IHRoaXMgYXNzdW1wdGlvbi4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBkZXBlbmRlbmNpZXMgYXJlIGZvciBgVVNCX0dBREdFVGAuIFVuZGVyc3RhbmRpbmcgYFVTQl9HQURHRVRgJiMzOTtzIGRlcGVuZGVuY2llcyBkaXJlY3RseSB3aWxsIHRlbGwgbWUgaWYgSSBtaXNzZWQgc29tZXRoaW5nIGluIGBVU0JfR0FER0VURlNgJiMzOTtzIGRlcGVuZGVuY2llcy4gSXQmIzM5O3MgdGltZSB0byBkaWcgZGVlcGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxNDoxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXBlbmRzIG9uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9NDk9Y29uZmlnIFVTQl9HQURHRVRfREVCVUdcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTUwLVx0Ym9vbCBcJiMzNDtEZWJ1Z2dpbmcgbWVzc2FnZXMgKERFVkVMT1BNRU5UKVwmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NTE6XHRkZXBlbmRzIG9uIERFQlVHX0tFUk5FTFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNTItXHRoZWxwXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9NjM9Y29uZmlnIFVTQl9HQURHRVRfVkVSQk9TRVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNjQtXHRib29sIFwmIzM0O1ZlcmJvc2UgZGVidWdnaW5nIE1lc3NhZ2VzIChERVZFTE9QTUVOVClcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjY1Olx0ZGVwZW5kcyBvbiBVU0JfR0FER0VUX0RFQlVHXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy02Ni1cdGhlbHBcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz03Nz1jb25maWcgVVNCX0dBREdFVF9ERUJVR19GSUxFU1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNzgtXHRib29sIFwmIzM0O0RlYnVnZ2luZyBpbmZvcm1hdGlvbiBmaWxlcyAoREVWRUxPUE1FTlQpXCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo3OTpcdGRlcGVuZHMgb24gUFJPQ19GU1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctODAtXHRoZWxwXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9ODg9Y29uZmlnIFVTQl9HQURHRVRfREVCVUdfRlNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTg5LVx0Ym9vbCBcJiMzNDtEZWJ1Z2dpbmcgaW5mb3JtYXRpb24gZmlsZXMgaW4gZGVidWdmcyAoREVWRUxPUE1FTlQpXCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo5MDpcdGRlcGVuZHMgb24gREVCVUdfRlNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTkxLVx0aGVscFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTEzMj1jb25maWcgVV9TRVJJQUxfQ09OU09MRVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTMzLVx0Ym9vbCBcJiMzNDtTZXJpYWwgZ2FkZ2V0IGNvbnNvbGUgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MTM0Olx0ZGVwZW5kcyBvbiBVU0JfVV9TRVJJQUxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTEzNS1cdGhlbHBcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0xNDU9Y29uZmlnIFVTQl9MSUJDT01QT1NJVEVcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xNDctXHRzZWxlY3QgQ09ORklHRlNfRlNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjE0ODpcdGRlcGVuZHMgb24gVVNCX0dBREdFVFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTQ5LVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTI0MD1jb25maWcgVVNCX0NPTkZJR0ZTX1NFUklBTFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjQxLVx0Ym9vbCBcJiMzNDtHZW5lcmljIHNlcmlhbCBidWxrIGluL291dFwmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjQyOlx0ZGVwZW5kcyBvbiBVU0JfQ09ORklHRlNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI0MzpcdGRlcGVuZHMgb24gVFRZXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNDQtXHRzZWxlY3QgVVNCX1VfU0VSSUFMXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9MjQ5PWNvbmZpZyBVU0JfQ09ORklHRlNfQUNNXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNTAtXHRib29sIFwmIzM0O0Fic3RyYWN0IENvbnRyb2wgTW9kZWwgKENEQyBBQ00pXCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyNTE6XHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjUyOlx0ZGVwZW5kcyBvbiBUVFlcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI1My1cdHNlbGVjdCBVU0JfVV9TRVJJQUxcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0yNTk9Y29uZmlnIFVTQl9DT05GSUdGU19PQkVYXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNjAtXHRib29sIFwmIzM0O09iamVjdCBFeGNoYW5nZSBNb2RlbCAoQ0RDIE9CRVgpXCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyNjE6XHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjYyOlx0ZGVwZW5kcyBvbiBUVFlcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI2My1cdHNlbGVjdCBVU0JfVV9TRVJJQUxcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0yNjk9Y29uZmlnIFVTQl9DT05GSUdGU19OQ01cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI3MC1cdGJvb2wgXCYjMzQ7TmV0d29yayBDb250cm9sIE1vZGVsIChDREMgTkNNKVwmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjcxOlx0ZGVwZW5kcyBvbiBVU0JfQ09ORklHRlNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI3MjpcdGRlcGVuZHMgb24gTkVUXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNzMtXHRzZWxlY3QgVVNCX1VfRVRIRVJcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0yODE9Y29uZmlnIFVTQl9DT05GSUdGU19FQ01cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI4Mi1cdGJvb2wgXCYjMzQ7RXRoZXJuZXQgQ29udHJvbCBNb2RlbCAoQ0RDIEVDTSlcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI4MzpcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyODQ6XHRkZXBlbmRzIG9uIE5FVFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjg1LVx0c2VsZWN0IFVTQl9VX0VUSEVSXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9MjkzPWNvbmZpZyBVU0JfQ09ORklHRlNfRUNNX1NVQlNFVFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjk0LVx0Ym9vbCBcJiMzNDtFdGhlcm5ldCBDb250cm9sIE1vZGVsIChDREMgRUNNKSBzdWJzZXRcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI5NTpcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyOTY6XHRkZXBlbmRzIG9uIE5FVFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjk3LVx0c2VsZWN0IFVTQl9VX0VUSEVSXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9MzAzPWNvbmZpZyBVU0JfQ09ORklHRlNfUk5ESVNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTMwNC1cdGJvb2wgXCYjMzQ7Uk5ESVNcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjMwNTpcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozMDY6XHRkZXBlbmRzIG9uIE5FVFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzA3LVx0c2VsZWN0IFVTQl9VX0VUSEVSXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9MzE5PWNvbmZpZyBVU0JfQ09ORklHRlNfRUVNXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMjAtXHRib29sIFwmIzM0O0V0aGVybmV0IEVtdWxhdGlvbiBNb2RlbCAoRUVNKVwmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzIxOlx0ZGVwZW5kcyBvbiBVU0JfQ09ORklHRlNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjMyMjpcdGRlcGVuZHMgb24gTkVUXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMjMtXHRzZWxlY3QgVVNCX1VfRVRIRVJcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0zMzU9Y29uZmlnIFVTQl9DT05GSUdGU19QSE9ORVRcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTMzNi1cdGJvb2wgXCYjMzQ7UGhvbmV0IHByb3RvY29sXCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozMzc6XHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzM4Olx0ZGVwZW5kcyBvbiBORVRcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjMzOTpcdGRlcGVuZHMgb24gUEhPTkVUXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNDAtXHRzZWxlY3QgVVNCX1VfRVRIRVJcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0zNDU9Y29uZmlnIFVTQl9DT05GSUdGU19NQVNTX1NUT1JBR0VcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM0Ni1cdGJvb2wgXCYjMzQ7TWFzcyBzdG9yYWdlXCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozNDc6XHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzQ4Olx0ZGVwZW5kcyBvbiBCTE9DS1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzQ5LVx0c2VsZWN0IFVTQl9GX01BU1NfU1RPUkFHRVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTM1Nj1jb25maWcgVVNCX0NPTkZJR0ZTX0ZfTEJfU1NcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM1Ny1cdGJvb2wgXCYjMzQ7TG9vcGJhY2sgYW5kIHNvdXJjZXNpbmsgZnVuY3Rpb24gKGZvciB0ZXN0aW5nKVwmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzU4Olx0ZGVwZW5kcyBvbiBVU0JfQ09ORklHRlNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM1OS1cdHNlbGVjdCBVU0JfRl9TU19MQlxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTM2OT1jb25maWcgVVNCX0NPTkZJR0ZTX0ZfRlNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM3MC1cdGJvb2wgXCYjMzQ7RnVuY3Rpb24gZmlsZXN5c3RlbSAoRnVuY3Rpb25GUylcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM3MTpcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNzItXHRzZWxlY3QgVVNCX0ZfRlNcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0zODE9Y29uZmlnIFVTQl9DT05GSUdGU19GX1VBQzFcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM4Mi1cdGJvb2wgXCYjMzQ7QXVkaW8gQ2xhc3MgMS4wXCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozODM6XHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6Mzg0Olx0ZGVwZW5kcyBvbiBTTkRcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM4NS1cdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9Mzk5PWNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMxX0xFR0FDWVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDAwLVx0Ym9vbCBcJiMzNDtBdWRpbyBDbGFzcyAxLjAgKGxlZ2FjeSBpbXBsZW1lbnRhdGlvbilcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQwMTpcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0MDI6XHRkZXBlbmRzIG9uIFNORFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDAzLVx0c2VsZWN0IFVTQl9MSUJDT01QT1NJVEVcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz00MTI9Y29uZmlnIFVTQl9DT05GSUdGU19GX1VBQzJcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQxMy1cdGJvb2wgXCYjMzQ7QXVkaW8gQ2xhc3MgMi4wXCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0MTQ6XHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDE1Olx0ZGVwZW5kcyBvbiBTTkRcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQxNi1cdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9NDMxPWNvbmZpZyBVU0JfQ09ORklHRlNfRl9NSURJXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00MzItXHRib29sIFwmIzM0O01JREkgZnVuY3Rpb25cJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQzMzpcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0MzQ6XHRkZXBlbmRzIG9uIFNORFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDM1LVx0c2VsZWN0IFVTQl9MSUJDT01QT1NJVEVcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz00NDU9Y29uZmlnIFVTQl9DT05GSUdGU19GX01JREkyXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00NDYtXHRib29sIFwmIzM0O01JREkgMi4wIGZ1bmN0aW9uXCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0NDc6XHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDQ4Olx0ZGVwZW5kcyBvbiBTTkRcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ0OS1cdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9NDU4PWNvbmZpZyBVU0JfQ09ORklHRlNfRl9ISURcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ1OS1cdGJvb2wgXCYjMzQ7SElEIGZ1bmN0aW9uXCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0NjA6XHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDYxLVx0c2VsZWN0IFVTQl9GX0hJRFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTQ2OD1jb25maWcgVVNCX0NPTkZJR0ZTX0ZfVVZDXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00NjktXHRib29sIFwmIzM0O1VTQiBXZWJjYW0gZnVuY3Rpb25cJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ3MDpcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0NzE6XHRkZXBlbmRzIG9uIFZJREVPX0RFVlxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDcyOlx0ZGVwZW5kcyBvbiBWSURFT19ERVZcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ3My1cdHNlbGVjdCBWSURFT0JVRjJfRE1BX1NHXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9NDgxPWNvbmZpZyBVU0JfQ09ORklHRlNfRl9QUklOVEVSXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDgzLVx0c2VsZWN0IFVTQl9GX1BSSU5URVJcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ4NDpcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00ODUtXHRoZWxwXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9NDk1PWNvbmZpZyBVU0JfQ09ORklHRlNfRl9UQ01cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ5Ni1cdGJvb2wgXCYjMzQ7VVNCIEdhZGdldCBUYXJnZXQgRmFicmljXCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0OTc6XHRkZXBlbmRzIG9uIFRBUkdFVF9DT1JFXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0OTg6XHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDk5LVx0c2VsZWN0IFVTQl9MSUJDT01QT1NJVEVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTQ6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg2OTEKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA2MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB1bmRlcnN0YW5kaW5nLCBhc3N1bWluZyBJJiMzOTttIGFuIGV4cGVydCBpbiB0aGlzIGVtYmVkZGVkIHN5c3RlbXMgY29udGV4dC4KCioqVW5kZXJzdGFuZGluZyBVU0IgR2FkZ2V0IENvbmZpZ3VyYXRpb24qKgoKUmlnaHQsIHNvIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggVVNCIEdhZGdldCBmdW5jdGlvbmFsaXR5LCBhbmQgaXQgc2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gVGhlIGNvcmUgb2YgaXQgYWxsLCBgVVNCX0dBREdFVGAsIG5hdHVyYWxseSByZWxpZXMgb24gdGhlIGZvdW5kYXRpb25hbCBgVVNCX1NVUFBPUlRgIOKAkyB0aGF0JiMzOTtzIGp1c3QgYmFzaWMgVVNCIHN1cHBvcnQsIG5vdGhpbmcgc3VycHJpc2luZyB0aGVyZS4gV2UmIzM5O3JlIGNvbmZpZ3VyaW5nIFVTQiBnYWRnZXQgZnVuY3Rpb25hbGl0eS4KClRoZSBrZXkgY29uZmlndXJhdGlvbnMgdG8gZm9jdXMgb24gc2VlbSB0byBiZSBgVVNCX0dBREdFVGAgaXRzZWxmLCBhbmQgYFVTQl9HQURHRVRGU2AuIFRvIGJlIHN1cmUgYWJvdXQgdGhlIHJlbGF0aW9uc2hpcHMsIEkmIzM5O2xsIHF1aWNrbHkgY2hlY2sgdGhlIGRlcGVuZGVuY2llcyB3aXRoaW4gdGhlIGBkcml2ZXJzL3VzYi9LY29uZmlnYCBmaWxlLiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgVVNCX0dBREdFVGAgY29ycmVjdGx5IGRlcGVuZHMgb24gYFVTQl9TVVBQT1JUYCwgYW5kIGNvbmZpcm0gd2hldGhlciBhbnl0aGluZyBlbHNlIGlzIGltcGFjdGVkIGJ5IGVuYWJsaW5nIGBVU0JfR0FER0VUYC4gSSYjMzk7bGwgYWxzbyBzZWUgaWYgdGhlcmUgaXMgYW55IG90aGVyIGNyaXRpY2FsIGluZm9ybWF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxNDoxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZW51Y29uZmlnIFVTQl9HQURHRVQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTYtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoxNzptZW51Y29uZmlnIFVTQl9HQURHRVRcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTE4LVx0dHJpc3RhdGUgXCYjMzQ7VVNCIEdhZGdldCBTdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE0OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5MDQ0CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIHRoZSBVU0IgQ29uZmlndXJhdGlvbiBPcHRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBVU0IgY29uZmlndXJhdGlvbiBhbmQgbmVlZCB0byBjbGFyaWZ5IGEgZGVwZW5kZW5jeS4gTXkgaW5pdGlhbCBodW5jaCBpcyB0aGF0IGBVU0JfR0FER0VUYCByZWxpZXMgb24gYFVTQl9TVVBQT1JUYCwgYW5kIHNpbmNlIGBVU0JfU1VQUE9SVGAgaXMgZGVmaW5lZCBpbiBgZHJpdmVycy91c2IvS2NvbmZpZ2AsIEkgbmVlZCB0byB2ZXJpZnkgdGhpcyByZWxhdGlvbnNoaXAuIE5vdywgSSBzaG91bGQgc2hpZnQgbXkgZm9jdXMgdG8gYGRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnYC4gVGhpcyBpcyB3aGVyZSB0aGUgaW50cmljYWNpZXMgb2YgdGhlIGdhZGdldCBtb2RlIGNvbmZpZ3VyYXRpb25zIHNob3VsZCBiZSBzcGVsbGVkIG91dCwgcGFydGljdWxhcmx5IHRoZSBkZXBlbmRlbmNpZXMgZm9yIGBVU0JfR0FER0VUYC4gSSYjMzk7bGwgZXhwbG9yZSB0aGlzIGZpbGUgdG8gcGlucG9pbnQgKmV4YWN0bHkqIHdoYXQgbmVlZHMgdG8gYmUgZW5hYmxlZCBvciBjb25maWd1cmVkIGFsb25nc2lkZSBgVVNCX0dBREdFVGAuIFVuZGVyc3RhbmRpbmcgdGhlIGNvbXBsZXRlIGNoYWluIG9mIGRlcGVuZGVuY2llcyBpcyBjcml0aWNhbCB0byBwcm9wZXIgVVNCIGZ1bmN0aW9uYWxpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE0OjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0I1xuICAgMzpcdCMgVVNCIEdhZGdldCBzdXBwb3J0IG9uIGEgc3lzdGVtIGludm9sdmVzXG4gICA0Olx0IyAgICAoYSkgYSBwZXJpcGhlcmFsIGNvbnRyb2xsZXIsIGFuZFxuICAgNTpcdCMgICAgKGIpIHRoZSBnYWRnZXQgZHJpdmVyIHVzaW5nIGl0LlxuICAgNjpcdCNcbiAgIDc6XHQjIE5PVEU6ICBHYWRnZXQgc3VwcG9ydCAqKiBET0VTIE5PVCAqKiBkZXBlbmQgb24gaG9zdC1zaWRlIENPTkZJR19VU0IgISFcbiAgIDg6XHQjXG4gICA5Olx0IyAgLSBIb3N0IHN5c3RlbXMgKGxpa2UgUENzKSBuZWVkIENPTkZJR19VU0IgKHdpdGggXCYjMzQ7QVwmIzM0OyBqYWNrcykuXG4gIDEwOlx0IyAgLSBQZXJpcGhlcmFscyAobGlrZSBQREFzKSBuZWVkIENPTkZJR19VU0JfR0FER0VUICh3aXRoIFwmIzM0O0JcJiMzNDsgamFja3MpLlxuICAxMTpcdCMgIC0gU29tZSBzeXN0ZW1zIGhhdmUgYm90aCBraW5kcyBvZiBjb250cm9sbGVycy5cbiAgMTI6XHQjXG4gIDEzOlx0IyBXaXRoIGhlbHAgZnJvbSBhIHNwZWNpYWwgdHJhbnNjZWl2ZXIgYW5kIGEgXCYjMzQ7TWluaS1BQlwmIzM0OyBqYWNrLCBzeXN0ZW1zIHdpdGhcbiAgMTQ6XHQjIGJvdGgga2luZHMgb2YgY29udHJvbGxlciBjYW4gYWxzbyBzdXBwb3J0IFwmIzM0O1VTQiBPbi10aGUtR29cJiMzNDsgKENPTkZJR19VU0JfT1RHKS5cbiAgMTU6XHQjXG4gIDE2Olx0XG4gIDE3Olx0bWVudWNvbmZpZyBVU0JfR0FER0VUXG4gIDE4Olx0XHR0cmlzdGF0ZSBcJiMzNDtVU0IgR2FkZ2V0IFN1cHBvcnRcJiMzNDtcbiAgMTk6XHRcdHNlbGVjdCBVU0JfQ09NTU9OXG4gIDIwOlx0XHRzZWxlY3QgTkxTXG4gIDIxOlx0XHRoZWxwXG4gIDIyOlx0XHQgICBVU0IgaXMgYSBob3N0L2RldmljZSBwcm90b2NvbCwgb3JnYW5pemVkIHdpdGggb25lIGhvc3QgKHN1Y2ggYXMgYVxuICAyMzpcdFx0ICAgUEMpIGNvbnRyb2xsaW5nIHVwIHRvIDEyNyBwZXJpcGhlcmFsIGRldmljZXMuXG4gIDI0Olx0XHQgICBUaGUgVVNCIGhhcmR3YXJlIGlzIGFzeW1tZXRyaWMsIHdoaWNoIG1ha2VzIGl0IGVhc2llciB0byBzZXQgdXA6XG4gIDI1Olx0XHQgICB5b3UgY2FuJiMzOTt0IGNvbm5lY3QgYSBcJiMzNDt0by10aGUtaG9zdFwmIzM0OyBjb25uZWN0b3IgdG8gYSBwZXJpcGhlcmFsLlxuICAyNjpcdFxuICAyNzpcdFx0ICAgTGludXggY2FuIHJ1biBpbiB0aGUgaG9zdCwgb3IgaW4gdGhlIHBlcmlwaGVyYWwuICBJbiBib3RoIGNhc2VzXG4gIDI4Olx0XHQgICB5b3UgbmVlZCBhIGxvdyBsZXZlbCBidXMgY29udHJvbGxlciBkcml2ZXIsIGFuZCBzb21lIHNvZnR3YXJlXG4gIDI5Olx0XHQgICB0YWxraW5nIHRvIGl0LiAgUGVyaXBoZXJhbCBjb250cm9sbGVycyBhcmUgb2Z0ZW4gZGlzY3JldGUgc2lsaWNvbixcbiAgMzA6XHRcdCAgIG9yIGFyZSBpbnRlZ3JhdGVkIHdpdGggdGhlIENQVSBpbiBhIG1pY3JvY29udHJvbGxlci4gIFRoZSBtb3JlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE0OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5Nzc1CgkJCQkJCQlvdXRwdXQ6IDE2MQoJCQkJCQkJdGhvdWdodHM6IDI5NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBVU0IgR2FkZ2V0ZnMgUGF0Y2ggZm9yIEZ1enppbmcgU3VpdGFiaWxpdHkqKgoKT2theSwgc28gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRhcmdldGluZyB0aGUgYFVTQl9HQURHRVRgIGRyaXZlciwgSSBzZWUgdGhlcmUgYXJlIG5vIGRpcmVjdCBkZXBlbmRlbmNpZXMuIFRoaXMgaXMgZ29vZCB0byBrZWVwIGluIG1pbmQsIGFzIGl0IGNvdWxkIG1lYW4gaXQmIzM5O3MgZWFzaWVyIHRvIGlzb2xhdGUuCgpMZXQmIzM5O3MgcXVpY2tseSByZWNhcCB3aGF0IHdlJiMzOTt2ZSBnb3Qgc28gZmFyOiBgV29ydGhGdXp6aW5nYCBpcyBzZXQgdG8gdHJ1ZSwgYW5kIHdlIGhhdmUgYFVTQl9HQURHRVRgIGFuZCBgVVNCX0dBREdFVEZTYCBlbmFibGVkLiBPdXIgaW5pdGlhbCBgRm9jdXNTeW1ib2xzYCBpbmNsdWRlIGBnYWRnZXRmc19maWxsX3N1cGVyYCwgYGdhZGdldGZzX2V2aWN0X2lub2RlYCwgYGdhZGdldF9kZXZfb3BlbmAsIGBkZXZfcmVsZWFzZWAsIGBlcF9vcGVuYCwgYW5kIGBlcF9yZWxlYXNlYC4gVGhlIHJlYXNvbmluZyBnaXZlbiBpcyBzb2xpZCDigJMgdGhpcyBwYXRjaCBzZWVtcyB0byBhZGRyZXNzIGEgcG90ZW50aWFsIHJlZmVyZW5jZSBjb3VudGluZyBvciBtZW1vcnkgbWFuYWdlbWVudCBwcm9ibGVtIGluIHRoZSBVU0IgZ2FkZ2V0ZnMgZHJpdmVyLCBzcGVjaWZpY2FsbHkgYnkgbW92aW5nIGBwdXRfZXBgIGludG8gdGhlIGlub2RlIGV2aWN0aW9uIHBhdGguIFRoZSBmYWN0IHRoYXQgZ2FkZ2V0ZnMgY2FuIGJlIGFjY2Vzc2VkIHRocm91Z2ggYGR1bW15X2hjZGAgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIG1ha2VzIGl0IHZlcnkgYXBwZWFsaW5nIGZvciBmdXp6aW5nLCBnaXZlbiB0aGUgYWNjZXNzaWJpbGl0eS4KCkhvbGQgb24sIEkgc2VlIHRoYXQgYGdhZGdldGZzX2NyZWF0ZV9maWxlYCBoYXMgYWxzbyBiZWVuIG1vZGlmaWVkLiBUaGF0JiMzOTtzIHJlbGV2YW50LiBMZXQmIzM5O3MgYWRkIHRoYXQgdG8gdGhlIGBGb2N1c1N5bWJvbHNgIGxpc3QsIGFsb25nIHdpdGggYGRlc3Ryb3lfZXBfZmlsZXNgLiBXZSBoYXZlIHRvIGNvbnNpZGVyIGhvdyB0aGlzIGFmZmVjdHMgdGhlIGF0dGFjayBzdXJmYWNlLgoKTm93LCBsZXQmIzM5O3MgdXBkYXRlIGBGb2N1c1N5bWJvbHNgOgoKKiAgIGBnYWRnZXRmc19maWxsX3N1cGVyYAoqICAgYGdhZGdldGZzX2NyZWF0ZV9maWxlYAoqICAgYGdhZGdldGZzX2V2aWN0X2lub2RlYAoqICAgYGRlc3Ryb3lfZXBfZmlsZXNgCiogICBgZXBfb3BlbmAKKiAgIGBlcF9yZWxlYXNlYAoqICAgYGdhZGdldF9kZXZfb3BlbmAKKiAgIGBkZXZfcmVsZWFzZWAKCkp1c3QgdG8gZG91YmxlIGNoZWNrLCBJJiMzOTtsbCBxdWlja2x5IHZlcmlmeSBpZiBgZ2FkZ2V0ZnNfY3JlYXRlX2ZpbGVgIGlzIHN0YXRpYy4gWWVzLCBpdCBpcyBzdGF0aWMuIEJ1dCwgaXQgaXMgZmluZS4KCk9rYXksIHRoYXQmIzM5O3MgZXZlcnl0aGluZyBJIG5lZWQuIEkmIzM5O20gc2F0aXNmaWVkLiBMZXQmIzM5O3MgY2FsbCB0aGUgc2V0LXJlc3VsdHMgZnVuY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE0OjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtVU0JfR0FER0VUJiMzNDssCiAgICAmIzM0O1VTQl9HQURHRVRGUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2dhZGdldGZzX2ZpbGxfc3VwZXImIzM0OywKICAgICYjMzQ7Z2FkZ2V0ZnNfY3JlYXRlX2ZpbGUmIzM0OywKICAgICYjMzQ7Z2FkZ2V0ZnNfZXZpY3RfaW5vZGUmIzM0OywKICAgICYjMzQ7ZGVzdHJveV9lcF9maWxlcyYjMzQ7LAogICAgJiMzNDtlcF9vcGVuJiMzNDssCiAgICAmIzM0O2VwX3JlbGVhc2UmIzM0OywKICAgICYjMzQ7Z2FkZ2V0X2Rldl9vcGVuJiMzNDssCiAgICAmIzM0O2Rldl9yZWxlYXNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmVmZXJlbmNlIGNvdW50aW5nIG9yIG1lbW9yeSBtYW5hZ2VtZW50IGlzc3VlIGluIHRoZSBVU0IgZ2FkZ2V0ZnMgZHJpdmVyIGJ5IG1vdmluZyBgcHV0X2VwYCB0byB0aGUgaW5vZGUgZXZpY3Rpb24gcGF0aC4gR2FkZ2V0ZnMgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgZHVtbXlfaGNkLCBtYWtpbmcgaXQgc3VpdGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTQl9HQURHRVQmIzM0OywKICAgICYjMzQ7VVNCX0dBREdFVEZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Z2FkZ2V0ZnNfZmlsbF9zdXBlciYjMzQ7LAogICAgJiMzNDtnYWRnZXRmc19jcmVhdGVfZmlsZSYjMzQ7LAogICAgJiMzNDtnYWRnZXRmc19ldmljdF9pbm9kZSYjMzQ7LAogICAgJiMzNDtkZXN0cm95X2VwX2ZpbGVzJiMzNDssCiAgICAmIzM0O2VwX29wZW4mIzM0OywKICAgICYjMzQ7ZXBfcmVsZWFzZSYjMzQ7LAogICAgJiMzNDtnYWRnZXRfZGV2X29wZW4mIzM0OywKICAgICYjMzQ7ZGV2X3JlbGVhc2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByZWZlcmVuY2UgY291bnRpbmcgb3IgbWVtb3J5IG1hbmFnZW1lbnQgaXNzdWUgaW4gdGhlIFVTQiBnYWRnZXRmcyBkcml2ZXIgYnkgbW92aW5nIGBwdXRfZXBgIHRvIHRoZSBpbm9kZSBldmljdGlvbiBwYXRoLiBHYWRnZXRmcyBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBkdW1teV9oY2QsIG1ha2luZyBpdCBzdWl0YWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE0OjA5OjQxLjY1MTQyOTY1NFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc1NDAwNDM2NDgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlVTQl9HQURHRVRcIixcbiAgICBcIlVTQl9HQURHRVRGU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImdhZGdldGZzX2ZpbGxfc3VwZXJcIixcbiAgICBcImdhZGdldGZzX2NyZWF0ZV9maWxlXCIsXG4gICAgXCJnYWRnZXRmc19ldmljdF9pbm9kZVwiLFxuICAgIFwiZGVzdHJveV9lcF9maWxlc1wiLFxuICAgIFwiZXBfb3BlblwiLFxuICAgIFwiZXBfcmVsZWFzZVwiLFxuICAgIFwiZ2FkZ2V0X2Rldl9vcGVuXCIsXG4gICAgXCJkZXZfcmVsZWFzZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmVmZXJlbmNlIGNvdW50aW5nIG9yIG1lbW9yeSBtYW5hZ2VtZW50IGlzc3VlIGluIHRoZSBVU0IgZ2FkZ2V0ZnMgZHJpdmVyIGJ5IG1vdmluZyBgcHV0X2VwYCB0byB0aGUgaW5vZGUgZXZpY3Rpb24gcGF0aC4gR2FkZ2V0ZnMgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgZHVtbXlfaGNkLCBtYWtpbmcgaXQgc3VpdGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE0OjA5OjQxLjY1MTQzNDczNFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzg3ODY2OTA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZWNjOTVhODU1NTFjODkwYjJkMWYzZTMwMzhmMDU0NWY3YjhlNmE4OFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1bCAzMSAxNDowOTo0MCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmNcXG5pbmRleCBkODdhOGFiNTE1MTA3Li5hMDMwNjI5ODZiZjMxIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuY1xcbisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuY1xcbkBAIC0xNTc5LDggKzE1NzksNiBAQCBzdGF0aWMgdm9pZCBkZXN0cm95X2VwX2ZpbGVzIChzdHJ1Y3QgZGV2X2RhdGEgKmRldilcXG4gXFx0XFx0LyogYnJlYWsgbGluayB0byBkY2FjaGUgKi9cXG4gXFx0XFx0c2ltcGxlX3JlbW92ZV9ieV9uYW1lKGRldi1cXHUwMDNlc2ItXFx1MDAzZXNfcm9vdCwgZXAtXFx1MDAzZW5hbWUsIE5VTEwpO1xcbiBcXG4tXFx0XFx0cHV0X2VwIChlcCk7XFxuLVxcbiBcXHRcXHRzcGluX2xvY2tfaXJxIChcXHUwMDI2ZGV2LVxcdTAwM2Vsb2NrKTtcXG4gXFx0fVxcbiBcXHRzcGluX3VubG9ja19pcnEgKFxcdTAwMjZkZXYtXFx1MDAzZWxvY2spO1xcbkBAIC0xOTk2LDYgKzE5OTQsNyBAQCBzdGF0aWMgaW50IGdhZGdldGZzX2NyZWF0ZV9maWxlIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBjaGFyIGNvbnN0ICpuYW1lLFxcbiBcXG4gXFx0ZGVudHJ5ID0gc2ltcGxlX3N0YXJ0X2NyZWF0aW5nKHNiLVxcdTAwM2VzX3Jvb3QsIG5hbWUpO1xcbiBcXHRpZiAoSVNfRVJSKGRlbnRyeSkpIHtcXG4rXFx0XFx0aW5vZGUtXFx1MDAzZWlfcHJpdmF0ZSA9IE5VTEw7XFxuIFxcdFxcdGlwdXQoaW5vZGUpO1xcbiBcXHRcXHRyZXR1cm4gUFRSX0VSUihkZW50cnkpO1xcbiBcXHR9XFxuQEAgLTIwMDYsOSArMjAwNSwxOCBAQCBzdGF0aWMgaW50IGdhZGdldGZzX2NyZWF0ZV9maWxlIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBjaGFyIGNvbnN0ICpuYW1lLFxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgZ2FkZ2V0ZnNfZXZpY3RfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSlcXG4re1xcbitcXHR0cnVuY2F0ZV9pbm9kZV9wYWdlc19maW5hbChcXHUwMDI2aW5vZGUtXFx1MDAzZWlfZGF0YSk7XFxuK1xcdGNsZWFyX2lub2RlKGlub2RlKTtcXG4rXFx0aWYgKGlub2RlLVxcdTAwM2VpX3ByaXZhdGUgXFx1MDAyNlxcdTAwMjYgaW5vZGUtXFx1MDAzZWlfZm9wID09IFxcdTAwMjZlcF9pb19vcGVyYXRpb25zKVxcbitcXHRcXHRwdXRfZXAoaW5vZGUtXFx1MDAzZWlfcHJpdmF0ZSk7XFxuK31cXG4rXFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3VwZXJfb3BlcmF0aW9ucyBnYWRnZXRfZnNfb3BlcmF0aW9ucyA9IHtcXG4gXFx0LnN0YXRmcyA9XFx0c2ltcGxlX3N0YXRmcyxcXG4gXFx0LmRyb3BfaW5vZGUgPVxcdGlub2RlX2p1c3RfZHJvcCxcXG4rXFx0LmV2aWN0X2lub2RlID1cXHRnYWRnZXRmc19ldmljdF9pbm9kZSxcXG4gfTtcXG4gXFxuIHN0YXRpYyBpbnRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTQ6MDk6NDIuMDQwMDM3MDUxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NzUwMTE4MjEyOTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVVNCX0dBREdFVFwiLFxuICAgIFwiVVNCX0dBREdFVEZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZ2FkZ2V0ZnNfZmlsbF9zdXBlclwiLFxuICAgIFwiZ2FkZ2V0ZnNfY3JlYXRlX2ZpbGVcIixcbiAgICBcImdhZGdldGZzX2V2aWN0X2lub2RlXCIsXG4gICAgXCJkZXN0cm95X2VwX2ZpbGVzXCIsXG4gICAgXCJlcF9vcGVuXCIsXG4gICAgXCJlcF9yZWxlYXNlXCIsXG4gICAgXCJnYWRnZXRfZGV2X29wZW5cIixcbiAgICBcImRldl9yZWxlYXNlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByZWZlcmVuY2UgY291bnRpbmcgb3IgbWVtb3J5IG1hbmFnZW1lbnQgaXNzdWUgaW4gdGhlIFVTQiBnYWRnZXRmcyBkcml2ZXIgYnkgbW92aW5nIGBwdXRfZXBgIHRvIHRoZSBpbm9kZSBldmljdGlvbiBwYXRoLiBHYWRnZXRmcyBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBkdW1teV9oY2QsIG1ha2luZyBpdCBzdWl0YWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZWNjOTVhODU1NTFjODkwYjJkMWYzZTMwMzhmMDU0NWY3YjhlNmE4OFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDMxIDE0OjA5OjQwIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jXG5pbmRleCBkODdhOGFiNTE1MTA3Li5hMDMwNjI5ODZiZjMxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jXG4rKysgYi9kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmNcbkBAIC0xNTc5LDggKzE1NzksNiBAQCBzdGF0aWMgdm9pZCBkZXN0cm95X2VwX2ZpbGVzIChzdHJ1Y3QgZGV2X2RhdGEgKmRldilcbiBcdFx0LyogYnJlYWsgbGluayB0byBkY2FjaGUgKi9cbiBcdFx0c2ltcGxlX3JlbW92ZV9ieV9uYW1lKGRldi1cdTAwM2VzYi1cdTAwM2VzX3Jvb3QsIGVwLVx1MDAzZW5hbWUsIE5VTEwpO1xuIFxuLVx0XHRwdXRfZXAgKGVwKTtcbi1cbiBcdFx0c3Bpbl9sb2NrX2lycSAoXHUwMDI2ZGV2LVx1MDAzZWxvY2spO1xuIFx0fVxuIFx0c3Bpbl91bmxvY2tfaXJxIChcdTAwMjZkZXYtXHUwMDNlbG9jayk7XG5AQCAtMTk5Niw2ICsxOTk0LDcgQEAgc3RhdGljIGludCBnYWRnZXRmc19jcmVhdGVfZmlsZSAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgY2hhciBjb25zdCAqbmFtZSxcbiBcbiBcdGRlbnRyeSA9IHNpbXBsZV9zdGFydF9jcmVhdGluZyhzYi1cdTAwM2VzX3Jvb3QsIG5hbWUpO1xuIFx0aWYgKElTX0VSUihkZW50cnkpKSB7XG4rXHRcdGlub2RlLVx1MDAzZWlfcHJpdmF0ZSA9IE5VTEw7XG4gXHRcdGlwdXQoaW5vZGUpO1xuIFx0XHRyZXR1cm4gUFRSX0VSUihkZW50cnkpO1xuIFx0fVxuQEAgLTIwMDYsOSArMjAwNSwxOCBAQCBzdGF0aWMgaW50IGdhZGdldGZzX2NyZWF0ZV9maWxlIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBjaGFyIGNvbnN0ICpuYW1lLFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuK3N0YXRpYyB2b2lkIGdhZGdldGZzX2V2aWN0X2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUpXG4re1xuK1x0dHJ1bmNhdGVfaW5vZGVfcGFnZXNfZmluYWwoXHUwMDI2aW5vZGUtXHUwMDNlaV9kYXRhKTtcbitcdGNsZWFyX2lub2RlKGlub2RlKTtcbitcdGlmIChpbm9kZS1cdTAwM2VpX3ByaXZhdGUgXHUwMDI2XHUwMDI2IGlub2RlLVx1MDAzZWlfZm9wID09IFx1MDAyNmVwX2lvX29wZXJhdGlvbnMpXG4rXHRcdHB1dF9lcChpbm9kZS1cdTAwM2VpX3ByaXZhdGUpO1xuK31cbitcbiBzdGF0aWMgY29uc3Qgc3RydWN0IHN1cGVyX29wZXJhdGlvbnMgZ2FkZ2V0X2ZzX29wZXJhdGlvbnMgPSB7XG4gXHQuc3RhdGZzID1cdHNpbXBsZV9zdGF0ZnMsXG4gXHQuZHJvcF9pbm9kZSA9XHRpbm9kZV9qdXN0X2Ryb3AsXG4rXHQuZXZpY3RfaW5vZGUgPVx0Z2FkZ2V0ZnNfZXZpY3RfaW5vZGUsXG4gfTtcbiBcbiBzdGF0aWMgaW50XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNDowOTo0Mi4wNDAwMzgzOTFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzEyOTY0MTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFVTQiBHYWRnZXRmcyBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmNgLCBhbmQgaXQgbG9va3MgbGlrZSBhIHRhcmdldGVkIGZpeCBmb3IgYSBwb3RlbnRpYWwgaXNzdWUgaW4gdGhlIFVTQiBnYWRnZXRmcyBzdWJzeXN0ZW0uIFRoZSBjaGFuZ2UgY2VudGVycyBhcm91bmQgaG93IGBlcGAgKGVuZHBvaW50KSBvYmplY3RzIGFyZSBtYW5hZ2VkIGFuZCByZWxlYXNlZC4gU3BlY2lmaWNhbGx5LCB0aGV5J3ZlIHJlbW92ZWQgYSBgcHV0X2VwKGVwKWAgY2FsbCBmcm9tIGBkZXN0cm95X2VwX2ZpbGVzYCwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIEl0IGFsc28gbG9va3MgbGlrZSB0aGV5J3JlIGV4cGxpY2l0bHkgc2V0dGluZyBgaW5vZGUtXHUwMDNlaV9wcml2YXRlID0gTlVMTGAgaW4gYGdhZGdldGZzX2NyZWF0ZV9maWxlYCB3aGVuIGBzaW1wbGVfc3RhcnRfY3JlYXRpbmdgIGZhaWxzLiBUaGF0J3MgZ29vZCBwcmFjdGljZSB0byBwcmV2ZW50IHN0YWxlIHBvaW50ZXJzLlxuXG5DcnVjaWFsbHksIHRoZXkndmUgYWRkZWQgYGdhZGdldGZzX2V2aWN0X2lub2RlYCwgd2hpY2ggY29udGFpbnMgdGhlIGxvZ2ljIHRvIGFjdHVhbGx5IGNhbGwgYHB1dF9lcChpbm9kZS1cdTAwM2VpX3ByaXZhdGUpYCBpZiB0aGUgaW5vZGUncyBwcml2YXRlIGRhdGEgaXMgYW4gZW5kcG9pbnQgYW5kIGl0J3MgYXNzb2NpYXRlZCB3aXRoIHRoZSBlbmRwb2ludCBJL08gb3BlcmF0aW9ucy4gVGhlbiwgdGhhdCBuZXcgZnVuY3Rpb24gaXMgcmVnaXN0ZXJlZCBhcyB0aGUgYC5ldmljdF9pbm9kZWAgb3BlcmF0aW9uIGZvciB0aGUgYGdhZGdldF9mc19vcGVyYXRpb25zYC4gVGhpcyBsb29rcyBsaWtlIGEgZGVmaW5pdGUgc3RlcCBpbiB0aGUgcmlnaHQgZGlyZWN0aW9uLlxuXG5NeSB0YWtlIGlzIHRoYXQgdGhpcyBpcyBsaWtlbHkgYSBmdW5jdGlvbmFsIGZpeCwgYW5kIGl0J3MgYWRkcmVzc2luZyBhIHJlZmVyZW5jZSBjb3VudGluZyBpc3N1ZSBvciBwb3NzaWJseSBhIG1lbW9yeSBsZWFrIG9yIHVzZS1hZnRlci1mcmVlIHNjZW5hcmlvIHJlbGF0ZWQgdG8gaG93IGVuZHBvaW50IG9iamVjdHMgYXJlIGhhbmRsZWQgaW4gZ2FkZ2V0ZnMuIFNpbmNlIGdhZGdldGZzIGlzIGEgdmlhYmxlIHBhdGggaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCB3aXRoIGEgZHVtbXkgSENELCBvciBzaW1pbGFyIHNldHVwcywgdGhpcyBraW5kIG9mIGZpeCBpcyBjcml0aWNhbC5cblxuQWxyaWdodCwgSSdtIHRoaW5raW5nIHdlIG5lZWQgdG8gZnV6eiB0aGlzISBJIG5lZWQgdG8gZGlnIGludG8gYGRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuY2AgYW5kIGZpZ3VyZSBvdXQgd2hhdCBjb25maWd1cmF0aW9uIG9wdGlvbnMgZW5hYmxlIGl0LiBNeSBndWVzcyBpcyBpdCdzIHByb2JhYmx5IHRpZWQgdG8gYENPTkZJR19VU0JfR0FER0VURlNgLCBidXQgSSdsbCBjb25maXJtIHRoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzNjMsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNTMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNDowOTo0Ny4zNTMwMDU1ODJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM2NTYyODgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiVVNCX0dBREdFVEZTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz0xOTA9Y29uZmlnIFVTQl9HX05DTVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTIwNS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6MjA2OmNvbmZpZyBVU0JfR0FER0VURlNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMjA3LVxcdHRyaXN0YXRlIFxcXCJHYWRnZXQgRmlsZXN5c3RlbVxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvTWFrZWZpbGU9MzA9b2JqLSQoQ09ORklHX1VTQl9FVEgpXFx0XFx0Kz0gZ19ldGhlci5vXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9NYWtlZmlsZTozMTpvYmotJChDT05GSUdfVVNCX0dBREdFVEZTKVxcdCs9IGdhZGdldGZzLm9cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L01ha2VmaWxlLTMyLW9iai0kKENPTkZJR19VU0JfRlVOQ1RJT05GUylcXHQrPSBnX2Zmcy5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE0OjA5OjQ3LjM5NjY3Mzg5OVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyOTQ0MjA5MTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgYFVTQl9HQURHRVRGU2AgRGVwZW5kZW5jaWVzIGluIHRoZSBLZXJuZWwgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIGJlZm9yZSBkaXZpbmcgaW50byB0aGUgbWFpbiBpc3N1ZSwgaXQncyBhbHdheXMgYSBnb29kIHByYWN0aWNlIHRvIGV4YW1pbmUgdGhlIGBLY29uZmlnYCBmaWxlcywgZXNwZWNpYWxseSBpbiBhcmVhcyB0aGF0IGhhdmUgYmVlbiBhcm91bmQgZm9yIGEgd2hpbGUuIExldCdzIHNlZSwgbXkgdGhpbmtpbmcgZ29lcyB0byBgZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnYC4gSSdtIHNwZWNpZmljYWxseSBsb29raW5nIGZvciBhbnkgZGVwZW5kZW5jaWVzIHRoYXQgYFVTQl9HQURHRVRGU2AgaGFzLiBUaGlzIHNob3VsZCBzaGVkIGxpZ2h0IG9uIHdoaWNoIG90aGVyIGtlcm5lbCBtb2R1bGVzIG9yIG9wdGlvbnMgbmVlZCB0byBiZSBlbmFibGVkIGZvciBgZ2FkZ2V0ZnNgIHRvIHdvcmsgY29ycmVjdGx5IGFuZCBpdCBnaXZlcyBoaW50cyBpZiBzb21lIHBhcnRzIGFyZSBtYXJrZWQgZm9yIHJlbW92YWwuIEkgd2FudCB0byBidWlsZCBhIGNsZWFyIG1lbnRhbCBwaWN0dXJlIG9mIGFsbCB0aGUgaW1wbGljYXRpb25zLiBUaGlzIHdpbGwgY2xhcmlmeSBob3cgdGhpcyBmZWF0dXJlIGludGVyYWN0cyB3aXRoIHRoZSByZXN0IG9mIHRoZSBVU0IgZ2FkZ2V0IHN1YnN5c3RlbSBpbiBpdHMgY3VycmVudCBzdGF0ZS4gTm8gc3VycHJpc2VzIGxhdGVyLCBob3BlZnVsbHkuIFRpbWUgdG8gZ28gZGlnZ2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzIzNCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE0OjA5OjUwLjY5MTA5ODIxMVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NTU2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjAwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjAwOlxcdFxcdCAgb2Ygc2V2ZXJhbCBldGhlcm5ldCBmcmFtZXMgaW50byBvbmUgVVNCIHRyYW5zZmVyIGFuZCBkaWZmZXJlbnRcXG4gMjAxOlxcdFxcdCAgYWxpZ25tZW50IHBvc3NpYmlsaXRpZXMuXFxuIDIwMjpcXHRcXG4gMjAzOlxcdFxcdCAgU2F5IFxcXCJ5XFxcIiB0byBsaW5rIHRoZSBkcml2ZXIgc3RhdGljYWxseSwgb3IgXFxcIm1cXFwiIHRvIGJ1aWxkIGFcXG4gMjA0OlxcdFxcdCAgZHluYW1pY2FsbHkgbGlua2VkIG1vZHVsZSBjYWxsZWQgXFxcImdfbmNtXFxcIi5cXG4gMjA1OlxcdFxcbiAyMDY6XFx0Y29uZmlnIFVTQl9HQURHRVRGU1xcbiAyMDc6XFx0XFx0dHJpc3RhdGUgXFxcIkdhZGdldCBGaWxlc3lzdGVtXFxcIlxcbiAyMDg6XFx0XFx0aGVscFxcbiAyMDk6XFx0XFx0ICBUaGlzIGRyaXZlciBwcm92aWRlcyBhIGZpbGVzeXN0ZW0gYmFzZWQgQVBJIHRoYXQgbGV0cyB1c2VyIG1vZGVcXG4gMjEwOlxcdFxcdCAgcHJvZ3JhbXMgaW1wbGVtZW50IGEgc2luZ2xlLWNvbmZpZ3VyYXRpb24gVVNCIGRldmljZSwgaW5jbHVkaW5nXFxuIDIxMTpcXHRcXHQgIGVuZHBvaW50IEkvTyBhbmQgY29udHJvbCByZXF1ZXN0cyB0aGF0IGRvbid0IHJlbGF0ZSB0byBlbnVtZXJhdGlvbi5cXG4gMjEyOlxcdFxcdCAgQWxsIGVuZHBvaW50cywgdHJhbnNmZXIgc3BlZWRzLCBhbmQgdHJhbnNmZXIgdHlwZXMgc3VwcG9ydGVkIGJ5XFxuIDIxMzpcXHRcXHQgIHRoZSBoYXJkd2FyZSBhcmUgYXZhaWxhYmxlLCB0aHJvdWdoIHJlYWQoKSBhbmQgd3JpdGUoKSBjYWxscy5cXG4gMjE0OlxcdFxcbiAyMTU6XFx0XFx0ICBTYXkgXFxcInlcXFwiIHRvIGxpbmsgdGhlIGRyaXZlciBzdGF0aWNhbGx5LCBvciBcXFwibVxcXCIgdG8gYnVpbGQgYVxcbiAyMTY6XFx0XFx0ICBkeW5hbWljYWxseSBsaW5rZWQgbW9kdWxlIGNhbGxlZCBcXFwiZ2FkZ2V0ZnNcXFwiLlxcbiAyMTc6XFx0XFxuIDIxODpcXHRjb25maWcgVVNCX0ZVTkNUSU9ORlNcXG4gMjE5OlxcdFxcdHRyaXN0YXRlIFxcXCJGdW5jdGlvbiBGaWxlc3lzdGVtXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNDowOTo1MC42OTEyNjg0NTFaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjUxMDg4NDI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgc2l0dWF0aW9uOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIERlcGVuZGVuY3kqKlxuXG5Pa2F5LCBzbyB0aGlzIGNvbmZpZ3VyYXRpb24gb3B0aW9uJ3MgYmVoYXZpb3IgaXMgY2xlYXJseSB0aWVkIHRvIHNvbWV0aGluZyBlbHNlIOKAkyBsb29rcyBsaWtlIGBVU0JfR0FER0VUYCBpcyB0aGUgY29udHJvbGxpbmcgZmFjdG9yIGhlcmUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGl0J3MgbGlrZWx5IHRoZSBwYXJlbnQgbWVudSBpdGVtLiBJIG5lZWQgdG8gY29uZmlybSB0aGF0IHJlbGF0aW9uc2hpcC4gVGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGRpdmUgaW50byB0aGUgbWVudSBzdHJ1Y3R1cmUgYW5kIHZlcmlmeSB0aGUgZGVwZW5kZW5jeSBwYXRoLiBMZXQncyB0cmFjZSBpdCBiYWNrIGFuZCBwaW5wb2ludCBleGFjdGx5IHdoZXJlIHRoaXMgY29uZGl0aW9uYWwgbG9naWMgb3JpZ2luYXRlcy4gVGhhdCdzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgZnVsbCBwaWN0dXJlIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4MTMsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE0OjA5OjUzLjk0MjM1OTE3NloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTY3MzI3NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtZW51Y29uZmlnIFVTQl9HQURHRVRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xNi1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoxNzptZW51Y29uZmlnIFVTQl9HQURHRVRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xOC1cXHR0cmlzdGF0ZSBcXFwiVVNCIEdhZGdldCBTdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNDowOTo1My45OTIwMzcwNzNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODM4Njc1Njg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVVNCIEdhZGdldCBGaWxlIFN5c3RlbSBJbXBsZW1lbnRhdGlvbioqXG5cbk9rYXksIHNvIEkgc2VlIHRoaXMgcGF0Y2ggaXMgZGVhbGluZyB3aXRoIGBVU0JfR0FER0VUYCBhbmQgYFVTQl9HQURHRVRGU2AsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgZGl2aW5nIGludG8gdGhlIGxlZ2FjeSBpbm9kZSBpbXBsZW1lbnRhdGlvbiBpbiBgZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jYC4gVGhhdCBzZWVtcyBsaWtlIHRoZSByaWdodCBwbGFjZSB0byBiZWdpbiwgdG8gdW5kZXJzdGFuZCB0aGUgY29yZSBmdW5jdGlvbnMgYmVpbmcgbW9kaWZpZWQuIFRoZSBkZXNjcmlwdGlvbiBtZW50aW9ucyBjaGFuZ2VzIHRvIGBkZXN0cm95X2VwX2ZpbGVzYCwgYGdhZGdldGZzX2NyZWF0ZV9maWxlYCwgYW5kIHRoZSBhZGRpdGlvbiBvZiBgZ2FkZ2V0ZnNfZXZpY3RfaW5vZGVgLiBUaGlzIGltbWVkaWF0ZWx5IHRlbGxzIG1lIHdoYXQgYXJlYXMgYXJlIGJlaW5nIHRvdWNoZWQgYW5kIHdoYXQgdGhlIHBhdGNoIGlzIHRyeWluZyB0byBhY2hpZXZlLlxuXG5NeSBuZXh0IHN0ZXAgaXMgdG8gdHJhY2UgdGhlIEFQSSBlbnRyeSBwb2ludHMgdG8gc2VlIGhvdyB0aGVzZSBmdW5jdGlvbnMgZml0IGludG8gdGhlIGxhcmdlciBwaWN0dXJlLiBJIHN1c3BlY3QgdGhhdCBgZ2FkZ2V0ZnNfY3JlYXRlX2ZpbGVgIHdpbGwgYmUgY2FsbGVkIGZyb20gc29tZXdoZXJlIGxpa2UgYGdhZGdldGZzX2ZpbGxfc3VwZXJgLCBvciBzb21ldGhpbmcgc2ltaWxhciBkdXJpbmcgdGhlIGZpbGVzeXN0ZW0gaW5pdGlhbGl6YXRpb24uIEknbGwgbmVlZCB0byBjb25maXJtIHRoYXQgYnkgY2hlY2tpbmcgdGhlIHNvdXJjZSBjb2RlIG9mIGBkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmNgLCBsaWtlbHkgZXhhbWluaW5nIHRoZSBmdW5jdGlvbiBjYWxsZXJzIGFuZCBvdGhlciByZWxldmFudCBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDUzLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE0OjA5OjU4LjgzMDcxNTg4MloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY3OTUyMTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZ2FkZ2V0ZnNfY3JlYXRlX2ZpbGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xNTU0PXN0YXRpYyB2b2lkIGRlc3Ryb3lfZXBfZmlsZXMgKHN0cnVjdCBkZXZfZGF0YSAqZGV2KVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE1ODctXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjE1ODg6c3RhdGljIGludCBnYWRnZXRmc19jcmVhdGVfZmlsZSAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgY2hhciBjb25zdCAqbmFtZSxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTU4OS1cXHRcXHR2b2lkICpkYXRhLCBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zICpmb3BzKTtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xNTkxPXN0YXRpYyBpbnQgYWN0aXZhdGVfZXBfZmlsZXMgKHN0cnVjdCBkZXZfZGF0YSAqZGV2KVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE2MTctXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjE2MTg6XFx0XFx0ZXJyID0gZ2FkZ2V0ZnNfY3JlYXRlX2ZpbGUgKGRldi1cXHUwMDNlc2IsIGRhdGEtXFx1MDAzZW5hbWUsXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE2MTktXFx0XFx0XFx0XFx0ZGF0YSwgXFx1MDAyNmVwX2lvX29wZXJhdGlvbnMpO1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTE5NjM9Z2FkZ2V0ZnNfbWFrZV9pbm9kZSAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xOTgzLSAqL1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxOTg0OnN0YXRpYyBpbnQgZ2FkZ2V0ZnNfY3JlYXRlX2ZpbGUgKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGNoYXIgY29uc3QgKm5hbWUsXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE5ODUtXFx0XFx0dm9pZCAqZGF0YSwgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyAqZm9wcylcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0yMDIzPWdhZGdldGZzX2ZpbGxfc3VwZXIgKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBmc19jb250ZXh0ICpmYylcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0yMDY2LVxcdGRldi1cXHUwMDNlc2IgPSBzYjtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MjA2NzpcXHRyYyA9IGdhZGdldGZzX2NyZWF0ZV9maWxlKHNiLCBDSElQLCBkZXYsIFxcdTAwMjZlcDBfb3BlcmF0aW9ucyk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTIwNjgtXFx0aWYgKHJjKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE0OjA5OjU4Ljg3NzUxODM3OVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODYwODY0MDk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhlIGV4cGVydCwgdGhpbmtpbmcgdGhyb3VnaCB0aGlzOlxuXG4qKkRlbHZpbmcgaW50byB0aGUgR2FkZ2V0RlMgRmlsZSBDcmVhdGlvbiBQYXRoKipcblxuT2theSwgc28gSSdtIHRyeWluZyB0byB0cmFjZSB0aGUgY3JlYXRpb24gb2YgZmlsZXMgd2l0aGluIHRoZSBgZ2FkZ2V0ZnNgIGZpbGVzeXN0ZW0uICBNeSBpbW1lZGlhdGUgcG9pbnQgb2YgZW50cnkgc2VlbXMgdG8gYmUgYGdhZGdldGZzX2NyZWF0ZV9maWxlYCDigJMgdGhhdCdzIHRoZSBvYnZpb3VzIGZ1bmN0aW9uIGNhbGwsIGJ1dCB3aGVyZSBhcmUgd2UgKmNvbWluZyogZnJvbT8gVGhlIG5vdGVzIHNheSBpdCdzIGNhbGxlZCBmcm9tIGJvdGggYGFjdGl2YXRlX2VwX2ZpbGVzYCBhbmQgYGdhZGdldGZzX2ZpbGxfc3VwZXJgLiBgZ2FkZ2V0ZnNfZmlsbF9zdXBlcmAgaXMgbGlrZWx5IGR1cmluZyB0aGUgc3VwZXJibG9jayBzZXR1cCwgYnV0IGBhY3RpdmF0ZV9lcF9maWxlc2AgaXMgbW9yZSBpbnRyaWd1aW5nIGFuZCBsaWtlbHkgcmVzcG9uc2libGUgZm9yIGFjdHVhbGx5IG1ha2luZyB0aGUgZmlsZXMgdmlzaWJsZSB0byB0aGUgdXNlci5cblxuTm93LCBJIHNlZW0gdG8gdmFndWVseSByZWNhbGwgYGFjdGl2YXRlX2VwX2ZpbGVzYCBiZWluZyBjb25uZWN0ZWQgdG8gYGdhZGdldGZzX2JpbmRgLCBidXQgSSBzaG91bGQgdmVyaWZ5IHRoaXMgY29ubmVjdGlvbiB0byBtYWtlIHN1cmUgSSBhbSBvbiB0aGUgcmlnaHQgdHJhY2suIE15IG5leHQgc3RlcCBzaG91bGQgYmUgdG8gZG91YmxlLWNoZWNrIHRoZSBjYWxsIGNoYWluIGJ5IGludmVzdGlnYXRpbmcgdGhlIHNvdXJjZSBjb2RlIGZvciBgYWN0aXZhdGVfZXBfZmlsZXNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTg1LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTQ6MTA6MDIuNzM4Mzg1NDM4WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTA5NDYxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhY3RpdmF0ZV9lcF9maWxlc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTE1ODg9c3RhdGljIGludCBnYWRnZXRmc19jcmVhdGVfZmlsZSAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgY2hhciBjb25zdCAqbmFtZSxcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xNTkwLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxNTkxOnN0YXRpYyBpbnQgYWN0aXZhdGVfZXBfZmlsZXMgKHN0cnVjdCBkZXZfZGF0YSAqZGV2KVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xNTkyLXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xNjY2PXN0YXRpYyBpbnQgZ2FkZ2V0ZnNfYmluZChzdHJ1Y3QgdXNiX2dhZGdldCAqZ2FkZ2V0LFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE2ODktXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjE2OTA6XFx0aWYgKGFjdGl2YXRlX2VwX2ZpbGVzIChkZXYpIFxcdTAwM2MgMClcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTY5MS1cXHRcXHRnb3RvIGVub21lbTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTQ6MTA6MDIuNzgzNDg1ODE1WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5NzAzODgyMTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipVbmRlcnN0YW5kaW5nIHRoZSBHYWRnZXRmcyBEcml2ZXIgYW5kIFVzZXItU3BhY2UgSW50ZXJhY3Rpb24qKlxuXG5SaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgZ2FkZ2V0ZnNgIGltcGxlbWVudGF0aW9uLCBhbmQgZmlyc3QgdGhpbmcncyBmaXJzdDogYGdhZGdldGZzX2JpbmRgLiBUaGF0J3MgdGhlIGtleSBmdW5jdGlvbiByZXNwb25zaWJsZSBmb3IgYmluZGluZyB0aGUgZHJpdmVyLCBlc3NlbnRpYWxseSBpbml0aWFsaXppbmcgaXQgYW5kIGdldHRpbmcgaXQgcmVhZHkgdG8gaW50ZXJmYWNlIHdpdGggdGhlIGhhcmR3YXJlLiBUaGVuLCB3ZSBoYXZlIGBnYWRnZXRmc19maWxsX3N1cGVyYC4gU291bmRzIGxpa2UgdGhhdCdzIHRyaWdnZXJlZCBkdXJpbmcgdGhlIG1vdW50aW5nIHByb2Nlc3Mg4oCTIHRoYXQgbWFrZXMgcGVyZmVjdCBzZW5zZS4gSXQgd291bGQgaGFuZGxlIHRoZSBjcmVhdGlvbiBhbmQgaW5pdGlhbGl6YXRpb24gb2YgdGhlIHN1cGVyYmxvY2sgZm9yIHRoZSBmaWxlc3lzdGVtLiBOb3cgdGhlIGludGVyZXN0aW5nIHBhcnQsIGhvdyBkb2VzIHRoaXMgaW50ZXJhY3Qgd2l0aCB1c2VyIHNwYWNlPyBMZXQncyBzZWUuLi4gYWgsIGhlcmUgd2UgYXJlOiBgZXBfaW9fb3BlcmF0aW9uc2AgYW5kIGBlcDBfb3BlcmF0aW9uc2AuIFRoZXNlIG11c3QgYmUgdGhlIGZ1bmRhbWVudGFsIHN0cnVjdHVyZXMgdGhhdCBleHBvc2UgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gdXNlci1zcGFjZS4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZXNlIHN0cnVjdHVyZXMgdG8gdW5kZXJzdGFuZCBleGFjdGx5ICp3aGF0KiBvcGVyYXRpb25zIGFyZSBleHBvc2VkIOKAkyByZWFkLCB3cml0ZSwgY29udHJvbCwgZXRjLiwgYW5kIGhvdyB0aGV5J3JlIG1hcHBlZCB0byB0aGUgc3BlY2lmaWMgZ2FkZ2V0IGZ1bmN0aW9uYWxpdHkuIFRoaXMgaXMgd2hlcmUgdGhlIG1hZ2ljIGhhcHBlbnMsIGFuZCBob3cgdXNlcnNwYWNlIGFwcGxpY2F0aW9ucyBjYW4gYWN0dWFsbHkgKnVzZSogdGhlIHZpcnR1YWwgVVNCIGRldmljZS4gRXhjZWxsZW50LiBUaGlzIGdpdmVzIG1lIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgYW5hbHlzaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1NDQsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNDoxMDowNi43NTM4NzYxMjZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MzIyNTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImVwX2lvX29wZXJhdGlvbnNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz02Mzk9ZXBfd3JpdGVfaXRlcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqZnJvbSlcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy03MDEtLyogdXNlZCBhZnRlciBlbmRwb2ludCBjb25maWd1cmF0aW9uICovXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjcwMjpzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBlcF9pb19vcGVyYXRpb25zID0ge1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy03MDMtXFx0Lm93bmVyID1cXHRUSElTX01PRFVMRSxcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xNTkxPXN0YXRpYyBpbnQgYWN0aXZhdGVfZXBfZmlsZXMgKHN0cnVjdCBkZXZfZGF0YSAqZGV2KVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE2MTgtXFx0XFx0ZXJyID0gZ2FkZ2V0ZnNfY3JlYXRlX2ZpbGUgKGRldi1cXHUwMDNlc2IsIGRhdGEtXFx1MDAzZW5hbWUsXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjE2MTk6XFx0XFx0XFx0XFx0ZGF0YSwgXFx1MDAyNmVwX2lvX29wZXJhdGlvbnMpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xNjIwLVxcdFxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MjAwOD1zdGF0aWMgdm9pZCBnYWRnZXRmc19ldmljdF9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTIwMTEtXFx0Y2xlYXJfaW5vZGUoaW5vZGUpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoyMDEyOlxcdGlmIChpbm9kZS1cXHUwMDNlaV9wcml2YXRlIFxcdTAwMjZcXHUwMDI2IGlub2RlLVxcdTAwM2VpX2ZvcCA9PSBcXHUwMDI2ZXBfaW9fb3BlcmF0aW9ucylcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMjAxMy1cXHRcXHRwdXRfZXAoaW5vZGUtXFx1MDAzZWlfcHJpdmF0ZSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE0OjEwOjA2Ljc5ODIxMzc0M1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjM5MjEwNTA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhlIGV4cGVydDpcblxuKipEZWx2aW5nIGludG8gRW5kcG9pbnQgT3BlcmF0aW9ucyoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCB0aGUgbG93LWxldmVsIEkvTyBvcGVyYXRpb25zIGFuZCBJJ20gbG9va2luZyBhdCBgZXBfaW9fb3BlcmF0aW9uc2AuIEl0IHNlZW1zIGxpa2Ugd2UgaGF2ZSB0aGUgc3RhbmRhcmQgc3VpdGUgaW4gdGhlcmU6IGBlcF93cml0ZV9pdGVyYCwgYGVwX3JlYWRfaXRlcmAgZm9yIGl0ZXJhdGl2ZSBJL08sIHRoZW4gdGhlIHVzdWFsIHN1c3BlY3RzLCBgZXBfb3BlbmAsIGBlcF9yZWxlYXNlYCwgYGVwX2lvY3RsYCwgYGVwX3BvbGxgLCBhbmQgZmluYWxseSB0aGUgYXN5bmNocm9ub3VzIG9wZXJhdGlvbnMgYGVwX2Fpb19yZWFkYCBhbmQgYGVwX2Fpb193cml0ZWAuIFRoYXQncyBhIHNvbGlkIGZvdW5kYXRpb24uIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgdGllcyBpbnRvIHRoZSBzcGVjaWZpY3Mgb2YgdmFyaW91cyBlbmRwb2ludHMuIExldCBtZSBzaGlmdCBteSBmb2N1cyB0byBgZXAwX29wZXJhdGlvbnNgIHRvIHN0YXJ0IGV4cGxvcmluZyBob3cgdGhpcyBnZW5lcmFsIHN0cnVjdHVyZSBpcyBpbnN0YW50aWF0ZWQgaW4gYSBjb25jcmV0ZSBleGFtcGxlLCBpbiB0aGlzIGNhc2UsIHRoZSBmaXJzdCBlbmRwb2ludC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjI5MCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE0OjEwOjExLjAzNzQyNjc2OVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ2NzM5NTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZXAwX29wZXJhdGlvbnNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xOTEyPWdhZGdldF9kZXZfb3BlbiAoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZkKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE5MjgtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjE5Mjk6c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZXAwX29wZXJhdGlvbnMgPSB7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE5MzAtXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MjAyMz1nYWRnZXRmc19maWxsX3N1cGVyIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMjA2Ni1cXHRkZXYtXFx1MDAzZXNiID0gc2I7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjIwNjc6XFx0cmMgPSBnYWRnZXRmc19jcmVhdGVfZmlsZShzYiwgQ0hJUCwgZGV2LCBcXHUwMDI2ZXAwX29wZXJhdGlvbnMpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0yMDY4LVxcdGlmIChyYykge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNDoxMDoxMS4wODIxMDU2MTZaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTU3MzM5NTYzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEZWJ1Z2dpbmcgYSBVU0IgR2FkZ2V0IEVuZHBvaW50IElzc3VlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBidWcgcmVwb3J0IHJlZ2FyZGluZyBVU0IgZ2FkZ2V0IGVuZHBvaW50cywgYW5kIGl0IHNlZW1zIGxpa2UgdGhlIGNvcmUgb2YgdGhlIHByb2JsZW0gbGllcyB3aXRoIGhvdyBlbmRwb2ludHMgYXJlIG1hbmFnZWQgYW5kIHJlbGVhc2VkLiBTcGVjaWZpY2FsbHksIGl0IGxvb2tzIGxpa2UgYHB1dF9lcGAgaXMgYmVpbmcgY2FsbGVkIHByZW1hdHVyZWx5IGluIGBkZXN0cm95X2VwX2ZpbGVzYCwgcG90ZW50aWFsbHkgd2hpbGUgdGhlIGlub2RlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZW5kcG9pbnQgaXMgc3RpbGwgYWN0aXZlLiBUaGUgcHJvcG9zZWQgZml4LCB3aGljaCBzZWVtcyByZWFzb25hYmxlLCBpbnZvbHZlcyBtb3ZpbmcgdGhlIGBwdXRfZXBgIGNhbGwgdG8gYGdhZGdldGZzX2V2aWN0X2lub2RlYC4gVGhpcyBtYWtlcyBzZW5zZTsgaXQgZW5zdXJlcyB0aGUgZW5kcG9pbnQgaXMgcmVsZWFzZWQgd2hlbiB0aGUgaW5vZGUgaXMgdHJ1bHkgYmVpbmcgZXZpY3RlZC5cblxuTXkgaW1tZWRpYXRlIGZvY3VzLCB0aGVyZWZvcmUsIG5lZWRzIHRvIGJlIG9uIHVuZGVyc3RhbmRpbmcgdGhlIGxpZmVjeWNsZSBhbmQgZGVwZW5kZW5jaWVzIG9mIHRoZXNlIGNvbXBvbmVudHMuIEknbGwgbmVlZCB0byBzY3J1dGluaXplIGhvdyBgZ2FkZ2V0ZnNfZmlsbF9zdXBlcmAsIGBnYWRnZXRmc19iaW5kYCwgYGdhZGdldGZzX2V2aWN0X2lub2RlYCwgYGdhZGdldGZzX2NyZWF0ZV9maWxlYCwgYGRlc3Ryb3lfZXBfZmlsZXNgLCBhbmQgYGFjdGl2YXRlX2VwX2ZpbGVzYCBpbnRlcmFjdC4gVGhlc2UgZnVuY3Rpb25zIGFyZSBrZXkgdG8gZmlsZXN5c3RlbSBpbml0aWFsaXphdGlvbiwgYmluZGluZyBlbmRwb2ludHMsIGlub2RlIG1hbmFnZW1lbnQsIGZpbGUgY3JlYXRpb24sIGVuZHBvaW50IGZpbGUgZGVzdHJ1Y3Rpb24sIGFuZCBlbmRwb2ludCBhY3RpdmF0aW9uLCByZXNwZWN0aXZlbHkuXG5cbkJleW9uZCB0aGUgY29yZSBmaWxlc3lzdGVtIG9wZXJhdGlvbnMsIEknbGwgYWxzbyBuZWVkIHRvIGNoZWNrIHRoZSBiZWhhdmlvciBvZiB0aGUgZW5kcG9pbnQtc3BlY2lmaWMgb3BlcmF0aW9ucywgZXNwZWNpYWxseSB0aGUgb3Blbi9yZWxlYXNlIGN5Y2xlczogYGVwX29wZW5gLCBgZXBfcmVsZWFzZWAsIGBnYWRnZXRfZGV2X29wZW5gLCBhbmQgYGdhZGdldF9kZXZfcmVsZWFzZWAuIEl0J3MgYSBnb29kIGZpcnN0IHN0ZXAgdG8ganVzdCBkb3VibGUtY2hlY2sgdGhlIG5hbWluZyBjb252ZW50aW9ucyBhbmQgbG9naWMgd2l0aGluIHRoZXNlIHJvdXRpbmVzLiBUaGV5IGFyZSBjcml0aWNhbCB0byB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgYnVnIGNvdWxkIGFyaXNlIGluIHRoZSBmaXJzdCBwbGFjZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjgzMiwiT3V0cHV0VG9rZW5zIjo1MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNDoxMDoxNi42NTU1MDQyMjJaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzOTU3MjM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImVwX29wZW58ZXBfcmVsZWFzZXxnYWRnZXRfZGV2X29wZW58Z2FkZ2V0X2Rldl9yZWxlYXNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9ODE9TU9EVUxFX0xJQ0VOU0UgKFxcXCJHUExcXFwiKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtODItXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjgzOnN0YXRpYyBpbnQgZXBfb3BlbihzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGZpbGUgKik7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTg0LVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTM4MD1zdGF0aWMgaW50XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjM4MTplcF9yZWxlYXNlIChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmQpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTM4Mi17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9NzAyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGVwX2lvX29wZXJhdGlvbnMgPSB7XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtNzA0LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzo3MDU6XFx0Lm9wZW4gPVxcdFxcdGVwX29wZW4sXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjcwNjpcXHQucmVsZWFzZSA9XFx0ZXBfcmVsZWFzZSxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtNzA3LVxcdC51bmxvY2tlZF9pb2N0bCA9IGVwX2lvY3RsLFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTgxNz1zdGF0aWMgaW50XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjgxODplcF9vcGVuIChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmQpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTgxOS17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MTkxMT1zdGF0aWMgaW50XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjE5MTI6Z2FkZ2V0X2Rldl9vcGVuIChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmQpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE5MTMte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTE5Mjk9c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZXAwX29wZXJhdGlvbnMgPSB7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE5MzAtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjE5MzE6XFx0Lm9wZW4gPVxcdFxcdGdhZGdldF9kZXZfb3BlbixcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTkzMi1cXHQucmVhZCA9XFx0XFx0ZXAwX3JlYWQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE0OjEwOjE2LjY5OTQ2ODE5OVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjg3NTcyNDU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGNyYWZ0ZWQgd2l0aCB0aGUgZXhwZWN0YXRpb24gdGhhdCBJJ20gZGlzY3Vzc2luZyB0aGlzIHdpdGggYSBmZWxsb3cgZXhwZXJ0OlxuXG4qKkludGVybmFsIERpYWdub3N0aWNzOiBSZWxlYXNlIFZlcnNpb24gdnMuIE9wZXJhdGlvbmFsIENvbXBvbmVudHMqKlxuXG5BbHJpZ2h0LCBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgY29kZSBhbmQgbXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gY29tcGFyZSB0aGUgYGVwX3JlbGVhc2VgIGFuZCBgZ2FkZ2V0X2Rldl9yZWxlYXNlYCB2YXJpYWJsZXMuIEknbSBleHBlY3RpbmcgYGdhZGdldF9kZXZfcmVsZWFzZWAgdG8gYmUgYXZhaWxhYmxlLiBIdWgsIGl0IGxvb2tzIGxpa2UgdGhhdCBwYXJ0aWN1bGFyIHZhcmlhYmxlIGlzbid0IGRlZmluZWQgaGVyZS4gVGhhdCdzIHVuZXhwZWN0ZWQuIEFscmlnaHQsIGJhY2sgdG8gYmFzaWNzLiBHaXZlbiB0aGUgbWlzc2luZyByZWxlYXNlIHZhcmlhYmxlLCBsZXQncyBkb3VibGUtY2hlY2sgdGhlIGBlcDBfb3BlcmF0aW9uc2AuIFdlIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIGFuIGFsdGVybmF0ZSBvYmplY3Qgb3IgbWV0aG9kIGhhcyBiZWVuIHVzZWQuIFRoZSByZWxlYXNlIHZhcmlhYmxlIHdvdWxkIGJlIHVzZWQgZm9yIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBjbGVhbnVwLiBXZSBtdXN0IGVuc3VyZSB0aGF0IHRoZSBvYmplY3QgdGhhdCBpcyBiZWluZyB1dGlsaXplZCBpcyBoYW5kbGVkIGNvcnJlY3RseS4gTGV0J3Mgc3RhcnQgd2l0aCB0aGF0IGFuZCBzZWUgd2hlcmUgd2UgYXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3OTg0LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTQ6MTA6MjAuMzg3MDQ0NDI3WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1MDU0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTkyNSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTkyNTpcXHRcXHRzcGluX3VubG9ja19pcnEoXFx1MDAyNmRldi1cXHUwMDNlbG9jayk7XFxuMTkyNjpcXHRcXHRyZXR1cm4gdmFsdWU7XFxuMTkyNzpcXHR9XFxuMTkyODpcXHRcXG4xOTI5OlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGVwMF9vcGVyYXRpb25zID0ge1xcbjE5MzA6XFx0XFxuMTkzMTpcXHRcXHQub3BlbiA9XFx0XFx0Z2FkZ2V0X2Rldl9vcGVuLFxcbjE5MzI6XFx0XFx0LnJlYWQgPVxcdFxcdGVwMF9yZWFkLFxcbjE5MzM6XFx0XFx0LndyaXRlID1cXHRkZXZfY29uZmlnLFxcbjE5MzQ6XFx0XFx0LmZhc3luYyA9XFx0ZXAwX2Zhc3luYyxcXG4xOTM1OlxcdFxcdC5wb2xsID1cXHRcXHRlcDBfcG9sbCxcXG4xOTM2OlxcdFxcdC51bmxvY2tlZF9pb2N0bCA9IGdhZGdldF9kZXZfaW9jdGwsXFxuMTkzNzpcXHRcXHQucmVsZWFzZSA9XFx0ZGV2X3JlbGVhc2UsXFxuMTkzODpcXHR9O1xcbjE5Mzk6XFx0XFxuMTk0MDpcXHQvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xcbjE5NDE6XFx0XFxuMTk0MjpcXHQvKiBGSUxFU1lTVEVNIEFORCBTVVBFUkJMT0NLIE9QRVJBVElPTlNcXG4xOTQzOlxcdCAqXFxuMTk0NDpcXHQgKiBNb3VudGluZyB0aGUgZmlsZXN5c3RlbSBjcmVhdGVzIGEgY29udHJvbGxlciBmaWxlLCB1c2VkIGZpcnN0IGZvclxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNDoxMDoyMC4zODcyOTcxNTdaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE3OTg5OTQzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJlbGVhc2UgQ3ljbGUqKlxuXG5Pa2F5LCBoZXJlIHdlIGdvLCBpdCdzIHRoZSBgZGV2X3JlbGVhc2VgIGN5Y2xlIGFnYWluLiBSaWdodCwgc28gdGhhdCBtZWFucyB0aGUgdXN1YWwgc3VzcGVjdHMgYXJlIGxpbmVkIHVwOiBgZGV2X3JlbGVhc2VgLCBgZ2FkZ2V0X2Rldl9vcGVuYCwgYGVwX29wZW5gLCBgZXBfcmVsZWFzZWAsIGZvbGxvd2VkIGJ5IGBnYWRnZXRmc19ldmljdF9pbm9kZWAsIGBnYWRnZXRmc19jcmVhdGVfZmlsZWAsIGBkZXN0cm95X2VwX2ZpbGVzYCwgYW5kIHRoZW4sIGZpbmFsbHksIGBhY3RpdmF0ZV9lcF9maWxlc2AuIEhvbGQgb24gYSBtaW51dGUuLi4gd2Fzbid0IGBnYWRnZXRmc19ldmljdF9pbm9kZWAgYSBzdGF0aWMgZnVuY3Rpb24/IEkgc2VlbSB0byByZW1lbWJlciB0aGF0IGJlaW5nIHRoZSBjYXNlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkndmUgZ290IHRoaXMgcmlnaHQuIEJlc3QgdG8gZG91YmxlLWNoZWNrIHRoZSBpbXBsZW1lbnRhdGlvbiBmb3IgYGdhZGdldGZzX2V2aWN0X2lub2RlYCwgaXQgc2hvdWxkIGJlIGRlZmluZWQgaW4gYGRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuY2AuIEdvdHRhIGdvIHZlcmlmeSBteSBhc3N1bXB0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NTMyLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTQ6MTA6MjQuNTY3MTk5Njc2WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTczNzAzOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJnYWRnZXRmc19ldmljdF9pbm9kZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTE5ODQ9c3RhdGljIGludCBnYWRnZXRmc19jcmVhdGVfZmlsZSAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgY2hhciBjb25zdCAqbmFtZSxcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0yMDA3LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoyMDA4OnN0YXRpYyB2b2lkIGdhZGdldGZzX2V2aWN0X2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTIwMDkte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTIwMTY9c3RhdGljIGNvbnN0IHN0cnVjdCBzdXBlcl9vcGVyYXRpb25zIGdhZGdldF9mc19vcGVyYXRpb25zID0ge1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTIwMTgtXFx0LmRyb3BfaW5vZGUgPVxcdGlub2RlX2p1c3RfZHJvcCxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MjAxOTpcXHQuZXZpY3RfaW5vZGUgPVxcdGdhZGdldGZzX2V2aWN0X2lub2RlLFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0yMDIwLX07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE0OjEwOjI0LjYxMjk0MTUzM1oiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzE4ODE3Mzg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJlZmxlY3Rpbmcgb24gRnVuY3Rpb24gVmlzaWJpbGl0eSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIG92ZXIgdGhpcyBjb2RlIGFuZCBub3RpY2luZyBzb21ldGhpbmcgYWJvdXQgaG93IHRoZXNlIGZ1bmN0aW9ucyBhcmUgZGVjbGFyZWQuIGBnYWRnZXRmc19ldmljdF9pbm9kZWAsIGBnYWRnZXRmc19jcmVhdGVfZmlsZWAsIGBkZXN0cm95X2VwX2ZpbGVzYCwgYGFjdGl2YXRlX2VwX2ZpbGVzYCwgYGVwX29wZW5gLCBgZXBfcmVsZWFzZWAsIGBnYWRnZXRfZGV2X29wZW5gLCBhbmQgYGRldl9yZWxlYXNlYC4uLiB0aGV5J3JlIGFsbCBkZWNsYXJlZCBhcyBgc3RhdGljYC4gUmlnaHQsIHJpZ2h0LiBUaGF0IG1lYW5zIHRoZXkncmUgb25seSB2aXNpYmxlIHdpdGhpbiB0aGlzIHBhcnRpY3VsYXIgY29tcGlsYXRpb24gdW5pdC4gSG1tLi4uXG5cbkJ1dCB0aGVuIEkgcmVtZW1iZXIgdGhlIGluc3RydWN0aW9ucy4gVGhlIHByZWZlcmVuY2UgaXMgZm9yIG5vbi1zdGF0aWMgZW50cnkgcG9pbnRzIHdoZW5ldmVyIHBvc3NpYmxlLCBiZWNhdXNlIHRob3NlIHdpbGwgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGFmdGVyIGNvbXBpbGF0aW9uLiBUaGUgY29tcGlsZXIgd2lsbCBpbmxpbmUgc3RhdGljIGZ1bmN0aW9ucywgc28gdGhlcmUgaXNuJ3QgYSB1bmlxdWUgYWRkcmVzcyB0byByZWZlcmVuY2UuIE1ha2VzIHNlbnNlIGZvciBtYWludGFpbmFiaWxpdHksIGRlYnVnZ2luZywgYW5kIHBvdGVudGlhbCBmdXR1cmUgdXNlLlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUgaWYgdGhlcmUgYXJlIGFueSBub24tc3RhdGljIGFsdGVybmF0aXZlcyBpbiBgZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jYCB0aGF0IGNvdWxkIHNlcnZlIGFzIHRoZXNlIEFQSSBlbnRyeSBwb2ludHMuIFRpbWUgdG8gZGlnIGluIGFuZCByZS1ldmFsdWF0ZSB0aGlzIGRlc2lnbi5cblxuXG4iLCJJbnB1dFRva2VucyI6OTEyMywiT3V0cHV0VG9rZW5zIjo1NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNDoxMDoyOC4zMzE3NjMwNloiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ2MDk0NzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXlthLXpBLVpfXVthLXpBLVowLTlfXSpcXFxccypcXFxcKFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTc3PXN0YXRpYyBjb25zdCBjaGFyIHNob3J0bmFtZSBbXSA9IFxcXCJnYWRnZXRmc1xcXCI7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTc4LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzo3OTpNT0RVTEVfREVTQ1JJUFRJT04gKERSSVZFUl9ERVNDKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6ODA6TU9EVUxFX0FVVEhPUiAoXFxcIkRhdmlkIEJyb3duZWxsXFxcIik7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjgxOk1PRFVMRV9MSUNFTlNFIChcXFwiR1BMXFxcIik7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTgyLVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTI5NT1zdGF0aWMgaW50XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjI5NjpnZXRfcmVhZHlfZXAgKHVuc2lnbmVkIGZfZmxhZ3MsIHN0cnVjdCBlcF9kYXRhICplcGRhdGEsIGJvb2wgaXNfd3JpdGUpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTI5Ny17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MzM1PXN0YXRpYyBzc2l6ZV90XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjMzNjplcF9pbyAoc3RydWN0IGVwX2RhdGEgKmVwZGF0YSwgdm9pZCAqYnVmLCB1bnNpZ25lZCBsZW4pXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTMzNy17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MzgwPXN0YXRpYyBpbnRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MzgxOmVwX3JlbGVhc2UgKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmZClcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMzgyLXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz01Nzk9c3RhdGljIHNzaXplX3RcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6NTgwOmVwX3JlYWRfaXRlcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqdG8pXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTU4MS17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9NjM4PXN0YXRpYyBzc2l6ZV90XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjYzOTplcF93cml0ZV9pdGVyKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy02NDAte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTcyNT1zdGF0aWMgc3NpemVfdFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzo3MjY6ZXBfY29uZmlnIChzdHJ1Y3QgZXBfZGF0YSAqZGF0YSwgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgbGVuKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy03Mjcte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTgxNz1zdGF0aWMgaW50XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjgxODplcF9vcGVuIChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmQpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTgxOS17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9OTEyPXN0YXRpYyBzc2l6ZV90XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjkxMzplcDBfcmVhZCAoc3RydWN0IGZpbGUgKmZkLCBjaGFyIF9fdXNlciAqYnVmLCBzaXplX3QgbGVuLCBsb2ZmX3QgKnB0cilcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtOTE0LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xMDgyPXN0YXRpYyBzdHJ1Y3QgdXNiX2dhZGdldGZzX2V2ZW50ICpcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTA4MzpuZXh0X2V2ZW50IChzdHJ1Y3QgZGV2X2RhdGEgKmRldiwgZW51bSB1c2JfZ2FkZ2V0ZnNfZXZlbnRfdHlwZSB0eXBlKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xMDg0LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xMTI0PXN0YXRpYyBzc2l6ZV90XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjExMjU6ZXAwX3dyaXRlIChzdHJ1Y3QgZmlsZSAqZmQsIGNvbnN0IGNoYXIgX191c2VyICpidWYsIHNpemVfdCBsZW4sIGxvZmZfdCAqcHRyKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xMTI2LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xMTc5PXN0YXRpYyBpbnRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTE4MDplcDBfZmFzeW5jIChpbnQgZiwgc3RydWN0IGZpbGUgKmZkLCBpbnQgb24pXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTExODEte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTExOTA9c3RhdGljIGludFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxMTkxOmRldl9yZWxlYXNlIChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmQpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTExOTIte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTEyMTk9c3RhdGljIF9fcG9sbF90XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjEyMjA6ZXAwX3BvbGwgKHN0cnVjdCBmaWxlICpmZCwgcG9sbF90YWJsZSAqd2FpdClcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTIyMS17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MTMwNj1zdGF0aWMgaW50XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjEzMDc6Y29uZmlnX2J1ZiAoc3RydWN0IGRldl9kYXRhICpkZXYsIHU4IHR5cGUsIHVuc2lnbmVkIGluZGV4KVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xMzA4LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xMzMyPXN0YXRpYyBpbnRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTMzMzpnYWRnZXRmc19zZXR1cCAoc3RydWN0IHVzYl9nYWRnZXQgKmdhZGdldCwgY29uc3Qgc3RydWN0IHVzYl9jdHJscmVxdWVzdCAqY3RybClcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTMzNC17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MTYzNz1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxNjM4OmdhZGdldGZzX3VuYmluZCAoc3RydWN0IHVzYl9nYWRnZXQgKmdhZGdldClcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTYzOS17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MTcwNT1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxNzA2OmdhZGdldGZzX2Rpc2Nvbm5lY3QgKHN0cnVjdCB1c2JfZ2FkZ2V0ICpnYWRnZXQpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE3MDcte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTE3MjM9c3RhdGljIHZvaWRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTcyNDpnYWRnZXRmc19zdXNwZW5kIChzdHJ1Y3QgdXNiX2dhZGdldCAqZ2FkZ2V0KVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xNzI1LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xNzk4PXN0YXRpYyBzc2l6ZV90XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjE3OTk6ZGV2X2NvbmZpZyAoc3RydWN0IGZpbGUgKmZkLCBjb25zdCBjaGFyIF9fdXNlciAqYnVmLCBzaXplX3QgbGVuLCBsb2ZmX3QgKnB0cilcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTgwMC17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MTkxMT1zdGF0aWMgaW50XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjE5MTI6Z2FkZ2V0X2Rldl9vcGVuIChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmQpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE5MTMte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTE5NTU9c3RhdGljIHVuc2lnbmVkIGRlZmF1bHRfcGVybSA9IFNfSVJVU1IgfCBTX0lXVVNSO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xOTU2LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxOTU3Om1vZHVsZV9wYXJhbSAoZGVmYXVsdF91aWQsIHVpbnQsIDA2NDQpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxOTU4Om1vZHVsZV9wYXJhbSAoZGVmYXVsdF9naWQsIHVpbnQsIDA2NDQpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxOTU5Om1vZHVsZV9wYXJhbSAoZGVmYXVsdF9wZXJtLCB1aW50LCAwNjQ0KTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTk2MC1cXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xOTYyPXN0YXRpYyBzdHJ1Y3QgaW5vZGUgKlxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxOTYzOmdhZGdldGZzX21ha2VfaW5vZGUgKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE5NjQtXFx0XFx0dm9pZCAqZGF0YSwgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyAqZm9wcyxcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0yMDIyPXN0YXRpYyBpbnRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MjAyMzpnYWRnZXRmc19maWxsX3N1cGVyIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTIwMjQte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTIxMDY9c3RhdGljIHZvaWRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MjEwNzpnYWRnZXRmc19raWxsX3NiIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0yMTA4LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0yMTIyPXN0YXRpYyBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSBnYWRnZXRmc190eXBlID0ge1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTIxMjctfTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MjEyODpNT0RVTEVfQUxJQVNfRlMoXFxcImdhZGdldGZzXFxcIik7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTIxMjktXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MjEzMj1zdGF0aWMgaW50IF9faW5pdCBnYWRnZXRmc19pbml0ICh2b2lkKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTIxNDEtfVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoyMTQyOm1vZHVsZV9pbml0IChnYWRnZXRmc19pbml0KTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMjE0My1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MjE0ND1zdGF0aWMgdm9pZCBfX2V4aXQgZ2FkZ2V0ZnNfY2xlYW51cCAodm9pZClcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0yMTQ4LX1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MjE0OTptb2R1bGVfZXhpdCAoZ2FkZ2V0ZnNfY2xlYW51cCk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTIxNTAtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE0OjEwOjI4LjM3NjM3ODQ2N1oiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2OTY1NjI0OTkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVVNCIEdhZGdldCBGaWxlIFN5c3RlbSBBUEkqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEl0IHNlZW1zIEkgbmVlZCB0byBpZGVudGlmeSB0aGUga2V5IEFQSSBlbnRyeSBwb2ludHMgd2l0aGluIHRoaXMgZ2FkZ2V0ZnMgaW1wbGVtZW50YXRpb24uIE15IGluaXRpYWwgYXNzdW1wdGlvbiB0aGF0IHRoZSBvbmx5IG5vbi1zdGF0aWMgZnVuY3Rpb25zIHdlcmUgYGdhZGdldGZzX2luaXRgIGFuZCBgZ2FkZ2V0ZnNfY2xlYW51cGAgd2FzIGluY29ycmVjdC4gSSdtIHNlZWluZyBhIHdob2xlIHNsZXcgb2Ygc2VlbWluZ2x5IHN0YXRpYyBmdW5jdGlvbnM6IGBnYWRnZXRmc19maWxsX3N1cGVyYCwgYGdhZGdldGZzX21ha2VfaW5vZGVgLCBgZ2FkZ2V0X2Rldl9vcGVuYCwgYGRldl9jb25maWdgLCBgZ2FkZ2V0ZnNfc3VzcGVuZGAsIGBnYWRnZXRmc19kaXNjb25uZWN0YCwgYGdhZGdldGZzX3VuYmluZGAsIGBnYWRnZXRmc19zZXR1cGAsIGBlcDBfcG9sbGAsIGBkZXZfcmVsZWFzZWAsIGBlcDBfZmFzeW5jYCwgYGVwMF93cml0ZWAsIGBlcDBfcmVhZGAsIGBlcF9vcGVuYCwgYGVwX2NvbmZpZ2AsIGBlcF93cml0ZV9pdGVyYCwgYGVwX3JlYWRfaXRlcmAsIGBlcF9yZWxlYXNlYCwgYGVwX2lvYCwgYW5kIGBnZXRfcmVhZHlfZXBgLlxuXG5UaGUgaW1wb3J0YW50IGRpc3RpbmN0aW9uIGhlcmUgaXMgYWJvdXQgaG93IHRoZXNlIHN0YXRpYyBmdW5jdGlvbnMgYXJlIHVzZWQuIFRoZSBpbnN0cnVjdGlvbnMgYXJlIGNsZWFyOiBwcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMuIEFsdGhvdWdoIHRoZXkgYXJlIGRlZmluZWQgYXMgc3RhdGljLCB0aG9zZSB0aGF0IGFyZSByZWdpc3RlcmVkIGluIHN0cnVjdHVyZXMgbGlrZSBgZmlsZV9vcGVyYXRpb25zYCBhbmQgYHN1cGVyX29wZXJhdGlvbnNgIGFyZSBlc3NlbnRpYWxseSBBUEkgZW50cnkgcG9pbnRzIGJlY2F1c2UgdGhlaXIgYWRkcmVzc2VzIGFyZSB0YWtlbi4gVGhpcyBtZWFucyB0aGUgY29tcGlsZXIgd29uJ3QgaW5saW5lIHRoZW0sIGFuZCB0aGV5J2xsIGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3Nlcy5cblxuVGhlcmVmb3JlLCB0aGUgb25lcyBJIG5lZWQgdG8gZm9jdXMgb24sIGFuZCB0aGF0IGxpa2VseSByZXByZXNlbnQgdGhlIHJlYWwgQVBJIGVudHJ5IHBvaW50cyBvZiBpbnRlcmVzdCwgYXJlOlxuXG4qICAgYGdhZGdldGZzX2ZpbGxfc3VwZXJgXG4qICAgYGdhZGdldGZzX2V2aWN0X2lub2RlYFxuKiAgIGBnYWRnZXRfZGV2X29wZW5gXG4qICAgYGRldl9yZWxlYXNlYFxuKiAgIGBlcF9vcGVuYFxuKiAgIGBlcF9yZWxlYXNlYFxuXG5Ob3csIGxldCdzIGRvdWJsZS1jaGVjayB0aGUgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIEkga25vdyBgVVNCX0dBREdFVEZTYCBkZXBlbmRzIG9uIGBVU0JfR0FER0VUYC4gQXJlIHRoZXJlIGFueSBvdGhlciByZXF1aXJlZCBjb25maWd1cmF0aW9ucyB0aGF0IG5lZWQgbXkgYXR0ZW50aW9uPyBJIG5lZWQgdG8gYmUgc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjA1OCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNDoxMDozNS4zNDIwMDY4NjlaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzMzEyODY3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlcGVuZHMgb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz02NT1jb25maWcgVVNCX1pFUk9fSE5QVEVTVFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy02Ni1cXHRib29sIFxcXCJITlAgVGVzdCBEZXZpY2VcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjY3OlxcdGRlcGVuZHMgb24gVVNCX1pFUk8gXFx1MDAyNlxcdTAwMjYgVVNCX09UR1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy02OC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9NzU9Y29uZmlnIFVTQl9BVURJT1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy03Ni1cXHR0cmlzdGF0ZSBcXFwiQXVkaW8gR2FkZ2V0XFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzo3NzpcXHRkZXBlbmRzIG9uIFNORFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy03OC1cXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTEwMD1jb25maWcgR0FER0VUX1VBQzFcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMTAxLVxcdGJvb2wgXFxcIlVBQyAxLjBcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjEwMjpcXHRkZXBlbmRzIG9uIFVTQl9BVURJT1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0xMDMtXFx0aGVscFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTEwNz1jb25maWcgR0FER0VUX1VBQzFfTEVHQUNZXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTEwOC1cXHRib29sIFxcXCJVQUMgMS4wIChMZWdhY3kpXFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzoxMDk6XFx0ZGVwZW5kcyBvbiBHQURHRVRfVUFDMVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0xMTAtXFx0aGVscFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTExNT1jb25maWcgVVNCX0VUSFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0xMTYtXFx0dHJpc3RhdGUgXFxcIkV0aGVybmV0IEdhZGdldCAod2l0aCBDREMgRXRoZXJuZXQgc3VwcG9ydClcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjExNzpcXHRkZXBlbmRzIG9uIE5FVFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0xMTgtXFx0c2VsZWN0IFVTQl9MSUJDT01QT1NJVEVcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0xNDAtXFx0ICBXaXRoaW4gdGhlIFVTQiBkZXZpY2UsIHRoaXMgZ2FkZ2V0IGRyaXZlciBleHBvc2VzIGEgbmV0d29yayBkZXZpY2VcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6MTQxOlxcdCAgXFxcInVzYlhcXFwiLCB3aGVyZSBYIGRlcGVuZHMgb24gd2hhdCBvdGhlciBuZXR3b3JraW5nIGRldmljZXMgeW91IGhhdmUuXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTE0Mi1cXHQgIFRyZWF0IGl0IGxpa2UgYSB0d28tbm9kZSBFdGhlcm5ldCBsaW5rOiAgaG9zdCwgYW5kIGdhZGdldC5cXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz0xNTM9Y29uZmlnIFVTQl9FVEhfUk5ESVNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMTU0LVxcdGJvb2wgXFxcIlJORElTIHN1cHBvcnRcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjE1NTpcXHRkZXBlbmRzIG9uIFVTQl9FVEhcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMTU2LVxcdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9MTczPWNvbmZpZyBVU0JfRVRIX0VFTVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0xNzQtXFx0Ym9vbCBcXFwiRXRoZXJuZXQgRW11bGF0aW9uIE1vZGVsIChFRU0pIHN1cHBvcnRcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjE3NTpcXHRkZXBlbmRzIG9uIFVTQl9FVEhcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMTc2LVxcdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9MTkwPWNvbmZpZyBVU0JfR19OQ01cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMTkxLVxcdHRyaXN0YXRlIFxcXCJOZXR3b3JrIENvbnRyb2wgTW9kZWwgKE5DTSkgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6MTkyOlxcdGRlcGVuZHMgb24gTkVUXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTE5My1cXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTIzNz1jb25maWcgVVNCX0ZVTkNUSU9ORlNfRVRIXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTIzOC1cXHRib29sIFxcXCJJbmNsdWRlIGNvbmZpZ3VyYXRpb24gd2l0aCBDREMgRUNNIChFdGhlcm5ldClcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjIzOTpcXHRkZXBlbmRzIG9uIFVTQl9GVU5DVElPTkZTIFxcdTAwMjZcXHUwMDI2IE5FVFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yNDAtXFx0c2VsZWN0IFVTQl9VX0VUSEVSXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9MjQ3PWNvbmZpZyBVU0JfRlVOQ1RJT05GU19STkRJU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yNDgtXFx0Ym9vbCBcXFwiSW5jbHVkZSBjb25maWd1cmF0aW9uIHdpdGggUk5ESVMgKEV0aGVybmV0KVxcXCJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6MjQ5OlxcdGRlcGVuZHMgb24gVVNCX0ZVTkNUSU9ORlMgXFx1MDAyNlxcdTAwMjYgTkVUXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTI1MC1cXHRzZWxlY3QgVVNCX1VfRVRIRVJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz0yNTU9Y29uZmlnIFVTQl9GVU5DVElPTkZTX0dFTkVSSUNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMjU2LVxcdGJvb2wgXFxcIkluY2x1ZGUgJ3B1cmUnIGNvbmZpZ3VyYXRpb25cXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjI1NzpcXHRkZXBlbmRzIG9uIFVTQl9GVU5DVElPTkZTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTI1OC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9MjYyPWNvbmZpZyBVU0JfTUFTU19TVE9SQUdFXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTI2My1cXHR0cmlzdGF0ZSBcXFwiTWFzcyBTdG9yYWdlIEdhZGdldFxcXCJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6MjY0OlxcdGRlcGVuZHMgb24gQkxPQ0tcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMjY1LVxcdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9Mjc5PWNvbmZpZyBVU0JfR0FER0VUX1RBUkdFVFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yODAtXFx0dHJpc3RhdGUgXFxcIlVTQiBHYWRnZXQgVGFyZ2V0IEZhYnJpYyBNb2R1bGVcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjI4MTpcXHRkZXBlbmRzIG9uIFRBUkdFVF9DT1JFXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTI4Mi1cXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTI5MT1jb25maWcgVVNCX0dfU0VSSUFMXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTI5Mi1cXHR0cmlzdGF0ZSBcXFwiU2VyaWFsIEdhZGdldCAod2l0aCBDREMgQUNNIGFuZCBDREMgT0JFWCBzdXBwb3J0KVxcXCJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6MjkzOlxcdGRlcGVuZHMgb24gVFRZXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTI5NC1cXHRzZWxlY3QgVVNCX1VfU0VSSUFMXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9MzE2PWNvbmZpZyBVU0JfTUlESV9HQURHRVRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMzE3LVxcdHRyaXN0YXRlIFxcXCJNSURJIEdhZGdldFxcXCJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6MzE4OlxcdGRlcGVuZHMgb24gU05EXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTMxOS1cXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTM1MT1jb25maWcgVVNCX0NEQ19DT01QT1NJVEVcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMzUyLVxcdHRyaXN0YXRlIFxcXCJDREMgQ29tcG9zaXRlIERldmljZSAoRXRoZXJuZXQgYW5kIEFDTSlcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjM1MzpcXHRkZXBlbmRzIG9uIE5FVFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0zNTQtXFx0c2VsZWN0IFVTQl9MSUJDT01QT1NJVEVcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz0zNzA9Y29uZmlnIFVTQl9HX05PS0lBXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTM3MS1cXHR0cmlzdGF0ZSBcXFwiTm9raWEgY29tcG9zaXRlIGdhZGdldFxcXCJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6MzcyOlxcdGRlcGVuZHMgb24gUEhPTkVUXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjM3MzpcXHRkZXBlbmRzIG9uIEJMT0NLXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTM3NC1cXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTM4OT1jb25maWcgVVNCX0dfQUNNX01TXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTM5MC1cXHR0cmlzdGF0ZSBcXFwiQ0RDIENvbXBvc2l0ZSBEZXZpY2UgKEFDTSBhbmQgbWFzcyBzdG9yYWdlKVxcXCJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6MzkxOlxcdGRlcGVuZHMgb24gQkxPQ0tcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMzkyLVxcdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9NDAzPWNvbmZpZyBVU0JfR19NVUxUSVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy00MDQtXFx0dHJpc3RhdGUgXFxcIk11bHRpZnVuY3Rpb24gQ29tcG9zaXRlIEdhZGdldFxcXCJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6NDA1OlxcdGRlcGVuZHMgb24gQkxPQ0sgXFx1MDAyNlxcdTAwMjYgTkVUXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTQwNi1cXHRzZWxlY3QgVVNCX0dfTVVMVElfQ0RDIGlmICFVU0JfR19NVUxUSV9STkRJU1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTQyNz1jb25maWcgVVNCX0dfTVVMVElfUk5ESVNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNDI4LVxcdGJvb2wgXFxcIlJORElTICsgQ0RDIFNlcmlhbCArIFN0b3JhZ2UgY29uZmlndXJhdGlvblxcXCJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6NDI5OlxcdGRlcGVuZHMgb24gVVNCX0dfTVVMVElcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNDMwLVxcdHNlbGVjdCBVU0JfRl9STkRJU1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTQ0MD1jb25maWcgVVNCX0dfTVVMVElfQ0RDXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTQ0MS1cXHRib29sIFxcXCJDREMgRXRoZXJuZXQgKyBDREMgU2VyaWFsICsgU3RvcmFnZSBjb25maWd1cmF0aW9uXFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzo0NDI6XFx0ZGVwZW5kcyBvbiBVU0JfR19NVUxUSVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy00NDMtXFx0c2VsZWN0IFVTQl9GX0VDTVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTQ2OD1jb25maWcgVVNCX0dfREJHUFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy00NjktXFx0dHJpc3RhdGUgXFxcIkVIQ0kgRGVidWcgRGV2aWNlIEdhZGdldFxcXCJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6NDcwOlxcdGRlcGVuZHMgb24gVFRZXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTQ3MS1cXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTQ4ND1jb25maWcgVVNCX0dfREJHUF9QUklOVEtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6NDg1OlxcdGRlcGVuZHMgb24gVVNCX0dfREJHUFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy00ODYtXFx0Ym9vbCBcXFwicHJpbnRrXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTQ5MD1jb25maWcgVVNCX0dfREJHUF9TRVJJQUxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6NDkxOlxcdGRlcGVuZHMgb24gVVNCX0dfREJHUFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy00OTItXFx0c2VsZWN0IFVTQl9VX1NFUklBTFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTUwMT1jb25maWcgVVNCX0dfV0VCQ0FNXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTUwMi1cXHR0cmlzdGF0ZSBcXFwiVVNCIFdlYmNhbSBHYWRnZXRcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjUwMzpcXHRkZXBlbmRzIG9uIFZJREVPX0RFVlxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy01MDQtXFx0c2VsZWN0IFVTQl9MSUJDT01QT1NJVEVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTQ6MTA6MzUuMzg1MzI3MDU2WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYyNjA0MDcwNzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFVTQiBHYWRnZXRmcyBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhlIGtlcm5lbCBjb25maWcgYW5kIHNwZWNpZmljYWxseSBsb29raW5nIGF0IGBVU0JfR0FER0VURlNgLiBNeSBpbml0aWFsIG9ic2VydmF0aW9uIGlzIHRoYXQsIGJhc2VkIG9uIG15IHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoZXNlIGNvbmZpZ3VyYXRpb25zIGFyZSBzdHJ1Y3R1cmVkLCBgVVNCX0dBREdFVEZTYCBkb2Vzbid0IHNlZW0gdG8gZXhwbGljaXRseSAqZGVwZW5kIG9uKiBhbnl0aGluZyBiZXlvbmQgdGhlIGRlcGVuZGVuY2llcyBhbHJlYWR5IGJha2VkIGludG8gaXRzIHBhcmVudCwgYFVTQl9HQURHRVRgLiBUaGF0J3MgYSBrZXkgb2JzZXJ2YXRpb24uXG5cbk5vdywgYmVjYXVzZSBvZiB0aGF0IGluaXRpYWwgcmVhZCwgaXQgaXMgaW1wb3J0YW50IHRvIGRyaWxsIGRvd24gYW5kIHZlcmlmeSB0aGlzIGFzc3VtcHRpb24uIExldCdzIHNlZSB3aGF0IHRoZSBkZXBlbmRlbmNpZXMgYXJlIGZvciBgVVNCX0dBREdFVGAuIFVuZGVyc3RhbmRpbmcgYFVTQl9HQURHRVRgJ3MgZGVwZW5kZW5jaWVzIGRpcmVjdGx5IHdpbGwgdGVsbCBtZSBpZiBJIG1pc3NlZCBzb21ldGhpbmcgaW4gYFVTQl9HQURHRVRGU2AncyBkZXBlbmRlbmNpZXMuIEl0J3MgdGltZSB0byBkaWcgZGVlcGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTU2MywiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE0OjEwOjQxLjY0NTczNzM0WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDI1OTU0NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTQ5PWNvbmZpZyBVU0JfR0FER0VUX0RFQlVHXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNTAtXFx0Ym9vbCBcXFwiRGVidWdnaW5nIG1lc3NhZ2VzIChERVZFTE9QTUVOVClcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NTE6XFx0ZGVwZW5kcyBvbiBERUJVR19LRVJORUxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy01Mi1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz02Mz1jb25maWcgVVNCX0dBREdFVF9WRVJCT1NFXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNjQtXFx0Ym9vbCBcXFwiVmVyYm9zZSBkZWJ1Z2dpbmcgTWVzc2FnZXMgKERFVkVMT1BNRU5UKVxcXCJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo2NTpcXHRkZXBlbmRzIG9uIFVTQl9HQURHRVRfREVCVUdcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy02Ni1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz03Nz1jb25maWcgVVNCX0dBREdFVF9ERUJVR19GSUxFU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTc4LVxcdGJvb2wgXFxcIkRlYnVnZ2luZyBpbmZvcm1hdGlvbiBmaWxlcyAoREVWRUxPUE1FTlQpXFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjc5OlxcdGRlcGVuZHMgb24gUFJPQ19GU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTgwLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTg4PWNvbmZpZyBVU0JfR0FER0VUX0RFQlVHX0ZTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctODktXFx0Ym9vbCBcXFwiRGVidWdnaW5nIGluZm9ybWF0aW9uIGZpbGVzIGluIGRlYnVnZnMgKERFVkVMT1BNRU5UKVxcXCJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo5MDpcXHRkZXBlbmRzIG9uIERFQlVHX0ZTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctOTEtXFx0aGVscFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9MTMyPWNvbmZpZyBVX1NFUklBTF9DT05TT0xFXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTMzLVxcdGJvb2wgXFxcIlNlcmlhbCBnYWRnZXQgY29uc29sZSBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjEzNDpcXHRkZXBlbmRzIG9uIFVTQl9VX1NFUklBTFxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTEzNS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0xNDU9Y29uZmlnIFVTQl9MSUJDT01QT1NJVEVcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTE0Ny1cXHRzZWxlY3QgQ09ORklHRlNfRlNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoxNDg6XFx0ZGVwZW5kcyBvbiBVU0JfR0FER0VUXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTQ5LVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9MjQwPWNvbmZpZyBVU0JfQ09ORklHRlNfU0VSSUFMXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjQxLVxcdGJvb2wgXFxcIkdlbmVyaWMgc2VyaWFsIGJ1bGsgaW4vb3V0XFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI0MjpcXHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI0MzpcXHRkZXBlbmRzIG9uIFRUWVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI0NC1cXHRzZWxlY3QgVVNCX1VfU0VSSUFMXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0yNDk9Y29uZmlnIFVTQl9DT05GSUdGU19BQ01cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNTAtXFx0Ym9vbCBcXFwiQWJzdHJhY3QgQ29udHJvbCBNb2RlbCAoQ0RDIEFDTSlcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjUxOlxcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjUyOlxcdGRlcGVuZHMgb24gVFRZXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjUzLVxcdHNlbGVjdCBVU0JfVV9TRVJJQUxcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTI1OT1jb25maWcgVVNCX0NPTkZJR0ZTX09CRVhcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNjAtXFx0Ym9vbCBcXFwiT2JqZWN0IEV4Y2hhbmdlIE1vZGVsIChDREMgT0JFWClcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjYxOlxcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjYyOlxcdGRlcGVuZHMgb24gVFRZXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjYzLVxcdHNlbGVjdCBVU0JfVV9TRVJJQUxcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTI2OT1jb25maWcgVVNCX0NPTkZJR0ZTX05DTVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI3MC1cXHRib29sIFxcXCJOZXR3b3JrIENvbnRyb2wgTW9kZWwgKENEQyBOQ00pXFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI3MTpcXHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI3MjpcXHRkZXBlbmRzIG9uIE5FVFxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI3My1cXHRzZWxlY3QgVVNCX1VfRVRIRVJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTI4MT1jb25maWcgVVNCX0NPTkZJR0ZTX0VDTVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI4Mi1cXHRib29sIFxcXCJFdGhlcm5ldCBDb250cm9sIE1vZGVsIChDREMgRUNNKVxcXCJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyODM6XFx0ZGVwZW5kcyBvbiBVU0JfQ09ORklHRlNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyODQ6XFx0ZGVwZW5kcyBvbiBORVRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yODUtXFx0c2VsZWN0IFVTQl9VX0VUSEVSXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0yOTM9Y29uZmlnIFVTQl9DT05GSUdGU19FQ01fU1VCU0VUXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjk0LVxcdGJvb2wgXFxcIkV0aGVybmV0IENvbnRyb2wgTW9kZWwgKENEQyBFQ00pIHN1YnNldFxcXCJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyOTU6XFx0ZGVwZW5kcyBvbiBVU0JfQ09ORklHRlNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyOTY6XFx0ZGVwZW5kcyBvbiBORVRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yOTctXFx0c2VsZWN0IFVTQl9VX0VUSEVSXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0zMDM9Y29uZmlnIFVTQl9DT05GSUdGU19STkRJU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTMwNC1cXHRib29sIFxcXCJSTkRJU1xcXCJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozMDU6XFx0ZGVwZW5kcyBvbiBVU0JfQ09ORklHRlNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozMDY6XFx0ZGVwZW5kcyBvbiBORVRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMDctXFx0c2VsZWN0IFVTQl9VX0VUSEVSXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0zMTk9Y29uZmlnIFVTQl9DT05GSUdGU19FRU1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMjAtXFx0Ym9vbCBcXFwiRXRoZXJuZXQgRW11bGF0aW9uIE1vZGVsIChFRU0pXFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjMyMTpcXHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjMyMjpcXHRkZXBlbmRzIG9uIE5FVFxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTMyMy1cXHRzZWxlY3QgVVNCX1VfRVRIRVJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTMzNT1jb25maWcgVVNCX0NPTkZJR0ZTX1BIT05FVFxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTMzNi1cXHRib29sIFxcXCJQaG9uZXQgcHJvdG9jb2xcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzM3OlxcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzM4OlxcdGRlcGVuZHMgb24gTkVUXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzM5OlxcdGRlcGVuZHMgb24gUEhPTkVUXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzQwLVxcdHNlbGVjdCBVU0JfVV9FVEhFUlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9MzQ1PWNvbmZpZyBVU0JfQ09ORklHRlNfTUFTU19TVE9SQUdFXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzQ2LVxcdGJvb2wgXFxcIk1hc3Mgc3RvcmFnZVxcXCJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozNDc6XFx0ZGVwZW5kcyBvbiBVU0JfQ09ORklHRlNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozNDg6XFx0ZGVwZW5kcyBvbiBCTE9DS1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM0OS1cXHRzZWxlY3QgVVNCX0ZfTUFTU19TVE9SQUdFXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0zNTY9Y29uZmlnIFVTQl9DT05GSUdGU19GX0xCX1NTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzU3LVxcdGJvb2wgXFxcIkxvb3BiYWNrIGFuZCBzb3VyY2VzaW5rIGZ1bmN0aW9uIChmb3IgdGVzdGluZylcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzU4OlxcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzU5LVxcdHNlbGVjdCBVU0JfRl9TU19MQlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9MzY5PWNvbmZpZyBVU0JfQ09ORklHRlNfRl9GU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM3MC1cXHRib29sIFxcXCJGdW5jdGlvbiBmaWxlc3lzdGVtIChGdW5jdGlvbkZTKVxcXCJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozNzE6XFx0ZGVwZW5kcyBvbiBVU0JfQ09ORklHRlNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNzItXFx0c2VsZWN0IFVTQl9GX0ZTXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0zODE9Y29uZmlnIFVTQl9DT05GSUdGU19GX1VBQzFcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zODItXFx0Ym9vbCBcXFwiQXVkaW8gQ2xhc3MgMS4wXFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM4MzpcXHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM4NDpcXHRkZXBlbmRzIG9uIFNORFxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM4NS1cXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9Mzk5PWNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMxX0xFR0FDWVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQwMC1cXHRib29sIFxcXCJBdWRpbyBDbGFzcyAxLjAgKGxlZ2FjeSBpbXBsZW1lbnRhdGlvbilcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDAxOlxcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDAyOlxcdGRlcGVuZHMgb24gU05EXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDAzLVxcdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz00MTI9Y29uZmlnIFVTQl9DT05GSUdGU19GX1VBQzJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00MTMtXFx0Ym9vbCBcXFwiQXVkaW8gQ2xhc3MgMi4wXFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQxNDpcXHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQxNTpcXHRkZXBlbmRzIG9uIFNORFxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQxNi1cXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9NDMxPWNvbmZpZyBVU0JfQ09ORklHRlNfRl9NSURJXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDMyLVxcdGJvb2wgXFxcIk1JREkgZnVuY3Rpb25cXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDMzOlxcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDM0OlxcdGRlcGVuZHMgb24gU05EXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDM1LVxcdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz00NDU9Y29uZmlnIFVTQl9DT05GSUdGU19GX01JREkyXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDQ2LVxcdGJvb2wgXFxcIk1JREkgMi4wIGZ1bmN0aW9uXFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ0NzpcXHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ0ODpcXHRkZXBlbmRzIG9uIFNORFxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ0OS1cXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9NDU4PWNvbmZpZyBVU0JfQ09ORklHRlNfRl9ISURcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00NTktXFx0Ym9vbCBcXFwiSElEIGZ1bmN0aW9uXFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ2MDpcXHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ2MS1cXHRzZWxlY3QgVVNCX0ZfSElEXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz00Njg9Y29uZmlnIFVTQl9DT05GSUdGU19GX1VWQ1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ2OS1cXHRib29sIFxcXCJVU0IgV2ViY2FtIGZ1bmN0aW9uXFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ3MDpcXHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ3MTpcXHRkZXBlbmRzIG9uIFZJREVPX0RFVlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ3MjpcXHRkZXBlbmRzIG9uIFZJREVPX0RFVlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ3My1cXHRzZWxlY3QgVklERU9CVUYyX0RNQV9TR1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9NDgxPWNvbmZpZyBVU0JfQ09ORklHRlNfRl9QUklOVEVSXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00ODMtXFx0c2VsZWN0IFVTQl9GX1BSSU5URVJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0ODQ6XFx0ZGVwZW5kcyBvbiBVU0JfQ09ORklHRlNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00ODUtXFx0aGVscFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9NDk1PWNvbmZpZyBVU0JfQ09ORklHRlNfRl9UQ01cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00OTYtXFx0Ym9vbCBcXFwiVVNCIEdhZGdldCBUYXJnZXQgRmFicmljXFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ5NzpcXHRkZXBlbmRzIG9uIFRBUkdFVF9DT1JFXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDk4OlxcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDk5LVxcdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE0OjEwOjQxLjY5MDAwNDEyN1oiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTA5OTk3NjQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdW5kZXJzdGFuZGluZywgYXNzdW1pbmcgSSdtIGFuIGV4cGVydCBpbiB0aGlzIGVtYmVkZGVkIHN5c3RlbXMgY29udGV4dC5cblxuKipVbmRlcnN0YW5kaW5nIFVTQiBHYWRnZXQgQ29uZmlndXJhdGlvbioqXG5cblJpZ2h0LCBzbyB3ZSdyZSBkZWFsaW5nIHdpdGggVVNCIEdhZGdldCBmdW5jdGlvbmFsaXR5LCBhbmQgaXQgc2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gVGhlIGNvcmUgb2YgaXQgYWxsLCBgVVNCX0dBREdFVGAsIG5hdHVyYWxseSByZWxpZXMgb24gdGhlIGZvdW5kYXRpb25hbCBgVVNCX1NVUFBPUlRgIOKAkyB0aGF0J3MganVzdCBiYXNpYyBVU0Igc3VwcG9ydCwgbm90aGluZyBzdXJwcmlzaW5nIHRoZXJlLiBXZSdyZSBjb25maWd1cmluZyBVU0IgZ2FkZ2V0IGZ1bmN0aW9uYWxpdHkuXG5cblRoZSBrZXkgY29uZmlndXJhdGlvbnMgdG8gZm9jdXMgb24gc2VlbSB0byBiZSBgVVNCX0dBREdFVGAgaXRzZWxmLCBhbmQgYFVTQl9HQURHRVRGU2AuIFRvIGJlIHN1cmUgYWJvdXQgdGhlIHJlbGF0aW9uc2hpcHMsIEknbGwgcXVpY2tseSBjaGVjayB0aGUgZGVwZW5kZW5jaWVzIHdpdGhpbiB0aGUgYGRyaXZlcnMvdXNiL0tjb25maWdgIGZpbGUuIEknbGwgbmVlZCB0byBjb25maXJtIHRoYXQgYFVTQl9HQURHRVRgIGNvcnJlY3RseSBkZXBlbmRzIG9uIGBVU0JfU1VQUE9SVGAsIGFuZCBjb25maXJtIHdoZXRoZXIgYW55dGhpbmcgZWxzZSBpcyBpbXBhY3RlZCBieSBlbmFibGluZyBgVVNCX0dBREdFVGAuIEknbGwgYWxzbyBzZWUgaWYgdGhlcmUgaXMgYW55IG90aGVyIGNyaXRpY2FsIGluZm9ybWF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODY5MSwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE0OjEwOjQ2LjIwMDAwNDg4N1oiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTg1NDMwMTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWVudWNvbmZpZyBVU0JfR0FER0VUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xNi1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoxNzptZW51Y29uZmlnIFVTQl9HQURHRVRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xOC1cXHR0cmlzdGF0ZSBcXFwiVVNCIEdhZGdldCBTdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNDoxMDo0Ni4yNTg1NTM1MjNaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIyOTQzOTkzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeGFtaW5pbmcgdGhlIFVTQiBDb25maWd1cmF0aW9uIE9wdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBVU0IgY29uZmlndXJhdGlvbiBhbmQgbmVlZCB0byBjbGFyaWZ5IGEgZGVwZW5kZW5jeS4gTXkgaW5pdGlhbCBodW5jaCBpcyB0aGF0IGBVU0JfR0FER0VUYCByZWxpZXMgb24gYFVTQl9TVVBQT1JUYCwgYW5kIHNpbmNlIGBVU0JfU1VQUE9SVGAgaXMgZGVmaW5lZCBpbiBgZHJpdmVycy91c2IvS2NvbmZpZ2AsIEkgbmVlZCB0byB2ZXJpZnkgdGhpcyByZWxhdGlvbnNoaXAuIE5vdywgSSBzaG91bGQgc2hpZnQgbXkgZm9jdXMgdG8gYGRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnYC4gVGhpcyBpcyB3aGVyZSB0aGUgaW50cmljYWNpZXMgb2YgdGhlIGdhZGdldCBtb2RlIGNvbmZpZ3VyYXRpb25zIHNob3VsZCBiZSBzcGVsbGVkIG91dCwgcGFydGljdWxhcmx5IHRoZSBkZXBlbmRlbmNpZXMgZm9yIGBVU0JfR0FER0VUYC4gSSdsbCBleHBsb3JlIHRoaXMgZmlsZSB0byBwaW5wb2ludCAqZXhhY3RseSogd2hhdCBuZWVkcyB0byBiZSBlbmFibGVkIG9yIGNvbmZpZ3VyZWQgYWxvbmdzaWRlIGBVU0JfR0FER0VUYC4gVW5kZXJzdGFuZGluZyB0aGUgY29tcGxldGUgY2hhaW4gb2YgZGVwZW5kZW5jaWVzIGlzIGNyaXRpY2FsIHRvIHByb3BlciBVU0IgZnVuY3Rpb25hbGl0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkwNDQsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNDoxMDo0OS40ODc5OTY3OTlaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDEzNDUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBVU0IgR2FkZ2V0IHN1cHBvcnQgb24gYSBzeXN0ZW0gaW52b2x2ZXNcXG4gICA0OlxcdCMgICAgKGEpIGEgcGVyaXBoZXJhbCBjb250cm9sbGVyLCBhbmRcXG4gICA1OlxcdCMgICAgKGIpIHRoZSBnYWRnZXQgZHJpdmVyIHVzaW5nIGl0LlxcbiAgIDY6XFx0I1xcbiAgIDc6XFx0IyBOT1RFOiAgR2FkZ2V0IHN1cHBvcnQgKiogRE9FUyBOT1QgKiogZGVwZW5kIG9uIGhvc3Qtc2lkZSBDT05GSUdfVVNCICEhXFxuICAgODpcXHQjXFxuICAgOTpcXHQjICAtIEhvc3Qgc3lzdGVtcyAobGlrZSBQQ3MpIG5lZWQgQ09ORklHX1VTQiAod2l0aCBcXFwiQVxcXCIgamFja3MpLlxcbiAgMTA6XFx0IyAgLSBQZXJpcGhlcmFscyAobGlrZSBQREFzKSBuZWVkIENPTkZJR19VU0JfR0FER0VUICh3aXRoIFxcXCJCXFxcIiBqYWNrcykuXFxuICAxMTpcXHQjICAtIFNvbWUgc3lzdGVtcyBoYXZlIGJvdGgga2luZHMgb2YgY29udHJvbGxlcnMuXFxuICAxMjpcXHQjXFxuICAxMzpcXHQjIFdpdGggaGVscCBmcm9tIGEgc3BlY2lhbCB0cmFuc2NlaXZlciBhbmQgYSBcXFwiTWluaS1BQlxcXCIgamFjaywgc3lzdGVtcyB3aXRoXFxuICAxNDpcXHQjIGJvdGgga2luZHMgb2YgY29udHJvbGxlciBjYW4gYWxzbyBzdXBwb3J0IFxcXCJVU0IgT24tdGhlLUdvXFxcIiAoQ09ORklHX1VTQl9PVEcpLlxcbiAgMTU6XFx0I1xcbiAgMTY6XFx0XFxuICAxNzpcXHRtZW51Y29uZmlnIFVTQl9HQURHRVRcXG4gIDE4OlxcdFxcdHRyaXN0YXRlIFxcXCJVU0IgR2FkZ2V0IFN1cHBvcnRcXFwiXFxuICAxOTpcXHRcXHRzZWxlY3QgVVNCX0NPTU1PTlxcbiAgMjA6XFx0XFx0c2VsZWN0IE5MU1xcbiAgMjE6XFx0XFx0aGVscFxcbiAgMjI6XFx0XFx0ICAgVVNCIGlzIGEgaG9zdC9kZXZpY2UgcHJvdG9jb2wsIG9yZ2FuaXplZCB3aXRoIG9uZSBob3N0IChzdWNoIGFzIGFcXG4gIDIzOlxcdFxcdCAgIFBDKSBjb250cm9sbGluZyB1cCB0byAxMjcgcGVyaXBoZXJhbCBkZXZpY2VzLlxcbiAgMjQ6XFx0XFx0ICAgVGhlIFVTQiBoYXJkd2FyZSBpcyBhc3ltbWV0cmljLCB3aGljaCBtYWtlcyBpdCBlYXNpZXIgdG8gc2V0IHVwOlxcbiAgMjU6XFx0XFx0ICAgeW91IGNhbid0IGNvbm5lY3QgYSBcXFwidG8tdGhlLWhvc3RcXFwiIGNvbm5lY3RvciB0byBhIHBlcmlwaGVyYWwuXFxuICAyNjpcXHRcXG4gIDI3OlxcdFxcdCAgIExpbnV4IGNhbiBydW4gaW4gdGhlIGhvc3QsIG9yIGluIHRoZSBwZXJpcGhlcmFsLiAgSW4gYm90aCBjYXNlc1xcbiAgMjg6XFx0XFx0ICAgeW91IG5lZWQgYSBsb3cgbGV2ZWwgYnVzIGNvbnRyb2xsZXIgZHJpdmVyLCBhbmQgc29tZSBzb2Z0d2FyZVxcbiAgMjk6XFx0XFx0ICAgdGFsa2luZyB0byBpdC4gIFBlcmlwaGVyYWwgY29udHJvbGxlcnMgYXJlIG9mdGVuIGRpc2NyZXRlIHNpbGljb24sXFxuICAzMDpcXHRcXHQgICBvciBhcmUgaW50ZWdyYXRlZCB3aXRoIHRoZSBDUFUgaW4gYSBtaWNyb2NvbnRyb2xsZXIuICBUaGUgbW9yZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNDoxMDo0OS40ODg0MTI1OTlaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzQ3NTEyMjc2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBVU0IgR2FkZ2V0ZnMgUGF0Y2ggZm9yIEZ1enppbmcgU3VpdGFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGFyZ2V0aW5nIHRoZSBgVVNCX0dBREdFVGAgZHJpdmVyLCBJIHNlZSB0aGVyZSBhcmUgbm8gZGlyZWN0IGRlcGVuZGVuY2llcy4gVGhpcyBpcyBnb29kIHRvIGtlZXAgaW4gbWluZCwgYXMgaXQgY291bGQgbWVhbiBpdCdzIGVhc2llciB0byBpc29sYXRlLlxuXG5MZXQncyBxdWlja2x5IHJlY2FwIHdoYXQgd2UndmUgZ290IHNvIGZhcjogYFdvcnRoRnV6emluZ2AgaXMgc2V0IHRvIHRydWUsIGFuZCB3ZSBoYXZlIGBVU0JfR0FER0VUYCBhbmQgYFVTQl9HQURHRVRGU2AgZW5hYmxlZC4gT3VyIGluaXRpYWwgYEZvY3VzU3ltYm9sc2AgaW5jbHVkZSBgZ2FkZ2V0ZnNfZmlsbF9zdXBlcmAsIGBnYWRnZXRmc19ldmljdF9pbm9kZWAsIGBnYWRnZXRfZGV2X29wZW5gLCBgZGV2X3JlbGVhc2VgLCBgZXBfb3BlbmAsIGFuZCBgZXBfcmVsZWFzZWAuIFRoZSByZWFzb25pbmcgZ2l2ZW4gaXMgc29saWQg4oCTIHRoaXMgcGF0Y2ggc2VlbXMgdG8gYWRkcmVzcyBhIHBvdGVudGlhbCByZWZlcmVuY2UgY291bnRpbmcgb3IgbWVtb3J5IG1hbmFnZW1lbnQgcHJvYmxlbSBpbiB0aGUgVVNCIGdhZGdldGZzIGRyaXZlciwgc3BlY2lmaWNhbGx5IGJ5IG1vdmluZyBgcHV0X2VwYCBpbnRvIHRoZSBpbm9kZSBldmljdGlvbiBwYXRoLiBUaGUgZmFjdCB0aGF0IGdhZGdldGZzIGNhbiBiZSBhY2Nlc3NlZCB0aHJvdWdoIGBkdW1teV9oY2RgIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBtYWtlcyBpdCB2ZXJ5IGFwcGVhbGluZyBmb3IgZnV6emluZywgZ2l2ZW4gdGhlIGFjY2Vzc2liaWxpdHkuXG5cbkhvbGQgb24sIEkgc2VlIHRoYXQgYGdhZGdldGZzX2NyZWF0ZV9maWxlYCBoYXMgYWxzbyBiZWVuIG1vZGlmaWVkLiBUaGF0J3MgcmVsZXZhbnQuIExldCdzIGFkZCB0aGF0IHRvIHRoZSBgRm9jdXNTeW1ib2xzYCBsaXN0LCBhbG9uZyB3aXRoIGBkZXN0cm95X2VwX2ZpbGVzYC4gV2UgaGF2ZSB0byBjb25zaWRlciBob3cgdGhpcyBhZmZlY3RzIHRoZSBhdHRhY2sgc3VyZmFjZS5cblxuTm93LCBsZXQncyB1cGRhdGUgYEZvY3VzU3ltYm9sc2A6XG5cbiogICBgZ2FkZ2V0ZnNfZmlsbF9zdXBlcmBcbiogICBgZ2FkZ2V0ZnNfY3JlYXRlX2ZpbGVgXG4qICAgYGdhZGdldGZzX2V2aWN0X2lub2RlYFxuKiAgIGBkZXN0cm95X2VwX2ZpbGVzYFxuKiAgIGBlcF9vcGVuYFxuKiAgIGBlcF9yZWxlYXNlYFxuKiAgIGBnYWRnZXRfZGV2X29wZW5gXG4qICAgYGRldl9yZWxlYXNlYFxuXG5KdXN0IHRvIGRvdWJsZSBjaGVjaywgSSdsbCBxdWlja2x5IHZlcmlmeSBpZiBgZ2FkZ2V0ZnNfY3JlYXRlX2ZpbGVgIGlzIHN0YXRpYy4gWWVzLCBpdCBpcyBzdGF0aWMuIEJ1dCwgaXQgaXMgZmluZS5cblxuT2theSwgdGhhdCdzIGV2ZXJ5dGhpbmcgSSBuZWVkLiBJJ20gc2F0aXNmaWVkLiBMZXQncyBjYWxsIHRoZSBzZXQtcmVzdWx0cyBmdW5jdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk3NzUsIk91dHB1dFRva2VucyI6MTYxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjk1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTQ6MTA6NTYuOTYzNTM4NjdaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4ODMxNjA4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVVNCX0dBREdFVFwiLFxuICAgIFwiVVNCX0dBREdFVEZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZ2FkZ2V0ZnNfZmlsbF9zdXBlclwiLFxuICAgIFwiZ2FkZ2V0ZnNfY3JlYXRlX2ZpbGVcIixcbiAgICBcImdhZGdldGZzX2V2aWN0X2lub2RlXCIsXG4gICAgXCJkZXN0cm95X2VwX2ZpbGVzXCIsXG4gICAgXCJlcF9vcGVuXCIsXG4gICAgXCJlcF9yZWxlYXNlXCIsXG4gICAgXCJnYWRnZXRfZGV2X29wZW5cIixcbiAgICBcImRldl9yZWxlYXNlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByZWZlcmVuY2UgY291bnRpbmcgb3IgbWVtb3J5IG1hbmFnZW1lbnQgaXNzdWUgaW4gdGhlIFVTQiBnYWRnZXRmcyBkcml2ZXIgYnkgbW92aW5nIGBwdXRfZXBgIHRvIHRoZSBpbm9kZSBldmljdGlvbiBwYXRoLiBHYWRnZXRmcyBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBkdW1teV9oY2QsIG1ha2luZyBpdCBzdWl0YWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJVU0JfR0FER0VUXCIsXG4gICAgXCJVU0JfR0FER0VURlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJnYWRnZXRmc19maWxsX3N1cGVyXCIsXG4gICAgXCJnYWRnZXRmc19jcmVhdGVfZmlsZVwiLFxuICAgIFwiZ2FkZ2V0ZnNfZXZpY3RfaW5vZGVcIixcbiAgICBcImRlc3Ryb3lfZXBfZmlsZXNcIixcbiAgICBcImVwX29wZW5cIixcbiAgICBcImVwX3JlbGVhc2VcIixcbiAgICBcImdhZGdldF9kZXZfb3BlblwiLFxuICAgIFwiZGV2X3JlbGVhc2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHJlZmVyZW5jZSBjb3VudGluZyBvciBtZW1vcnkgbWFuYWdlbWVudCBpc3N1ZSBpbiB0aGUgVVNCIGdhZGdldGZzIGRyaXZlciBieSBtb3ZpbmcgYHB1dF9lcGAgdG8gdGhlIGlub2RlIGV2aWN0aW9uIHBhdGguIEdhZGdldGZzIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIGR1bW15X2hjZCwgbWFraW5nIGl0IHN1aXRhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowvn4pv[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-31 14:08:12 +0000 UTC FinishedAt: 2026-07-31 14:10:58 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "f5098b6bae761e346ebcd9da7f95622c04733cff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "USB_GADGET", "USB_GADGETFS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "f5098b6bae761e346ebcd9da7f95622c04733cff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "USB_GADGET", "USB_GADGETFS" ], "series_id": "a00f9ca9-f8ba-4337-86bb-c07477596ed2" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "gadgetfs_fill_super", "gadgetfs_create_file", "gadgetfs_evict_inode", "destroy_ep_files", "ep_open", "ep_release", "gadget_dev_open", "dev_release" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE0OjA5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTQl9HQURHRVQmIzM0OywKICAgICYjMzQ7VVNCX0dBREdFVEZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Z2FkZ2V0ZnNfZmlsbF9zdXBlciYjMzQ7LAogICAgJiMzNDtnYWRnZXRmc19jcmVhdGVfZmlsZSYjMzQ7LAogICAgJiMzNDtnYWRnZXRmc19ldmljdF9pbm9kZSYjMzQ7LAogICAgJiMzNDtkZXN0cm95X2VwX2ZpbGVzJiMzNDssCiAgICAmIzM0O2VwX29wZW4mIzM0OywKICAgICYjMzQ7ZXBfcmVsZWFzZSYjMzQ7LAogICAgJiMzNDtnYWRnZXRfZGV2X29wZW4mIzM0OywKICAgICYjMzQ7ZGV2X3JlbGVhc2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByZWZlcmVuY2UgY291bnRpbmcgb3IgbWVtb3J5IG1hbmFnZW1lbnQgaXNzdWUgaW4gdGhlIFVTQiBnYWRnZXRmcyBkcml2ZXIgYnkgbW92aW5nIGBwdXRfZXBgIHRvIHRoZSBpbm9kZSBldmljdGlvbiBwYXRoLiBHYWRnZXRmcyBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBkdW1teV9oY2QsIG1ha2luZyBpdCBzdWl0YWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxNDowOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGVjYzk1YTg1NTUxYzg5MGIyZDFmM2UzMDM4ZjA1NDVmN2I4ZTZhODhcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAzMSAxNDowOTo0MCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmNcbmluZGV4IGQ4N2E4YWI1MTUxMDcuLmEwMzA2Mjk4NmJmMzEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuY1xuQEAgLTE1NzksOCAmIzQzOzE1NzksNiBAQCBzdGF0aWMgdm9pZCBkZXN0cm95X2VwX2ZpbGVzIChzdHJ1Y3QgZGV2X2RhdGEgKmRldilcbiBcdFx0LyogYnJlYWsgbGluayB0byBkY2FjaGUgKi9cbiBcdFx0c2ltcGxlX3JlbW92ZV9ieV9uYW1lKGRldi1cdTAwM2VzYi1cdTAwM2VzX3Jvb3QsIGVwLVx1MDAzZW5hbWUsIE5VTEwpO1xuIFxuLVx0XHRwdXRfZXAgKGVwKTtcbi1cbiBcdFx0c3Bpbl9sb2NrX2lycSAoXHUwMDI2ZGV2LVx1MDAzZWxvY2spO1xuIFx0fVxuIFx0c3Bpbl91bmxvY2tfaXJxIChcdTAwMjZkZXYtXHUwMDNlbG9jayk7XG5AQCAtMTk5Niw2ICYjNDM7MTk5NCw3IEBAIHN0YXRpYyBpbnQgZ2FkZ2V0ZnNfY3JlYXRlX2ZpbGUgKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGNoYXIgY29uc3QgKm5hbWUsXG4gXG4gXHRkZW50cnkgPSBzaW1wbGVfc3RhcnRfY3JlYXRpbmcoc2ItXHUwMDNlc19yb290LCBuYW1lKTtcbiBcdGlmIChJU19FUlIoZGVudHJ5KSkge1xuJiM0MztcdFx0aW5vZGUtXHUwMDNlaV9wcml2YXRlID0gTlVMTDtcbiBcdFx0aXB1dChpbm9kZSk7XG4gXHRcdHJldHVybiBQVFJfRVJSKGRlbnRyeSk7XG4gXHR9XG5AQCAtMjAwNiw5ICYjNDM7MjAwNSwxOCBAQCBzdGF0aWMgaW50IGdhZGdldGZzX2NyZWF0ZV9maWxlIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBjaGFyIGNvbnN0ICpuYW1lLFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuJiM0MztzdGF0aWMgdm9pZCBnYWRnZXRmc19ldmljdF9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlKVxuJiM0Mzt7XG4mIzQzO1x0dHJ1bmNhdGVfaW5vZGVfcGFnZXNfZmluYWwoXHUwMDI2aW5vZGUtXHUwMDNlaV9kYXRhKTtcbiYjNDM7XHRjbGVhcl9pbm9kZShpbm9kZSk7XG4mIzQzO1x0aWYgKGlub2RlLVx1MDAzZWlfcHJpdmF0ZSBcdTAwMjZcdTAwMjYgaW5vZGUtXHUwMDNlaV9mb3AgPT0gXHUwMDI2ZXBfaW9fb3BlcmF0aW9ucylcbiYjNDM7XHRcdHB1dF9lcChpbm9kZS1cdTAwM2VpX3ByaXZhdGUpO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3VwZXJfb3BlcmF0aW9ucyBnYWRnZXRfZnNfb3BlcmF0aW9ucyA9IHtcbiBcdC5zdGF0ZnMgPVx0c2ltcGxlX3N0YXRmcyxcbiBcdC5kcm9wX2lub2RlID1cdGlub2RlX2p1c3RfZHJvcCxcbiYjNDM7XHQuZXZpY3RfaW5vZGUgPVx0Z2FkZ2V0ZnNfZXZpY3RfaW5vZGUsXG4gfTtcbiBcbiBzdGF0aWMgaW50XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTQ6MDk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTQl9HQURHRVQmIzM0OywKICAgICYjMzQ7VVNCX0dBREdFVEZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Z2FkZ2V0ZnNfZmlsbF9zdXBlciYjMzQ7LAogICAgJiMzNDtnYWRnZXRmc19jcmVhdGVfZmlsZSYjMzQ7LAogICAgJiMzNDtnYWRnZXRmc19ldmljdF9pbm9kZSYjMzQ7LAogICAgJiMzNDtkZXN0cm95X2VwX2ZpbGVzJiMzNDssCiAgICAmIzM0O2VwX29wZW4mIzM0OywKICAgICYjMzQ7ZXBfcmVsZWFzZSYjMzQ7LAogICAgJiMzNDtnYWRnZXRfZGV2X29wZW4mIzM0OywKICAgICYjMzQ7ZGV2X3JlbGVhc2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByZWZlcmVuY2UgY291bnRpbmcgb3IgbWVtb3J5IG1hbmFnZW1lbnQgaXNzdWUgaW4gdGhlIFVTQiBnYWRnZXRmcyBkcml2ZXIgYnkgbW92aW5nIGBwdXRfZXBgIHRvIHRoZSBpbm9kZSBldmljdGlvbiBwYXRoLiBHYWRnZXRmcyBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBkdW1teV9oY2QsIG1ha2luZyBpdCBzdWl0YWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGVjYzk1YTg1NTUxYzg5MGIyZDFmM2UzMDM4ZjA1NDVmN2I4ZTZhODgKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1bCAzMSAxNDowOTo0MCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYwppbmRleCBkODdhOGFiNTE1MTA3Li5hMDMwNjI5ODZiZjMxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jCkBAIC0xNTc5LDggJiM0MzsxNTc5LDYgQEAgc3RhdGljIHZvaWQgZGVzdHJveV9lcF9maWxlcyAoc3RydWN0IGRldl9kYXRhICpkZXYpCiAJCS8qIGJyZWFrIGxpbmsgdG8gZGNhY2hlICovCiAJCXNpbXBsZV9yZW1vdmVfYnlfbmFtZShkZXYtJmd0O3NiLSZndDtzX3Jvb3QsIGVwLSZndDtuYW1lLCBOVUxMKTsKIAotCQlwdXRfZXAgKGVwKTsKLQogCQlzcGluX2xvY2tfaXJxICgmYW1wO2Rldi0mZ3Q7bG9jayk7CiAJfQogCXNwaW5fdW5sb2NrX2lycSAoJmFtcDtkZXYtJmd0O2xvY2spOwpAQCAtMTk5Niw2ICYjNDM7MTk5NCw3IEBAIHN0YXRpYyBpbnQgZ2FkZ2V0ZnNfY3JlYXRlX2ZpbGUgKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGNoYXIgY29uc3QgKm5hbWUsCiAKIAlkZW50cnkgPSBzaW1wbGVfc3RhcnRfY3JlYXRpbmcoc2ItJmd0O3Nfcm9vdCwgbmFtZSk7CiAJaWYgKElTX0VSUihkZW50cnkpKSB7CiYjNDM7CQlpbm9kZS0mZ3Q7aV9wcml2YXRlID0gTlVMTDsKIAkJaXB1dChpbm9kZSk7CiAJCXJldHVybiBQVFJfRVJSKGRlbnRyeSk7CiAJfQpAQCAtMjAwNiw5ICYjNDM7MjAwNSwxOCBAQCBzdGF0aWMgaW50IGdhZGdldGZzX2NyZWF0ZV9maWxlIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBjaGFyIGNvbnN0ICpuYW1lLAogCXJldHVybiAwOwogfQogCiYjNDM7c3RhdGljIHZvaWQgZ2FkZ2V0ZnNfZXZpY3RfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSkKJiM0Mzt7CiYjNDM7CXRydW5jYXRlX2lub2RlX3BhZ2VzX2ZpbmFsKCZhbXA7aW5vZGUtJmd0O2lfZGF0YSk7CiYjNDM7CWNsZWFyX2lub2RlKGlub2RlKTsKJiM0MzsJaWYgKGlub2RlLSZndDtpX3ByaXZhdGUgJmFtcDsmYW1wOyBpbm9kZS0mZ3Q7aV9mb3AgPT0gJmFtcDtlcF9pb19vcGVyYXRpb25zKQomIzQzOwkJcHV0X2VwKGlub2RlLSZndDtpX3ByaXZhdGUpOwomIzQzO30KJiM0MzsKIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3VwZXJfb3BlcmF0aW9ucyBnYWRnZXRfZnNfb3BlcmF0aW9ucyA9IHsKIAkuc3RhdGZzID0Jc2ltcGxlX3N0YXRmcywKIAkuZHJvcF9pbm9kZSA9CWlub2RlX2p1c3RfZHJvcCwKJiM0MzsJLmV2aWN0X2lub2RlID0JZ2FkZ2V0ZnNfZXZpY3RfaW5vZGUsCiB9OwogCiBzdGF0aWMgaW50CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE0OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzNjMKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyNTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgVVNCIEdhZGdldGZzIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jYCwgYW5kIGl0IGxvb2tzIGxpa2UgYSB0YXJnZXRlZCBmaXggZm9yIGEgcG90ZW50aWFsIGlzc3VlIGluIHRoZSBVU0IgZ2FkZ2V0ZnMgc3Vic3lzdGVtLiBUaGUgY2hhbmdlIGNlbnRlcnMgYXJvdW5kIGhvdyBgZXBgIChlbmRwb2ludCkgb2JqZWN0cyBhcmUgbWFuYWdlZCBhbmQgcmVsZWFzZWQuIFNwZWNpZmljYWxseSwgdGhleSYjMzk7dmUgcmVtb3ZlZCBhIGBwdXRfZXAoZXApYCBjYWxsIGZyb20gYGRlc3Ryb3lfZXBfZmlsZXNgLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gSXQgYWxzbyBsb29rcyBsaWtlIHRoZXkmIzM5O3JlIGV4cGxpY2l0bHkgc2V0dGluZyBgaW5vZGUtJmd0O2lfcHJpdmF0ZSA9IE5VTExgIGluIGBnYWRnZXRmc19jcmVhdGVfZmlsZWAgd2hlbiBgc2ltcGxlX3N0YXJ0X2NyZWF0aW5nYCBmYWlscy4gVGhhdCYjMzk7cyBnb29kIHByYWN0aWNlIHRvIHByZXZlbnQgc3RhbGUgcG9pbnRlcnMuCgpDcnVjaWFsbHksIHRoZXkmIzM5O3ZlIGFkZGVkIGBnYWRnZXRmc19ldmljdF9pbm9kZWAsIHdoaWNoIGNvbnRhaW5zIHRoZSBsb2dpYyB0byBhY3R1YWxseSBjYWxsIGBwdXRfZXAoaW5vZGUtJmd0O2lfcHJpdmF0ZSlgIGlmIHRoZSBpbm9kZSYjMzk7cyBwcml2YXRlIGRhdGEgaXMgYW4gZW5kcG9pbnQgYW5kIGl0JiMzOTtzIGFzc29jaWF0ZWQgd2l0aCB0aGUgZW5kcG9pbnQgSS9PIG9wZXJhdGlvbnMuIFRoZW4sIHRoYXQgbmV3IGZ1bmN0aW9uIGlzIHJlZ2lzdGVyZWQgYXMgdGhlIGAuZXZpY3RfaW5vZGVgIG9wZXJhdGlvbiBmb3IgdGhlIGBnYWRnZXRfZnNfb3BlcmF0aW9uc2AuIFRoaXMgbG9va3MgbGlrZSBhIGRlZmluaXRlIHN0ZXAgaW4gdGhlIHJpZ2h0IGRpcmVjdGlvbi4KCk15IHRha2UgaXMgdGhhdCB0aGlzIGlzIGxpa2VseSBhIGZ1bmN0aW9uYWwgZml4LCBhbmQgaXQmIzM5O3MgYWRkcmVzc2luZyBhIHJlZmVyZW5jZSBjb3VudGluZyBpc3N1ZSBvciBwb3NzaWJseSBhIG1lbW9yeSBsZWFrIG9yIHVzZS1hZnRlci1mcmVlIHNjZW5hcmlvIHJlbGF0ZWQgdG8gaG93IGVuZHBvaW50IG9iamVjdHMgYXJlIGhhbmRsZWQgaW4gZ2FkZ2V0ZnMuIFNpbmNlIGdhZGdldGZzIGlzIGEgdmlhYmxlIHBhdGggaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCB3aXRoIGEgZHVtbXkgSENELCBvciBzaW1pbGFyIHNldHVwcywgdGhpcyBraW5kIG9mIGZpeCBpcyBjcml0aWNhbC4KCkFscmlnaHQsIEkmIzM5O20gdGhpbmtpbmcgd2UgbmVlZCB0byBmdXp6IHRoaXMhIEkgbmVlZCB0byBkaWcgaW50byBgZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jYCBhbmQgZmlndXJlIG91dCB3aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBlbmFibGUgaXQuIE15IGd1ZXNzIGlzIGl0JiMzOTtzIHByb2JhYmx5IHRpZWQgdG8gYENPTkZJR19VU0JfR0FER0VURlNgLCBidXQgSSYjMzk7bGwgY29uZmlybSB0aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE0OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1VTQl9HQURHRVRGUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz0xOTA9Y29uZmlnIFVTQl9HX05DTVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yMDUtXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6MjA2OmNvbmZpZyBVU0JfR0FER0VURlNcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yMDctXHR0cmlzdGF0ZSBcJiMzNDtHYWRnZXQgRmlsZXN5c3RlbVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvTWFrZWZpbGU9MzA9b2JqLSQoQ09ORklHX1VTQl9FVEgpXHRcdCYjNDM7PSBnX2V0aGVyLm9cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvTWFrZWZpbGU6MzE6b2JqLSQoQ09ORklHX1VTQl9HQURHRVRGUylcdCYjNDM7PSBnYWRnZXRmcy5vXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L01ha2VmaWxlLTMyLW9iai0kKENPTkZJR19VU0JfRlVOQ1RJT05GUylcdCYjNDM7PSBnX2Zmcy5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTQ6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzIzNAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgYFVTQl9HQURHRVRGU2AgRGVwZW5kZW5jaWVzIGluIHRoZSBLZXJuZWwgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBiZWZvcmUgZGl2aW5nIGludG8gdGhlIG1haW4gaXNzdWUsIGl0JiMzOTtzIGFsd2F5cyBhIGdvb2QgcHJhY3RpY2UgdG8gZXhhbWluZSB0aGUgYEtjb25maWdgIGZpbGVzLCBlc3BlY2lhbGx5IGluIGFyZWFzIHRoYXQgaGF2ZSBiZWVuIGFyb3VuZCBmb3IgYSB3aGlsZS4gTGV0JiMzOTtzIHNlZSwgbXkgdGhpbmtpbmcgZ29lcyB0byBgZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnYC4gSSYjMzk7bSBzcGVjaWZpY2FsbHkgbG9va2luZyBmb3IgYW55IGRlcGVuZGVuY2llcyB0aGF0IGBVU0JfR0FER0VURlNgIGhhcy4gVGhpcyBzaG91bGQgc2hlZCBsaWdodCBvbiB3aGljaCBvdGhlciBrZXJuZWwgbW9kdWxlcyBvciBvcHRpb25zIG5lZWQgdG8gYmUgZW5hYmxlZCBmb3IgYGdhZGdldGZzYCB0byB3b3JrIGNvcnJlY3RseSBhbmQgaXQgZ2l2ZXMgaGludHMgaWYgc29tZSBwYXJ0cyBhcmUgbWFya2VkIGZvciByZW1vdmFsLiBJIHdhbnQgdG8gYnVpbGQgYSBjbGVhciBtZW50YWwgcGljdHVyZSBvZiBhbGwgdGhlIGltcGxpY2F0aW9ucy4gVGhpcyB3aWxsIGNsYXJpZnkgaG93IHRoaXMgZmVhdHVyZSBpbnRlcmFjdHMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgVVNCIGdhZGdldCBzdWJzeXN0ZW0gaW4gaXRzIGN1cnJlbnQgc3RhdGUuIE5vIHN1cnByaXNlcyBsYXRlciwgaG9wZWZ1bGx5LiBUaW1lIHRvIGdvIGRpZ2dpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTQ6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDIwMDpcdFx0ICBvZiBzZXZlcmFsIGV0aGVybmV0IGZyYW1lcyBpbnRvIG9uZSBVU0IgdHJhbnNmZXIgYW5kIGRpZmZlcmVudFxuIDIwMTpcdFx0ICBhbGlnbm1lbnQgcG9zc2liaWxpdGllcy5cbiAyMDI6XHRcbiAyMDM6XHRcdCAgU2F5IFwmIzM0O3lcJiMzNDsgdG8gbGluayB0aGUgZHJpdmVyIHN0YXRpY2FsbHksIG9yIFwmIzM0O21cJiMzNDsgdG8gYnVpbGQgYVxuIDIwNDpcdFx0ICBkeW5hbWljYWxseSBsaW5rZWQgbW9kdWxlIGNhbGxlZCBcJiMzNDtnX25jbVwmIzM0Oy5cbiAyMDU6XHRcbiAyMDY6XHRjb25maWcgVVNCX0dBREdFVEZTXG4gMjA3Olx0XHR0cmlzdGF0ZSBcJiMzNDtHYWRnZXQgRmlsZXN5c3RlbVwmIzM0O1xuIDIwODpcdFx0aGVscFxuIDIwOTpcdFx0ICBUaGlzIGRyaXZlciBwcm92aWRlcyBhIGZpbGVzeXN0ZW0gYmFzZWQgQVBJIHRoYXQgbGV0cyB1c2VyIG1vZGVcbiAyMTA6XHRcdCAgcHJvZ3JhbXMgaW1wbGVtZW50IGEgc2luZ2xlLWNvbmZpZ3VyYXRpb24gVVNCIGRldmljZSwgaW5jbHVkaW5nXG4gMjExOlx0XHQgIGVuZHBvaW50IEkvTyBhbmQgY29udHJvbCByZXF1ZXN0cyB0aGF0IGRvbiYjMzk7dCByZWxhdGUgdG8gZW51bWVyYXRpb24uXG4gMjEyOlx0XHQgIEFsbCBlbmRwb2ludHMsIHRyYW5zZmVyIHNwZWVkcywgYW5kIHRyYW5zZmVyIHR5cGVzIHN1cHBvcnRlZCBieVxuIDIxMzpcdFx0ICB0aGUgaGFyZHdhcmUgYXJlIGF2YWlsYWJsZSwgdGhyb3VnaCByZWFkKCkgYW5kIHdyaXRlKCkgY2FsbHMuXG4gMjE0Olx0XG4gMjE1Olx0XHQgIFNheSBcJiMzNDt5XCYjMzQ7IHRvIGxpbmsgdGhlIGRyaXZlciBzdGF0aWNhbGx5LCBvciBcJiMzNDttXCYjMzQ7IHRvIGJ1aWxkIGFcbiAyMTY6XHRcdCAgZHluYW1pY2FsbHkgbGlua2VkIG1vZHVsZSBjYWxsZWQgXCYjMzQ7Z2FkZ2V0ZnNcJiMzNDsuXG4gMjE3Olx0XG4gMjE4Olx0Y29uZmlnIFVTQl9GVU5DVElPTkZTXG4gMjE5Olx0XHR0cmlzdGF0ZSBcJiMzNDtGdW5jdGlvbiBGaWxlc3lzdGVtXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTQ6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzgxMwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHNpdHVhdGlvbjoKCioqSW52ZXN0aWdhdGluZyB0aGUgRGVwZW5kZW5jeSoqCgpPa2F5LCBzbyB0aGlzIGNvbmZpZ3VyYXRpb24gb3B0aW9uJiMzOTtzIGJlaGF2aW9yIGlzIGNsZWFybHkgdGllZCB0byBzb21ldGhpbmcgZWxzZSDigJMgbG9va3MgbGlrZSBgVVNCX0dBREdFVGAgaXMgdGhlIGNvbnRyb2xsaW5nIGZhY3RvciBoZXJlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBpdCYjMzk7cyBsaWtlbHkgdGhlIHBhcmVudCBtZW51IGl0ZW0uIEkgbmVlZCB0byBjb25maXJtIHRoYXQgcmVsYXRpb25zaGlwLiBUaGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIHRoZSBtZW51IHN0cnVjdHVyZSBhbmQgdmVyaWZ5IHRoZSBkZXBlbmRlbmN5IHBhdGguIExldCYjMzk7cyB0cmFjZSBpdCBiYWNrIGFuZCBwaW5wb2ludCBleGFjdGx5IHdoZXJlIHRoaXMgY29uZGl0aW9uYWwgbG9naWMgb3JpZ2luYXRlcy4gVGhhdCYjMzk7cyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGZ1bGwgcGljdHVyZSBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE0OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21lbnVjb25maWcgVVNCX0dBREdFVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTYtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoxNzptZW51Y29uZmlnIFVTQl9HQURHRVRcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTE4LVx0dHJpc3RhdGUgXCYjMzQ7VVNCIEdhZGdldCBTdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTQ6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDA1MwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDEyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFVTQiBHYWRnZXQgRmlsZSBTeXN0ZW0gSW1wbGVtZW50YXRpb24qKgoKT2theSwgc28gSSBzZWUgdGhpcyBwYXRjaCBpcyBkZWFsaW5nIHdpdGggYFVTQl9HQURHRVRgIGFuZCBgVVNCX0dBREdFVEZTYCwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgZGl2aW5nIGludG8gdGhlIGxlZ2FjeSBpbm9kZSBpbXBsZW1lbnRhdGlvbiBpbiBgZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jYC4gVGhhdCBzZWVtcyBsaWtlIHRoZSByaWdodCBwbGFjZSB0byBiZWdpbiwgdG8gdW5kZXJzdGFuZCB0aGUgY29yZSBmdW5jdGlvbnMgYmVpbmcgbW9kaWZpZWQuIFRoZSBkZXNjcmlwdGlvbiBtZW50aW9ucyBjaGFuZ2VzIHRvIGBkZXN0cm95X2VwX2ZpbGVzYCwgYGdhZGdldGZzX2NyZWF0ZV9maWxlYCwgYW5kIHRoZSBhZGRpdGlvbiBvZiBgZ2FkZ2V0ZnNfZXZpY3RfaW5vZGVgLiBUaGlzIGltbWVkaWF0ZWx5IHRlbGxzIG1lIHdoYXQgYXJlYXMgYXJlIGJlaW5nIHRvdWNoZWQgYW5kIHdoYXQgdGhlIHBhdGNoIGlzIHRyeWluZyB0byBhY2hpZXZlLgoKTXkgbmV4dCBzdGVwIGlzIHRvIHRyYWNlIHRoZSBBUEkgZW50cnkgcG9pbnRzIHRvIHNlZSBob3cgdGhlc2UgZnVuY3Rpb25zIGZpdCBpbnRvIHRoZSBsYXJnZXIgcGljdHVyZS4gSSBzdXNwZWN0IHRoYXQgYGdhZGdldGZzX2NyZWF0ZV9maWxlYCB3aWxsIGJlIGNhbGxlZCBmcm9tIHNvbWV3aGVyZSBsaWtlIGBnYWRnZXRmc19maWxsX3N1cGVyYCwgb3Igc29tZXRoaW5nIHNpbWlsYXIgZHVyaW5nIHRoZSBmaWxlc3lzdGVtIGluaXRpYWxpemF0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCBieSBjaGVja2luZyB0aGUgc291cmNlIGNvZGUgb2YgYGRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuY2AsIGxpa2VseSBleGFtaW5pbmcgdGhlIGZ1bmN0aW9uIGNhbGxlcnMgYW5kIG90aGVyIHJlbGV2YW50IGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE0OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2dhZGdldGZzX2NyZWF0ZV9maWxlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xNTU0PXN0YXRpYyB2b2lkIGRlc3Ryb3lfZXBfZmlsZXMgKHN0cnVjdCBkZXZfZGF0YSAqZGV2KVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xNTg3LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjE1ODg6c3RhdGljIGludCBnYWRnZXRmc19jcmVhdGVfZmlsZSAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgY2hhciBjb25zdCAqbmFtZSxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xNTg5LVx0XHR2b2lkICpkYXRhLCBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zICpmb3BzKTtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MTU5MT1zdGF0aWMgaW50IGFjdGl2YXRlX2VwX2ZpbGVzIChzdHJ1Y3QgZGV2X2RhdGEgKmRldilcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTYxNy1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxNjE4Olx0XHRlcnIgPSBnYWRnZXRmc19jcmVhdGVfZmlsZSAoZGV2LVx1MDAzZXNiLCBkYXRhLVx1MDAzZW5hbWUsXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTYxOS1cdFx0XHRcdGRhdGEsIFx1MDAyNmVwX2lvX29wZXJhdGlvbnMpO1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xOTYzPWdhZGdldGZzX21ha2VfaW5vZGUgKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE5ODMtICovXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTk4NDpzdGF0aWMgaW50IGdhZGdldGZzX2NyZWF0ZV9maWxlIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBjaGFyIGNvbnN0ICpuYW1lLFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE5ODUtXHRcdHZvaWQgKmRhdGEsIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgKmZvcHMpXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTIwMjM9Z2FkZ2V0ZnNfZmlsbF9zdXBlciAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzX2NvbnRleHQgKmZjKVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0yMDY2LVx0ZGV2LVx1MDAzZXNiID0gc2I7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MjA2NzpcdHJjID0gZ2FkZ2V0ZnNfY3JlYXRlX2ZpbGUoc2IsIENISVAsIGRldiwgXHUwMDI2ZXAwX29wZXJhdGlvbnMpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTIwNjgtXHRpZiAocmMpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTQ6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDk4NQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDYwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRoZSBleHBlcnQsIHRoaW5raW5nIHRocm91Z2ggdGhpczoKCioqRGVsdmluZyBpbnRvIHRoZSBHYWRnZXRGUyBGaWxlIENyZWF0aW9uIFBhdGgqKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gdHJhY2UgdGhlIGNyZWF0aW9uIG9mIGZpbGVzIHdpdGhpbiB0aGUgYGdhZGdldGZzYCBmaWxlc3lzdGVtLiAgTXkgaW1tZWRpYXRlIHBvaW50IG9mIGVudHJ5IHNlZW1zIHRvIGJlIGBnYWRnZXRmc19jcmVhdGVfZmlsZWAg4oCTIHRoYXQmIzM5O3MgdGhlIG9idmlvdXMgZnVuY3Rpb24gY2FsbCwgYnV0IHdoZXJlIGFyZSB3ZSAqY29taW5nKiBmcm9tPyBUaGUgbm90ZXMgc2F5IGl0JiMzOTtzIGNhbGxlZCBmcm9tIGJvdGggYGFjdGl2YXRlX2VwX2ZpbGVzYCBhbmQgYGdhZGdldGZzX2ZpbGxfc3VwZXJgLiBgZ2FkZ2V0ZnNfZmlsbF9zdXBlcmAgaXMgbGlrZWx5IGR1cmluZyB0aGUgc3VwZXJibG9jayBzZXR1cCwgYnV0IGBhY3RpdmF0ZV9lcF9maWxlc2AgaXMgbW9yZSBpbnRyaWd1aW5nIGFuZCBsaWtlbHkgcmVzcG9uc2libGUgZm9yIGFjdHVhbGx5IG1ha2luZyB0aGUgZmlsZXMgdmlzaWJsZSB0byB0aGUgdXNlci4KCk5vdywgSSBzZWVtIHRvIHZhZ3VlbHkgcmVjYWxsIGBhY3RpdmF0ZV9lcF9maWxlc2AgYmVpbmcgY29ubmVjdGVkIHRvIGBnYWRnZXRmc19iaW5kYCwgYnV0IEkgc2hvdWxkIHZlcmlmeSB0aGlzIGNvbm5lY3Rpb24gdG8gbWFrZSBzdXJlIEkgYW0gb24gdGhlIHJpZ2h0IHRyYWNrLiBNeSBuZXh0IHN0ZXAgc2hvdWxkIGJlIHRvIGRvdWJsZS1jaGVjayB0aGUgY2FsbCBjaGFpbiBieSBpbnZlc3RpZ2F0aW5nIHRoZSBzb3VyY2UgY29kZSBmb3IgYGFjdGl2YXRlX2VwX2ZpbGVzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTQ6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YWN0aXZhdGVfZXBfZmlsZXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTE1ODg9c3RhdGljIGludCBnYWRnZXRmc19jcmVhdGVfZmlsZSAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgY2hhciBjb25zdCAqbmFtZSxcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTU5MC1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxNTkxOnN0YXRpYyBpbnQgYWN0aXZhdGVfZXBfZmlsZXMgKHN0cnVjdCBkZXZfZGF0YSAqZGV2KVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE1OTIte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xNjY2PXN0YXRpYyBpbnQgZ2FkZ2V0ZnNfYmluZChzdHJ1Y3QgdXNiX2dhZGdldCAqZ2FkZ2V0LFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xNjg5LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjE2OTA6XHRpZiAoYWN0aXZhdGVfZXBfZmlsZXMgKGRldikgXHUwMDNjIDApXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTY5MS1cdFx0Z290byBlbm9tZW07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE0OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU1NDQKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA2MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCioqVW5kZXJzdGFuZGluZyB0aGUgR2FkZ2V0ZnMgRHJpdmVyIGFuZCBVc2VyLVNwYWNlIEludGVyYWN0aW9uKioKClJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgZ2FkZ2V0ZnNgIGltcGxlbWVudGF0aW9uLCBhbmQgZmlyc3QgdGhpbmcmIzM5O3MgZmlyc3Q6IGBnYWRnZXRmc19iaW5kYC4gVGhhdCYjMzk7cyB0aGUga2V5IGZ1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciBiaW5kaW5nIHRoZSBkcml2ZXIsIGVzc2VudGlhbGx5IGluaXRpYWxpemluZyBpdCBhbmQgZ2V0dGluZyBpdCByZWFkeSB0byBpbnRlcmZhY2Ugd2l0aCB0aGUgaGFyZHdhcmUuIFRoZW4sIHdlIGhhdmUgYGdhZGdldGZzX2ZpbGxfc3VwZXJgLiBTb3VuZHMgbGlrZSB0aGF0JiMzOTtzIHRyaWdnZXJlZCBkdXJpbmcgdGhlIG1vdW50aW5nIHByb2Nlc3Mg4oCTIHRoYXQgbWFrZXMgcGVyZmVjdCBzZW5zZS4gSXQgd291bGQgaGFuZGxlIHRoZSBjcmVhdGlvbiBhbmQgaW5pdGlhbGl6YXRpb24gb2YgdGhlIHN1cGVyYmxvY2sgZm9yIHRoZSBmaWxlc3lzdGVtLiBOb3cgdGhlIGludGVyZXN0aW5nIHBhcnQsIGhvdyBkb2VzIHRoaXMgaW50ZXJhY3Qgd2l0aCB1c2VyIHNwYWNlPyBMZXQmIzM5O3Mgc2VlLi4uIGFoLCBoZXJlIHdlIGFyZTogYGVwX2lvX29wZXJhdGlvbnNgIGFuZCBgZXAwX29wZXJhdGlvbnNgLiBUaGVzZSBtdXN0IGJlIHRoZSBmdW5kYW1lbnRhbCBzdHJ1Y3R1cmVzIHRoYXQgZXhwb3NlIHRoZSBmdW5jdGlvbmFsaXR5IHRvIHVzZXItc3BhY2UuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gdGhlc2Ugc3RydWN0dXJlcyB0byB1bmRlcnN0YW5kIGV4YWN0bHkgKndoYXQqIG9wZXJhdGlvbnMgYXJlIGV4cG9zZWQg4oCTIHJlYWQsIHdyaXRlLCBjb250cm9sLCBldGMuLCBhbmQgaG93IHRoZXkmIzM5O3JlIG1hcHBlZCB0byB0aGUgc3BlY2lmaWMgZ2FkZ2V0IGZ1bmN0aW9uYWxpdHkuIFRoaXMgaXMgd2hlcmUgdGhlIG1hZ2ljIGhhcHBlbnMsIGFuZCBob3cgdXNlcnNwYWNlIGFwcGxpY2F0aW9ucyBjYW4gYWN0dWFsbHkgKnVzZSogdGhlIHZpcnR1YWwgVVNCIGRldmljZS4gRXhjZWxsZW50LiBUaGlzIGdpdmVzIG1lIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgYW5hbHlzaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE0OjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2VwX2lvX29wZXJhdGlvbnMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTYzOT1lcF93cml0ZV9pdGVyKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tKVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy03MDEtLyogdXNlZCBhZnRlciBlbmRwb2ludCBjb25maWd1cmF0aW9uICovXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6NzAyOnN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGVwX2lvX29wZXJhdGlvbnMgPSB7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtNzAzLVx0Lm93bmVyID1cdFRISVNfTU9EVUxFLFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xNTkxPXN0YXRpYyBpbnQgYWN0aXZhdGVfZXBfZmlsZXMgKHN0cnVjdCBkZXZfZGF0YSAqZGV2KVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xNjE4LVx0XHRlcnIgPSBnYWRnZXRmc19jcmVhdGVfZmlsZSAoZGV2LVx1MDAzZXNiLCBkYXRhLVx1MDAzZW5hbWUsXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTYxOTpcdFx0XHRcdGRhdGEsIFx1MDAyNmVwX2lvX29wZXJhdGlvbnMpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE2MjAtXHRcdGlmIChlcnIpXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTIwMDg9c3RhdGljIHZvaWQgZ2FkZ2V0ZnNfZXZpY3RfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSlcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMjAxMS1cdGNsZWFyX2lub2RlKGlub2RlKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoyMDEyOlx0aWYgKGlub2RlLVx1MDAzZWlfcHJpdmF0ZSBcdTAwMjZcdTAwMjYgaW5vZGUtXHUwMDNlaV9mb3AgPT0gXHUwMDI2ZXBfaW9fb3BlcmF0aW9ucylcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0yMDEzLVx0XHRwdXRfZXAoaW5vZGUtXHUwMDNlaV9wcml2YXRlKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTQ6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjI5MAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDY3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRoZSBleHBlcnQ6CgoqKkRlbHZpbmcgaW50byBFbmRwb2ludCBPcGVyYXRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGxvdy1sZXZlbCBJL08gb3BlcmF0aW9ucyBhbmQgSSYjMzk7bSBsb29raW5nIGF0IGBlcF9pb19vcGVyYXRpb25zYC4gSXQgc2VlbXMgbGlrZSB3ZSBoYXZlIHRoZSBzdGFuZGFyZCBzdWl0ZSBpbiB0aGVyZTogYGVwX3dyaXRlX2l0ZXJgLCBgZXBfcmVhZF9pdGVyYCBmb3IgaXRlcmF0aXZlIEkvTywgdGhlbiB0aGUgdXN1YWwgc3VzcGVjdHMsIGBlcF9vcGVuYCwgYGVwX3JlbGVhc2VgLCBgZXBfaW9jdGxgLCBgZXBfcG9sbGAsIGFuZCBmaW5hbGx5IHRoZSBhc3luY2hyb25vdXMgb3BlcmF0aW9ucyBgZXBfYWlvX3JlYWRgIGFuZCBgZXBfYWlvX3dyaXRlYC4gVGhhdCYjMzk7cyBhIHNvbGlkIGZvdW5kYXRpb24uIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgdGllcyBpbnRvIHRoZSBzcGVjaWZpY3Mgb2YgdmFyaW91cyBlbmRwb2ludHMuIExldCBtZSBzaGlmdCBteSBmb2N1cyB0byBgZXAwX29wZXJhdGlvbnNgIHRvIHN0YXJ0IGV4cGxvcmluZyBob3cgdGhpcyBnZW5lcmFsIHN0cnVjdHVyZSBpcyBpbnN0YW50aWF0ZWQgaW4gYSBjb25jcmV0ZSBleGFtcGxlLCBpbiB0aGlzIGNhc2UsIHRoZSBmaXJzdCBlbmRwb2ludC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTQ6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZXAwX29wZXJhdGlvbnMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTE5MTI9Z2FkZ2V0X2Rldl9vcGVuIChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmQpXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE5MjgtXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTkyOTpzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBlcDBfb3BlcmF0aW9ucyA9IHtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xOTMwLVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0yMDIzPWdhZGdldGZzX2ZpbGxfc3VwZXIgKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBmc19jb250ZXh0ICpmYylcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMjA2Ni1cdGRldi1cdTAwM2VzYiA9IHNiO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjIwNjc6XHRyYyA9IGdhZGdldGZzX2NyZWF0ZV9maWxlKHNiLCBDSElQLCBkZXYsIFx1MDAyNmVwMF9vcGVyYXRpb25zKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0yMDY4LVx0aWYgKHJjKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE0OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY4MzIKCQkJCQkJCW91dHB1dDogNTMKCQkJCQkJCXRob3VnaHRzOiAyMDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRGVidWdnaW5nIGEgVVNCIEdhZGdldCBFbmRwb2ludCBJc3N1ZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBidWcgcmVwb3J0IHJlZ2FyZGluZyBVU0IgZ2FkZ2V0IGVuZHBvaW50cywgYW5kIGl0IHNlZW1zIGxpa2UgdGhlIGNvcmUgb2YgdGhlIHByb2JsZW0gbGllcyB3aXRoIGhvdyBlbmRwb2ludHMgYXJlIG1hbmFnZWQgYW5kIHJlbGVhc2VkLiBTcGVjaWZpY2FsbHksIGl0IGxvb2tzIGxpa2UgYHB1dF9lcGAgaXMgYmVpbmcgY2FsbGVkIHByZW1hdHVyZWx5IGluIGBkZXN0cm95X2VwX2ZpbGVzYCwgcG90ZW50aWFsbHkgd2hpbGUgdGhlIGlub2RlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZW5kcG9pbnQgaXMgc3RpbGwgYWN0aXZlLiBUaGUgcHJvcG9zZWQgZml4LCB3aGljaCBzZWVtcyByZWFzb25hYmxlLCBpbnZvbHZlcyBtb3ZpbmcgdGhlIGBwdXRfZXBgIGNhbGwgdG8gYGdhZGdldGZzX2V2aWN0X2lub2RlYC4gVGhpcyBtYWtlcyBzZW5zZTsgaXQgZW5zdXJlcyB0aGUgZW5kcG9pbnQgaXMgcmVsZWFzZWQgd2hlbiB0aGUgaW5vZGUgaXMgdHJ1bHkgYmVpbmcgZXZpY3RlZC4KCk15IGltbWVkaWF0ZSBmb2N1cywgdGhlcmVmb3JlLCBuZWVkcyB0byBiZSBvbiB1bmRlcnN0YW5kaW5nIHRoZSBsaWZlY3ljbGUgYW5kIGRlcGVuZGVuY2llcyBvZiB0aGVzZSBjb21wb25lbnRzLiBJJiMzOTtsbCBuZWVkIHRvIHNjcnV0aW5pemUgaG93IGBnYWRnZXRmc19maWxsX3N1cGVyYCwgYGdhZGdldGZzX2JpbmRgLCBgZ2FkZ2V0ZnNfZXZpY3RfaW5vZGVgLCBgZ2FkZ2V0ZnNfY3JlYXRlX2ZpbGVgLCBgZGVzdHJveV9lcF9maWxlc2AsIGFuZCBgYWN0aXZhdGVfZXBfZmlsZXNgIGludGVyYWN0LiBUaGVzZSBmdW5jdGlvbnMgYXJlIGtleSB0byBmaWxlc3lzdGVtIGluaXRpYWxpemF0aW9uLCBiaW5kaW5nIGVuZHBvaW50cywgaW5vZGUgbWFuYWdlbWVudCwgZmlsZSBjcmVhdGlvbiwgZW5kcG9pbnQgZmlsZSBkZXN0cnVjdGlvbiwgYW5kIGVuZHBvaW50IGFjdGl2YXRpb24sIHJlc3BlY3RpdmVseS4KCkJleW9uZCB0aGUgY29yZSBmaWxlc3lzdGVtIG9wZXJhdGlvbnMsIEkmIzM5O2xsIGFsc28gbmVlZCB0byBjaGVjayB0aGUgYmVoYXZpb3Igb2YgdGhlIGVuZHBvaW50LXNwZWNpZmljIG9wZXJhdGlvbnMsIGVzcGVjaWFsbHkgdGhlIG9wZW4vcmVsZWFzZSBjeWNsZXM6IGBlcF9vcGVuYCwgYGVwX3JlbGVhc2VgLCBgZ2FkZ2V0X2Rldl9vcGVuYCwgYW5kIGBnYWRnZXRfZGV2X3JlbGVhc2VgLiBJdCYjMzk7cyBhIGdvb2QgZmlyc3Qgc3RlcCB0byBqdXN0IGRvdWJsZS1jaGVjayB0aGUgbmFtaW5nIGNvbnZlbnRpb25zIGFuZCBsb2dpYyB3aXRoaW4gdGhlc2Ugcm91dGluZXMuIFRoZXkgYXJlIGNyaXRpY2FsIHRvIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBidWcgY291bGQgYXJpc2UgaW4gdGhlIGZpcnN0IHBsYWNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxNDoxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtlcF9vcGVufGVwX3JlbGVhc2V8Z2FkZ2V0X2Rldl9vcGVufGdhZGdldF9kZXZfcmVsZWFzZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9ODE9TU9EVUxFX0xJQ0VOU0UgKFwmIzM0O0dQTFwmIzM0Oyk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtODItXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6ODM6c3RhdGljIGludCBlcF9vcGVuKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmlsZSAqKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy04NC1cbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MzgwPXN0YXRpYyBpbnRcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzozODE6ZXBfcmVsZWFzZSAoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZkKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTM4Mi17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTcwMj1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBlcF9pb19vcGVyYXRpb25zID0ge1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy03MDQtXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6NzA1Olx0Lm9wZW4gPVx0XHRlcF9vcGVuLFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjcwNjpcdC5yZWxlYXNlID1cdGVwX3JlbGVhc2UsXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtNzA3LVx0LnVubG9ja2VkX2lvY3RsID0gZXBfaW9jdGwsXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTgxNz1zdGF0aWMgaW50XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6ODE4OmVwX29wZW4gKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmZClcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy04MTkte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xOTExPXN0YXRpYyBpbnRcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxOTEyOmdhZGdldF9kZXZfb3BlbiAoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZkKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE5MTMte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xOTI5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGVwMF9vcGVyYXRpb25zID0ge1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE5MzAtXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTkzMTpcdC5vcGVuID1cdFx0Z2FkZ2V0X2Rldl9vcGVuLFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE5MzItXHQucmVhZCA9XHRcdGVwMF9yZWFkLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxNDoxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3OTg0CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGNyYWZ0ZWQgd2l0aCB0aGUgZXhwZWN0YXRpb24gdGhhdCBJJiMzOTttIGRpc2N1c3NpbmcgdGhpcyB3aXRoIGEgZmVsbG93IGV4cGVydDoKCioqSW50ZXJuYWwgRGlhZ25vc3RpY3M6IFJlbGVhc2UgVmVyc2lvbiB2cy4gT3BlcmF0aW9uYWwgQ29tcG9uZW50cyoqCgpBbHJpZ2h0LCBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGNvZGUgYW5kIG15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGNvbXBhcmUgdGhlIGBlcF9yZWxlYXNlYCBhbmQgYGdhZGdldF9kZXZfcmVsZWFzZWAgdmFyaWFibGVzLiBJJiMzOTttIGV4cGVjdGluZyBgZ2FkZ2V0X2Rldl9yZWxlYXNlYCB0byBiZSBhdmFpbGFibGUuIEh1aCwgaXQgbG9va3MgbGlrZSB0aGF0IHBhcnRpY3VsYXIgdmFyaWFibGUgaXNuJiMzOTt0IGRlZmluZWQgaGVyZS4gVGhhdCYjMzk7cyB1bmV4cGVjdGVkLiBBbHJpZ2h0LCBiYWNrIHRvIGJhc2ljcy4gR2l2ZW4gdGhlIG1pc3NpbmcgcmVsZWFzZSB2YXJpYWJsZSwgbGV0JiMzOTtzIGRvdWJsZS1jaGVjayB0aGUgYGVwMF9vcGVyYXRpb25zYC4gV2UgbmVlZCB0byBkZXRlcm1pbmUgaWYgYW4gYWx0ZXJuYXRlIG9iamVjdCBvciBtZXRob2QgaGFzIGJlZW4gdXNlZC4gVGhlIHJlbGVhc2UgdmFyaWFibGUgd291bGQgYmUgdXNlZCBmb3IgbWVtb3J5IG1hbmFnZW1lbnQgYW5kIGNsZWFudXAuIFdlIG11c3QgZW5zdXJlIHRoYXQgdGhlIG9iamVjdCB0aGF0IGlzIGJlaW5nIHV0aWxpemVkIGlzIGhhbmRsZWQgY29ycmVjdGx5LiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCB0aGF0IGFuZCBzZWUgd2hlcmUgd2UgYXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxNDoxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE5MjUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTkyNTpcdFx0c3Bpbl91bmxvY2tfaXJxKFx1MDAyNmRldi1cdTAwM2Vsb2NrKTtcbjE5MjY6XHRcdHJldHVybiB2YWx1ZTtcbjE5Mjc6XHR9XG4xOTI4Olx0XG4xOTI5Olx0c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZXAwX29wZXJhdGlvbnMgPSB7XG4xOTMwOlx0XG4xOTMxOlx0XHQub3BlbiA9XHRcdGdhZGdldF9kZXZfb3BlbixcbjE5MzI6XHRcdC5yZWFkID1cdFx0ZXAwX3JlYWQsXG4xOTMzOlx0XHQud3JpdGUgPVx0ZGV2X2NvbmZpZyxcbjE5MzQ6XHRcdC5mYXN5bmMgPVx0ZXAwX2Zhc3luYyxcbjE5MzU6XHRcdC5wb2xsID1cdFx0ZXAwX3BvbGwsXG4xOTM2Olx0XHQudW5sb2NrZWRfaW9jdGwgPSBnYWRnZXRfZGV2X2lvY3RsLFxuMTkzNzpcdFx0LnJlbGVhc2UgPVx0ZGV2X3JlbGVhc2UsXG4xOTM4Olx0fTtcbjE5Mzk6XHRcbjE5NDA6XHQvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuMTk0MTpcdFxuMTk0MjpcdC8qIEZJTEVTWVNURU0gQU5EIFNVUEVSQkxPQ0sgT1BFUkFUSU9OU1xuMTk0MzpcdCAqXG4xOTQ0Olx0ICogTW91bnRpbmcgdGhlIGZpbGVzeXN0ZW0gY3JlYXRlcyBhIGNvbnRyb2xsZXIgZmlsZSwgdXNlZCBmaXJzdCBmb3JcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTQ6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODUzMgoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDExNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJlbGVhc2UgQ3ljbGUqKgoKT2theSwgaGVyZSB3ZSBnbywgaXQmIzM5O3MgdGhlIGBkZXZfcmVsZWFzZWAgY3ljbGUgYWdhaW4uIFJpZ2h0LCBzbyB0aGF0IG1lYW5zIHRoZSB1c3VhbCBzdXNwZWN0cyBhcmUgbGluZWQgdXA6IGBkZXZfcmVsZWFzZWAsIGBnYWRnZXRfZGV2X29wZW5gLCBgZXBfb3BlbmAsIGBlcF9yZWxlYXNlYCwgZm9sbG93ZWQgYnkgYGdhZGdldGZzX2V2aWN0X2lub2RlYCwgYGdhZGdldGZzX2NyZWF0ZV9maWxlYCwgYGRlc3Ryb3lfZXBfZmlsZXNgLCBhbmQgdGhlbiwgZmluYWxseSwgYGFjdGl2YXRlX2VwX2ZpbGVzYC4gSG9sZCBvbiBhIG1pbnV0ZS4uLiB3YXNuJiMzOTt0IGBnYWRnZXRmc19ldmljdF9pbm9kZWAgYSBzdGF0aWMgZnVuY3Rpb24/IEkgc2VlbSB0byByZW1lbWJlciB0aGF0IGJlaW5nIHRoZSBjYXNlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O3ZlIGdvdCB0aGlzIHJpZ2h0LiBCZXN0IHRvIGRvdWJsZS1jaGVjayB0aGUgaW1wbGVtZW50YXRpb24gZm9yIGBnYWRnZXRmc19ldmljdF9pbm9kZWAsIGl0IHNob3VsZCBiZSBkZWZpbmVkIGluIGBkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmNgLiBHb3R0YSBnbyB2ZXJpZnkgbXkgYXNzdW1wdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTQ6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Z2FkZ2V0ZnNfZXZpY3RfaW5vZGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTE5ODQ9c3RhdGljIGludCBnYWRnZXRmc19jcmVhdGVfZmlsZSAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgY2hhciBjb25zdCAqbmFtZSxcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMjAwNy1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoyMDA4OnN0YXRpYyB2b2lkIGdhZGdldGZzX2V2aWN0X2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUpXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMjAwOS17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTIwMTY9c3RhdGljIGNvbnN0IHN0cnVjdCBzdXBlcl9vcGVyYXRpb25zIGdhZGdldF9mc19vcGVyYXRpb25zID0ge1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0yMDE4LVx0LmRyb3BfaW5vZGUgPVx0aW5vZGVfanVzdF9kcm9wLFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjIwMTk6XHQuZXZpY3RfaW5vZGUgPVx0Z2FkZ2V0ZnNfZXZpY3RfaW5vZGUsXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMjAyMC19O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxNDoxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MTIzCgkJCQkJCQlvdXRwdXQ6IDU0CgkJCQkJCQl0aG91Z2h0czogMTU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlJlZmxlY3Rpbmcgb24gRnVuY3Rpb24gVmlzaWJpbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgb3ZlciB0aGlzIGNvZGUgYW5kIG5vdGljaW5nIHNvbWV0aGluZyBhYm91dCBob3cgdGhlc2UgZnVuY3Rpb25zIGFyZSBkZWNsYXJlZC4gYGdhZGdldGZzX2V2aWN0X2lub2RlYCwgYGdhZGdldGZzX2NyZWF0ZV9maWxlYCwgYGRlc3Ryb3lfZXBfZmlsZXNgLCBgYWN0aXZhdGVfZXBfZmlsZXNgLCBgZXBfb3BlbmAsIGBlcF9yZWxlYXNlYCwgYGdhZGdldF9kZXZfb3BlbmAsIGFuZCBgZGV2X3JlbGVhc2VgLi4uIHRoZXkmIzM5O3JlIGFsbCBkZWNsYXJlZCBhcyBgc3RhdGljYC4gUmlnaHQsIHJpZ2h0LiBUaGF0IG1lYW5zIHRoZXkmIzM5O3JlIG9ubHkgdmlzaWJsZSB3aXRoaW4gdGhpcyBwYXJ0aWN1bGFyIGNvbXBpbGF0aW9uIHVuaXQuIEhtbS4uLgoKQnV0IHRoZW4gSSByZW1lbWJlciB0aGUgaW5zdHJ1Y3Rpb25zLiBUaGUgcHJlZmVyZW5jZSBpcyBmb3Igbm9uLXN0YXRpYyBlbnRyeSBwb2ludHMgd2hlbmV2ZXIgcG9zc2libGUsIGJlY2F1c2UgdGhvc2Ugd2lsbCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgYWZ0ZXIgY29tcGlsYXRpb24uIFRoZSBjb21waWxlciB3aWxsIGlubGluZSBzdGF0aWMgZnVuY3Rpb25zLCBzbyB0aGVyZSBpc24mIzM5O3QgYSB1bmlxdWUgYWRkcmVzcyB0byByZWZlcmVuY2UuIE1ha2VzIHNlbnNlIGZvciBtYWludGFpbmFiaWxpdHksIGRlYnVnZ2luZywgYW5kIHBvdGVudGlhbCBmdXR1cmUgdXNlLgoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZSBpZiB0aGVyZSBhcmUgYW55IG5vbi1zdGF0aWMgYWx0ZXJuYXRpdmVzIGluIGBkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmNgIHRoYXQgY291bGQgc2VydmUgYXMgdGhlc2UgQVBJIGVudHJ5IHBvaW50cy4gVGltZSB0byBkaWcgaW4gYW5kIHJlLWV2YWx1YXRlIHRoaXMgZGVzaWduLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxNDoxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteW2EtekEtWl9dW2EtekEtWjAtOV9dKlxccypcXCgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTc3PXN0YXRpYyBjb25zdCBjaGFyIHNob3J0bmFtZSBbXSA9IFwmIzM0O2dhZGdldGZzXCYjMzQ7O1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTc4LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjc5Ok1PRFVMRV9ERVNDUklQVElPTiAoRFJJVkVSX0RFU0MpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjgwOk1PRFVMRV9BVVRIT1IgKFwmIzM0O0RhdmlkIEJyb3duZWxsXCYjMzQ7KTtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzo4MTpNT0RVTEVfTElDRU5TRSAoXCYjMzQ7R1BMXCYjMzQ7KTtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy04Mi1cbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9Mjk1PXN0YXRpYyBpbnRcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoyOTY6Z2V0X3JlYWR5X2VwICh1bnNpZ25lZCBmX2ZsYWdzLCBzdHJ1Y3QgZXBfZGF0YSAqZXBkYXRhLCBib29sIGlzX3dyaXRlKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTI5Ny17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTMzNT1zdGF0aWMgc3NpemVfdFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjMzNjplcF9pbyAoc3RydWN0IGVwX2RhdGEgKmVwZGF0YSwgdm9pZCAqYnVmLCB1bnNpZ25lZCBsZW4pXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMzM3LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MzgwPXN0YXRpYyBpbnRcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzozODE6ZXBfcmVsZWFzZSAoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZkKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTM4Mi17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTU3OT1zdGF0aWMgc3NpemVfdFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjU4MDplcF9yZWFkX2l0ZXIoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKnRvKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTU4MS17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTYzOD1zdGF0aWMgc3NpemVfdFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjYzOTplcF93cml0ZV9pdGVyKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTY0MC17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTcyNT1zdGF0aWMgc3NpemVfdFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjcyNjplcF9jb25maWcgKHN0cnVjdCBlcF9kYXRhICpkYXRhLCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBsZW4pXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtNzI3LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9ODE3PXN0YXRpYyBpbnRcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzo4MTg6ZXBfb3BlbiAoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZkKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTgxOS17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTkxMj1zdGF0aWMgc3NpemVfdFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjkxMzplcDBfcmVhZCAoc3RydWN0IGZpbGUgKmZkLCBjaGFyIF9fdXNlciAqYnVmLCBzaXplX3QgbGVuLCBsb2ZmX3QgKnB0cilcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy05MTQte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xMDgyPXN0YXRpYyBzdHJ1Y3QgdXNiX2dhZGdldGZzX2V2ZW50ICpcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxMDgzOm5leHRfZXZlbnQgKHN0cnVjdCBkZXZfZGF0YSAqZGV2LCBlbnVtIHVzYl9nYWRnZXRmc19ldmVudF90eXBlIHR5cGUpXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTA4NC17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTExMjQ9c3RhdGljIHNzaXplX3RcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxMTI1OmVwMF93cml0ZSAoc3RydWN0IGZpbGUgKmZkLCBjb25zdCBjaGFyIF9fdXNlciAqYnVmLCBzaXplX3QgbGVuLCBsb2ZmX3QgKnB0cilcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xMTI2LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MTE3OT1zdGF0aWMgaW50XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTE4MDplcDBfZmFzeW5jIChpbnQgZiwgc3RydWN0IGZpbGUgKmZkLCBpbnQgb24pXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTE4MS17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTExOTA9c3RhdGljIGludFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjExOTE6ZGV2X3JlbGVhc2UgKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmZClcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xMTkyLXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MTIxOT1zdGF0aWMgX19wb2xsX3RcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxMjIwOmVwMF9wb2xsIChzdHJ1Y3QgZmlsZSAqZmQsIHBvbGxfdGFibGUgKndhaXQpXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTIyMS17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTEzMDY9c3RhdGljIGludFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjEzMDc6Y29uZmlnX2J1ZiAoc3RydWN0IGRldl9kYXRhICpkZXYsIHU4IHR5cGUsIHVuc2lnbmVkIGluZGV4KVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTEzMDgte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xMzMyPXN0YXRpYyBpbnRcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxMzMzOmdhZGdldGZzX3NldHVwIChzdHJ1Y3QgdXNiX2dhZGdldCAqZ2FkZ2V0LCBjb25zdCBzdHJ1Y3QgdXNiX2N0cmxyZXF1ZXN0ICpjdHJsKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTEzMzQte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xNjM3PXN0YXRpYyB2b2lkXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTYzODpnYWRnZXRmc191bmJpbmQgKHN0cnVjdCB1c2JfZ2FkZ2V0ICpnYWRnZXQpXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTYzOS17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTE3MDU9c3RhdGljIHZvaWRcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxNzA2OmdhZGdldGZzX2Rpc2Nvbm5lY3QgKHN0cnVjdCB1c2JfZ2FkZ2V0ICpnYWRnZXQpXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTcwNy17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTE3MjM9c3RhdGljIHZvaWRcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxNzI0OmdhZGdldGZzX3N1c3BlbmQgKHN0cnVjdCB1c2JfZ2FkZ2V0ICpnYWRnZXQpXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTcyNS17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTE3OTg9c3RhdGljIHNzaXplX3RcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxNzk5OmRldl9jb25maWcgKHN0cnVjdCBmaWxlICpmZCwgY29uc3QgY2hhciBfX3VzZXIgKmJ1Ziwgc2l6ZV90IGxlbiwgbG9mZl90ICpwdHIpXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTgwMC17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTE5MTE9c3RhdGljIGludFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjE5MTI6Z2FkZ2V0X2Rldl9vcGVuIChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmQpXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTkxMy17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTE5NTU9c3RhdGljIHVuc2lnbmVkIGRlZmF1bHRfcGVybSA9IFNfSVJVU1IgfCBTX0lXVVNSO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE5NTYtXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTk1Nzptb2R1bGVfcGFyYW0gKGRlZmF1bHRfdWlkLCB1aW50LCAwNjQ0KTtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxOTU4Om1vZHVsZV9wYXJhbSAoZGVmYXVsdF9naWQsIHVpbnQsIDA2NDQpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjE5NTk6bW9kdWxlX3BhcmFtIChkZWZhdWx0X3Blcm0sIHVpbnQsIDA2NDQpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE5NjAtXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTE5NjI9c3RhdGljIHN0cnVjdCBpbm9kZSAqXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTk2MzpnYWRnZXRmc19tYWtlX2lub2RlIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE5NjQtXHRcdHZvaWQgKmRhdGEsIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgKmZvcHMsXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTIwMjI9c3RhdGljIGludFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjIwMjM6Z2FkZ2V0ZnNfZmlsbF9zdXBlciAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzX2NvbnRleHQgKmZjKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTIwMjQte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0yMTA2PXN0YXRpYyB2b2lkXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MjEwNzpnYWRnZXRmc19raWxsX3NiIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTIxMDgte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0yMTIyPXN0YXRpYyBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSBnYWRnZXRmc190eXBlID0ge1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0yMTI3LX07XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MjEyODpNT0RVTEVfQUxJQVNfRlMoXCYjMzQ7Z2FkZ2V0ZnNcJiMzNDspO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTIxMjktXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTIxMzI9c3RhdGljIGludCBfX2luaXQgZ2FkZ2V0ZnNfaW5pdCAodm9pZClcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMjE0MS19XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MjE0Mjptb2R1bGVfaW5pdCAoZ2FkZ2V0ZnNfaW5pdCk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMjE0My1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0yMTQ0PXN0YXRpYyB2b2lkIF9fZXhpdCBnYWRnZXRmc19jbGVhbnVwICh2b2lkKVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0yMTQ4LX1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoyMTQ5Om1vZHVsZV9leGl0IChnYWRnZXRmc19jbGVhbnVwKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0yMTUwLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxNDoxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjA1OAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDM5MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFVTQiBHYWRnZXQgRmlsZSBTeXN0ZW0gQVBJKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEl0IHNlZW1zIEkgbmVlZCB0byBpZGVudGlmeSB0aGUga2V5IEFQSSBlbnRyeSBwb2ludHMgd2l0aGluIHRoaXMgZ2FkZ2V0ZnMgaW1wbGVtZW50YXRpb24uIE15IGluaXRpYWwgYXNzdW1wdGlvbiB0aGF0IHRoZSBvbmx5IG5vbi1zdGF0aWMgZnVuY3Rpb25zIHdlcmUgYGdhZGdldGZzX2luaXRgIGFuZCBgZ2FkZ2V0ZnNfY2xlYW51cGAgd2FzIGluY29ycmVjdC4gSSYjMzk7bSBzZWVpbmcgYSB3aG9sZSBzbGV3IG9mIHNlZW1pbmdseSBzdGF0aWMgZnVuY3Rpb25zOiBgZ2FkZ2V0ZnNfZmlsbF9zdXBlcmAsIGBnYWRnZXRmc19tYWtlX2lub2RlYCwgYGdhZGdldF9kZXZfb3BlbmAsIGBkZXZfY29uZmlnYCwgYGdhZGdldGZzX3N1c3BlbmRgLCBgZ2FkZ2V0ZnNfZGlzY29ubmVjdGAsIGBnYWRnZXRmc191bmJpbmRgLCBgZ2FkZ2V0ZnNfc2V0dXBgLCBgZXAwX3BvbGxgLCBgZGV2X3JlbGVhc2VgLCBgZXAwX2Zhc3luY2AsIGBlcDBfd3JpdGVgLCBgZXAwX3JlYWRgLCBgZXBfb3BlbmAsIGBlcF9jb25maWdgLCBgZXBfd3JpdGVfaXRlcmAsIGBlcF9yZWFkX2l0ZXJgLCBgZXBfcmVsZWFzZWAsIGBlcF9pb2AsIGFuZCBgZ2V0X3JlYWR5X2VwYC4KClRoZSBpbXBvcnRhbnQgZGlzdGluY3Rpb24gaGVyZSBpcyBhYm91dCBob3cgdGhlc2Ugc3RhdGljIGZ1bmN0aW9ucyBhcmUgdXNlZC4gVGhlIGluc3RydWN0aW9ucyBhcmUgY2xlYXI6IHByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucy4gQWx0aG91Z2ggdGhleSBhcmUgZGVmaW5lZCBhcyBzdGF0aWMsIHRob3NlIHRoYXQgYXJlIHJlZ2lzdGVyZWQgaW4gc3RydWN0dXJlcyBsaWtlIGBmaWxlX29wZXJhdGlvbnNgIGFuZCBgc3VwZXJfb3BlcmF0aW9uc2AgYXJlIGVzc2VudGlhbGx5IEFQSSBlbnRyeSBwb2ludHMgYmVjYXVzZSB0aGVpciBhZGRyZXNzZXMgYXJlIHRha2VuLiBUaGlzIG1lYW5zIHRoZSBjb21waWxlciB3b24mIzM5O3QgaW5saW5lIHRoZW0sIGFuZCB0aGV5JiMzOTtsbCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMuCgpUaGVyZWZvcmUsIHRoZSBvbmVzIEkgbmVlZCB0byBmb2N1cyBvbiwgYW5kIHRoYXQgbGlrZWx5IHJlcHJlc2VudCB0aGUgcmVhbCBBUEkgZW50cnkgcG9pbnRzIG9mIGludGVyZXN0LCBhcmU6CgoqICAgYGdhZGdldGZzX2ZpbGxfc3VwZXJgCiogICBgZ2FkZ2V0ZnNfZXZpY3RfaW5vZGVgCiogICBgZ2FkZ2V0X2Rldl9vcGVuYAoqICAgYGRldl9yZWxlYXNlYAoqICAgYGVwX29wZW5gCiogICBgZXBfcmVsZWFzZWAKCk5vdywgbGV0JiMzOTtzIGRvdWJsZS1jaGVjayB0aGUgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIEkga25vdyBgVVNCX0dBREdFVEZTYCBkZXBlbmRzIG9uIGBVU0JfR0FER0VUYC4gQXJlIHRoZXJlIGFueSBvdGhlciByZXF1aXJlZCBjb25maWd1cmF0aW9ucyB0aGF0IG5lZWQgbXkgYXR0ZW50aW9uPyBJIG5lZWQgdG8gYmUgc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTQ6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9NjU9Y29uZmlnIFVTQl9aRVJPX0hOUFRFU1RcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy02Ni1cdGJvb2wgXCYjMzQ7SE5QIFRlc3QgRGV2aWNlXCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6Njc6XHRkZXBlbmRzIG9uIFVTQl9aRVJPIFx1MDAyNlx1MDAyNiBVU0JfT1RHXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNjgtXHRoZWxwXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTc1PWNvbmZpZyBVU0JfQVVESU9cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy03Ni1cdHRyaXN0YXRlIFwmIzM0O0F1ZGlvIEdhZGdldFwmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjc3Olx0ZGVwZW5kcyBvbiBTTkRcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy03OC1cdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTEwMD1jb25maWcgR0FER0VUX1VBQzFcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0xMDEtXHRib29sIFwmIzM0O1VBQyAxLjBcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzoxMDI6XHRkZXBlbmRzIG9uIFVTQl9BVURJT1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTEwMy1cdGhlbHBcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9MTA3PWNvbmZpZyBHQURHRVRfVUFDMV9MRUdBQ1lcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0xMDgtXHRib29sIFwmIzM0O1VBQyAxLjAgKExlZ2FjeSlcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzoxMDk6XHRkZXBlbmRzIG9uIEdBREdFVF9VQUMxXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMTEwLVx0aGVscFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz0xMTU9Y29uZmlnIFVTQl9FVEhcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0xMTYtXHR0cmlzdGF0ZSBcJiMzNDtFdGhlcm5ldCBHYWRnZXQgKHdpdGggQ0RDIEV0aGVybmV0IHN1cHBvcnQpXCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6MTE3Olx0ZGVwZW5kcyBvbiBORVRcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0xMTgtXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0xNDAtXHQgIFdpdGhpbiB0aGUgVVNCIGRldmljZSwgdGhpcyBnYWRnZXQgZHJpdmVyIGV4cG9zZXMgYSBuZXR3b3JrIGRldmljZVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjE0MTpcdCAgXCYjMzQ7dXNiWFwmIzM0Oywgd2hlcmUgWCBkZXBlbmRzIG9uIHdoYXQgb3RoZXIgbmV0d29ya2luZyBkZXZpY2VzIHlvdSBoYXZlLlxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTE0Mi1cdCAgVHJlYXQgaXQgbGlrZSBhIHR3by1ub2RlIEV0aGVybmV0IGxpbms6ICBob3N0LCBhbmQgZ2FkZ2V0LlxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz0xNTM9Y29uZmlnIFVTQl9FVEhfUk5ESVNcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0xNTQtXHRib29sIFwmIzM0O1JORElTIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzoxNTU6XHRkZXBlbmRzIG9uIFVTQl9FVEhcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0xNTYtXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz0xNzM9Y29uZmlnIFVTQl9FVEhfRUVNXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMTc0LVx0Ym9vbCBcJiMzNDtFdGhlcm5ldCBFbXVsYXRpb24gTW9kZWwgKEVFTSkgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjE3NTpcdGRlcGVuZHMgb24gVVNCX0VUSFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTE3Ni1cdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTE5MD1jb25maWcgVVNCX0dfTkNNXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMTkxLVx0dHJpc3RhdGUgXCYjMzQ7TmV0d29yayBDb250cm9sIE1vZGVsIChOQ00pIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzoxOTI6XHRkZXBlbmRzIG9uIE5FVFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTE5My1cdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTIzNz1jb25maWcgVVNCX0ZVTkNUSU9ORlNfRVRIXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMjM4LVx0Ym9vbCBcJiMzNDtJbmNsdWRlIGNvbmZpZ3VyYXRpb24gd2l0aCBDREMgRUNNIChFdGhlcm5ldClcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzoyMzk6XHRkZXBlbmRzIG9uIFVTQl9GVU5DVElPTkZTIFx1MDAyNlx1MDAyNiBORVRcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yNDAtXHRzZWxlY3QgVVNCX1VfRVRIRVJcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9MjQ3PWNvbmZpZyBVU0JfRlVOQ1RJT05GU19STkRJU1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTI0OC1cdGJvb2wgXCYjMzQ7SW5jbHVkZSBjb25maWd1cmF0aW9uIHdpdGggUk5ESVMgKEV0aGVybmV0KVwmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjI0OTpcdGRlcGVuZHMgb24gVVNCX0ZVTkNUSU9ORlMgXHUwMDI2XHUwMDI2IE5FVFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTI1MC1cdHNlbGVjdCBVU0JfVV9FVEhFUlxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz0yNTU9Y29uZmlnIFVTQl9GVU5DVElPTkZTX0dFTkVSSUNcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yNTYtXHRib29sIFwmIzM0O0luY2x1ZGUgJiMzOTtwdXJlJiMzOTsgY29uZmlndXJhdGlvblwmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjI1NzpcdGRlcGVuZHMgb24gVVNCX0ZVTkNUSU9ORlNcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yNTgtXHRoZWxwXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTI2Mj1jb25maWcgVVNCX01BU1NfU1RPUkFHRVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTI2My1cdHRyaXN0YXRlIFwmIzM0O01hc3MgU3RvcmFnZSBHYWRnZXRcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzoyNjQ6XHRkZXBlbmRzIG9uIEJMT0NLXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMjY1LVx0c2VsZWN0IFVTQl9MSUJDT01QT1NJVEVcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9Mjc5PWNvbmZpZyBVU0JfR0FER0VUX1RBUkdFVFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTI4MC1cdHRyaXN0YXRlIFwmIzM0O1VTQiBHYWRnZXQgVGFyZ2V0IEZhYnJpYyBNb2R1bGVcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzoyODE6XHRkZXBlbmRzIG9uIFRBUkdFVF9DT1JFXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMjgyLVx0c2VsZWN0IFVTQl9MSUJDT01QT1NJVEVcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9MjkxPWNvbmZpZyBVU0JfR19TRVJJQUxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yOTItXHR0cmlzdGF0ZSBcJiMzNDtTZXJpYWwgR2FkZ2V0ICh3aXRoIENEQyBBQ00gYW5kIENEQyBPQkVYIHN1cHBvcnQpXCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6MjkzOlx0ZGVwZW5kcyBvbiBUVFlcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yOTQtXHRzZWxlY3QgVVNCX1VfU0VSSUFMXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTMxNj1jb25maWcgVVNCX01JRElfR0FER0VUXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMzE3LVx0dHJpc3RhdGUgXCYjMzQ7TUlESSBHYWRnZXRcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzozMTg6XHRkZXBlbmRzIG9uIFNORFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTMxOS1cdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTM1MT1jb25maWcgVVNCX0NEQ19DT01QT1NJVEVcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0zNTItXHR0cmlzdGF0ZSBcJiMzNDtDREMgQ29tcG9zaXRlIERldmljZSAoRXRoZXJuZXQgYW5kIEFDTSlcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzozNTM6XHRkZXBlbmRzIG9uIE5FVFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTM1NC1cdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTM3MD1jb25maWcgVVNCX0dfTk9LSUFcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0zNzEtXHR0cmlzdGF0ZSBcJiMzNDtOb2tpYSBjb21wb3NpdGUgZ2FkZ2V0XCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6MzcyOlx0ZGVwZW5kcyBvbiBQSE9ORVRcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzozNzM6XHRkZXBlbmRzIG9uIEJMT0NLXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMzc0LVx0c2VsZWN0IFVTQl9MSUJDT01QT1NJVEVcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9Mzg5PWNvbmZpZyBVU0JfR19BQ01fTVNcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0zOTAtXHR0cmlzdGF0ZSBcJiMzNDtDREMgQ29tcG9zaXRlIERldmljZSAoQUNNIGFuZCBtYXNzIHN0b3JhZ2UpXCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6MzkxOlx0ZGVwZW5kcyBvbiBCTE9DS1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTM5Mi1cdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTQwMz1jb25maWcgVVNCX0dfTVVMVElcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy00MDQtXHR0cmlzdGF0ZSBcJiMzNDtNdWx0aWZ1bmN0aW9uIENvbXBvc2l0ZSBHYWRnZXRcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzo0MDU6XHRkZXBlbmRzIG9uIEJMT0NLIFx1MDAyNlx1MDAyNiBORVRcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy00MDYtXHRzZWxlY3QgVVNCX0dfTVVMVElfQ0RDIGlmICFVU0JfR19NVUxUSV9STkRJU1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz00Mjc9Y29uZmlnIFVTQl9HX01VTFRJX1JORElTXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNDI4LVx0Ym9vbCBcJiMzNDtSTkRJUyAmIzQzOyBDREMgU2VyaWFsICYjNDM7IFN0b3JhZ2UgY29uZmlndXJhdGlvblwmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjQyOTpcdGRlcGVuZHMgb24gVVNCX0dfTVVMVElcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy00MzAtXHRzZWxlY3QgVVNCX0ZfUk5ESVNcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9NDQwPWNvbmZpZyBVU0JfR19NVUxUSV9DRENcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy00NDEtXHRib29sIFwmIzM0O0NEQyBFdGhlcm5ldCAmIzQzOyBDREMgU2VyaWFsICYjNDM7IFN0b3JhZ2UgY29uZmlndXJhdGlvblwmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjQ0MjpcdGRlcGVuZHMgb24gVVNCX0dfTVVMVElcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy00NDMtXHRzZWxlY3QgVVNCX0ZfRUNNXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTQ2OD1jb25maWcgVVNCX0dfREJHUFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTQ2OS1cdHRyaXN0YXRlIFwmIzM0O0VIQ0kgRGVidWcgRGV2aWNlIEdhZGdldFwmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjQ3MDpcdGRlcGVuZHMgb24gVFRZXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNDcxLVx0c2VsZWN0IFVTQl9MSUJDT01QT1NJVEVcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9NDg0PWNvbmZpZyBVU0JfR19EQkdQX1BSSU5US1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjQ4NTpcdGRlcGVuZHMgb24gVVNCX0dfREJHUFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTQ4Ni1cdGJvb2wgXCYjMzQ7cHJpbnRrXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTQ5MD1jb25maWcgVVNCX0dfREJHUF9TRVJJQUxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzo0OTE6XHRkZXBlbmRzIG9uIFVTQl9HX0RCR1BcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy00OTItXHRzZWxlY3QgVVNCX1VfU0VSSUFMXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTUwMT1jb25maWcgVVNCX0dfV0VCQ0FNXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNTAyLVx0dHJpc3RhdGUgXCYjMzQ7VVNCIFdlYmNhbSBHYWRnZXRcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzo1MDM6XHRkZXBlbmRzIG9uIFZJREVPX0RFVlxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTUwNC1cdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE0OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1NTYzCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFVTQiBHYWRnZXRmcyBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGUga2VybmVsIGNvbmZpZyBhbmQgc3BlY2lmaWNhbGx5IGxvb2tpbmcgYXQgYFVTQl9HQURHRVRGU2AuIE15IGluaXRpYWwgb2JzZXJ2YXRpb24gaXMgdGhhdCwgYmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhlc2UgY29uZmlndXJhdGlvbnMgYXJlIHN0cnVjdHVyZWQsIGBVU0JfR0FER0VURlNgIGRvZXNuJiMzOTt0IHNlZW0gdG8gZXhwbGljaXRseSAqZGVwZW5kIG9uKiBhbnl0aGluZyBiZXlvbmQgdGhlIGRlcGVuZGVuY2llcyBhbHJlYWR5IGJha2VkIGludG8gaXRzIHBhcmVudCwgYFVTQl9HQURHRVRgLiBUaGF0JiMzOTtzIGEga2V5IG9ic2VydmF0aW9uLgoKTm93LCBiZWNhdXNlIG9mIHRoYXQgaW5pdGlhbCByZWFkLCBpdCBpcyBpbXBvcnRhbnQgdG8gZHJpbGwgZG93biBhbmQgdmVyaWZ5IHRoaXMgYXNzdW1wdGlvbi4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBkZXBlbmRlbmNpZXMgYXJlIGZvciBgVVNCX0dBREdFVGAuIFVuZGVyc3RhbmRpbmcgYFVTQl9HQURHRVRgJiMzOTtzIGRlcGVuZGVuY2llcyBkaXJlY3RseSB3aWxsIHRlbGwgbWUgaWYgSSBtaXNzZWQgc29tZXRoaW5nIGluIGBVU0JfR0FER0VURlNgJiMzOTtzIGRlcGVuZGVuY2llcy4gSXQmIzM5O3MgdGltZSB0byBkaWcgZGVlcGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxNDoxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXBlbmRzIG9uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9NDk9Y29uZmlnIFVTQl9HQURHRVRfREVCVUdcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTUwLVx0Ym9vbCBcJiMzNDtEZWJ1Z2dpbmcgbWVzc2FnZXMgKERFVkVMT1BNRU5UKVwmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NTE6XHRkZXBlbmRzIG9uIERFQlVHX0tFUk5FTFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNTItXHRoZWxwXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9NjM9Y29uZmlnIFVTQl9HQURHRVRfVkVSQk9TRVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNjQtXHRib29sIFwmIzM0O1ZlcmJvc2UgZGVidWdnaW5nIE1lc3NhZ2VzIChERVZFTE9QTUVOVClcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjY1Olx0ZGVwZW5kcyBvbiBVU0JfR0FER0VUX0RFQlVHXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy02Ni1cdGhlbHBcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz03Nz1jb25maWcgVVNCX0dBREdFVF9ERUJVR19GSUxFU1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNzgtXHRib29sIFwmIzM0O0RlYnVnZ2luZyBpbmZvcm1hdGlvbiBmaWxlcyAoREVWRUxPUE1FTlQpXCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo3OTpcdGRlcGVuZHMgb24gUFJPQ19GU1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctODAtXHRoZWxwXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9ODg9Y29uZmlnIFVTQl9HQURHRVRfREVCVUdfRlNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTg5LVx0Ym9vbCBcJiMzNDtEZWJ1Z2dpbmcgaW5mb3JtYXRpb24gZmlsZXMgaW4gZGVidWdmcyAoREVWRUxPUE1FTlQpXCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo5MDpcdGRlcGVuZHMgb24gREVCVUdfRlNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTkxLVx0aGVscFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTEzMj1jb25maWcgVV9TRVJJQUxfQ09OU09MRVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTMzLVx0Ym9vbCBcJiMzNDtTZXJpYWwgZ2FkZ2V0IGNvbnNvbGUgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MTM0Olx0ZGVwZW5kcyBvbiBVU0JfVV9TRVJJQUxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTEzNS1cdGhlbHBcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0xNDU9Y29uZmlnIFVTQl9MSUJDT01QT1NJVEVcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xNDctXHRzZWxlY3QgQ09ORklHRlNfRlNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjE0ODpcdGRlcGVuZHMgb24gVVNCX0dBREdFVFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTQ5LVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTI0MD1jb25maWcgVVNCX0NPTkZJR0ZTX1NFUklBTFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjQxLVx0Ym9vbCBcJiMzNDtHZW5lcmljIHNlcmlhbCBidWxrIGluL291dFwmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjQyOlx0ZGVwZW5kcyBvbiBVU0JfQ09ORklHRlNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI0MzpcdGRlcGVuZHMgb24gVFRZXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNDQtXHRzZWxlY3QgVVNCX1VfU0VSSUFMXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9MjQ5PWNvbmZpZyBVU0JfQ09ORklHRlNfQUNNXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNTAtXHRib29sIFwmIzM0O0Fic3RyYWN0IENvbnRyb2wgTW9kZWwgKENEQyBBQ00pXCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyNTE6XHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjUyOlx0ZGVwZW5kcyBvbiBUVFlcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI1My1cdHNlbGVjdCBVU0JfVV9TRVJJQUxcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0yNTk9Y29uZmlnIFVTQl9DT05GSUdGU19PQkVYXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNjAtXHRib29sIFwmIzM0O09iamVjdCBFeGNoYW5nZSBNb2RlbCAoQ0RDIE9CRVgpXCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyNjE6XHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjYyOlx0ZGVwZW5kcyBvbiBUVFlcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI2My1cdHNlbGVjdCBVU0JfVV9TRVJJQUxcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0yNjk9Y29uZmlnIFVTQl9DT05GSUdGU19OQ01cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI3MC1cdGJvb2wgXCYjMzQ7TmV0d29yayBDb250cm9sIE1vZGVsIChDREMgTkNNKVwmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjcxOlx0ZGVwZW5kcyBvbiBVU0JfQ09ORklHRlNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI3MjpcdGRlcGVuZHMgb24gTkVUXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNzMtXHRzZWxlY3QgVVNCX1VfRVRIRVJcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0yODE9Y29uZmlnIFVTQl9DT05GSUdGU19FQ01cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI4Mi1cdGJvb2wgXCYjMzQ7RXRoZXJuZXQgQ29udHJvbCBNb2RlbCAoQ0RDIEVDTSlcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI4MzpcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyODQ6XHRkZXBlbmRzIG9uIE5FVFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjg1LVx0c2VsZWN0IFVTQl9VX0VUSEVSXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9MjkzPWNvbmZpZyBVU0JfQ09ORklHRlNfRUNNX1NVQlNFVFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjk0LVx0Ym9vbCBcJiMzNDtFdGhlcm5ldCBDb250cm9sIE1vZGVsIChDREMgRUNNKSBzdWJzZXRcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI5NTpcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyOTY6XHRkZXBlbmRzIG9uIE5FVFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjk3LVx0c2VsZWN0IFVTQl9VX0VUSEVSXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9MzAzPWNvbmZpZyBVU0JfQ09ORklHRlNfUk5ESVNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTMwNC1cdGJvb2wgXCYjMzQ7Uk5ESVNcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjMwNTpcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozMDY6XHRkZXBlbmRzIG9uIE5FVFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzA3LVx0c2VsZWN0IFVTQl9VX0VUSEVSXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9MzE5PWNvbmZpZyBVU0JfQ09ORklHRlNfRUVNXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMjAtXHRib29sIFwmIzM0O0V0aGVybmV0IEVtdWxhdGlvbiBNb2RlbCAoRUVNKVwmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzIxOlx0ZGVwZW5kcyBvbiBVU0JfQ09ORklHRlNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjMyMjpcdGRlcGVuZHMgb24gTkVUXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMjMtXHRzZWxlY3QgVVNCX1VfRVRIRVJcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0zMzU9Y29uZmlnIFVTQl9DT05GSUdGU19QSE9ORVRcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTMzNi1cdGJvb2wgXCYjMzQ7UGhvbmV0IHByb3RvY29sXCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozMzc6XHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzM4Olx0ZGVwZW5kcyBvbiBORVRcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjMzOTpcdGRlcGVuZHMgb24gUEhPTkVUXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNDAtXHRzZWxlY3QgVVNCX1VfRVRIRVJcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0zNDU9Y29uZmlnIFVTQl9DT05GSUdGU19NQVNTX1NUT1JBR0VcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM0Ni1cdGJvb2wgXCYjMzQ7TWFzcyBzdG9yYWdlXCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozNDc6XHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzQ4Olx0ZGVwZW5kcyBvbiBCTE9DS1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzQ5LVx0c2VsZWN0IFVTQl9GX01BU1NfU1RPUkFHRVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTM1Nj1jb25maWcgVVNCX0NPTkZJR0ZTX0ZfTEJfU1NcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM1Ny1cdGJvb2wgXCYjMzQ7TG9vcGJhY2sgYW5kIHNvdXJjZXNpbmsgZnVuY3Rpb24gKGZvciB0ZXN0aW5nKVwmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzU4Olx0ZGVwZW5kcyBvbiBVU0JfQ09ORklHRlNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM1OS1cdHNlbGVjdCBVU0JfRl9TU19MQlxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTM2OT1jb25maWcgVVNCX0NPTkZJR0ZTX0ZfRlNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM3MC1cdGJvb2wgXCYjMzQ7RnVuY3Rpb24gZmlsZXN5c3RlbSAoRnVuY3Rpb25GUylcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM3MTpcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNzItXHRzZWxlY3QgVVNCX0ZfRlNcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0zODE9Y29uZmlnIFVTQl9DT05GSUdGU19GX1VBQzFcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM4Mi1cdGJvb2wgXCYjMzQ7QXVkaW8gQ2xhc3MgMS4wXCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozODM6XHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6Mzg0Olx0ZGVwZW5kcyBvbiBTTkRcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM4NS1cdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9Mzk5PWNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMxX0xFR0FDWVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDAwLVx0Ym9vbCBcJiMzNDtBdWRpbyBDbGFzcyAxLjAgKGxlZ2FjeSBpbXBsZW1lbnRhdGlvbilcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQwMTpcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0MDI6XHRkZXBlbmRzIG9uIFNORFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDAzLVx0c2VsZWN0IFVTQl9MSUJDT01QT1NJVEVcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz00MTI9Y29uZmlnIFVTQl9DT05GSUdGU19GX1VBQzJcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQxMy1cdGJvb2wgXCYjMzQ7QXVkaW8gQ2xhc3MgMi4wXCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0MTQ6XHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDE1Olx0ZGVwZW5kcyBvbiBTTkRcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQxNi1cdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9NDMxPWNvbmZpZyBVU0JfQ09ORklHRlNfRl9NSURJXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00MzItXHRib29sIFwmIzM0O01JREkgZnVuY3Rpb25cJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQzMzpcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0MzQ6XHRkZXBlbmRzIG9uIFNORFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDM1LVx0c2VsZWN0IFVTQl9MSUJDT01QT1NJVEVcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz00NDU9Y29uZmlnIFVTQl9DT05GSUdGU19GX01JREkyXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00NDYtXHRib29sIFwmIzM0O01JREkgMi4wIGZ1bmN0aW9uXCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0NDc6XHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDQ4Olx0ZGVwZW5kcyBvbiBTTkRcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ0OS1cdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9NDU4PWNvbmZpZyBVU0JfQ09ORklHRlNfRl9ISURcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ1OS1cdGJvb2wgXCYjMzQ7SElEIGZ1bmN0aW9uXCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0NjA6XHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDYxLVx0c2VsZWN0IFVTQl9GX0hJRFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTQ2OD1jb25maWcgVVNCX0NPTkZJR0ZTX0ZfVVZDXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00NjktXHRib29sIFwmIzM0O1VTQiBXZWJjYW0gZnVuY3Rpb25cJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ3MDpcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0NzE6XHRkZXBlbmRzIG9uIFZJREVPX0RFVlxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDcyOlx0ZGVwZW5kcyBvbiBWSURFT19ERVZcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ3My1cdHNlbGVjdCBWSURFT0JVRjJfRE1BX1NHXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9NDgxPWNvbmZpZyBVU0JfQ09ORklHRlNfRl9QUklOVEVSXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDgzLVx0c2VsZWN0IFVTQl9GX1BSSU5URVJcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ4NDpcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00ODUtXHRoZWxwXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9NDk1PWNvbmZpZyBVU0JfQ09ORklHRlNfRl9UQ01cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ5Ni1cdGJvb2wgXCYjMzQ7VVNCIEdhZGdldCBUYXJnZXQgRmFicmljXCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0OTc6XHRkZXBlbmRzIG9uIFRBUkdFVF9DT1JFXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0OTg6XHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDk5LVx0c2VsZWN0IFVTQl9MSUJDT01QT1NJVEVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMTQ6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg2OTEKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA2MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB1bmRlcnN0YW5kaW5nLCBhc3N1bWluZyBJJiMzOTttIGFuIGV4cGVydCBpbiB0aGlzIGVtYmVkZGVkIHN5c3RlbXMgY29udGV4dC4KCioqVW5kZXJzdGFuZGluZyBVU0IgR2FkZ2V0IENvbmZpZ3VyYXRpb24qKgoKUmlnaHQsIHNvIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggVVNCIEdhZGdldCBmdW5jdGlvbmFsaXR5LCBhbmQgaXQgc2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gVGhlIGNvcmUgb2YgaXQgYWxsLCBgVVNCX0dBREdFVGAsIG5hdHVyYWxseSByZWxpZXMgb24gdGhlIGZvdW5kYXRpb25hbCBgVVNCX1NVUFBPUlRgIOKAkyB0aGF0JiMzOTtzIGp1c3QgYmFzaWMgVVNCIHN1cHBvcnQsIG5vdGhpbmcgc3VycHJpc2luZyB0aGVyZS4gV2UmIzM5O3JlIGNvbmZpZ3VyaW5nIFVTQiBnYWRnZXQgZnVuY3Rpb25hbGl0eS4KClRoZSBrZXkgY29uZmlndXJhdGlvbnMgdG8gZm9jdXMgb24gc2VlbSB0byBiZSBgVVNCX0dBREdFVGAgaXRzZWxmLCBhbmQgYFVTQl9HQURHRVRGU2AuIFRvIGJlIHN1cmUgYWJvdXQgdGhlIHJlbGF0aW9uc2hpcHMsIEkmIzM5O2xsIHF1aWNrbHkgY2hlY2sgdGhlIGRlcGVuZGVuY2llcyB3aXRoaW4gdGhlIGBkcml2ZXJzL3VzYi9LY29uZmlnYCBmaWxlLiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgVVNCX0dBREdFVGAgY29ycmVjdGx5IGRlcGVuZHMgb24gYFVTQl9TVVBQT1JUYCwgYW5kIGNvbmZpcm0gd2hldGhlciBhbnl0aGluZyBlbHNlIGlzIGltcGFjdGVkIGJ5IGVuYWJsaW5nIGBVU0JfR0FER0VUYC4gSSYjMzk7bGwgYWxzbyBzZWUgaWYgdGhlcmUgaXMgYW55IG90aGVyIGNyaXRpY2FsIGluZm9ybWF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAxNDoxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZW51Y29uZmlnIFVTQl9HQURHRVQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTYtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoxNzptZW51Y29uZmlnIFVTQl9HQURHRVRcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTE4LVx0dHJpc3RhdGUgXCYjMzQ7VVNCIEdhZGdldCBTdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE0OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5MDQ0CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIHRoZSBVU0IgQ29uZmlndXJhdGlvbiBPcHRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBVU0IgY29uZmlndXJhdGlvbiBhbmQgbmVlZCB0byBjbGFyaWZ5IGEgZGVwZW5kZW5jeS4gTXkgaW5pdGlhbCBodW5jaCBpcyB0aGF0IGBVU0JfR0FER0VUYCByZWxpZXMgb24gYFVTQl9TVVBQT1JUYCwgYW5kIHNpbmNlIGBVU0JfU1VQUE9SVGAgaXMgZGVmaW5lZCBpbiBgZHJpdmVycy91c2IvS2NvbmZpZ2AsIEkgbmVlZCB0byB2ZXJpZnkgdGhpcyByZWxhdGlvbnNoaXAuIE5vdywgSSBzaG91bGQgc2hpZnQgbXkgZm9jdXMgdG8gYGRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnYC4gVGhpcyBpcyB3aGVyZSB0aGUgaW50cmljYWNpZXMgb2YgdGhlIGdhZGdldCBtb2RlIGNvbmZpZ3VyYXRpb25zIHNob3VsZCBiZSBzcGVsbGVkIG91dCwgcGFydGljdWxhcmx5IHRoZSBkZXBlbmRlbmNpZXMgZm9yIGBVU0JfR0FER0VUYC4gSSYjMzk7bGwgZXhwbG9yZSB0aGlzIGZpbGUgdG8gcGlucG9pbnQgKmV4YWN0bHkqIHdoYXQgbmVlZHMgdG8gYmUgZW5hYmxlZCBvciBjb25maWd1cmVkIGFsb25nc2lkZSBgVVNCX0dBREdFVGAuIFVuZGVyc3RhbmRpbmcgdGhlIGNvbXBsZXRlIGNoYWluIG9mIGRlcGVuZGVuY2llcyBpcyBjcml0aWNhbCB0byBwcm9wZXIgVVNCIGZ1bmN0aW9uYWxpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE0OjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0I1xuICAgMzpcdCMgVVNCIEdhZGdldCBzdXBwb3J0IG9uIGEgc3lzdGVtIGludm9sdmVzXG4gICA0Olx0IyAgICAoYSkgYSBwZXJpcGhlcmFsIGNvbnRyb2xsZXIsIGFuZFxuICAgNTpcdCMgICAgKGIpIHRoZSBnYWRnZXQgZHJpdmVyIHVzaW5nIGl0LlxuICAgNjpcdCNcbiAgIDc6XHQjIE5PVEU6ICBHYWRnZXQgc3VwcG9ydCAqKiBET0VTIE5PVCAqKiBkZXBlbmQgb24gaG9zdC1zaWRlIENPTkZJR19VU0IgISFcbiAgIDg6XHQjXG4gICA5Olx0IyAgLSBIb3N0IHN5c3RlbXMgKGxpa2UgUENzKSBuZWVkIENPTkZJR19VU0IgKHdpdGggXCYjMzQ7QVwmIzM0OyBqYWNrcykuXG4gIDEwOlx0IyAgLSBQZXJpcGhlcmFscyAobGlrZSBQREFzKSBuZWVkIENPTkZJR19VU0JfR0FER0VUICh3aXRoIFwmIzM0O0JcJiMzNDsgamFja3MpLlxuICAxMTpcdCMgIC0gU29tZSBzeXN0ZW1zIGhhdmUgYm90aCBraW5kcyBvZiBjb250cm9sbGVycy5cbiAgMTI6XHQjXG4gIDEzOlx0IyBXaXRoIGhlbHAgZnJvbSBhIHNwZWNpYWwgdHJhbnNjZWl2ZXIgYW5kIGEgXCYjMzQ7TWluaS1BQlwmIzM0OyBqYWNrLCBzeXN0ZW1zIHdpdGhcbiAgMTQ6XHQjIGJvdGgga2luZHMgb2YgY29udHJvbGxlciBjYW4gYWxzbyBzdXBwb3J0IFwmIzM0O1VTQiBPbi10aGUtR29cJiMzNDsgKENPTkZJR19VU0JfT1RHKS5cbiAgMTU6XHQjXG4gIDE2Olx0XG4gIDE3Olx0bWVudWNvbmZpZyBVU0JfR0FER0VUXG4gIDE4Olx0XHR0cmlzdGF0ZSBcJiMzNDtVU0IgR2FkZ2V0IFN1cHBvcnRcJiMzNDtcbiAgMTk6XHRcdHNlbGVjdCBVU0JfQ09NTU9OXG4gIDIwOlx0XHRzZWxlY3QgTkxTXG4gIDIxOlx0XHRoZWxwXG4gIDIyOlx0XHQgICBVU0IgaXMgYSBob3N0L2RldmljZSBwcm90b2NvbCwgb3JnYW5pemVkIHdpdGggb25lIGhvc3QgKHN1Y2ggYXMgYVxuICAyMzpcdFx0ICAgUEMpIGNvbnRyb2xsaW5nIHVwIHRvIDEyNyBwZXJpcGhlcmFsIGRldmljZXMuXG4gIDI0Olx0XHQgICBUaGUgVVNCIGhhcmR3YXJlIGlzIGFzeW1tZXRyaWMsIHdoaWNoIG1ha2VzIGl0IGVhc2llciB0byBzZXQgdXA6XG4gIDI1Olx0XHQgICB5b3UgY2FuJiMzOTt0IGNvbm5lY3QgYSBcJiMzNDt0by10aGUtaG9zdFwmIzM0OyBjb25uZWN0b3IgdG8gYSBwZXJpcGhlcmFsLlxuICAyNjpcdFxuICAyNzpcdFx0ICAgTGludXggY2FuIHJ1biBpbiB0aGUgaG9zdCwgb3IgaW4gdGhlIHBlcmlwaGVyYWwuICBJbiBib3RoIGNhc2VzXG4gIDI4Olx0XHQgICB5b3UgbmVlZCBhIGxvdyBsZXZlbCBidXMgY29udHJvbGxlciBkcml2ZXIsIGFuZCBzb21lIHNvZnR3YXJlXG4gIDI5Olx0XHQgICB0YWxraW5nIHRvIGl0LiAgUGVyaXBoZXJhbCBjb250cm9sbGVycyBhcmUgb2Z0ZW4gZGlzY3JldGUgc2lsaWNvbixcbiAgMzA6XHRcdCAgIG9yIGFyZSBpbnRlZ3JhdGVkIHdpdGggdGhlIENQVSBpbiBhIG1pY3JvY29udHJvbGxlci4gIFRoZSBtb3JlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE0OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5Nzc1CgkJCQkJCQlvdXRwdXQ6IDE2MQoJCQkJCQkJdGhvdWdodHM6IDI5NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBVU0IgR2FkZ2V0ZnMgUGF0Y2ggZm9yIEZ1enppbmcgU3VpdGFiaWxpdHkqKgoKT2theSwgc28gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRhcmdldGluZyB0aGUgYFVTQl9HQURHRVRgIGRyaXZlciwgSSBzZWUgdGhlcmUgYXJlIG5vIGRpcmVjdCBkZXBlbmRlbmNpZXMuIFRoaXMgaXMgZ29vZCB0byBrZWVwIGluIG1pbmQsIGFzIGl0IGNvdWxkIG1lYW4gaXQmIzM5O3MgZWFzaWVyIHRvIGlzb2xhdGUuCgpMZXQmIzM5O3MgcXVpY2tseSByZWNhcCB3aGF0IHdlJiMzOTt2ZSBnb3Qgc28gZmFyOiBgV29ydGhGdXp6aW5nYCBpcyBzZXQgdG8gdHJ1ZSwgYW5kIHdlIGhhdmUgYFVTQl9HQURHRVRgIGFuZCBgVVNCX0dBREdFVEZTYCBlbmFibGVkLiBPdXIgaW5pdGlhbCBgRm9jdXNTeW1ib2xzYCBpbmNsdWRlIGBnYWRnZXRmc19maWxsX3N1cGVyYCwgYGdhZGdldGZzX2V2aWN0X2lub2RlYCwgYGdhZGdldF9kZXZfb3BlbmAsIGBkZXZfcmVsZWFzZWAsIGBlcF9vcGVuYCwgYW5kIGBlcF9yZWxlYXNlYC4gVGhlIHJlYXNvbmluZyBnaXZlbiBpcyBzb2xpZCDigJMgdGhpcyBwYXRjaCBzZWVtcyB0byBhZGRyZXNzIGEgcG90ZW50aWFsIHJlZmVyZW5jZSBjb3VudGluZyBvciBtZW1vcnkgbWFuYWdlbWVudCBwcm9ibGVtIGluIHRoZSBVU0IgZ2FkZ2V0ZnMgZHJpdmVyLCBzcGVjaWZpY2FsbHkgYnkgbW92aW5nIGBwdXRfZXBgIGludG8gdGhlIGlub2RlIGV2aWN0aW9uIHBhdGguIFRoZSBmYWN0IHRoYXQgZ2FkZ2V0ZnMgY2FuIGJlIGFjY2Vzc2VkIHRocm91Z2ggYGR1bW15X2hjZGAgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIG1ha2VzIGl0IHZlcnkgYXBwZWFsaW5nIGZvciBmdXp6aW5nLCBnaXZlbiB0aGUgYWNjZXNzaWJpbGl0eS4KCkhvbGQgb24sIEkgc2VlIHRoYXQgYGdhZGdldGZzX2NyZWF0ZV9maWxlYCBoYXMgYWxzbyBiZWVuIG1vZGlmaWVkLiBUaGF0JiMzOTtzIHJlbGV2YW50LiBMZXQmIzM5O3MgYWRkIHRoYXQgdG8gdGhlIGBGb2N1c1N5bWJvbHNgIGxpc3QsIGFsb25nIHdpdGggYGRlc3Ryb3lfZXBfZmlsZXNgLiBXZSBoYXZlIHRvIGNvbnNpZGVyIGhvdyB0aGlzIGFmZmVjdHMgdGhlIGF0dGFjayBzdXJmYWNlLgoKTm93LCBsZXQmIzM5O3MgdXBkYXRlIGBGb2N1c1N5bWJvbHNgOgoKKiAgIGBnYWRnZXRmc19maWxsX3N1cGVyYAoqICAgYGdhZGdldGZzX2NyZWF0ZV9maWxlYAoqICAgYGdhZGdldGZzX2V2aWN0X2lub2RlYAoqICAgYGRlc3Ryb3lfZXBfZmlsZXNgCiogICBgZXBfb3BlbmAKKiAgIGBlcF9yZWxlYXNlYAoqICAgYGdhZGdldF9kZXZfb3BlbmAKKiAgIGBkZXZfcmVsZWFzZWAKCkp1c3QgdG8gZG91YmxlIGNoZWNrLCBJJiMzOTtsbCBxdWlja2x5IHZlcmlmeSBpZiBgZ2FkZ2V0ZnNfY3JlYXRlX2ZpbGVgIGlzIHN0YXRpYy4gWWVzLCBpdCBpcyBzdGF0aWMuIEJ1dCwgaXQgaXMgZmluZS4KCk9rYXksIHRoYXQmIzM5O3MgZXZlcnl0aGluZyBJIG5lZWQuIEkmIzM5O20gc2F0aXNmaWVkLiBMZXQmIzM5O3MgY2FsbCB0aGUgc2V0LXJlc3VsdHMgZnVuY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDE0OjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtVU0JfR0FER0VUJiMzNDssCiAgICAmIzM0O1VTQl9HQURHRVRGUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2dhZGdldGZzX2ZpbGxfc3VwZXImIzM0OywKICAgICYjMzQ7Z2FkZ2V0ZnNfY3JlYXRlX2ZpbGUmIzM0OywKICAgICYjMzQ7Z2FkZ2V0ZnNfZXZpY3RfaW5vZGUmIzM0OywKICAgICYjMzQ7ZGVzdHJveV9lcF9maWxlcyYjMzQ7LAogICAgJiMzNDtlcF9vcGVuJiMzNDssCiAgICAmIzM0O2VwX3JlbGVhc2UmIzM0OywKICAgICYjMzQ7Z2FkZ2V0X2Rldl9vcGVuJiMzNDssCiAgICAmIzM0O2Rldl9yZWxlYXNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmVmZXJlbmNlIGNvdW50aW5nIG9yIG1lbW9yeSBtYW5hZ2VtZW50IGlzc3VlIGluIHRoZSBVU0IgZ2FkZ2V0ZnMgZHJpdmVyIGJ5IG1vdmluZyBgcHV0X2VwYCB0byB0aGUgaW5vZGUgZXZpY3Rpb24gcGF0aC4gR2FkZ2V0ZnMgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgZHVtbXlfaGNkLCBtYWtpbmcgaXQgc3VpdGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTQl9HQURHRVQmIzM0OywKICAgICYjMzQ7VVNCX0dBREdFVEZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Z2FkZ2V0ZnNfZmlsbF9zdXBlciYjMzQ7LAogICAgJiMzNDtnYWRnZXRmc19jcmVhdGVfZmlsZSYjMzQ7LAogICAgJiMzNDtnYWRnZXRmc19ldmljdF9pbm9kZSYjMzQ7LAogICAgJiMzNDtkZXN0cm95X2VwX2ZpbGVzJiMzNDssCiAgICAmIzM0O2VwX29wZW4mIzM0OywKICAgICYjMzQ7ZXBfcmVsZWFzZSYjMzQ7LAogICAgJiMzNDtnYWRnZXRfZGV2X29wZW4mIzM0OywKICAgICYjMzQ7ZGV2X3JlbGVhc2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByZWZlcmVuY2UgY291bnRpbmcgb3IgbWVtb3J5IG1hbmFnZW1lbnQgaXNzdWUgaW4gdGhlIFVTQiBnYWRnZXRmcyBkcml2ZXIgYnkgbW92aW5nIGBwdXRfZXBgIHRvIHRoZSBpbm9kZSBldmljdGlvbiBwYXRoLiBHYWRnZXRmcyBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBkdW1teV9oY2QsIG1ha2luZyBpdCBzdWl0YWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE0OjA5OjQxLjY1MTQyOTY1NFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc1NDAwNDM2NDgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlVTQl9HQURHRVRcIixcbiAgICBcIlVTQl9HQURHRVRGU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImdhZGdldGZzX2ZpbGxfc3VwZXJcIixcbiAgICBcImdhZGdldGZzX2NyZWF0ZV9maWxlXCIsXG4gICAgXCJnYWRnZXRmc19ldmljdF9pbm9kZVwiLFxuICAgIFwiZGVzdHJveV9lcF9maWxlc1wiLFxuICAgIFwiZXBfb3BlblwiLFxuICAgIFwiZXBfcmVsZWFzZVwiLFxuICAgIFwiZ2FkZ2V0X2Rldl9vcGVuXCIsXG4gICAgXCJkZXZfcmVsZWFzZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmVmZXJlbmNlIGNvdW50aW5nIG9yIG1lbW9yeSBtYW5hZ2VtZW50IGlzc3VlIGluIHRoZSBVU0IgZ2FkZ2V0ZnMgZHJpdmVyIGJ5IG1vdmluZyBgcHV0X2VwYCB0byB0aGUgaW5vZGUgZXZpY3Rpb24gcGF0aC4gR2FkZ2V0ZnMgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgZHVtbXlfaGNkLCBtYWtpbmcgaXQgc3VpdGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE0OjA5OjQxLjY1MTQzNDczNFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzg3ODY2OTA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZWNjOTVhODU1NTFjODkwYjJkMWYzZTMwMzhmMDU0NWY3YjhlNmE4OFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1bCAzMSAxNDowOTo0MCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmNcXG5pbmRleCBkODdhOGFiNTE1MTA3Li5hMDMwNjI5ODZiZjMxIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuY1xcbisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuY1xcbkBAIC0xNTc5LDggKzE1NzksNiBAQCBzdGF0aWMgdm9pZCBkZXN0cm95X2VwX2ZpbGVzIChzdHJ1Y3QgZGV2X2RhdGEgKmRldilcXG4gXFx0XFx0LyogYnJlYWsgbGluayB0byBkY2FjaGUgKi9cXG4gXFx0XFx0c2ltcGxlX3JlbW92ZV9ieV9uYW1lKGRldi1cXHUwMDNlc2ItXFx1MDAzZXNfcm9vdCwgZXAtXFx1MDAzZW5hbWUsIE5VTEwpO1xcbiBcXG4tXFx0XFx0cHV0X2VwIChlcCk7XFxuLVxcbiBcXHRcXHRzcGluX2xvY2tfaXJxIChcXHUwMDI2ZGV2LVxcdTAwM2Vsb2NrKTtcXG4gXFx0fVxcbiBcXHRzcGluX3VubG9ja19pcnEgKFxcdTAwMjZkZXYtXFx1MDAzZWxvY2spO1xcbkBAIC0xOTk2LDYgKzE5OTQsNyBAQCBzdGF0aWMgaW50IGdhZGdldGZzX2NyZWF0ZV9maWxlIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBjaGFyIGNvbnN0ICpuYW1lLFxcbiBcXG4gXFx0ZGVudHJ5ID0gc2ltcGxlX3N0YXJ0X2NyZWF0aW5nKHNiLVxcdTAwM2VzX3Jvb3QsIG5hbWUpO1xcbiBcXHRpZiAoSVNfRVJSKGRlbnRyeSkpIHtcXG4rXFx0XFx0aW5vZGUtXFx1MDAzZWlfcHJpdmF0ZSA9IE5VTEw7XFxuIFxcdFxcdGlwdXQoaW5vZGUpO1xcbiBcXHRcXHRyZXR1cm4gUFRSX0VSUihkZW50cnkpO1xcbiBcXHR9XFxuQEAgLTIwMDYsOSArMjAwNSwxOCBAQCBzdGF0aWMgaW50IGdhZGdldGZzX2NyZWF0ZV9maWxlIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBjaGFyIGNvbnN0ICpuYW1lLFxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgZ2FkZ2V0ZnNfZXZpY3RfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSlcXG4re1xcbitcXHR0cnVuY2F0ZV9pbm9kZV9wYWdlc19maW5hbChcXHUwMDI2aW5vZGUtXFx1MDAzZWlfZGF0YSk7XFxuK1xcdGNsZWFyX2lub2RlKGlub2RlKTtcXG4rXFx0aWYgKGlub2RlLVxcdTAwM2VpX3ByaXZhdGUgXFx1MDAyNlxcdTAwMjYgaW5vZGUtXFx1MDAzZWlfZm9wID09IFxcdTAwMjZlcF9pb19vcGVyYXRpb25zKVxcbitcXHRcXHRwdXRfZXAoaW5vZGUtXFx1MDAzZWlfcHJpdmF0ZSk7XFxuK31cXG4rXFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3VwZXJfb3BlcmF0aW9ucyBnYWRnZXRfZnNfb3BlcmF0aW9ucyA9IHtcXG4gXFx0LnN0YXRmcyA9XFx0c2ltcGxlX3N0YXRmcyxcXG4gXFx0LmRyb3BfaW5vZGUgPVxcdGlub2RlX2p1c3RfZHJvcCxcXG4rXFx0LmV2aWN0X2lub2RlID1cXHRnYWRnZXRmc19ldmljdF9pbm9kZSxcXG4gfTtcXG4gXFxuIHN0YXRpYyBpbnRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTQ6MDk6NDIuMDQwMDM3MDUxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NzUwMTE4MjEyOTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVVNCX0dBREdFVFwiLFxuICAgIFwiVVNCX0dBREdFVEZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZ2FkZ2V0ZnNfZmlsbF9zdXBlclwiLFxuICAgIFwiZ2FkZ2V0ZnNfY3JlYXRlX2ZpbGVcIixcbiAgICBcImdhZGdldGZzX2V2aWN0X2lub2RlXCIsXG4gICAgXCJkZXN0cm95X2VwX2ZpbGVzXCIsXG4gICAgXCJlcF9vcGVuXCIsXG4gICAgXCJlcF9yZWxlYXNlXCIsXG4gICAgXCJnYWRnZXRfZGV2X29wZW5cIixcbiAgICBcImRldl9yZWxlYXNlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByZWZlcmVuY2UgY291bnRpbmcgb3IgbWVtb3J5IG1hbmFnZW1lbnQgaXNzdWUgaW4gdGhlIFVTQiBnYWRnZXRmcyBkcml2ZXIgYnkgbW92aW5nIGBwdXRfZXBgIHRvIHRoZSBpbm9kZSBldmljdGlvbiBwYXRoLiBHYWRnZXRmcyBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBkdW1teV9oY2QsIG1ha2luZyBpdCBzdWl0YWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZWNjOTVhODU1NTFjODkwYjJkMWYzZTMwMzhmMDU0NWY3YjhlNmE4OFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDMxIDE0OjA5OjQwIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jXG5pbmRleCBkODdhOGFiNTE1MTA3Li5hMDMwNjI5ODZiZjMxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jXG4rKysgYi9kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmNcbkBAIC0xNTc5LDggKzE1NzksNiBAQCBzdGF0aWMgdm9pZCBkZXN0cm95X2VwX2ZpbGVzIChzdHJ1Y3QgZGV2X2RhdGEgKmRldilcbiBcdFx0LyogYnJlYWsgbGluayB0byBkY2FjaGUgKi9cbiBcdFx0c2ltcGxlX3JlbW92ZV9ieV9uYW1lKGRldi1cdTAwM2VzYi1cdTAwM2VzX3Jvb3QsIGVwLVx1MDAzZW5hbWUsIE5VTEwpO1xuIFxuLVx0XHRwdXRfZXAgKGVwKTtcbi1cbiBcdFx0c3Bpbl9sb2NrX2lycSAoXHUwMDI2ZGV2LVx1MDAzZWxvY2spO1xuIFx0fVxuIFx0c3Bpbl91bmxvY2tfaXJxIChcdTAwMjZkZXYtXHUwMDNlbG9jayk7XG5AQCAtMTk5Niw2ICsxOTk0LDcgQEAgc3RhdGljIGludCBnYWRnZXRmc19jcmVhdGVfZmlsZSAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgY2hhciBjb25zdCAqbmFtZSxcbiBcbiBcdGRlbnRyeSA9IHNpbXBsZV9zdGFydF9jcmVhdGluZyhzYi1cdTAwM2VzX3Jvb3QsIG5hbWUpO1xuIFx0aWYgKElTX0VSUihkZW50cnkpKSB7XG4rXHRcdGlub2RlLVx1MDAzZWlfcHJpdmF0ZSA9IE5VTEw7XG4gXHRcdGlwdXQoaW5vZGUpO1xuIFx0XHRyZXR1cm4gUFRSX0VSUihkZW50cnkpO1xuIFx0fVxuQEAgLTIwMDYsOSArMjAwNSwxOCBAQCBzdGF0aWMgaW50IGdhZGdldGZzX2NyZWF0ZV9maWxlIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBjaGFyIGNvbnN0ICpuYW1lLFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuK3N0YXRpYyB2b2lkIGdhZGdldGZzX2V2aWN0X2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUpXG4re1xuK1x0dHJ1bmNhdGVfaW5vZGVfcGFnZXNfZmluYWwoXHUwMDI2aW5vZGUtXHUwMDNlaV9kYXRhKTtcbitcdGNsZWFyX2lub2RlKGlub2RlKTtcbitcdGlmIChpbm9kZS1cdTAwM2VpX3ByaXZhdGUgXHUwMDI2XHUwMDI2IGlub2RlLVx1MDAzZWlfZm9wID09IFx1MDAyNmVwX2lvX29wZXJhdGlvbnMpXG4rXHRcdHB1dF9lcChpbm9kZS1cdTAwM2VpX3ByaXZhdGUpO1xuK31cbitcbiBzdGF0aWMgY29uc3Qgc3RydWN0IHN1cGVyX29wZXJhdGlvbnMgZ2FkZ2V0X2ZzX29wZXJhdGlvbnMgPSB7XG4gXHQuc3RhdGZzID1cdHNpbXBsZV9zdGF0ZnMsXG4gXHQuZHJvcF9pbm9kZSA9XHRpbm9kZV9qdXN0X2Ryb3AsXG4rXHQuZXZpY3RfaW5vZGUgPVx0Z2FkZ2V0ZnNfZXZpY3RfaW5vZGUsXG4gfTtcbiBcbiBzdGF0aWMgaW50XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNDowOTo0Mi4wNDAwMzgzOTFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzEyOTY0MTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFVTQiBHYWRnZXRmcyBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmNgLCBhbmQgaXQgbG9va3MgbGlrZSBhIHRhcmdldGVkIGZpeCBmb3IgYSBwb3RlbnRpYWwgaXNzdWUgaW4gdGhlIFVTQiBnYWRnZXRmcyBzdWJzeXN0ZW0uIFRoZSBjaGFuZ2UgY2VudGVycyBhcm91bmQgaG93IGBlcGAgKGVuZHBvaW50KSBvYmplY3RzIGFyZSBtYW5hZ2VkIGFuZCByZWxlYXNlZC4gU3BlY2lmaWNhbGx5LCB0aGV5J3ZlIHJlbW92ZWQgYSBgcHV0X2VwKGVwKWAgY2FsbCBmcm9tIGBkZXN0cm95X2VwX2ZpbGVzYCwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIEl0IGFsc28gbG9va3MgbGlrZSB0aGV5J3JlIGV4cGxpY2l0bHkgc2V0dGluZyBgaW5vZGUtXHUwMDNlaV9wcml2YXRlID0gTlVMTGAgaW4gYGdhZGdldGZzX2NyZWF0ZV9maWxlYCB3aGVuIGBzaW1wbGVfc3RhcnRfY3JlYXRpbmdgIGZhaWxzLiBUaGF0J3MgZ29vZCBwcmFjdGljZSB0byBwcmV2ZW50IHN0YWxlIHBvaW50ZXJzLlxuXG5DcnVjaWFsbHksIHRoZXkndmUgYWRkZWQgYGdhZGdldGZzX2V2aWN0X2lub2RlYCwgd2hpY2ggY29udGFpbnMgdGhlIGxvZ2ljIHRvIGFjdHVhbGx5IGNhbGwgYHB1dF9lcChpbm9kZS1cdTAwM2VpX3ByaXZhdGUpYCBpZiB0aGUgaW5vZGUncyBwcml2YXRlIGRhdGEgaXMgYW4gZW5kcG9pbnQgYW5kIGl0J3MgYXNzb2NpYXRlZCB3aXRoIHRoZSBlbmRwb2ludCBJL08gb3BlcmF0aW9ucy4gVGhlbiwgdGhhdCBuZXcgZnVuY3Rpb24gaXMgcmVnaXN0ZXJlZCBhcyB0aGUgYC5ldmljdF9pbm9kZWAgb3BlcmF0aW9uIGZvciB0aGUgYGdhZGdldF9mc19vcGVyYXRpb25zYC4gVGhpcyBsb29rcyBsaWtlIGEgZGVmaW5pdGUgc3RlcCBpbiB0aGUgcmlnaHQgZGlyZWN0aW9uLlxuXG5NeSB0YWtlIGlzIHRoYXQgdGhpcyBpcyBsaWtlbHkgYSBmdW5jdGlvbmFsIGZpeCwgYW5kIGl0J3MgYWRkcmVzc2luZyBhIHJlZmVyZW5jZSBjb3VudGluZyBpc3N1ZSBvciBwb3NzaWJseSBhIG1lbW9yeSBsZWFrIG9yIHVzZS1hZnRlci1mcmVlIHNjZW5hcmlvIHJlbGF0ZWQgdG8gaG93IGVuZHBvaW50IG9iamVjdHMgYXJlIGhhbmRsZWQgaW4gZ2FkZ2V0ZnMuIFNpbmNlIGdhZGdldGZzIGlzIGEgdmlhYmxlIHBhdGggaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCB3aXRoIGEgZHVtbXkgSENELCBvciBzaW1pbGFyIHNldHVwcywgdGhpcyBraW5kIG9mIGZpeCBpcyBjcml0aWNhbC5cblxuQWxyaWdodCwgSSdtIHRoaW5raW5nIHdlIG5lZWQgdG8gZnV6eiB0aGlzISBJIG5lZWQgdG8gZGlnIGludG8gYGRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuY2AgYW5kIGZpZ3VyZSBvdXQgd2hhdCBjb25maWd1cmF0aW9uIG9wdGlvbnMgZW5hYmxlIGl0LiBNeSBndWVzcyBpcyBpdCdzIHByb2JhYmx5IHRpZWQgdG8gYENPTkZJR19VU0JfR0FER0VURlNgLCBidXQgSSdsbCBjb25maXJtIHRoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzNjMsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNTMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNDowOTo0Ny4zNTMwMDU1ODJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM2NTYyODgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiVVNCX0dBREdFVEZTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz0xOTA9Y29uZmlnIFVTQl9HX05DTVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTIwNS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6MjA2OmNvbmZpZyBVU0JfR0FER0VURlNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMjA3LVxcdHRyaXN0YXRlIFxcXCJHYWRnZXQgRmlsZXN5c3RlbVxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvTWFrZWZpbGU9MzA9b2JqLSQoQ09ORklHX1VTQl9FVEgpXFx0XFx0Kz0gZ19ldGhlci5vXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9NYWtlZmlsZTozMTpvYmotJChDT05GSUdfVVNCX0dBREdFVEZTKVxcdCs9IGdhZGdldGZzLm9cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L01ha2VmaWxlLTMyLW9iai0kKENPTkZJR19VU0JfRlVOQ1RJT05GUylcXHQrPSBnX2Zmcy5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE0OjA5OjQ3LjM5NjY3Mzg5OVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyOTQ0MjA5MTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgYFVTQl9HQURHRVRGU2AgRGVwZW5kZW5jaWVzIGluIHRoZSBLZXJuZWwgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIGJlZm9yZSBkaXZpbmcgaW50byB0aGUgbWFpbiBpc3N1ZSwgaXQncyBhbHdheXMgYSBnb29kIHByYWN0aWNlIHRvIGV4YW1pbmUgdGhlIGBLY29uZmlnYCBmaWxlcywgZXNwZWNpYWxseSBpbiBhcmVhcyB0aGF0IGhhdmUgYmVlbiBhcm91bmQgZm9yIGEgd2hpbGUuIExldCdzIHNlZSwgbXkgdGhpbmtpbmcgZ29lcyB0byBgZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnYC4gSSdtIHNwZWNpZmljYWxseSBsb29raW5nIGZvciBhbnkgZGVwZW5kZW5jaWVzIHRoYXQgYFVTQl9HQURHRVRGU2AgaGFzLiBUaGlzIHNob3VsZCBzaGVkIGxpZ2h0IG9uIHdoaWNoIG90aGVyIGtlcm5lbCBtb2R1bGVzIG9yIG9wdGlvbnMgbmVlZCB0byBiZSBlbmFibGVkIGZvciBgZ2FkZ2V0ZnNgIHRvIHdvcmsgY29ycmVjdGx5IGFuZCBpdCBnaXZlcyBoaW50cyBpZiBzb21lIHBhcnRzIGFyZSBtYXJrZWQgZm9yIHJlbW92YWwuIEkgd2FudCB0byBidWlsZCBhIGNsZWFyIG1lbnRhbCBwaWN0dXJlIG9mIGFsbCB0aGUgaW1wbGljYXRpb25zLiBUaGlzIHdpbGwgY2xhcmlmeSBob3cgdGhpcyBmZWF0dXJlIGludGVyYWN0cyB3aXRoIHRoZSByZXN0IG9mIHRoZSBVU0IgZ2FkZ2V0IHN1YnN5c3RlbSBpbiBpdHMgY3VycmVudCBzdGF0ZS4gTm8gc3VycHJpc2VzIGxhdGVyLCBob3BlZnVsbHkuIFRpbWUgdG8gZ28gZGlnZ2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzIzNCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE0OjA5OjUwLjY5MTA5ODIxMVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NTU2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjAwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjAwOlxcdFxcdCAgb2Ygc2V2ZXJhbCBldGhlcm5ldCBmcmFtZXMgaW50byBvbmUgVVNCIHRyYW5zZmVyIGFuZCBkaWZmZXJlbnRcXG4gMjAxOlxcdFxcdCAgYWxpZ25tZW50IHBvc3NpYmlsaXRpZXMuXFxuIDIwMjpcXHRcXG4gMjAzOlxcdFxcdCAgU2F5IFxcXCJ5XFxcIiB0byBsaW5rIHRoZSBkcml2ZXIgc3RhdGljYWxseSwgb3IgXFxcIm1cXFwiIHRvIGJ1aWxkIGFcXG4gMjA0OlxcdFxcdCAgZHluYW1pY2FsbHkgbGlua2VkIG1vZHVsZSBjYWxsZWQgXFxcImdfbmNtXFxcIi5cXG4gMjA1OlxcdFxcbiAyMDY6XFx0Y29uZmlnIFVTQl9HQURHRVRGU1xcbiAyMDc6XFx0XFx0dHJpc3RhdGUgXFxcIkdhZGdldCBGaWxlc3lzdGVtXFxcIlxcbiAyMDg6XFx0XFx0aGVscFxcbiAyMDk6XFx0XFx0ICBUaGlzIGRyaXZlciBwcm92aWRlcyBhIGZpbGVzeXN0ZW0gYmFzZWQgQVBJIHRoYXQgbGV0cyB1c2VyIG1vZGVcXG4gMjEwOlxcdFxcdCAgcHJvZ3JhbXMgaW1wbGVtZW50IGEgc2luZ2xlLWNvbmZpZ3VyYXRpb24gVVNCIGRldmljZSwgaW5jbHVkaW5nXFxuIDIxMTpcXHRcXHQgIGVuZHBvaW50IEkvTyBhbmQgY29udHJvbCByZXF1ZXN0cyB0aGF0IGRvbid0IHJlbGF0ZSB0byBlbnVtZXJhdGlvbi5cXG4gMjEyOlxcdFxcdCAgQWxsIGVuZHBvaW50cywgdHJhbnNmZXIgc3BlZWRzLCBhbmQgdHJhbnNmZXIgdHlwZXMgc3VwcG9ydGVkIGJ5XFxuIDIxMzpcXHRcXHQgIHRoZSBoYXJkd2FyZSBhcmUgYXZhaWxhYmxlLCB0aHJvdWdoIHJlYWQoKSBhbmQgd3JpdGUoKSBjYWxscy5cXG4gMjE0OlxcdFxcbiAyMTU6XFx0XFx0ICBTYXkgXFxcInlcXFwiIHRvIGxpbmsgdGhlIGRyaXZlciBzdGF0aWNhbGx5LCBvciBcXFwibVxcXCIgdG8gYnVpbGQgYVxcbiAyMTY6XFx0XFx0ICBkeW5hbWljYWxseSBsaW5rZWQgbW9kdWxlIGNhbGxlZCBcXFwiZ2FkZ2V0ZnNcXFwiLlxcbiAyMTc6XFx0XFxuIDIxODpcXHRjb25maWcgVVNCX0ZVTkNUSU9ORlNcXG4gMjE5OlxcdFxcdHRyaXN0YXRlIFxcXCJGdW5jdGlvbiBGaWxlc3lzdGVtXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNDowOTo1MC42OTEyNjg0NTFaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjUxMDg4NDI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgc2l0dWF0aW9uOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIERlcGVuZGVuY3kqKlxuXG5Pa2F5LCBzbyB0aGlzIGNvbmZpZ3VyYXRpb24gb3B0aW9uJ3MgYmVoYXZpb3IgaXMgY2xlYXJseSB0aWVkIHRvIHNvbWV0aGluZyBlbHNlIOKAkyBsb29rcyBsaWtlIGBVU0JfR0FER0VUYCBpcyB0aGUgY29udHJvbGxpbmcgZmFjdG9yIGhlcmUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGl0J3MgbGlrZWx5IHRoZSBwYXJlbnQgbWVudSBpdGVtLiBJIG5lZWQgdG8gY29uZmlybSB0aGF0IHJlbGF0aW9uc2hpcC4gVGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGRpdmUgaW50byB0aGUgbWVudSBzdHJ1Y3R1cmUgYW5kIHZlcmlmeSB0aGUgZGVwZW5kZW5jeSBwYXRoLiBMZXQncyB0cmFjZSBpdCBiYWNrIGFuZCBwaW5wb2ludCBleGFjdGx5IHdoZXJlIHRoaXMgY29uZGl0aW9uYWwgbG9naWMgb3JpZ2luYXRlcy4gVGhhdCdzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgZnVsbCBwaWN0dXJlIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4MTMsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE0OjA5OjUzLjk0MjM1OTE3NloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTY3MzI3NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtZW51Y29uZmlnIFVTQl9HQURHRVRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xNi1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoxNzptZW51Y29uZmlnIFVTQl9HQURHRVRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xOC1cXHR0cmlzdGF0ZSBcXFwiVVNCIEdhZGdldCBTdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNDowOTo1My45OTIwMzcwNzNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODM4Njc1Njg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVVNCIEdhZGdldCBGaWxlIFN5c3RlbSBJbXBsZW1lbnRhdGlvbioqXG5cbk9rYXksIHNvIEkgc2VlIHRoaXMgcGF0Y2ggaXMgZGVhbGluZyB3aXRoIGBVU0JfR0FER0VUYCBhbmQgYFVTQl9HQURHRVRGU2AsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgZGl2aW5nIGludG8gdGhlIGxlZ2FjeSBpbm9kZSBpbXBsZW1lbnRhdGlvbiBpbiBgZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jYC4gVGhhdCBzZWVtcyBsaWtlIHRoZSByaWdodCBwbGFjZSB0byBiZWdpbiwgdG8gdW5kZXJzdGFuZCB0aGUgY29yZSBmdW5jdGlvbnMgYmVpbmcgbW9kaWZpZWQuIFRoZSBkZXNjcmlwdGlvbiBtZW50aW9ucyBjaGFuZ2VzIHRvIGBkZXN0cm95X2VwX2ZpbGVzYCwgYGdhZGdldGZzX2NyZWF0ZV9maWxlYCwgYW5kIHRoZSBhZGRpdGlvbiBvZiBgZ2FkZ2V0ZnNfZXZpY3RfaW5vZGVgLiBUaGlzIGltbWVkaWF0ZWx5IHRlbGxzIG1lIHdoYXQgYXJlYXMgYXJlIGJlaW5nIHRvdWNoZWQgYW5kIHdoYXQgdGhlIHBhdGNoIGlzIHRyeWluZyB0byBhY2hpZXZlLlxuXG5NeSBuZXh0IHN0ZXAgaXMgdG8gdHJhY2UgdGhlIEFQSSBlbnRyeSBwb2ludHMgdG8gc2VlIGhvdyB0aGVzZSBmdW5jdGlvbnMgZml0IGludG8gdGhlIGxhcmdlciBwaWN0dXJlLiBJIHN1c3BlY3QgdGhhdCBgZ2FkZ2V0ZnNfY3JlYXRlX2ZpbGVgIHdpbGwgYmUgY2FsbGVkIGZyb20gc29tZXdoZXJlIGxpa2UgYGdhZGdldGZzX2ZpbGxfc3VwZXJgLCBvciBzb21ldGhpbmcgc2ltaWxhciBkdXJpbmcgdGhlIGZpbGVzeXN0ZW0gaW5pdGlhbGl6YXRpb24uIEknbGwgbmVlZCB0byBjb25maXJtIHRoYXQgYnkgY2hlY2tpbmcgdGhlIHNvdXJjZSBjb2RlIG9mIGBkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmNgLCBsaWtlbHkgZXhhbWluaW5nIHRoZSBmdW5jdGlvbiBjYWxsZXJzIGFuZCBvdGhlciByZWxldmFudCBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDUzLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE0OjA5OjU4LjgzMDcxNTg4MloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY3OTUyMTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZ2FkZ2V0ZnNfY3JlYXRlX2ZpbGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xNTU0PXN0YXRpYyB2b2lkIGRlc3Ryb3lfZXBfZmlsZXMgKHN0cnVjdCBkZXZfZGF0YSAqZGV2KVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE1ODctXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjE1ODg6c3RhdGljIGludCBnYWRnZXRmc19jcmVhdGVfZmlsZSAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgY2hhciBjb25zdCAqbmFtZSxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTU4OS1cXHRcXHR2b2lkICpkYXRhLCBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zICpmb3BzKTtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xNTkxPXN0YXRpYyBpbnQgYWN0aXZhdGVfZXBfZmlsZXMgKHN0cnVjdCBkZXZfZGF0YSAqZGV2KVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE2MTctXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjE2MTg6XFx0XFx0ZXJyID0gZ2FkZ2V0ZnNfY3JlYXRlX2ZpbGUgKGRldi1cXHUwMDNlc2IsIGRhdGEtXFx1MDAzZW5hbWUsXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE2MTktXFx0XFx0XFx0XFx0ZGF0YSwgXFx1MDAyNmVwX2lvX29wZXJhdGlvbnMpO1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTE5NjM9Z2FkZ2V0ZnNfbWFrZV9pbm9kZSAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xOTgzLSAqL1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxOTg0OnN0YXRpYyBpbnQgZ2FkZ2V0ZnNfY3JlYXRlX2ZpbGUgKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGNoYXIgY29uc3QgKm5hbWUsXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE5ODUtXFx0XFx0dm9pZCAqZGF0YSwgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyAqZm9wcylcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0yMDIzPWdhZGdldGZzX2ZpbGxfc3VwZXIgKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBmc19jb250ZXh0ICpmYylcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0yMDY2LVxcdGRldi1cXHUwMDNlc2IgPSBzYjtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MjA2NzpcXHRyYyA9IGdhZGdldGZzX2NyZWF0ZV9maWxlKHNiLCBDSElQLCBkZXYsIFxcdTAwMjZlcDBfb3BlcmF0aW9ucyk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTIwNjgtXFx0aWYgKHJjKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE0OjA5OjU4Ljg3NzUxODM3OVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODYwODY0MDk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhlIGV4cGVydCwgdGhpbmtpbmcgdGhyb3VnaCB0aGlzOlxuXG4qKkRlbHZpbmcgaW50byB0aGUgR2FkZ2V0RlMgRmlsZSBDcmVhdGlvbiBQYXRoKipcblxuT2theSwgc28gSSdtIHRyeWluZyB0byB0cmFjZSB0aGUgY3JlYXRpb24gb2YgZmlsZXMgd2l0aGluIHRoZSBgZ2FkZ2V0ZnNgIGZpbGVzeXN0ZW0uICBNeSBpbW1lZGlhdGUgcG9pbnQgb2YgZW50cnkgc2VlbXMgdG8gYmUgYGdhZGdldGZzX2NyZWF0ZV9maWxlYCDigJMgdGhhdCdzIHRoZSBvYnZpb3VzIGZ1bmN0aW9uIGNhbGwsIGJ1dCB3aGVyZSBhcmUgd2UgKmNvbWluZyogZnJvbT8gVGhlIG5vdGVzIHNheSBpdCdzIGNhbGxlZCBmcm9tIGJvdGggYGFjdGl2YXRlX2VwX2ZpbGVzYCBhbmQgYGdhZGdldGZzX2ZpbGxfc3VwZXJgLiBgZ2FkZ2V0ZnNfZmlsbF9zdXBlcmAgaXMgbGlrZWx5IGR1cmluZyB0aGUgc3VwZXJibG9jayBzZXR1cCwgYnV0IGBhY3RpdmF0ZV9lcF9maWxlc2AgaXMgbW9yZSBpbnRyaWd1aW5nIGFuZCBsaWtlbHkgcmVzcG9uc2libGUgZm9yIGFjdHVhbGx5IG1ha2luZyB0aGUgZmlsZXMgdmlzaWJsZSB0byB0aGUgdXNlci5cblxuTm93LCBJIHNlZW0gdG8gdmFndWVseSByZWNhbGwgYGFjdGl2YXRlX2VwX2ZpbGVzYCBiZWluZyBjb25uZWN0ZWQgdG8gYGdhZGdldGZzX2JpbmRgLCBidXQgSSBzaG91bGQgdmVyaWZ5IHRoaXMgY29ubmVjdGlvbiB0byBtYWtlIHN1cmUgSSBhbSBvbiB0aGUgcmlnaHQgdHJhY2suIE15IG5leHQgc3RlcCBzaG91bGQgYmUgdG8gZG91YmxlLWNoZWNrIHRoZSBjYWxsIGNoYWluIGJ5IGludmVzdGlnYXRpbmcgdGhlIHNvdXJjZSBjb2RlIGZvciBgYWN0aXZhdGVfZXBfZmlsZXNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTg1LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTQ6MTA6MDIuNzM4Mzg1NDM4WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTA5NDYxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhY3RpdmF0ZV9lcF9maWxlc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTE1ODg9c3RhdGljIGludCBnYWRnZXRmc19jcmVhdGVfZmlsZSAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgY2hhciBjb25zdCAqbmFtZSxcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xNTkwLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxNTkxOnN0YXRpYyBpbnQgYWN0aXZhdGVfZXBfZmlsZXMgKHN0cnVjdCBkZXZfZGF0YSAqZGV2KVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xNTkyLXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xNjY2PXN0YXRpYyBpbnQgZ2FkZ2V0ZnNfYmluZChzdHJ1Y3QgdXNiX2dhZGdldCAqZ2FkZ2V0LFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE2ODktXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjE2OTA6XFx0aWYgKGFjdGl2YXRlX2VwX2ZpbGVzIChkZXYpIFxcdTAwM2MgMClcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTY5MS1cXHRcXHRnb3RvIGVub21lbTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTQ6MTA6MDIuNzgzNDg1ODE1WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5NzAzODgyMTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipVbmRlcnN0YW5kaW5nIHRoZSBHYWRnZXRmcyBEcml2ZXIgYW5kIFVzZXItU3BhY2UgSW50ZXJhY3Rpb24qKlxuXG5SaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgZ2FkZ2V0ZnNgIGltcGxlbWVudGF0aW9uLCBhbmQgZmlyc3QgdGhpbmcncyBmaXJzdDogYGdhZGdldGZzX2JpbmRgLiBUaGF0J3MgdGhlIGtleSBmdW5jdGlvbiByZXNwb25zaWJsZSBmb3IgYmluZGluZyB0aGUgZHJpdmVyLCBlc3NlbnRpYWxseSBpbml0aWFsaXppbmcgaXQgYW5kIGdldHRpbmcgaXQgcmVhZHkgdG8gaW50ZXJmYWNlIHdpdGggdGhlIGhhcmR3YXJlLiBUaGVuLCB3ZSBoYXZlIGBnYWRnZXRmc19maWxsX3N1cGVyYC4gU291bmRzIGxpa2UgdGhhdCdzIHRyaWdnZXJlZCBkdXJpbmcgdGhlIG1vdW50aW5nIHByb2Nlc3Mg4oCTIHRoYXQgbWFrZXMgcGVyZmVjdCBzZW5zZS4gSXQgd291bGQgaGFuZGxlIHRoZSBjcmVhdGlvbiBhbmQgaW5pdGlhbGl6YXRpb24gb2YgdGhlIHN1cGVyYmxvY2sgZm9yIHRoZSBmaWxlc3lzdGVtLiBOb3cgdGhlIGludGVyZXN0aW5nIHBhcnQsIGhvdyBkb2VzIHRoaXMgaW50ZXJhY3Qgd2l0aCB1c2VyIHNwYWNlPyBMZXQncyBzZWUuLi4gYWgsIGhlcmUgd2UgYXJlOiBgZXBfaW9fb3BlcmF0aW9uc2AgYW5kIGBlcDBfb3BlcmF0aW9uc2AuIFRoZXNlIG11c3QgYmUgdGhlIGZ1bmRhbWVudGFsIHN0cnVjdHVyZXMgdGhhdCBleHBvc2UgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gdXNlci1zcGFjZS4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZXNlIHN0cnVjdHVyZXMgdG8gdW5kZXJzdGFuZCBleGFjdGx5ICp3aGF0KiBvcGVyYXRpb25zIGFyZSBleHBvc2VkIOKAkyByZWFkLCB3cml0ZSwgY29udHJvbCwgZXRjLiwgYW5kIGhvdyB0aGV5J3JlIG1hcHBlZCB0byB0aGUgc3BlY2lmaWMgZ2FkZ2V0IGZ1bmN0aW9uYWxpdHkuIFRoaXMgaXMgd2hlcmUgdGhlIG1hZ2ljIGhhcHBlbnMsIGFuZCBob3cgdXNlcnNwYWNlIGFwcGxpY2F0aW9ucyBjYW4gYWN0dWFsbHkgKnVzZSogdGhlIHZpcnR1YWwgVVNCIGRldmljZS4gRXhjZWxsZW50LiBUaGlzIGdpdmVzIG1lIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgYW5hbHlzaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1NDQsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNDoxMDowNi43NTM4NzYxMjZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MzIyNTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImVwX2lvX29wZXJhdGlvbnNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz02Mzk9ZXBfd3JpdGVfaXRlcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqZnJvbSlcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy03MDEtLyogdXNlZCBhZnRlciBlbmRwb2ludCBjb25maWd1cmF0aW9uICovXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjcwMjpzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBlcF9pb19vcGVyYXRpb25zID0ge1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy03MDMtXFx0Lm93bmVyID1cXHRUSElTX01PRFVMRSxcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xNTkxPXN0YXRpYyBpbnQgYWN0aXZhdGVfZXBfZmlsZXMgKHN0cnVjdCBkZXZfZGF0YSAqZGV2KVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE2MTgtXFx0XFx0ZXJyID0gZ2FkZ2V0ZnNfY3JlYXRlX2ZpbGUgKGRldi1cXHUwMDNlc2IsIGRhdGEtXFx1MDAzZW5hbWUsXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjE2MTk6XFx0XFx0XFx0XFx0ZGF0YSwgXFx1MDAyNmVwX2lvX29wZXJhdGlvbnMpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xNjIwLVxcdFxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MjAwOD1zdGF0aWMgdm9pZCBnYWRnZXRmc19ldmljdF9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTIwMTEtXFx0Y2xlYXJfaW5vZGUoaW5vZGUpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoyMDEyOlxcdGlmIChpbm9kZS1cXHUwMDNlaV9wcml2YXRlIFxcdTAwMjZcXHUwMDI2IGlub2RlLVxcdTAwM2VpX2ZvcCA9PSBcXHUwMDI2ZXBfaW9fb3BlcmF0aW9ucylcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMjAxMy1cXHRcXHRwdXRfZXAoaW5vZGUtXFx1MDAzZWlfcHJpdmF0ZSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE0OjEwOjA2Ljc5ODIxMzc0M1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjM5MjEwNTA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhlIGV4cGVydDpcblxuKipEZWx2aW5nIGludG8gRW5kcG9pbnQgT3BlcmF0aW9ucyoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCB0aGUgbG93LWxldmVsIEkvTyBvcGVyYXRpb25zIGFuZCBJJ20gbG9va2luZyBhdCBgZXBfaW9fb3BlcmF0aW9uc2AuIEl0IHNlZW1zIGxpa2Ugd2UgaGF2ZSB0aGUgc3RhbmRhcmQgc3VpdGUgaW4gdGhlcmU6IGBlcF93cml0ZV9pdGVyYCwgYGVwX3JlYWRfaXRlcmAgZm9yIGl0ZXJhdGl2ZSBJL08sIHRoZW4gdGhlIHVzdWFsIHN1c3BlY3RzLCBgZXBfb3BlbmAsIGBlcF9yZWxlYXNlYCwgYGVwX2lvY3RsYCwgYGVwX3BvbGxgLCBhbmQgZmluYWxseSB0aGUgYXN5bmNocm9ub3VzIG9wZXJhdGlvbnMgYGVwX2Fpb19yZWFkYCBhbmQgYGVwX2Fpb193cml0ZWAuIFRoYXQncyBhIHNvbGlkIGZvdW5kYXRpb24uIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgdGllcyBpbnRvIHRoZSBzcGVjaWZpY3Mgb2YgdmFyaW91cyBlbmRwb2ludHMuIExldCBtZSBzaGlmdCBteSBmb2N1cyB0byBgZXAwX29wZXJhdGlvbnNgIHRvIHN0YXJ0IGV4cGxvcmluZyBob3cgdGhpcyBnZW5lcmFsIHN0cnVjdHVyZSBpcyBpbnN0YW50aWF0ZWQgaW4gYSBjb25jcmV0ZSBleGFtcGxlLCBpbiB0aGlzIGNhc2UsIHRoZSBmaXJzdCBlbmRwb2ludC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjI5MCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE0OjEwOjExLjAzNzQyNjc2OVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ2NzM5NTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZXAwX29wZXJhdGlvbnNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xOTEyPWdhZGdldF9kZXZfb3BlbiAoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZkKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE5MjgtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjE5Mjk6c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZXAwX29wZXJhdGlvbnMgPSB7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE5MzAtXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MjAyMz1nYWRnZXRmc19maWxsX3N1cGVyIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMjA2Ni1cXHRkZXYtXFx1MDAzZXNiID0gc2I7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjIwNjc6XFx0cmMgPSBnYWRnZXRmc19jcmVhdGVfZmlsZShzYiwgQ0hJUCwgZGV2LCBcXHUwMDI2ZXAwX29wZXJhdGlvbnMpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0yMDY4LVxcdGlmIChyYykge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNDoxMDoxMS4wODIxMDU2MTZaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTU3MzM5NTYzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEZWJ1Z2dpbmcgYSBVU0IgR2FkZ2V0IEVuZHBvaW50IElzc3VlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBidWcgcmVwb3J0IHJlZ2FyZGluZyBVU0IgZ2FkZ2V0IGVuZHBvaW50cywgYW5kIGl0IHNlZW1zIGxpa2UgdGhlIGNvcmUgb2YgdGhlIHByb2JsZW0gbGllcyB3aXRoIGhvdyBlbmRwb2ludHMgYXJlIG1hbmFnZWQgYW5kIHJlbGVhc2VkLiBTcGVjaWZpY2FsbHksIGl0IGxvb2tzIGxpa2UgYHB1dF9lcGAgaXMgYmVpbmcgY2FsbGVkIHByZW1hdHVyZWx5IGluIGBkZXN0cm95X2VwX2ZpbGVzYCwgcG90ZW50aWFsbHkgd2hpbGUgdGhlIGlub2RlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZW5kcG9pbnQgaXMgc3RpbGwgYWN0aXZlLiBUaGUgcHJvcG9zZWQgZml4LCB3aGljaCBzZWVtcyByZWFzb25hYmxlLCBpbnZvbHZlcyBtb3ZpbmcgdGhlIGBwdXRfZXBgIGNhbGwgdG8gYGdhZGdldGZzX2V2aWN0X2lub2RlYC4gVGhpcyBtYWtlcyBzZW5zZTsgaXQgZW5zdXJlcyB0aGUgZW5kcG9pbnQgaXMgcmVsZWFzZWQgd2hlbiB0aGUgaW5vZGUgaXMgdHJ1bHkgYmVpbmcgZXZpY3RlZC5cblxuTXkgaW1tZWRpYXRlIGZvY3VzLCB0aGVyZWZvcmUsIG5lZWRzIHRvIGJlIG9uIHVuZGVyc3RhbmRpbmcgdGhlIGxpZmVjeWNsZSBhbmQgZGVwZW5kZW5jaWVzIG9mIHRoZXNlIGNvbXBvbmVudHMuIEknbGwgbmVlZCB0byBzY3J1dGluaXplIGhvdyBgZ2FkZ2V0ZnNfZmlsbF9zdXBlcmAsIGBnYWRnZXRmc19iaW5kYCwgYGdhZGdldGZzX2V2aWN0X2lub2RlYCwgYGdhZGdldGZzX2NyZWF0ZV9maWxlYCwgYGRlc3Ryb3lfZXBfZmlsZXNgLCBhbmQgYGFjdGl2YXRlX2VwX2ZpbGVzYCBpbnRlcmFjdC4gVGhlc2UgZnVuY3Rpb25zIGFyZSBrZXkgdG8gZmlsZXN5c3RlbSBpbml0aWFsaXphdGlvbiwgYmluZGluZyBlbmRwb2ludHMsIGlub2RlIG1hbmFnZW1lbnQsIGZpbGUgY3JlYXRpb24sIGVuZHBvaW50IGZpbGUgZGVzdHJ1Y3Rpb24sIGFuZCBlbmRwb2ludCBhY3RpdmF0aW9uLCByZXNwZWN0aXZlbHkuXG5cbkJleW9uZCB0aGUgY29yZSBmaWxlc3lzdGVtIG9wZXJhdGlvbnMsIEknbGwgYWxzbyBuZWVkIHRvIGNoZWNrIHRoZSBiZWhhdmlvciBvZiB0aGUgZW5kcG9pbnQtc3BlY2lmaWMgb3BlcmF0aW9ucywgZXNwZWNpYWxseSB0aGUgb3Blbi9yZWxlYXNlIGN5Y2xlczogYGVwX29wZW5gLCBgZXBfcmVsZWFzZWAsIGBnYWRnZXRfZGV2X29wZW5gLCBhbmQgYGdhZGdldF9kZXZfcmVsZWFzZWAuIEl0J3MgYSBnb29kIGZpcnN0IHN0ZXAgdG8ganVzdCBkb3VibGUtY2hlY2sgdGhlIG5hbWluZyBjb252ZW50aW9ucyBhbmQgbG9naWMgd2l0aGluIHRoZXNlIHJvdXRpbmVzLiBUaGV5IGFyZSBjcml0aWNhbCB0byB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgYnVnIGNvdWxkIGFyaXNlIGluIHRoZSBmaXJzdCBwbGFjZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjgzMiwiT3V0cHV0VG9rZW5zIjo1MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNDoxMDoxNi42NTU1MDQyMjJaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzOTU3MjM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImVwX29wZW58ZXBfcmVsZWFzZXxnYWRnZXRfZGV2X29wZW58Z2FkZ2V0X2Rldl9yZWxlYXNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9ODE9TU9EVUxFX0xJQ0VOU0UgKFxcXCJHUExcXFwiKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtODItXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjgzOnN0YXRpYyBpbnQgZXBfb3BlbihzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGZpbGUgKik7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTg0LVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTM4MD1zdGF0aWMgaW50XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjM4MTplcF9yZWxlYXNlIChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmQpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTM4Mi17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9NzAyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGVwX2lvX29wZXJhdGlvbnMgPSB7XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtNzA0LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzo3MDU6XFx0Lm9wZW4gPVxcdFxcdGVwX29wZW4sXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjcwNjpcXHQucmVsZWFzZSA9XFx0ZXBfcmVsZWFzZSxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtNzA3LVxcdC51bmxvY2tlZF9pb2N0bCA9IGVwX2lvY3RsLFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTgxNz1zdGF0aWMgaW50XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjgxODplcF9vcGVuIChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmQpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTgxOS17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MTkxMT1zdGF0aWMgaW50XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjE5MTI6Z2FkZ2V0X2Rldl9vcGVuIChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmQpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE5MTMte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTE5Mjk9c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZXAwX29wZXJhdGlvbnMgPSB7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE5MzAtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjE5MzE6XFx0Lm9wZW4gPVxcdFxcdGdhZGdldF9kZXZfb3BlbixcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTkzMi1cXHQucmVhZCA9XFx0XFx0ZXAwX3JlYWQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE0OjEwOjE2LjY5OTQ2ODE5OVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjg3NTcyNDU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGNyYWZ0ZWQgd2l0aCB0aGUgZXhwZWN0YXRpb24gdGhhdCBJJ20gZGlzY3Vzc2luZyB0aGlzIHdpdGggYSBmZWxsb3cgZXhwZXJ0OlxuXG4qKkludGVybmFsIERpYWdub3N0aWNzOiBSZWxlYXNlIFZlcnNpb24gdnMuIE9wZXJhdGlvbmFsIENvbXBvbmVudHMqKlxuXG5BbHJpZ2h0LCBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgY29kZSBhbmQgbXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gY29tcGFyZSB0aGUgYGVwX3JlbGVhc2VgIGFuZCBgZ2FkZ2V0X2Rldl9yZWxlYXNlYCB2YXJpYWJsZXMuIEknbSBleHBlY3RpbmcgYGdhZGdldF9kZXZfcmVsZWFzZWAgdG8gYmUgYXZhaWxhYmxlLiBIdWgsIGl0IGxvb2tzIGxpa2UgdGhhdCBwYXJ0aWN1bGFyIHZhcmlhYmxlIGlzbid0IGRlZmluZWQgaGVyZS4gVGhhdCdzIHVuZXhwZWN0ZWQuIEFscmlnaHQsIGJhY2sgdG8gYmFzaWNzLiBHaXZlbiB0aGUgbWlzc2luZyByZWxlYXNlIHZhcmlhYmxlLCBsZXQncyBkb3VibGUtY2hlY2sgdGhlIGBlcDBfb3BlcmF0aW9uc2AuIFdlIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIGFuIGFsdGVybmF0ZSBvYmplY3Qgb3IgbWV0aG9kIGhhcyBiZWVuIHVzZWQuIFRoZSByZWxlYXNlIHZhcmlhYmxlIHdvdWxkIGJlIHVzZWQgZm9yIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBjbGVhbnVwLiBXZSBtdXN0IGVuc3VyZSB0aGF0IHRoZSBvYmplY3QgdGhhdCBpcyBiZWluZyB1dGlsaXplZCBpcyBoYW5kbGVkIGNvcnJlY3RseS4gTGV0J3Mgc3RhcnQgd2l0aCB0aGF0IGFuZCBzZWUgd2hlcmUgd2UgYXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3OTg0LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTQ6MTA6MjAuMzg3MDQ0NDI3WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1MDU0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTkyNSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTkyNTpcXHRcXHRzcGluX3VubG9ja19pcnEoXFx1MDAyNmRldi1cXHUwMDNlbG9jayk7XFxuMTkyNjpcXHRcXHRyZXR1cm4gdmFsdWU7XFxuMTkyNzpcXHR9XFxuMTkyODpcXHRcXG4xOTI5OlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGVwMF9vcGVyYXRpb25zID0ge1xcbjE5MzA6XFx0XFxuMTkzMTpcXHRcXHQub3BlbiA9XFx0XFx0Z2FkZ2V0X2Rldl9vcGVuLFxcbjE5MzI6XFx0XFx0LnJlYWQgPVxcdFxcdGVwMF9yZWFkLFxcbjE5MzM6XFx0XFx0LndyaXRlID1cXHRkZXZfY29uZmlnLFxcbjE5MzQ6XFx0XFx0LmZhc3luYyA9XFx0ZXAwX2Zhc3luYyxcXG4xOTM1OlxcdFxcdC5wb2xsID1cXHRcXHRlcDBfcG9sbCxcXG4xOTM2OlxcdFxcdC51bmxvY2tlZF9pb2N0bCA9IGdhZGdldF9kZXZfaW9jdGwsXFxuMTkzNzpcXHRcXHQucmVsZWFzZSA9XFx0ZGV2X3JlbGVhc2UsXFxuMTkzODpcXHR9O1xcbjE5Mzk6XFx0XFxuMTk0MDpcXHQvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xcbjE5NDE6XFx0XFxuMTk0MjpcXHQvKiBGSUxFU1lTVEVNIEFORCBTVVBFUkJMT0NLIE9QRVJBVElPTlNcXG4xOTQzOlxcdCAqXFxuMTk0NDpcXHQgKiBNb3VudGluZyB0aGUgZmlsZXN5c3RlbSBjcmVhdGVzIGEgY29udHJvbGxlciBmaWxlLCB1c2VkIGZpcnN0IGZvclxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNDoxMDoyMC4zODcyOTcxNTdaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE3OTg5OTQzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJlbGVhc2UgQ3ljbGUqKlxuXG5Pa2F5LCBoZXJlIHdlIGdvLCBpdCdzIHRoZSBgZGV2X3JlbGVhc2VgIGN5Y2xlIGFnYWluLiBSaWdodCwgc28gdGhhdCBtZWFucyB0aGUgdXN1YWwgc3VzcGVjdHMgYXJlIGxpbmVkIHVwOiBgZGV2X3JlbGVhc2VgLCBgZ2FkZ2V0X2Rldl9vcGVuYCwgYGVwX29wZW5gLCBgZXBfcmVsZWFzZWAsIGZvbGxvd2VkIGJ5IGBnYWRnZXRmc19ldmljdF9pbm9kZWAsIGBnYWRnZXRmc19jcmVhdGVfZmlsZWAsIGBkZXN0cm95X2VwX2ZpbGVzYCwgYW5kIHRoZW4sIGZpbmFsbHksIGBhY3RpdmF0ZV9lcF9maWxlc2AuIEhvbGQgb24gYSBtaW51dGUuLi4gd2Fzbid0IGBnYWRnZXRmc19ldmljdF9pbm9kZWAgYSBzdGF0aWMgZnVuY3Rpb24/IEkgc2VlbSB0byByZW1lbWJlciB0aGF0IGJlaW5nIHRoZSBjYXNlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkndmUgZ290IHRoaXMgcmlnaHQuIEJlc3QgdG8gZG91YmxlLWNoZWNrIHRoZSBpbXBsZW1lbnRhdGlvbiBmb3IgYGdhZGdldGZzX2V2aWN0X2lub2RlYCwgaXQgc2hvdWxkIGJlIGRlZmluZWQgaW4gYGRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuY2AuIEdvdHRhIGdvIHZlcmlmeSBteSBhc3N1bXB0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NTMyLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTQ6MTA6MjQuNTY3MTk5Njc2WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTczNzAzOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJnYWRnZXRmc19ldmljdF9pbm9kZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTE5ODQ9c3RhdGljIGludCBnYWRnZXRmc19jcmVhdGVfZmlsZSAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgY2hhciBjb25zdCAqbmFtZSxcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0yMDA3LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoyMDA4OnN0YXRpYyB2b2lkIGdhZGdldGZzX2V2aWN0X2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTIwMDkte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTIwMTY9c3RhdGljIGNvbnN0IHN0cnVjdCBzdXBlcl9vcGVyYXRpb25zIGdhZGdldF9mc19vcGVyYXRpb25zID0ge1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTIwMTgtXFx0LmRyb3BfaW5vZGUgPVxcdGlub2RlX2p1c3RfZHJvcCxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MjAxOTpcXHQuZXZpY3RfaW5vZGUgPVxcdGdhZGdldGZzX2V2aWN0X2lub2RlLFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0yMDIwLX07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE0OjEwOjI0LjYxMjk0MTUzM1oiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzE4ODE3Mzg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJlZmxlY3Rpbmcgb24gRnVuY3Rpb24gVmlzaWJpbGl0eSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIG92ZXIgdGhpcyBjb2RlIGFuZCBub3RpY2luZyBzb21ldGhpbmcgYWJvdXQgaG93IHRoZXNlIGZ1bmN0aW9ucyBhcmUgZGVjbGFyZWQuIGBnYWRnZXRmc19ldmljdF9pbm9kZWAsIGBnYWRnZXRmc19jcmVhdGVfZmlsZWAsIGBkZXN0cm95X2VwX2ZpbGVzYCwgYGFjdGl2YXRlX2VwX2ZpbGVzYCwgYGVwX29wZW5gLCBgZXBfcmVsZWFzZWAsIGBnYWRnZXRfZGV2X29wZW5gLCBhbmQgYGRldl9yZWxlYXNlYC4uLiB0aGV5J3JlIGFsbCBkZWNsYXJlZCBhcyBgc3RhdGljYC4gUmlnaHQsIHJpZ2h0LiBUaGF0IG1lYW5zIHRoZXkncmUgb25seSB2aXNpYmxlIHdpdGhpbiB0aGlzIHBhcnRpY3VsYXIgY29tcGlsYXRpb24gdW5pdC4gSG1tLi4uXG5cbkJ1dCB0aGVuIEkgcmVtZW1iZXIgdGhlIGluc3RydWN0aW9ucy4gVGhlIHByZWZlcmVuY2UgaXMgZm9yIG5vbi1zdGF0aWMgZW50cnkgcG9pbnRzIHdoZW5ldmVyIHBvc3NpYmxlLCBiZWNhdXNlIHRob3NlIHdpbGwgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGFmdGVyIGNvbXBpbGF0aW9uLiBUaGUgY29tcGlsZXIgd2lsbCBpbmxpbmUgc3RhdGljIGZ1bmN0aW9ucywgc28gdGhlcmUgaXNuJ3QgYSB1bmlxdWUgYWRkcmVzcyB0byByZWZlcmVuY2UuIE1ha2VzIHNlbnNlIGZvciBtYWludGFpbmFiaWxpdHksIGRlYnVnZ2luZywgYW5kIHBvdGVudGlhbCBmdXR1cmUgdXNlLlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUgaWYgdGhlcmUgYXJlIGFueSBub24tc3RhdGljIGFsdGVybmF0aXZlcyBpbiBgZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jYCB0aGF0IGNvdWxkIHNlcnZlIGFzIHRoZXNlIEFQSSBlbnRyeSBwb2ludHMuIFRpbWUgdG8gZGlnIGluIGFuZCByZS1ldmFsdWF0ZSB0aGlzIGRlc2lnbi5cblxuXG4iLCJJbnB1dFRva2VucyI6OTEyMywiT3V0cHV0VG9rZW5zIjo1NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNDoxMDoyOC4zMzE3NjMwNloiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ2MDk0NzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXlthLXpBLVpfXVthLXpBLVowLTlfXSpcXFxccypcXFxcKFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTc3PXN0YXRpYyBjb25zdCBjaGFyIHNob3J0bmFtZSBbXSA9IFxcXCJnYWRnZXRmc1xcXCI7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTc4LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzo3OTpNT0RVTEVfREVTQ1JJUFRJT04gKERSSVZFUl9ERVNDKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6ODA6TU9EVUxFX0FVVEhPUiAoXFxcIkRhdmlkIEJyb3duZWxsXFxcIik7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjgxOk1PRFVMRV9MSUNFTlNFIChcXFwiR1BMXFxcIik7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTgyLVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTI5NT1zdGF0aWMgaW50XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjI5NjpnZXRfcmVhZHlfZXAgKHVuc2lnbmVkIGZfZmxhZ3MsIHN0cnVjdCBlcF9kYXRhICplcGRhdGEsIGJvb2wgaXNfd3JpdGUpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTI5Ny17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MzM1PXN0YXRpYyBzc2l6ZV90XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjMzNjplcF9pbyAoc3RydWN0IGVwX2RhdGEgKmVwZGF0YSwgdm9pZCAqYnVmLCB1bnNpZ25lZCBsZW4pXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTMzNy17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MzgwPXN0YXRpYyBpbnRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MzgxOmVwX3JlbGVhc2UgKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmZClcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMzgyLXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz01Nzk9c3RhdGljIHNzaXplX3RcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6NTgwOmVwX3JlYWRfaXRlcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqdG8pXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTU4MS17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9NjM4PXN0YXRpYyBzc2l6ZV90XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjYzOTplcF93cml0ZV9pdGVyKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy02NDAte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTcyNT1zdGF0aWMgc3NpemVfdFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzo3MjY6ZXBfY29uZmlnIChzdHJ1Y3QgZXBfZGF0YSAqZGF0YSwgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgbGVuKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy03Mjcte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTgxNz1zdGF0aWMgaW50XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjgxODplcF9vcGVuIChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmQpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTgxOS17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9OTEyPXN0YXRpYyBzc2l6ZV90XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjkxMzplcDBfcmVhZCAoc3RydWN0IGZpbGUgKmZkLCBjaGFyIF9fdXNlciAqYnVmLCBzaXplX3QgbGVuLCBsb2ZmX3QgKnB0cilcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtOTE0LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xMDgyPXN0YXRpYyBzdHJ1Y3QgdXNiX2dhZGdldGZzX2V2ZW50ICpcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTA4MzpuZXh0X2V2ZW50IChzdHJ1Y3QgZGV2X2RhdGEgKmRldiwgZW51bSB1c2JfZ2FkZ2V0ZnNfZXZlbnRfdHlwZSB0eXBlKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xMDg0LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xMTI0PXN0YXRpYyBzc2l6ZV90XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjExMjU6ZXAwX3dyaXRlIChzdHJ1Y3QgZmlsZSAqZmQsIGNvbnN0IGNoYXIgX191c2VyICpidWYsIHNpemVfdCBsZW4sIGxvZmZfdCAqcHRyKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xMTI2LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xMTc5PXN0YXRpYyBpbnRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTE4MDplcDBfZmFzeW5jIChpbnQgZiwgc3RydWN0IGZpbGUgKmZkLCBpbnQgb24pXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTExODEte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTExOTA9c3RhdGljIGludFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxMTkxOmRldl9yZWxlYXNlIChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmQpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTExOTIte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTEyMTk9c3RhdGljIF9fcG9sbF90XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjEyMjA6ZXAwX3BvbGwgKHN0cnVjdCBmaWxlICpmZCwgcG9sbF90YWJsZSAqd2FpdClcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTIyMS17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MTMwNj1zdGF0aWMgaW50XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjEzMDc6Y29uZmlnX2J1ZiAoc3RydWN0IGRldl9kYXRhICpkZXYsIHU4IHR5cGUsIHVuc2lnbmVkIGluZGV4KVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xMzA4LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xMzMyPXN0YXRpYyBpbnRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTMzMzpnYWRnZXRmc19zZXR1cCAoc3RydWN0IHVzYl9nYWRnZXQgKmdhZGdldCwgY29uc3Qgc3RydWN0IHVzYl9jdHJscmVxdWVzdCAqY3RybClcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTMzNC17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MTYzNz1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxNjM4OmdhZGdldGZzX3VuYmluZCAoc3RydWN0IHVzYl9nYWRnZXQgKmdhZGdldClcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTYzOS17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MTcwNT1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxNzA2OmdhZGdldGZzX2Rpc2Nvbm5lY3QgKHN0cnVjdCB1c2JfZ2FkZ2V0ICpnYWRnZXQpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE3MDcte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTE3MjM9c3RhdGljIHZvaWRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTcyNDpnYWRnZXRmc19zdXNwZW5kIChzdHJ1Y3QgdXNiX2dhZGdldCAqZ2FkZ2V0KVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xNzI1LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xNzk4PXN0YXRpYyBzc2l6ZV90XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjE3OTk6ZGV2X2NvbmZpZyAoc3RydWN0IGZpbGUgKmZkLCBjb25zdCBjaGFyIF9fdXNlciAqYnVmLCBzaXplX3QgbGVuLCBsb2ZmX3QgKnB0cilcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTgwMC17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MTkxMT1zdGF0aWMgaW50XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjE5MTI6Z2FkZ2V0X2Rldl9vcGVuIChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmQpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE5MTMte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTE5NTU9c3RhdGljIHVuc2lnbmVkIGRlZmF1bHRfcGVybSA9IFNfSVJVU1IgfCBTX0lXVVNSO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xOTU2LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxOTU3Om1vZHVsZV9wYXJhbSAoZGVmYXVsdF91aWQsIHVpbnQsIDA2NDQpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxOTU4Om1vZHVsZV9wYXJhbSAoZGVmYXVsdF9naWQsIHVpbnQsIDA2NDQpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxOTU5Om1vZHVsZV9wYXJhbSAoZGVmYXVsdF9wZXJtLCB1aW50LCAwNjQ0KTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTk2MC1cXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xOTYyPXN0YXRpYyBzdHJ1Y3QgaW5vZGUgKlxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxOTYzOmdhZGdldGZzX21ha2VfaW5vZGUgKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE5NjQtXFx0XFx0dm9pZCAqZGF0YSwgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyAqZm9wcyxcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0yMDIyPXN0YXRpYyBpbnRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MjAyMzpnYWRnZXRmc19maWxsX3N1cGVyIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTIwMjQte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTIxMDY9c3RhdGljIHZvaWRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MjEwNzpnYWRnZXRmc19raWxsX3NiIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0yMTA4LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0yMTIyPXN0YXRpYyBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSBnYWRnZXRmc190eXBlID0ge1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTIxMjctfTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MjEyODpNT0RVTEVfQUxJQVNfRlMoXFxcImdhZGdldGZzXFxcIik7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTIxMjktXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MjEzMj1zdGF0aWMgaW50IF9faW5pdCBnYWRnZXRmc19pbml0ICh2b2lkKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTIxNDEtfVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoyMTQyOm1vZHVsZV9pbml0IChnYWRnZXRmc19pbml0KTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMjE0My1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MjE0ND1zdGF0aWMgdm9pZCBfX2V4aXQgZ2FkZ2V0ZnNfY2xlYW51cCAodm9pZClcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0yMTQ4LX1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MjE0OTptb2R1bGVfZXhpdCAoZ2FkZ2V0ZnNfY2xlYW51cCk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTIxNTAtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE0OjEwOjI4LjM3NjM3ODQ2N1oiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2OTY1NjI0OTkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVVNCIEdhZGdldCBGaWxlIFN5c3RlbSBBUEkqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEl0IHNlZW1zIEkgbmVlZCB0byBpZGVudGlmeSB0aGUga2V5IEFQSSBlbnRyeSBwb2ludHMgd2l0aGluIHRoaXMgZ2FkZ2V0ZnMgaW1wbGVtZW50YXRpb24uIE15IGluaXRpYWwgYXNzdW1wdGlvbiB0aGF0IHRoZSBvbmx5IG5vbi1zdGF0aWMgZnVuY3Rpb25zIHdlcmUgYGdhZGdldGZzX2luaXRgIGFuZCBgZ2FkZ2V0ZnNfY2xlYW51cGAgd2FzIGluY29ycmVjdC4gSSdtIHNlZWluZyBhIHdob2xlIHNsZXcgb2Ygc2VlbWluZ2x5IHN0YXRpYyBmdW5jdGlvbnM6IGBnYWRnZXRmc19maWxsX3N1cGVyYCwgYGdhZGdldGZzX21ha2VfaW5vZGVgLCBgZ2FkZ2V0X2Rldl9vcGVuYCwgYGRldl9jb25maWdgLCBgZ2FkZ2V0ZnNfc3VzcGVuZGAsIGBnYWRnZXRmc19kaXNjb25uZWN0YCwgYGdhZGdldGZzX3VuYmluZGAsIGBnYWRnZXRmc19zZXR1cGAsIGBlcDBfcG9sbGAsIGBkZXZfcmVsZWFzZWAsIGBlcDBfZmFzeW5jYCwgYGVwMF93cml0ZWAsIGBlcDBfcmVhZGAsIGBlcF9vcGVuYCwgYGVwX2NvbmZpZ2AsIGBlcF93cml0ZV9pdGVyYCwgYGVwX3JlYWRfaXRlcmAsIGBlcF9yZWxlYXNlYCwgYGVwX2lvYCwgYW5kIGBnZXRfcmVhZHlfZXBgLlxuXG5UaGUgaW1wb3J0YW50IGRpc3RpbmN0aW9uIGhlcmUgaXMgYWJvdXQgaG93IHRoZXNlIHN0YXRpYyBmdW5jdGlvbnMgYXJlIHVzZWQuIFRoZSBpbnN0cnVjdGlvbnMgYXJlIGNsZWFyOiBwcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMuIEFsdGhvdWdoIHRoZXkgYXJlIGRlZmluZWQgYXMgc3RhdGljLCB0aG9zZSB0aGF0IGFyZSByZWdpc3RlcmVkIGluIHN0cnVjdHVyZXMgbGlrZSBgZmlsZV9vcGVyYXRpb25zYCBhbmQgYHN1cGVyX29wZXJhdGlvbnNgIGFyZSBlc3NlbnRpYWxseSBBUEkgZW50cnkgcG9pbnRzIGJlY2F1c2UgdGhlaXIgYWRkcmVzc2VzIGFyZSB0YWtlbi4gVGhpcyBtZWFucyB0aGUgY29tcGlsZXIgd29uJ3QgaW5saW5lIHRoZW0sIGFuZCB0aGV5J2xsIGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3Nlcy5cblxuVGhlcmVmb3JlLCB0aGUgb25lcyBJIG5lZWQgdG8gZm9jdXMgb24sIGFuZCB0aGF0IGxpa2VseSByZXByZXNlbnQgdGhlIHJlYWwgQVBJIGVudHJ5IHBvaW50cyBvZiBpbnRlcmVzdCwgYXJlOlxuXG4qICAgYGdhZGdldGZzX2ZpbGxfc3VwZXJgXG4qICAgYGdhZGdldGZzX2V2aWN0X2lub2RlYFxuKiAgIGBnYWRnZXRfZGV2X29wZW5gXG4qICAgYGRldl9yZWxlYXNlYFxuKiAgIGBlcF9vcGVuYFxuKiAgIGBlcF9yZWxlYXNlYFxuXG5Ob3csIGxldCdzIGRvdWJsZS1jaGVjayB0aGUgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIEkga25vdyBgVVNCX0dBREdFVEZTYCBkZXBlbmRzIG9uIGBVU0JfR0FER0VUYC4gQXJlIHRoZXJlIGFueSBvdGhlciByZXF1aXJlZCBjb25maWd1cmF0aW9ucyB0aGF0IG5lZWQgbXkgYXR0ZW50aW9uPyBJIG5lZWQgdG8gYmUgc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjA1OCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNDoxMDozNS4zNDIwMDY4NjlaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzMzEyODY3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlcGVuZHMgb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz02NT1jb25maWcgVVNCX1pFUk9fSE5QVEVTVFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy02Ni1cXHRib29sIFxcXCJITlAgVGVzdCBEZXZpY2VcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjY3OlxcdGRlcGVuZHMgb24gVVNCX1pFUk8gXFx1MDAyNlxcdTAwMjYgVVNCX09UR1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy02OC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9NzU9Y29uZmlnIFVTQl9BVURJT1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy03Ni1cXHR0cmlzdGF0ZSBcXFwiQXVkaW8gR2FkZ2V0XFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzo3NzpcXHRkZXBlbmRzIG9uIFNORFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy03OC1cXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTEwMD1jb25maWcgR0FER0VUX1VBQzFcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMTAxLVxcdGJvb2wgXFxcIlVBQyAxLjBcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjEwMjpcXHRkZXBlbmRzIG9uIFVTQl9BVURJT1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0xMDMtXFx0aGVscFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTEwNz1jb25maWcgR0FER0VUX1VBQzFfTEVHQUNZXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTEwOC1cXHRib29sIFxcXCJVQUMgMS4wIChMZWdhY3kpXFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzoxMDk6XFx0ZGVwZW5kcyBvbiBHQURHRVRfVUFDMVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0xMTAtXFx0aGVscFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTExNT1jb25maWcgVVNCX0VUSFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0xMTYtXFx0dHJpc3RhdGUgXFxcIkV0aGVybmV0IEdhZGdldCAod2l0aCBDREMgRXRoZXJuZXQgc3VwcG9ydClcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjExNzpcXHRkZXBlbmRzIG9uIE5FVFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0xMTgtXFx0c2VsZWN0IFVTQl9MSUJDT01QT1NJVEVcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0xNDAtXFx0ICBXaXRoaW4gdGhlIFVTQiBkZXZpY2UsIHRoaXMgZ2FkZ2V0IGRyaXZlciBleHBvc2VzIGEgbmV0d29yayBkZXZpY2VcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6MTQxOlxcdCAgXFxcInVzYlhcXFwiLCB3aGVyZSBYIGRlcGVuZHMgb24gd2hhdCBvdGhlciBuZXR3b3JraW5nIGRldmljZXMgeW91IGhhdmUuXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTE0Mi1cXHQgIFRyZWF0IGl0IGxpa2UgYSB0d28tbm9kZSBFdGhlcm5ldCBsaW5rOiAgaG9zdCwgYW5kIGdhZGdldC5cXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz0xNTM9Y29uZmlnIFVTQl9FVEhfUk5ESVNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMTU0LVxcdGJvb2wgXFxcIlJORElTIHN1cHBvcnRcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjE1NTpcXHRkZXBlbmRzIG9uIFVTQl9FVEhcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMTU2LVxcdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9MTczPWNvbmZpZyBVU0JfRVRIX0VFTVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0xNzQtXFx0Ym9vbCBcXFwiRXRoZXJuZXQgRW11bGF0aW9uIE1vZGVsIChFRU0pIHN1cHBvcnRcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjE3NTpcXHRkZXBlbmRzIG9uIFVTQl9FVEhcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMTc2LVxcdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9MTkwPWNvbmZpZyBVU0JfR19OQ01cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMTkxLVxcdHRyaXN0YXRlIFxcXCJOZXR3b3JrIENvbnRyb2wgTW9kZWwgKE5DTSkgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6MTkyOlxcdGRlcGVuZHMgb24gTkVUXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTE5My1cXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTIzNz1jb25maWcgVVNCX0ZVTkNUSU9ORlNfRVRIXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTIzOC1cXHRib29sIFxcXCJJbmNsdWRlIGNvbmZpZ3VyYXRpb24gd2l0aCBDREMgRUNNIChFdGhlcm5ldClcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjIzOTpcXHRkZXBlbmRzIG9uIFVTQl9GVU5DVElPTkZTIFxcdTAwMjZcXHUwMDI2IE5FVFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yNDAtXFx0c2VsZWN0IFVTQl9VX0VUSEVSXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9MjQ3PWNvbmZpZyBVU0JfRlVOQ1RJT05GU19STkRJU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yNDgtXFx0Ym9vbCBcXFwiSW5jbHVkZSBjb25maWd1cmF0aW9uIHdpdGggUk5ESVMgKEV0aGVybmV0KVxcXCJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6MjQ5OlxcdGRlcGVuZHMgb24gVVNCX0ZVTkNUSU9ORlMgXFx1MDAyNlxcdTAwMjYgTkVUXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTI1MC1cXHRzZWxlY3QgVVNCX1VfRVRIRVJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz0yNTU9Y29uZmlnIFVTQl9GVU5DVElPTkZTX0dFTkVSSUNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMjU2LVxcdGJvb2wgXFxcIkluY2x1ZGUgJ3B1cmUnIGNvbmZpZ3VyYXRpb25cXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjI1NzpcXHRkZXBlbmRzIG9uIFVTQl9GVU5DVElPTkZTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTI1OC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9MjYyPWNvbmZpZyBVU0JfTUFTU19TVE9SQUdFXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTI2My1cXHR0cmlzdGF0ZSBcXFwiTWFzcyBTdG9yYWdlIEdhZGdldFxcXCJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6MjY0OlxcdGRlcGVuZHMgb24gQkxPQ0tcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMjY1LVxcdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9Mjc5PWNvbmZpZyBVU0JfR0FER0VUX1RBUkdFVFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yODAtXFx0dHJpc3RhdGUgXFxcIlVTQiBHYWRnZXQgVGFyZ2V0IEZhYnJpYyBNb2R1bGVcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjI4MTpcXHRkZXBlbmRzIG9uIFRBUkdFVF9DT1JFXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTI4Mi1cXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTI5MT1jb25maWcgVVNCX0dfU0VSSUFMXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTI5Mi1cXHR0cmlzdGF0ZSBcXFwiU2VyaWFsIEdhZGdldCAod2l0aCBDREMgQUNNIGFuZCBDREMgT0JFWCBzdXBwb3J0KVxcXCJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6MjkzOlxcdGRlcGVuZHMgb24gVFRZXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTI5NC1cXHRzZWxlY3QgVVNCX1VfU0VSSUFMXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9MzE2PWNvbmZpZyBVU0JfTUlESV9HQURHRVRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMzE3LVxcdHRyaXN0YXRlIFxcXCJNSURJIEdhZGdldFxcXCJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6MzE4OlxcdGRlcGVuZHMgb24gU05EXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTMxOS1cXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTM1MT1jb25maWcgVVNCX0NEQ19DT01QT1NJVEVcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMzUyLVxcdHRyaXN0YXRlIFxcXCJDREMgQ29tcG9zaXRlIERldmljZSAoRXRoZXJuZXQgYW5kIEFDTSlcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjM1MzpcXHRkZXBlbmRzIG9uIE5FVFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0zNTQtXFx0c2VsZWN0IFVTQl9MSUJDT01QT1NJVEVcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz0zNzA9Y29uZmlnIFVTQl9HX05PS0lBXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTM3MS1cXHR0cmlzdGF0ZSBcXFwiTm9raWEgY29tcG9zaXRlIGdhZGdldFxcXCJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6MzcyOlxcdGRlcGVuZHMgb24gUEhPTkVUXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjM3MzpcXHRkZXBlbmRzIG9uIEJMT0NLXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTM3NC1cXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTM4OT1jb25maWcgVVNCX0dfQUNNX01TXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTM5MC1cXHR0cmlzdGF0ZSBcXFwiQ0RDIENvbXBvc2l0ZSBEZXZpY2UgKEFDTSBhbmQgbWFzcyBzdG9yYWdlKVxcXCJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6MzkxOlxcdGRlcGVuZHMgb24gQkxPQ0tcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMzkyLVxcdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9NDAzPWNvbmZpZyBVU0JfR19NVUxUSVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy00MDQtXFx0dHJpc3RhdGUgXFxcIk11bHRpZnVuY3Rpb24gQ29tcG9zaXRlIEdhZGdldFxcXCJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6NDA1OlxcdGRlcGVuZHMgb24gQkxPQ0sgXFx1MDAyNlxcdTAwMjYgTkVUXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTQwNi1cXHRzZWxlY3QgVVNCX0dfTVVMVElfQ0RDIGlmICFVU0JfR19NVUxUSV9STkRJU1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTQyNz1jb25maWcgVVNCX0dfTVVMVElfUk5ESVNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNDI4LVxcdGJvb2wgXFxcIlJORElTICsgQ0RDIFNlcmlhbCArIFN0b3JhZ2UgY29uZmlndXJhdGlvblxcXCJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6NDI5OlxcdGRlcGVuZHMgb24gVVNCX0dfTVVMVElcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNDMwLVxcdHNlbGVjdCBVU0JfRl9STkRJU1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTQ0MD1jb25maWcgVVNCX0dfTVVMVElfQ0RDXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTQ0MS1cXHRib29sIFxcXCJDREMgRXRoZXJuZXQgKyBDREMgU2VyaWFsICsgU3RvcmFnZSBjb25maWd1cmF0aW9uXFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzo0NDI6XFx0ZGVwZW5kcyBvbiBVU0JfR19NVUxUSVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy00NDMtXFx0c2VsZWN0IFVTQl9GX0VDTVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTQ2OD1jb25maWcgVVNCX0dfREJHUFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy00NjktXFx0dHJpc3RhdGUgXFxcIkVIQ0kgRGVidWcgRGV2aWNlIEdhZGdldFxcXCJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6NDcwOlxcdGRlcGVuZHMgb24gVFRZXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTQ3MS1cXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTQ4ND1jb25maWcgVVNCX0dfREJHUF9QUklOVEtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6NDg1OlxcdGRlcGVuZHMgb24gVVNCX0dfREJHUFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy00ODYtXFx0Ym9vbCBcXFwicHJpbnRrXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTQ5MD1jb25maWcgVVNCX0dfREJHUF9TRVJJQUxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6NDkxOlxcdGRlcGVuZHMgb24gVVNCX0dfREJHUFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy00OTItXFx0c2VsZWN0IFVTQl9VX1NFUklBTFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTUwMT1jb25maWcgVVNCX0dfV0VCQ0FNXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTUwMi1cXHR0cmlzdGF0ZSBcXFwiVVNCIFdlYmNhbSBHYWRnZXRcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjUwMzpcXHRkZXBlbmRzIG9uIFZJREVPX0RFVlxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy01MDQtXFx0c2VsZWN0IFVTQl9MSUJDT01QT1NJVEVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTQ6MTA6MzUuMzg1MzI3MDU2WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYyNjA0MDcwNzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFVTQiBHYWRnZXRmcyBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhlIGtlcm5lbCBjb25maWcgYW5kIHNwZWNpZmljYWxseSBsb29raW5nIGF0IGBVU0JfR0FER0VURlNgLiBNeSBpbml0aWFsIG9ic2VydmF0aW9uIGlzIHRoYXQsIGJhc2VkIG9uIG15IHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoZXNlIGNvbmZpZ3VyYXRpb25zIGFyZSBzdHJ1Y3R1cmVkLCBgVVNCX0dBREdFVEZTYCBkb2Vzbid0IHNlZW0gdG8gZXhwbGljaXRseSAqZGVwZW5kIG9uKiBhbnl0aGluZyBiZXlvbmQgdGhlIGRlcGVuZGVuY2llcyBhbHJlYWR5IGJha2VkIGludG8gaXRzIHBhcmVudCwgYFVTQl9HQURHRVRgLiBUaGF0J3MgYSBrZXkgb2JzZXJ2YXRpb24uXG5cbk5vdywgYmVjYXVzZSBvZiB0aGF0IGluaXRpYWwgcmVhZCwgaXQgaXMgaW1wb3J0YW50IHRvIGRyaWxsIGRvd24gYW5kIHZlcmlmeSB0aGlzIGFzc3VtcHRpb24uIExldCdzIHNlZSB3aGF0IHRoZSBkZXBlbmRlbmNpZXMgYXJlIGZvciBgVVNCX0dBREdFVGAuIFVuZGVyc3RhbmRpbmcgYFVTQl9HQURHRVRgJ3MgZGVwZW5kZW5jaWVzIGRpcmVjdGx5IHdpbGwgdGVsbCBtZSBpZiBJIG1pc3NlZCBzb21ldGhpbmcgaW4gYFVTQl9HQURHRVRGU2AncyBkZXBlbmRlbmNpZXMuIEl0J3MgdGltZSB0byBkaWcgZGVlcGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTU2MywiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE0OjEwOjQxLjY0NTczNzM0WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDI1OTU0NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTQ5PWNvbmZpZyBVU0JfR0FER0VUX0RFQlVHXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNTAtXFx0Ym9vbCBcXFwiRGVidWdnaW5nIG1lc3NhZ2VzIChERVZFTE9QTUVOVClcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NTE6XFx0ZGVwZW5kcyBvbiBERUJVR19LRVJORUxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy01Mi1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz02Mz1jb25maWcgVVNCX0dBREdFVF9WRVJCT1NFXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNjQtXFx0Ym9vbCBcXFwiVmVyYm9zZSBkZWJ1Z2dpbmcgTWVzc2FnZXMgKERFVkVMT1BNRU5UKVxcXCJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo2NTpcXHRkZXBlbmRzIG9uIFVTQl9HQURHRVRfREVCVUdcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy02Ni1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz03Nz1jb25maWcgVVNCX0dBREdFVF9ERUJVR19GSUxFU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTc4LVxcdGJvb2wgXFxcIkRlYnVnZ2luZyBpbmZvcm1hdGlvbiBmaWxlcyAoREVWRUxPUE1FTlQpXFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjc5OlxcdGRlcGVuZHMgb24gUFJPQ19GU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTgwLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTg4PWNvbmZpZyBVU0JfR0FER0VUX0RFQlVHX0ZTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctODktXFx0Ym9vbCBcXFwiRGVidWdnaW5nIGluZm9ybWF0aW9uIGZpbGVzIGluIGRlYnVnZnMgKERFVkVMT1BNRU5UKVxcXCJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo5MDpcXHRkZXBlbmRzIG9uIERFQlVHX0ZTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctOTEtXFx0aGVscFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9MTMyPWNvbmZpZyBVX1NFUklBTF9DT05TT0xFXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTMzLVxcdGJvb2wgXFxcIlNlcmlhbCBnYWRnZXQgY29uc29sZSBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjEzNDpcXHRkZXBlbmRzIG9uIFVTQl9VX1NFUklBTFxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTEzNS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0xNDU9Y29uZmlnIFVTQl9MSUJDT01QT1NJVEVcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTE0Ny1cXHRzZWxlY3QgQ09ORklHRlNfRlNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoxNDg6XFx0ZGVwZW5kcyBvbiBVU0JfR0FER0VUXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTQ5LVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9MjQwPWNvbmZpZyBVU0JfQ09ORklHRlNfU0VSSUFMXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjQxLVxcdGJvb2wgXFxcIkdlbmVyaWMgc2VyaWFsIGJ1bGsgaW4vb3V0XFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI0MjpcXHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI0MzpcXHRkZXBlbmRzIG9uIFRUWVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI0NC1cXHRzZWxlY3QgVVNCX1VfU0VSSUFMXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0yNDk9Y29uZmlnIFVTQl9DT05GSUdGU19BQ01cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNTAtXFx0Ym9vbCBcXFwiQWJzdHJhY3QgQ29udHJvbCBNb2RlbCAoQ0RDIEFDTSlcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjUxOlxcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjUyOlxcdGRlcGVuZHMgb24gVFRZXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjUzLVxcdHNlbGVjdCBVU0JfVV9TRVJJQUxcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTI1OT1jb25maWcgVVNCX0NPTkZJR0ZTX09CRVhcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNjAtXFx0Ym9vbCBcXFwiT2JqZWN0IEV4Y2hhbmdlIE1vZGVsIChDREMgT0JFWClcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjYxOlxcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjYyOlxcdGRlcGVuZHMgb24gVFRZXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjYzLVxcdHNlbGVjdCBVU0JfVV9TRVJJQUxcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTI2OT1jb25maWcgVVNCX0NPTkZJR0ZTX05DTVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI3MC1cXHRib29sIFxcXCJOZXR3b3JrIENvbnRyb2wgTW9kZWwgKENEQyBOQ00pXFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI3MTpcXHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI3MjpcXHRkZXBlbmRzIG9uIE5FVFxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI3My1cXHRzZWxlY3QgVVNCX1VfRVRIRVJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTI4MT1jb25maWcgVVNCX0NPTkZJR0ZTX0VDTVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI4Mi1cXHRib29sIFxcXCJFdGhlcm5ldCBDb250cm9sIE1vZGVsIChDREMgRUNNKVxcXCJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyODM6XFx0ZGVwZW5kcyBvbiBVU0JfQ09ORklHRlNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyODQ6XFx0ZGVwZW5kcyBvbiBORVRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yODUtXFx0c2VsZWN0IFVTQl9VX0VUSEVSXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0yOTM9Y29uZmlnIFVTQl9DT05GSUdGU19FQ01fU1VCU0VUXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjk0LVxcdGJvb2wgXFxcIkV0aGVybmV0IENvbnRyb2wgTW9kZWwgKENEQyBFQ00pIHN1YnNldFxcXCJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyOTU6XFx0ZGVwZW5kcyBvbiBVU0JfQ09ORklHRlNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyOTY6XFx0ZGVwZW5kcyBvbiBORVRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yOTctXFx0c2VsZWN0IFVTQl9VX0VUSEVSXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0zMDM9Y29uZmlnIFVTQl9DT05GSUdGU19STkRJU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTMwNC1cXHRib29sIFxcXCJSTkRJU1xcXCJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozMDU6XFx0ZGVwZW5kcyBvbiBVU0JfQ09ORklHRlNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozMDY6XFx0ZGVwZW5kcyBvbiBORVRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMDctXFx0c2VsZWN0IFVTQl9VX0VUSEVSXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0zMTk9Y29uZmlnIFVTQl9DT05GSUdGU19FRU1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMjAtXFx0Ym9vbCBcXFwiRXRoZXJuZXQgRW11bGF0aW9uIE1vZGVsIChFRU0pXFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjMyMTpcXHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjMyMjpcXHRkZXBlbmRzIG9uIE5FVFxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTMyMy1cXHRzZWxlY3QgVVNCX1VfRVRIRVJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTMzNT1jb25maWcgVVNCX0NPTkZJR0ZTX1BIT05FVFxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTMzNi1cXHRib29sIFxcXCJQaG9uZXQgcHJvdG9jb2xcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzM3OlxcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzM4OlxcdGRlcGVuZHMgb24gTkVUXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzM5OlxcdGRlcGVuZHMgb24gUEhPTkVUXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzQwLVxcdHNlbGVjdCBVU0JfVV9FVEhFUlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9MzQ1PWNvbmZpZyBVU0JfQ09ORklHRlNfTUFTU19TVE9SQUdFXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzQ2LVxcdGJvb2wgXFxcIk1hc3Mgc3RvcmFnZVxcXCJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozNDc6XFx0ZGVwZW5kcyBvbiBVU0JfQ09ORklHRlNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozNDg6XFx0ZGVwZW5kcyBvbiBCTE9DS1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM0OS1cXHRzZWxlY3QgVVNCX0ZfTUFTU19TVE9SQUdFXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0zNTY9Y29uZmlnIFVTQl9DT05GSUdGU19GX0xCX1NTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzU3LVxcdGJvb2wgXFxcIkxvb3BiYWNrIGFuZCBzb3VyY2VzaW5rIGZ1bmN0aW9uIChmb3IgdGVzdGluZylcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzU4OlxcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzU5LVxcdHNlbGVjdCBVU0JfRl9TU19MQlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9MzY5PWNvbmZpZyBVU0JfQ09ORklHRlNfRl9GU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM3MC1cXHRib29sIFxcXCJGdW5jdGlvbiBmaWxlc3lzdGVtIChGdW5jdGlvbkZTKVxcXCJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozNzE6XFx0ZGVwZW5kcyBvbiBVU0JfQ09ORklHRlNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNzItXFx0c2VsZWN0IFVTQl9GX0ZTXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0zODE9Y29uZmlnIFVTQl9DT05GSUdGU19GX1VBQzFcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zODItXFx0Ym9vbCBcXFwiQXVkaW8gQ2xhc3MgMS4wXFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM4MzpcXHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM4NDpcXHRkZXBlbmRzIG9uIFNORFxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM4NS1cXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9Mzk5PWNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMxX0xFR0FDWVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQwMC1cXHRib29sIFxcXCJBdWRpbyBDbGFzcyAxLjAgKGxlZ2FjeSBpbXBsZW1lbnRhdGlvbilcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDAxOlxcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDAyOlxcdGRlcGVuZHMgb24gU05EXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDAzLVxcdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz00MTI9Y29uZmlnIFVTQl9DT05GSUdGU19GX1VBQzJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00MTMtXFx0Ym9vbCBcXFwiQXVkaW8gQ2xhc3MgMi4wXFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQxNDpcXHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQxNTpcXHRkZXBlbmRzIG9uIFNORFxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQxNi1cXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9NDMxPWNvbmZpZyBVU0JfQ09ORklHRlNfRl9NSURJXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDMyLVxcdGJvb2wgXFxcIk1JREkgZnVuY3Rpb25cXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDMzOlxcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDM0OlxcdGRlcGVuZHMgb24gU05EXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDM1LVxcdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz00NDU9Y29uZmlnIFVTQl9DT05GSUdGU19GX01JREkyXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDQ2LVxcdGJvb2wgXFxcIk1JREkgMi4wIGZ1bmN0aW9uXFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ0NzpcXHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ0ODpcXHRkZXBlbmRzIG9uIFNORFxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ0OS1cXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9NDU4PWNvbmZpZyBVU0JfQ09ORklHRlNfRl9ISURcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00NTktXFx0Ym9vbCBcXFwiSElEIGZ1bmN0aW9uXFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ2MDpcXHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ2MS1cXHRzZWxlY3QgVVNCX0ZfSElEXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz00Njg9Y29uZmlnIFVTQl9DT05GSUdGU19GX1VWQ1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ2OS1cXHRib29sIFxcXCJVU0IgV2ViY2FtIGZ1bmN0aW9uXFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ3MDpcXHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ3MTpcXHRkZXBlbmRzIG9uIFZJREVPX0RFVlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ3MjpcXHRkZXBlbmRzIG9uIFZJREVPX0RFVlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ3My1cXHRzZWxlY3QgVklERU9CVUYyX0RNQV9TR1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9NDgxPWNvbmZpZyBVU0JfQ09ORklHRlNfRl9QUklOVEVSXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00ODMtXFx0c2VsZWN0IFVTQl9GX1BSSU5URVJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0ODQ6XFx0ZGVwZW5kcyBvbiBVU0JfQ09ORklHRlNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00ODUtXFx0aGVscFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9NDk1PWNvbmZpZyBVU0JfQ09ORklHRlNfRl9UQ01cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00OTYtXFx0Ym9vbCBcXFwiVVNCIEdhZGdldCBUYXJnZXQgRmFicmljXFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ5NzpcXHRkZXBlbmRzIG9uIFRBUkdFVF9DT1JFXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDk4OlxcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDk5LVxcdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE0OjEwOjQxLjY5MDAwNDEyN1oiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTA5OTk3NjQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdW5kZXJzdGFuZGluZywgYXNzdW1pbmcgSSdtIGFuIGV4cGVydCBpbiB0aGlzIGVtYmVkZGVkIHN5c3RlbXMgY29udGV4dC5cblxuKipVbmRlcnN0YW5kaW5nIFVTQiBHYWRnZXQgQ29uZmlndXJhdGlvbioqXG5cblJpZ2h0LCBzbyB3ZSdyZSBkZWFsaW5nIHdpdGggVVNCIEdhZGdldCBmdW5jdGlvbmFsaXR5LCBhbmQgaXQgc2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gVGhlIGNvcmUgb2YgaXQgYWxsLCBgVVNCX0dBREdFVGAsIG5hdHVyYWxseSByZWxpZXMgb24gdGhlIGZvdW5kYXRpb25hbCBgVVNCX1NVUFBPUlRgIOKAkyB0aGF0J3MganVzdCBiYXNpYyBVU0Igc3VwcG9ydCwgbm90aGluZyBzdXJwcmlzaW5nIHRoZXJlLiBXZSdyZSBjb25maWd1cmluZyBVU0IgZ2FkZ2V0IGZ1bmN0aW9uYWxpdHkuXG5cblRoZSBrZXkgY29uZmlndXJhdGlvbnMgdG8gZm9jdXMgb24gc2VlbSB0byBiZSBgVVNCX0dBREdFVGAgaXRzZWxmLCBhbmQgYFVTQl9HQURHRVRGU2AuIFRvIGJlIHN1cmUgYWJvdXQgdGhlIHJlbGF0aW9uc2hpcHMsIEknbGwgcXVpY2tseSBjaGVjayB0aGUgZGVwZW5kZW5jaWVzIHdpdGhpbiB0aGUgYGRyaXZlcnMvdXNiL0tjb25maWdgIGZpbGUuIEknbGwgbmVlZCB0byBjb25maXJtIHRoYXQgYFVTQl9HQURHRVRgIGNvcnJlY3RseSBkZXBlbmRzIG9uIGBVU0JfU1VQUE9SVGAsIGFuZCBjb25maXJtIHdoZXRoZXIgYW55dGhpbmcgZWxzZSBpcyBpbXBhY3RlZCBieSBlbmFibGluZyBgVVNCX0dBREdFVGAuIEknbGwgYWxzbyBzZWUgaWYgdGhlcmUgaXMgYW55IG90aGVyIGNyaXRpY2FsIGluZm9ybWF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODY5MSwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDE0OjEwOjQ2LjIwMDAwNDg4N1oiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTg1NDMwMTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWVudWNvbmZpZyBVU0JfR0FER0VUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xNi1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoxNzptZW51Y29uZmlnIFVTQl9HQURHRVRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xOC1cXHR0cmlzdGF0ZSBcXFwiVVNCIEdhZGdldCBTdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNDoxMDo0Ni4yNTg1NTM1MjNaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIyOTQzOTkzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeGFtaW5pbmcgdGhlIFVTQiBDb25maWd1cmF0aW9uIE9wdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBVU0IgY29uZmlndXJhdGlvbiBhbmQgbmVlZCB0byBjbGFyaWZ5IGEgZGVwZW5kZW5jeS4gTXkgaW5pdGlhbCBodW5jaCBpcyB0aGF0IGBVU0JfR0FER0VUYCByZWxpZXMgb24gYFVTQl9TVVBQT1JUYCwgYW5kIHNpbmNlIGBVU0JfU1VQUE9SVGAgaXMgZGVmaW5lZCBpbiBgZHJpdmVycy91c2IvS2NvbmZpZ2AsIEkgbmVlZCB0byB2ZXJpZnkgdGhpcyByZWxhdGlvbnNoaXAuIE5vdywgSSBzaG91bGQgc2hpZnQgbXkgZm9jdXMgdG8gYGRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnYC4gVGhpcyBpcyB3aGVyZSB0aGUgaW50cmljYWNpZXMgb2YgdGhlIGdhZGdldCBtb2RlIGNvbmZpZ3VyYXRpb25zIHNob3VsZCBiZSBzcGVsbGVkIG91dCwgcGFydGljdWxhcmx5IHRoZSBkZXBlbmRlbmNpZXMgZm9yIGBVU0JfR0FER0VUYC4gSSdsbCBleHBsb3JlIHRoaXMgZmlsZSB0byBwaW5wb2ludCAqZXhhY3RseSogd2hhdCBuZWVkcyB0byBiZSBlbmFibGVkIG9yIGNvbmZpZ3VyZWQgYWxvbmdzaWRlIGBVU0JfR0FER0VUYC4gVW5kZXJzdGFuZGluZyB0aGUgY29tcGxldGUgY2hhaW4gb2YgZGVwZW5kZW5jaWVzIGlzIGNyaXRpY2FsIHRvIHByb3BlciBVU0IgZnVuY3Rpb25hbGl0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkwNDQsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNDoxMDo0OS40ODc5OTY3OTlaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDEzNDUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBVU0IgR2FkZ2V0IHN1cHBvcnQgb24gYSBzeXN0ZW0gaW52b2x2ZXNcXG4gICA0OlxcdCMgICAgKGEpIGEgcGVyaXBoZXJhbCBjb250cm9sbGVyLCBhbmRcXG4gICA1OlxcdCMgICAgKGIpIHRoZSBnYWRnZXQgZHJpdmVyIHVzaW5nIGl0LlxcbiAgIDY6XFx0I1xcbiAgIDc6XFx0IyBOT1RFOiAgR2FkZ2V0IHN1cHBvcnQgKiogRE9FUyBOT1QgKiogZGVwZW5kIG9uIGhvc3Qtc2lkZSBDT05GSUdfVVNCICEhXFxuICAgODpcXHQjXFxuICAgOTpcXHQjICAtIEhvc3Qgc3lzdGVtcyAobGlrZSBQQ3MpIG5lZWQgQ09ORklHX1VTQiAod2l0aCBcXFwiQVxcXCIgamFja3MpLlxcbiAgMTA6XFx0IyAgLSBQZXJpcGhlcmFscyAobGlrZSBQREFzKSBuZWVkIENPTkZJR19VU0JfR0FER0VUICh3aXRoIFxcXCJCXFxcIiBqYWNrcykuXFxuICAxMTpcXHQjICAtIFNvbWUgc3lzdGVtcyBoYXZlIGJvdGgga2luZHMgb2YgY29udHJvbGxlcnMuXFxuICAxMjpcXHQjXFxuICAxMzpcXHQjIFdpdGggaGVscCBmcm9tIGEgc3BlY2lhbCB0cmFuc2NlaXZlciBhbmQgYSBcXFwiTWluaS1BQlxcXCIgamFjaywgc3lzdGVtcyB3aXRoXFxuICAxNDpcXHQjIGJvdGgga2luZHMgb2YgY29udHJvbGxlciBjYW4gYWxzbyBzdXBwb3J0IFxcXCJVU0IgT24tdGhlLUdvXFxcIiAoQ09ORklHX1VTQl9PVEcpLlxcbiAgMTU6XFx0I1xcbiAgMTY6XFx0XFxuICAxNzpcXHRtZW51Y29uZmlnIFVTQl9HQURHRVRcXG4gIDE4OlxcdFxcdHRyaXN0YXRlIFxcXCJVU0IgR2FkZ2V0IFN1cHBvcnRcXFwiXFxuICAxOTpcXHRcXHRzZWxlY3QgVVNCX0NPTU1PTlxcbiAgMjA6XFx0XFx0c2VsZWN0IE5MU1xcbiAgMjE6XFx0XFx0aGVscFxcbiAgMjI6XFx0XFx0ICAgVVNCIGlzIGEgaG9zdC9kZXZpY2UgcHJvdG9jb2wsIG9yZ2FuaXplZCB3aXRoIG9uZSBob3N0IChzdWNoIGFzIGFcXG4gIDIzOlxcdFxcdCAgIFBDKSBjb250cm9sbGluZyB1cCB0byAxMjcgcGVyaXBoZXJhbCBkZXZpY2VzLlxcbiAgMjQ6XFx0XFx0ICAgVGhlIFVTQiBoYXJkd2FyZSBpcyBhc3ltbWV0cmljLCB3aGljaCBtYWtlcyBpdCBlYXNpZXIgdG8gc2V0IHVwOlxcbiAgMjU6XFx0XFx0ICAgeW91IGNhbid0IGNvbm5lY3QgYSBcXFwidG8tdGhlLWhvc3RcXFwiIGNvbm5lY3RvciB0byBhIHBlcmlwaGVyYWwuXFxuICAyNjpcXHRcXG4gIDI3OlxcdFxcdCAgIExpbnV4IGNhbiBydW4gaW4gdGhlIGhvc3QsIG9yIGluIHRoZSBwZXJpcGhlcmFsLiAgSW4gYm90aCBjYXNlc1xcbiAgMjg6XFx0XFx0ICAgeW91IG5lZWQgYSBsb3cgbGV2ZWwgYnVzIGNvbnRyb2xsZXIgZHJpdmVyLCBhbmQgc29tZSBzb2Z0d2FyZVxcbiAgMjk6XFx0XFx0ICAgdGFsa2luZyB0byBpdC4gIFBlcmlwaGVyYWwgY29udHJvbGxlcnMgYXJlIG9mdGVuIGRpc2NyZXRlIHNpbGljb24sXFxuICAzMDpcXHRcXHQgICBvciBhcmUgaW50ZWdyYXRlZCB3aXRoIHRoZSBDUFUgaW4gYSBtaWNyb2NvbnRyb2xsZXIuICBUaGUgbW9yZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQxNDoxMDo0OS40ODg0MTI1OTlaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzQ3NTEyMjc2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBVU0IgR2FkZ2V0ZnMgUGF0Y2ggZm9yIEZ1enppbmcgU3VpdGFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGFyZ2V0aW5nIHRoZSBgVVNCX0dBREdFVGAgZHJpdmVyLCBJIHNlZSB0aGVyZSBhcmUgbm8gZGlyZWN0IGRlcGVuZGVuY2llcy4gVGhpcyBpcyBnb29kIHRvIGtlZXAgaW4gbWluZCwgYXMgaXQgY291bGQgbWVhbiBpdCdzIGVhc2llciB0byBpc29sYXRlLlxuXG5MZXQncyBxdWlja2x5IHJlY2FwIHdoYXQgd2UndmUgZ290IHNvIGZhcjogYFdvcnRoRnV6emluZ2AgaXMgc2V0IHRvIHRydWUsIGFuZCB3ZSBoYXZlIGBVU0JfR0FER0VUYCBhbmQgYFVTQl9HQURHRVRGU2AgZW5hYmxlZC4gT3VyIGluaXRpYWwgYEZvY3VzU3ltYm9sc2AgaW5jbHVkZSBgZ2FkZ2V0ZnNfZmlsbF9zdXBlcmAsIGBnYWRnZXRmc19ldmljdF9pbm9kZWAsIGBnYWRnZXRfZGV2X29wZW5gLCBgZGV2X3JlbGVhc2VgLCBgZXBfb3BlbmAsIGFuZCBgZXBfcmVsZWFzZWAuIFRoZSByZWFzb25pbmcgZ2l2ZW4gaXMgc29saWQg4oCTIHRoaXMgcGF0Y2ggc2VlbXMgdG8gYWRkcmVzcyBhIHBvdGVudGlhbCByZWZlcmVuY2UgY291bnRpbmcgb3IgbWVtb3J5IG1hbmFnZW1lbnQgcHJvYmxlbSBpbiB0aGUgVVNCIGdhZGdldGZzIGRyaXZlciwgc3BlY2lmaWNhbGx5IGJ5IG1vdmluZyBgcHV0X2VwYCBpbnRvIHRoZSBpbm9kZSBldmljdGlvbiBwYXRoLiBUaGUgZmFjdCB0aGF0IGdhZGdldGZzIGNhbiBiZSBhY2Nlc3NlZCB0aHJvdWdoIGBkdW1teV9oY2RgIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBtYWtlcyBpdCB2ZXJ5IGFwcGVhbGluZyBmb3IgZnV6emluZywgZ2l2ZW4gdGhlIGFjY2Vzc2liaWxpdHkuXG5cbkhvbGQgb24sIEkgc2VlIHRoYXQgYGdhZGdldGZzX2NyZWF0ZV9maWxlYCBoYXMgYWxzbyBiZWVuIG1vZGlmaWVkLiBUaGF0J3MgcmVsZXZhbnQuIExldCdzIGFkZCB0aGF0IHRvIHRoZSBgRm9jdXNTeW1ib2xzYCBsaXN0LCBhbG9uZyB3aXRoIGBkZXN0cm95X2VwX2ZpbGVzYC4gV2UgaGF2ZSB0byBjb25zaWRlciBob3cgdGhpcyBhZmZlY3RzIHRoZSBhdHRhY2sgc3VyZmFjZS5cblxuTm93LCBsZXQncyB1cGRhdGUgYEZvY3VzU3ltYm9sc2A6XG5cbiogICBgZ2FkZ2V0ZnNfZmlsbF9zdXBlcmBcbiogICBgZ2FkZ2V0ZnNfY3JlYXRlX2ZpbGVgXG4qICAgYGdhZGdldGZzX2V2aWN0X2lub2RlYFxuKiAgIGBkZXN0cm95X2VwX2ZpbGVzYFxuKiAgIGBlcF9vcGVuYFxuKiAgIGBlcF9yZWxlYXNlYFxuKiAgIGBnYWRnZXRfZGV2X29wZW5gXG4qICAgYGRldl9yZWxlYXNlYFxuXG5KdXN0IHRvIGRvdWJsZSBjaGVjaywgSSdsbCBxdWlja2x5IHZlcmlmeSBpZiBgZ2FkZ2V0ZnNfY3JlYXRlX2ZpbGVgIGlzIHN0YXRpYy4gWWVzLCBpdCBpcyBzdGF0aWMuIEJ1dCwgaXQgaXMgZmluZS5cblxuT2theSwgdGhhdCdzIGV2ZXJ5dGhpbmcgSSBuZWVkLiBJJ20gc2F0aXNmaWVkLiBMZXQncyBjYWxsIHRoZSBzZXQtcmVzdWx0cyBmdW5jdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk3NzUsIk91dHB1dFRva2VucyI6MTYxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjk1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMTQ6MTA6NTYuOTYzNTM4NjdaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4ODMxNjA4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVVNCX0dBREdFVFwiLFxuICAgIFwiVVNCX0dBREdFVEZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZ2FkZ2V0ZnNfZmlsbF9zdXBlclwiLFxuICAgIFwiZ2FkZ2V0ZnNfY3JlYXRlX2ZpbGVcIixcbiAgICBcImdhZGdldGZzX2V2aWN0X2lub2RlXCIsXG4gICAgXCJkZXN0cm95X2VwX2ZpbGVzXCIsXG4gICAgXCJlcF9vcGVuXCIsXG4gICAgXCJlcF9yZWxlYXNlXCIsXG4gICAgXCJnYWRnZXRfZGV2X29wZW5cIixcbiAgICBcImRldl9yZWxlYXNlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByZWZlcmVuY2UgY291bnRpbmcgb3IgbWVtb3J5IG1hbmFnZW1lbnQgaXNzdWUgaW4gdGhlIFVTQiBnYWRnZXRmcyBkcml2ZXIgYnkgbW92aW5nIGBwdXRfZXBgIHRvIHRoZSBpbm9kZSBldmljdGlvbiBwYXRoLiBHYWRnZXRmcyBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBkdW1teV9oY2QsIG1ha2luZyBpdCBzdWl0YWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJVU0JfR0FER0VUXCIsXG4gICAgXCJVU0JfR0FER0VURlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJnYWRnZXRmc19maWxsX3N1cGVyXCIsXG4gICAgXCJnYWRnZXRmc19jcmVhdGVfZmlsZVwiLFxuICAgIFwiZ2FkZ2V0ZnNfZXZpY3RfaW5vZGVcIixcbiAgICBcImRlc3Ryb3lfZXBfZmlsZXNcIixcbiAgICBcImVwX29wZW5cIixcbiAgICBcImVwX3JlbGVhc2VcIixcbiAgICBcImdhZGdldF9kZXZfb3BlblwiLFxuICAgIFwiZGV2X3JlbGVhc2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHJlZmVyZW5jZSBjb3VudGluZyBvciBtZW1vcnkgbWFuYWdlbWVudCBpc3N1ZSBpbiB0aGUgVVNCIGdhZGdldGZzIGRyaXZlciBieSBtb3ZpbmcgYHB1dF9lcGAgdG8gdGhlIGlub2RlIGV2aWN0aW9uIHBhdGguIEdhZGdldGZzIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIGR1bW15X2hjZCwgbWFraW5nIGl0IHN1aXRhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowvn4pv[1] Phase: Succeeded StartedAt: 2026-07-31 14:11:08 +0000 UTC FinishedAt: 2026-07-31 14:11:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvn4pv[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-31 14:11:08 +0000 UTC FinishedAt: 2026-07-31 14:11:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvn4pv[2] Phase: Succeeded StartedAt: 2026-07-31 14:11:08 +0000 UTC FinishedAt: 2026-07-31 17:48:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvn4pv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_GADGETFS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadgetfs_fill_super","gadgetfs_create_file","gadgetfs_evict_inode","destroy_ep_files","ep_open","ep_release","gadget_dev_open","dev_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_GADGETFS"],"series_id":"a00f9ca9-f8ba-4337-86bb-c07477596ed2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-31 14:11:08 +0000 UTC FinishedAt: 2026-07-31 17:48:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_GADGETFS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadgetfs_fill_super","gadgetfs_create_file","gadgetfs_evict_inode","destroy_ep_files","ep_open","ep_release","gadget_dev_open","dev_release"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_GADGETFS"],"series_id":"a00f9ca9-f8ba-4337-86bb-c07477596ed2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowvn4pv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_GADGETFS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadgetfs_fill_super","gadgetfs_create_file","gadgetfs_evict_inode","destroy_ep_files","ep_open","ep_release","gadget_dev_open","dev_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_GADGETFS"],"series_id":"a00f9ca9-f8ba-4337-86bb-c07477596ed2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-31 14:11:08 +0000 UTC FinishedAt: 2026-07-31 14:11:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvn4pv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_GADGETFS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadgetfs_fill_super","gadgetfs_create_file","gadgetfs_evict_inode","destroy_ep_files","ep_open","ep_release","gadget_dev_open","dev_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_GADGETFS"],"series_id":"a00f9ca9-f8ba-4337-86bb-c07477596ed2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-31 14:11:08 +0000 UTC FinishedAt: 2026-07-31 14:11:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_GADGETFS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.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-workflowvn4pv/series-workflowvn4pv-convert-artifact-46547440/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvn4pv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_GADGETFS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadgetfs_fill_super","gadgetfs_create_file","gadgetfs_evict_inode","destroy_ep_files","ep_open","ep_release","gadget_dev_open","dev_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_GADGETFS"],"series_id":"a00f9ca9-f8ba-4337-86bb-c07477596ed2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-31 14:11:18 +0000 UTC FinishedAt: 2026-07-31 14:27:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvn4pv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_GADGETFS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadgetfs_fill_super","gadgetfs_create_file","gadgetfs_evict_inode","destroy_ep_files","ep_open","ep_release","gadget_dev_open","dev_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_GADGETFS"],"series_id":"a00f9ca9-f8ba-4337-86bb-c07477596ed2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-31 14:11:18 +0000 UTC FinishedAt: 2026-07-31 14:27:20 +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:*bfaa2f12-31b4-46b3-bdb8-e046b97539c1,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-workflowvn4pv/series-workflowvn4pv-convert-artifact-46547440/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": "686c0312-83f4-4922-bdb8-7ce07879e8b8", "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-workflowvn4pv/series-workflowvn4pv-build-action-2640268534/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvn4pv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_GADGETFS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadgetfs_fill_super","gadgetfs_create_file","gadgetfs_evict_inode","destroy_ep_files","ep_open","ep_release","gadget_dev_open","dev_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_GADGETFS"],"series_id":"a00f9ca9-f8ba-4337-86bb-c07477596ed2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-31 14:11:18 +0000 UTC FinishedAt: 2026-07-31 14:27:10 +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:*bfaa2f12-31b4-46b3-bdb8-e046b97539c1,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-workflowvn4pv/series-workflowvn4pv-convert-artifact-46547440/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": "686c0312-83f4-4922-bdb8-7ce07879e8b8", "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-workflowvn4pv/series-workflowvn4pv-build-action-2640268534/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvn4pv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_GADGETFS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadgetfs_fill_super","gadgetfs_create_file","gadgetfs_evict_inode","destroy_ep_files","ep_open","ep_release","gadget_dev_open","dev_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_GADGETFS"],"series_id":"a00f9ca9-f8ba-4337-86bb-c07477596ed2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-31 14:27:20 +0000 UTC FinishedAt: 2026-07-31 14:27:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvn4pv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_GADGETFS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadgetfs_fill_super","gadgetfs_create_file","gadgetfs_evict_inode","destroy_ep_files","ep_open","ep_release","gadget_dev_open","dev_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_GADGETFS"],"series_id":"a00f9ca9-f8ba-4337-86bb-c07477596ed2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-31 14:27:20 +0000 UTC FinishedAt: 2026-07-31 14:27:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvn4pv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_GADGETFS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadgetfs_fill_super","gadgetfs_create_file","gadgetfs_evict_inode","destroy_ep_files","ep_open","ep_release","gadget_dev_open","dev_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_GADGETFS"],"series_id":"a00f9ca9-f8ba-4337-86bb-c07477596ed2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-31 14:27:20 +0000 UTC FinishedAt: 2026-07-31 14:27:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvn4pv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_GADGETFS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadgetfs_fill_super","gadgetfs_create_file","gadgetfs_evict_inode","destroy_ep_files","ep_open","ep_release","gadget_dev_open","dev_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_GADGETFS"],"series_id":"a00f9ca9-f8ba-4337-86bb-c07477596ed2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-31 14:27:20 +0000 UTC FinishedAt: 2026-07-31 14:27:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_GADGETFS"],"series_id":"a00f9ca9-f8ba-4337-86bb-c07477596ed2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.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-workflowvn4pv/series-workflowvn4pv-convert-artifact-3778626519/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvn4pv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_GADGETFS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadgetfs_fill_super","gadgetfs_create_file","gadgetfs_evict_inode","destroy_ep_files","ep_open","ep_release","gadget_dev_open","dev_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_GADGETFS"],"series_id":"a00f9ca9-f8ba-4337-86bb-c07477596ed2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-31 14:27:30 +0000 UTC FinishedAt: 2026-07-31 14:29:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvn4pv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_GADGETFS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadgetfs_fill_super","gadgetfs_create_file","gadgetfs_evict_inode","destroy_ep_files","ep_open","ep_release","gadget_dev_open","dev_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_GADGETFS"],"series_id":"a00f9ca9-f8ba-4337-86bb-c07477596ed2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-31 14:27:30 +0000 UTC FinishedAt: 2026-07-31 14:29:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*686c0312-83f4-4922-bdb8-7ce07879e8b8,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-workflowvn4pv/series-workflowvn4pv-build-action-2640268534/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-workflowvn4pv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_GADGETFS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadgetfs_fill_super","gadgetfs_create_file","gadgetfs_evict_inode","destroy_ep_files","ep_open","ep_release","gadget_dev_open","dev_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_GADGETFS"],"series_id":"a00f9ca9-f8ba-4337-86bb-c07477596ed2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-31 14:29:20 +0000 UTC FinishedAt: 2026-07-31 14:29:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvn4pv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_GADGETFS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadgetfs_fill_super","gadgetfs_create_file","gadgetfs_evict_inode","destroy_ep_files","ep_open","ep_release","gadget_dev_open","dev_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_GADGETFS"],"series_id":"a00f9ca9-f8ba-4337-86bb-c07477596ed2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-31 14:29:20 +0000 UTC FinishedAt: 2026-07-31 14:29:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvn4pv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_GADGETFS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadgetfs_fill_super","gadgetfs_create_file","gadgetfs_evict_inode","destroy_ep_files","ep_open","ep_release","gadget_dev_open","dev_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_GADGETFS"],"series_id":"a00f9ca9-f8ba-4337-86bb-c07477596ed2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-31 14:29:20 +0000 UTC FinishedAt: 2026-07-31 14:45:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvn4pv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_GADGETFS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadgetfs_fill_super","gadgetfs_create_file","gadgetfs_evict_inode","destroy_ep_files","ep_open","ep_release","gadget_dev_open","dev_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_GADGETFS"],"series_id":"a00f9ca9-f8ba-4337-86bb-c07477596ed2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-31 14:29:20 +0000 UTC FinishedAt: 2026-07-31 14:45:46 +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:*bfaa2f12-31b4-46b3-bdb8-e046b97539c1,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-workflowvn4pv/series-workflowvn4pv-convert-artifact-3778626519/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": "aa6c797c-4b1f-46c4-9d0a-91259ef2f8ce", "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-workflowvn4pv/series-workflowvn4pv-build-action-2719726363/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvn4pv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_GADGETFS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadgetfs_fill_super","gadgetfs_create_file","gadgetfs_evict_inode","destroy_ep_files","ep_open","ep_release","gadget_dev_open","dev_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_GADGETFS"],"series_id":"a00f9ca9-f8ba-4337-86bb-c07477596ed2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-31 14:29:20 +0000 UTC FinishedAt: 2026-07-31 14:45:36 +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:*bfaa2f12-31b4-46b3-bdb8-e046b97539c1,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-workflowvn4pv/series-workflowvn4pv-convert-artifact-3778626519/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": "aa6c797c-4b1f-46c4-9d0a-91259ef2f8ce", "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-workflowvn4pv/series-workflowvn4pv-build-action-2719726363/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvn4pv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_GADGETFS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadgetfs_fill_super","gadgetfs_create_file","gadgetfs_evict_inode","destroy_ep_files","ep_open","ep_release","gadget_dev_open","dev_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_GADGETFS"],"series_id":"a00f9ca9-f8ba-4337-86bb-c07477596ed2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-31 14:45:46 +0000 UTC FinishedAt: 2026-07-31 14:45:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvn4pv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_GADGETFS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadgetfs_fill_super","gadgetfs_create_file","gadgetfs_evict_inode","destroy_ep_files","ep_open","ep_release","gadget_dev_open","dev_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_GADGETFS"],"series_id":"a00f9ca9-f8ba-4337-86bb-c07477596ed2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-31 14:45:46 +0000 UTC FinishedAt: 2026-07-31 14:45:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvn4pv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_GADGETFS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadgetfs_fill_super","gadgetfs_create_file","gadgetfs_evict_inode","destroy_ep_files","ep_open","ep_release","gadget_dev_open","dev_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_GADGETFS"],"series_id":"a00f9ca9-f8ba-4337-86bb-c07477596ed2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-31 14:45:46 +0000 UTC FinishedAt: 2026-07-31 14:47:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvn4pv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_GADGETFS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadgetfs_fill_super","gadgetfs_create_file","gadgetfs_evict_inode","destroy_ep_files","ep_open","ep_release","gadget_dev_open","dev_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_GADGETFS"],"series_id":"a00f9ca9-f8ba-4337-86bb-c07477596ed2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-31 14:45:46 +0000 UTC FinishedAt: 2026-07-31 14:47:10 +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:*aa6c797c-4b1f-46c4-9d0a-91259ef2f8ce,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-workflowvn4pv/series-workflowvn4pv-build-action-2719726363/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-workflowvn4pv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_GADGETFS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadgetfs_fill_super","gadgetfs_create_file","gadgetfs_evict_inode","destroy_ep_files","ep_open","ep_release","gadget_dev_open","dev_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_GADGETFS"],"series_id":"a00f9ca9-f8ba-4337-86bb-c07477596ed2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-31 14:47:19 +0000 UTC FinishedAt: 2026-07-31 17:48:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvn4pv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_GADGETFS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadgetfs_fill_super","gadgetfs_create_file","gadgetfs_evict_inode","destroy_ep_files","ep_open","ep_release","gadget_dev_open","dev_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_GADGETFS"],"series_id":"a00f9ca9-f8ba-4337-86bb-c07477596ed2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-31 14:47:19 +0000 UTC FinishedAt: 2026-07-31 17:48:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadgetfs_fill_super","gadgetfs_create_file","gadgetfs_evict_inode","destroy_ep_files","ep_open","ep_release","gadget_dev_open","dev_release"],"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:*686c0312-83f4-4922-bdb8-7ce07879e8b8,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*aa6c797c-4b1f-46c4-9d0a-91259ef2f8ce,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-workflowvn4pv/series-workflowvn4pv-build-action-2640268534/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-workflowvn4pv/series-workflowvn4pv-build-action-2719726363/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowvn4pv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_GADGETFS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadgetfs_fill_super","gadgetfs_create_file","gadgetfs_evict_inode","destroy_ep_files","ep_open","ep_release","gadget_dev_open","dev_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_GADGETFS"],"series_id":"a00f9ca9-f8ba-4337-86bb-c07477596ed2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-31 14:47:19 +0000 UTC FinishedAt: 2026-07-31 14:47:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvn4pv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_GADGETFS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadgetfs_fill_super","gadgetfs_create_file","gadgetfs_evict_inode","destroy_ep_files","ep_open","ep_release","gadget_dev_open","dev_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_GADGETFS"],"series_id":"a00f9ca9-f8ba-4337-86bb-c07477596ed2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-31 14:47:19 +0000 UTC FinishedAt: 2026-07-31 14:47:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadgetfs_fill_super","gadgetfs_create_file","gadgetfs_evict_inode","destroy_ep_files","ep_open","ep_release","gadget_dev_open","dev_release"],"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-workflowvn4pv/series-workflowvn4pv-convert-artifact-2600448912/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvn4pv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_GADGETFS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadgetfs_fill_super","gadgetfs_create_file","gadgetfs_evict_inode","destroy_ep_files","ep_open","ep_release","gadget_dev_open","dev_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_GADGETFS"],"series_id":"a00f9ca9-f8ba-4337-86bb-c07477596ed2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-31 14:47:19 +0000 UTC FinishedAt: 2026-07-31 14:47:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvn4pv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_GADGETFS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadgetfs_fill_super","gadgetfs_create_file","gadgetfs_evict_inode","destroy_ep_files","ep_open","ep_release","gadget_dev_open","dev_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_GADGETFS"],"series_id":"a00f9ca9-f8ba-4337-86bb-c07477596ed2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-31 14:47:19 +0000 UTC FinishedAt: 2026-07-31 14:47:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvn4pv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_GADGETFS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadgetfs_fill_super","gadgetfs_create_file","gadgetfs_evict_inode","destroy_ep_files","ep_open","ep_release","gadget_dev_open","dev_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_GADGETFS"],"series_id":"a00f9ca9-f8ba-4337-86bb-c07477596ed2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-31 14:47:19 +0000 UTC FinishedAt: 2026-07-31 14:47:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvn4pv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_GADGETFS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadgetfs_fill_super","gadgetfs_create_file","gadgetfs_evict_inode","destroy_ep_files","ep_open","ep_release","gadget_dev_open","dev_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_GADGETFS"],"series_id":"a00f9ca9-f8ba-4337-86bb-c07477596ed2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-31 14:47:29 +0000 UTC FinishedAt: 2026-07-31 17:48:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvn4pv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_GADGETFS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadgetfs_fill_super","gadgetfs_create_file","gadgetfs_evict_inode","destroy_ep_files","ep_open","ep_release","gadget_dev_open","dev_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_GADGETFS"],"series_id":"a00f9ca9-f8ba-4337-86bb-c07477596ed2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-31 14:47:29 +0000 UTC FinishedAt: 2026-07-31 17:48:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*686c0312-83f4-4922-bdb8-7ce07879e8b8,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*aa6c797c-4b1f-46c4-9d0a-91259ef2f8ce,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-workflowvn4pv/series-workflowvn4pv-build-action-2640268534/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-workflowvn4pv/series-workflowvn4pv-build-action-2719726363/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-workflowvn4pv/series-workflowvn4pv-convert-artifact-2600448912/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,}