Name: series-workflowj8d2d Phase: Succeeded StartedAt: 2026-08-15 15:51:23 +0000 UTC FinishedAt: 2026-08-15 19:52:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowj8d2d[0] Phase: Succeeded StartedAt: 2026-08-15 15:51:23 +0000 UTC FinishedAt: 2026-08-15 16:08:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowj8d2d[0].run-triage Phase: Succeeded StartedAt: 2026-08-15 15:51:23 +0000 UTC FinishedAt: 2026-08-15 16:08:25 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "24ef02f934eeb48830cff6b739abc3c62b1d107b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BONDING", "NET_TEAM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "24ef02f934eeb48830cff6b739abc3c62b1d107b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BONDING", "NET_TEAM" ], "series_id": "b5b5a9c9-0e42-4c76-a144-e6eea40666d8" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "bond_enslave", "team_port_add" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE2OjA3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JPTkRJTkcmIzM0OywKICAgICYjMzQ7TkVUX1RFQU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtib25kX2Vuc2xhdmUmIzM0OywKICAgICYjMzQ7dGVhbV9wb3J0X2FkZCYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBjaGVjayBgbmV0ZGV2X2hhc19tbF9wcml2KClgIHRvIHByZXZlbnQgbmV0d29yayBkZXZpY2VzIHRoYXQgdXRpbGl6ZSB0aGUgYG1sX3ByaXZgIGZpZWxkIGZyb20gYmVpbmcgZW5zbGF2ZWQgYnkgYm9uZGluZyBvciB0ZWFtaW5nIGRyaXZlcnMuIFRoaXMgaXMgYSBjb250cm9sLWZsb3cgcmVzdHJpY3Rpb24gdG8gYXZvaWQgY29uZmxpY3RzIG9yIGludmFsaWQgY29uZmlndXJhdGlvbnMuIFRoZSBgc3RydWN0IG5ldF9kZXZpY2VgIGlzIHplcm8tYWxsb2NhdGVkLCBtZWFuaW5nIGBtbF9wcml2YCBpcyBwcm9wZXJseSBpbml0aWFsaXplZCB0byBgTlVMTGAgdXBvbiBhbGxvY2F0aW9uLiBUaGUgY2hhbmdlcyBkbyBub3QgaW52b2x2ZSBhbnkgbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMsIG9yIGRhdGEgYmVpbmcgY29waWVkIHRvIHVzZXIgc3BhY2UuIEFueSBwb3RlbnRpYWwgYnVncyByZWxhdGVkIHRvIHRoaXMgY2hhbmdlIHdvdWxkIGxpa2VseSBiZSBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgb3IgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcywgd2hpY2ggYXJlIGZ1bGx5IGNvdmVyZWQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mby1sZWFrcywgc28gYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBjaGVjayBgbmV0ZGV2X2hhc19tbF9wcml2KClgIGluIGBib25kX2Vuc2xhdmVgIGFuZCBgdGVhbV9wb3J0X2FkZGAgdG8gcHJldmVudCBlbnNsYXZpbmcgb3IgYWRkaW5nIGRldmljZXMgdGhhdCB1c2UgYG1sX3ByaXZgIHRvIGJvbmRpbmcgb3IgdGVhbSBkZXZpY2VzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbG9naWMgb2YgYm9uZGluZyBhbmQgdGVhbSBkcml2ZXJzLCB3aGljaCBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGVzZSBmdW5jdGlvbnMgdG8gZW5zdXJlIHRoZSBuZXcgY2hlY2sgY29ycmVjdGx5IGhhbmRsZXMgdmFyaW91cyBkZXZpY2UgdHlwZXMgYW5kIGRvZXNuJiMzOTt0IGludHJvZHVjZSByZWdyZXNzaW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNjowNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGVkNmE0YTk0YTAzYTJjNWRjNDJlMjI2Yjg1MjlhZWRlNThjZmVmOTZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyAxNSAxNjowNzoxNCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jIGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uY1xuaW5kZXggNTIyZWFiMDYwZjllZC4uYmJiMzQ0YjY3NDU4ZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmNcbkBAIC0xODk0LDkgJiM0MzsxODk0LDkgQEAgaW50IGJvbmRfZW5zbGF2ZShzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYsIHN0cnVjdCBuZXRfZGV2aWNlICpzbGF2ZV9kZXYsXG4gXHRzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSBzcztcbiBcdGludCByZXMgPSAwLCBpO1xuIFxuLVx0aWYgKHNsYXZlX2Rldi1cdTAwM2V0eXBlID09IEFSUEhSRF9DQU4pIHtcbiYjNDM7XHRpZiAobmV0ZGV2X2hhc19tbF9wcml2KHNsYXZlX2RldikpIHtcbiBcdFx0Qk9ORF9OTF9FUlIoYm9uZF9kZXYsIGV4dGFjayxcbi1cdFx0XHQgICAgXCYjMzQ7Q0FOIGRldmljZXMgY2Fubm90IGJlIGVuc2xhdmVkXCYjMzQ7KTtcbiYjNDM7XHRcdFx0ICAgIFwmIzM0O2RldmljZXMgdXNpbmcgbWxfcHJpdiBjYW5ub3QgYmUgZW5zbGF2ZWRcJiMzNDspO1xuIFx0XHRyZXR1cm4gLUVQRVJNO1xuIFx0fVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3RlYW0vdGVhbV9jb3JlLmMgYi9kcml2ZXJzL25ldC90ZWFtL3RlYW1fY29yZS5jXG5pbmRleCBmZWFhNzVmYmY4ZmMyLi44YmY0YzFjNWQ2NTczIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvdGVhbS90ZWFtX2NvcmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvdGVhbS90ZWFtX2NvcmUuY1xuQEAgLTEyMTcsNiAmIzQzOzEyMTcsMTMgQEAgc3RhdGljIGludCB0ZWFtX3BvcnRfYWRkKHN0cnVjdCB0ZWFtICp0ZWFtLCBzdHJ1Y3QgbmV0X2RldmljZSAqcG9ydF9kZXYsXG4gXHRjaGFyICpwb3J0bmFtZSA9IHBvcnRfZGV2LVx1MDAzZW5hbWU7XG4gXHRpbnQgZXJyO1xuIFxuJiM0MztcdGlmIChuZXRkZXZfaGFzX21sX3ByaXYocG9ydF9kZXYpKSB7XG4mIzQzO1x0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFwmIzM0O2RldmljZXMgdXNpbmcgbWxfcHJpdiBjYW4mIzM5O3QgYmUgYWRkZWQgYXMgYSB0ZWFtIHBvcnRcJiMzNDspO1xuJiM0MztcdFx0bmV0ZGV2X2VycihkZXYsIFwmIzM0O0RldmljZSAlcyB1c2luZyBtbF9wcml2IGNhbiYjMzk7dCBiZSBhZGRlZCBhcyBhIHRlYW0gcG9ydFxcblwmIzM0OyxcbiYjNDM7XHRcdFx0ICAgcG9ydG5hbWUpO1xuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1x0fVxuJiM0MztcbiBcdGlmIChwb3J0X2Rldi1cdTAwM2VmbGFncyBcdTAwMjYgSUZGX0xPT1BCQUNLKSB7XG4gXHRcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXCYjMzQ7TG9vcGJhY2sgZGV2aWNlIGNhbiYjMzk7dCBiZSBhZGRlZCBhcyBhIHRlYW0gcG9ydFwmIzM0Oyk7XG4gXHRcdG5ldGRldl9lcnIoZGV2LCBcJiMzNDtEZXZpY2UgJXMgaXMgbG9vcGJhY2sgZGV2aWNlLiBMb29wYmFjayBkZXZpY2VzIGNhbiYjMzk7dCBiZSBhZGRlZCBhcyBhIHRlYW0gcG9ydFxcblwmIzM0OyxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oIGIvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaFxuaW5kZXggODg0MGIxMjY5NzlmZi4uNzQ1MzZmNjQyYjQxNCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmhcbkBAIC0yNzg2LDYgJiM0MzsyNzg2LDExIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBuZXRkZXZfc2V0X21sX3ByaXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdGRldi1cdTAwM2VtbF9wcml2X3R5cGUgPSB0eXBlO1xuIH1cbiBcbiYjNDM7c3RhdGljIGlubGluZSBib29sIG5ldGRldl9oYXNfbWxfcHJpdihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIChkZXYtXHUwMDNlbWxfcHJpdiAhPSBOVUxMKTtcbiYjNDM7fVxuJiM0MztcbiAvKlxuICAqIE5ldCBuYW1lc3BhY2UgaW5saW5lc1xuICAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE2OjA3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCT05ESU5HJiMzNDssCiAgICAmIzM0O05FVF9URUFNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Ym9uZF9lbnNsYXZlJiMzNDssCiAgICAmIzM0O3RlYW1fcG9ydF9hZGQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBjaGVjayBgbmV0ZGV2X2hhc19tbF9wcml2KClgIGluIGBib25kX2Vuc2xhdmVgIGFuZCBgdGVhbV9wb3J0X2FkZGAgdG8gcHJldmVudCBlbnNsYXZpbmcgb3IgYWRkaW5nIGRldmljZXMgdGhhdCB1c2UgYG1sX3ByaXZgIHRvIGJvbmRpbmcgb3IgdGVhbSBkZXZpY2VzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbG9naWMgb2YgYm9uZGluZyBhbmQgdGVhbSBkcml2ZXJzLCB3aGljaCBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGVzZSBmdW5jdGlvbnMgdG8gZW5zdXJlIHRoZSBuZXcgY2hlY2sgY29ycmVjdGx5IGhhbmRsZXMgdmFyaW91cyBkZXZpY2UgdHlwZXMgYW5kIGRvZXNuJiMzOTt0IGludHJvZHVjZSByZWdyZXNzaW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGVkNmE0YTk0YTAzYTJjNWRjNDJlMjI2Yjg1MjlhZWRlNThjZmVmOTYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEF1ZyAxNSAxNjowNzoxNCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMgYi9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jCmluZGV4IDUyMmVhYjA2MGY5ZWQuLmJiYjM0NGI2NzQ1OGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYwpAQCAtMTg5NCw5ICYjNDM7MTg5NCw5IEBAIGludCBib25kX2Vuc2xhdmUoc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2LCBzdHJ1Y3QgbmV0X2RldmljZSAqc2xhdmVfZGV2LAogCXN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlIHNzOwogCWludCByZXMgPSAwLCBpOwogCi0JaWYgKHNsYXZlX2Rldi0mZ3Q7dHlwZSA9PSBBUlBIUkRfQ0FOKSB7CiYjNDM7CWlmIChuZXRkZXZfaGFzX21sX3ByaXYoc2xhdmVfZGV2KSkgewogCQlCT05EX05MX0VSUihib25kX2RldiwgZXh0YWNrLAotCQkJICAgICYjMzQ7Q0FOIGRldmljZXMgY2Fubm90IGJlIGVuc2xhdmVkJiMzNDspOwomIzQzOwkJCSAgICAmIzM0O2RldmljZXMgdXNpbmcgbWxfcHJpdiBjYW5ub3QgYmUgZW5zbGF2ZWQmIzM0Oyk7CiAJCXJldHVybiAtRVBFUk07CiAJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC90ZWFtL3RlYW1fY29yZS5jIGIvZHJpdmVycy9uZXQvdGVhbS90ZWFtX2NvcmUuYwppbmRleCBmZWFhNzVmYmY4ZmMyLi44YmY0YzFjNWQ2NTczIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC90ZWFtL3RlYW1fY29yZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3RlYW0vdGVhbV9jb3JlLmMKQEAgLTEyMTcsNiAmIzQzOzEyMTcsMTMgQEAgc3RhdGljIGludCB0ZWFtX3BvcnRfYWRkKHN0cnVjdCB0ZWFtICp0ZWFtLCBzdHJ1Y3QgbmV0X2RldmljZSAqcG9ydF9kZXYsCiAJY2hhciAqcG9ydG5hbWUgPSBwb3J0X2Rldi0mZ3Q7bmFtZTsKIAlpbnQgZXJyOwogCiYjNDM7CWlmIChuZXRkZXZfaGFzX21sX3ByaXYocG9ydF9kZXYpKSB7CiYjNDM7CQlOTF9TRVRfRVJSX01TRyhleHRhY2ssICYjMzQ7ZGV2aWNlcyB1c2luZyBtbF9wcml2IGNhbiYjMzk7dCBiZSBhZGRlZCBhcyBhIHRlYW0gcG9ydCYjMzQ7KTsKJiM0MzsJCW5ldGRldl9lcnIoZGV2LCAmIzM0O0RldmljZSAlcyB1c2luZyBtbF9wcml2IGNhbiYjMzk7dCBiZSBhZGRlZCBhcyBhIHRlYW0gcG9ydFxuJiMzNDssCiYjNDM7CQkJICAgcG9ydG5hbWUpOwomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CX0KJiM0MzsKIAlpZiAocG9ydF9kZXYtJmd0O2ZsYWdzICZhbXA7IElGRl9MT09QQkFDSykgewogCQlOTF9TRVRfRVJSX01TRyhleHRhY2ssICYjMzQ7TG9vcGJhY2sgZGV2aWNlIGNhbiYjMzk7dCBiZSBhZGRlZCBhcyBhIHRlYW0gcG9ydCYjMzQ7KTsKIAkJbmV0ZGV2X2VycihkZXYsICYjMzQ7RGV2aWNlICVzIGlzIGxvb3BiYWNrIGRldmljZS4gTG9vcGJhY2sgZGV2aWNlcyBjYW4mIzM5O3QgYmUgYWRkZWQgYXMgYSB0ZWFtIHBvcnRcbiYjMzQ7LApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaCBiL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgKaW5kZXggODg0MGIxMjY5NzlmZi4uNzQ1MzZmNjQyYjQxNCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oCkBAIC0yNzg2LDYgJiM0MzsyNzg2LDExIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBuZXRkZXZfc2V0X21sX3ByaXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAlkZXYtJmd0O21sX3ByaXZfdHlwZSA9IHR5cGU7CiB9CiAKJiM0MztzdGF0aWMgaW5saW5lIGJvb2wgbmV0ZGV2X2hhc19tbF9wcml2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiYjNDM7ewomIzQzOwlyZXR1cm4gKGRldi0mZ3Q7bWxfcHJpdiAhPSBOVUxMKTsKJiM0Mzt9CiYjNDM7CiAvKgogICogTmV0IG5hbWVzcGFjZSBpbmxpbmVzCiAgKi8KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTY6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU1MQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDE5OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBhIERyaXZlciBNb2RpZmljYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggaGVyZSwgYW5kIGl0IGxvb2tzIGxpa2Ugc29tZW9uZSYjMzk7cyBtYWRlIGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIHRoZSBib25kaW5nIGFuZCB0ZWFtIGRyaXZlcnMuIFNwZWNpZmljYWxseSwgdGhleSYjMzk7dmUgbW9kaWZpZWQgYm90aCBgYm9uZF9lbnNsYXZlYCBpbiBgYm9uZF9tYWluLmNgIGFuZCBgdGVhbV9wb3J0X2FkZGAgaW4gYHRlYW1fY29yZS5jYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyBhZGRpbmcgYSBjaGVjayB0byBwcmV2ZW50IHRoZSBlbnNsYXZlbWVudCBvZiBkZXZpY2VzIHRoYXQgdXRpbGl6ZSBgbWxfcHJpdmAuIEVzc2VudGlhbGx5LCB0aGV5JiMzOTt2ZSBpbnRyb2R1Y2VkIGEgY29uZGl0aW9uOiBgaWYgKG5ldGRldl9oYXNfbWxfcHJpdihzbGF2ZV9kZXYpKWAgb3IgYGlmIChuZXRkZXZfaGFzX21sX3ByaXYocG9ydF9kZXYpYC4gVGhpcyBzZWVtcyB0byBiZSBhIHJlcGxhY2VtZW50IGZvciB0aGUgb2xkZXIgYHNsYXZlX2Rldi0mZ3Q7dHlwZSA9PSBBUlBIUkRfQ0FOYCBjaGVjaywgYXQgbGVhc3QgaW4gdGhlIGJvbmRpbmcgZHJpdmVyLgoKVGhpcyBpcyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgY2hhbmdlLCByZWFsbHkuIEl0IGhhcyB0aGUgZWZmZWN0IG9mIGxpbWl0aW5nIHdoaWNoIG5ldHdvcmsgZGV2aWNlcyBjYW4gYmUgYWRkZWQgdG8gYSBib25kIG9yIHRlYW0gaW50ZXJmYWNlLiBJdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY29uc3RyYWludC4gR2l2ZW4gdGhhdCB3ZSYjMzk7cmUgdGFsa2luZyBhYm91dCBkZXZpY2UgZW5zbGF2ZW1lbnQgYW5kIHBvdGVudGlhbCBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gY2hhbmdlcywgSSB0aGluayB0aGlzIGRlZmluaXRlbHkgbmVlZHMgdG8gYmUgZnV6emVkIHRvIHNlZSBpZiBhbnkgdW5leHBlY3RlZCBiZWhhdmlvcnMgYXJpc2UuIEnigJlsbCBtYWtlIGEgbm90ZSB0byBydW4gZnV6emluZyBvbiB0aGVzZSBjb2RlIHBhdGhzLgoKRm9yIGNvbmZpZ3VyYXRpb24sIGl0IGxvb2tzIGxpa2UgYm9uZGluZyBmdW5jdGlvbmFsaXR5IGRlcGVuZHMgb24gYEJPTkRJTkdgIGFuZCB0aGUgdGVhbSBmdW5jdGlvbmFsaXR5IGlzIGNvbnRyb2xsZWQgYnkgYE5FVF9URUFNYC4gSSBzaG91bGQgdmVyaWZ5IHRob3NlIGNvbmZpZ3MgYXMgYSBmaXJzdCBzdGVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE2OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJPTkRJTkcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ib25kaW5nL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE2OjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwOTIKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSYjMzk7bSBhbiBleHBlcnQgaW4gbmV0d29yayBkcml2ZXIgY29uZmlndXJhdGlvbiB3aXRoaW4gdGhlIExpbnV4IGtlcm5lbDoKCioqRmluZGluZyB0aGUgQk9ORElORyBDb25maWd1cmF0aW9uKioKClJpZ2h0LCBzbyBJIG5lZWQgdG8gZmluZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBuZXR3b3JrIGJvbmRpbmcuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBkaXZlIHJpZ2h0IGludG8gdGhlIGBLY29uZmlnYCBmaWxlcyDigJMgdGhhdCYjMzk7cyB3aGVyZSB0aGUgYnVpbGQgc3lzdGVtIGRlZmluaXRpb25zIGxpdmUsIGFuZCBpdCYjMzk7cyB3aGVyZSB0aGUgb3B0aW9ucyBmb3IgdmFyaW91cyBrZXJuZWwgZmVhdHVyZXMgYXJlIGxhaWQgb3V0LiBJJiMzOTttIHByZXR0eSBzdXJlIHRoZSBib25kaW5nIGRyaXZlciYjMzk7cyBjb25maWd1cmF0aW9uIHdpbGwgYmUgaW4gZWl0aGVyIHRoZSBtYWluIGBkcml2ZXJzL25ldC9LY29uZmlnYCBmaWxlLCBzaW5jZSB0aGF0JiMzOTtzIGEgZ29vZCBjZW50cmFsIHN0YXJ0aW5nIHBvaW50IGZvciBuZXR3b3JrIGRyaXZlcnMsIG9yLCBtb3JlIHNwZWNpZmljYWxseSwgaW4gYGRyaXZlcnMvbmV0L2JvbmRpbmcvS2NvbmZpZ2AgaWYgaXQgaGFzIGl0cyBvd24gZGVkaWNhdGVkIGRpcmVjdG9yeSBhbmQgY29uZmlndXJhdGlvbiBmaWxlLiBJdCYjMzk7cyB1c3VhbGx5IGEgZ29vZCBwcmFjdGljZSBmb3IgdGhpbmdzIGxpa2UgdGhpcyB0byBoYXZlIHRoZWlyIG93biBjb25maWcgZmlsZSB0byBhbGxvdyBmb3IgbW9kdWxhcml0eS4gSSYjMzk7bGwgc3RhcnQgd2l0aCB0aG9zZSBsb2NhdGlvbnMsIGFuZCBzZWUgd2hlcmUgdGhhdCBsZWFkcyBtZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNjowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQk9ORElORyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9LY29uZmlnPTM5PWlmIE5FVF9DT1JFXG5kcml2ZXJzL25ldC9LY29uZmlnLTQwLVxuZHJpdmVycy9uZXQvS2NvbmZpZzo0MTpjb25maWcgQk9ORElOR1xuZHJpdmVycy9uZXQvS2NvbmZpZy00Mi1cdHRyaXN0YXRlIFwmIzM0O0JvbmRpbmcgZHJpdmVyIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNjowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDE0CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkFuYWx5emluZyB0aGUgTkVUX1RFQU0gQ29uc3RydWN0KioKCkFscmlnaHQsIGxldCYjMzk7cyB1bnBhY2sgdGhpcy4gV2hlbiBJIHNlZSAmIzM0O05FVF9URUFNLCYjMzQ7IG15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgaW50byBhIGZldyBhcmVhcy4gRmlyc3QsIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIG5ldHdvcmsgdG9wb2xvZ3kgaXQgaW1wbGllcy4gSXMgdGhpcyBhIHBoeXNpY2FsIG5ldHdvcmssIG9yIGEgbW9yZSBhYnN0cmFjdCBncm91cGluZyB3aXRoaW4gYSBsYXJnZXIgc3lzdGVtLCBwZXJoYXBzIGEgdmlydHVhbCB0ZWFtPyBUaGUgY29udGV4dCBoZXJlIGlzIGNyaXRpY2FsOyB3aXRob3V0IGl0LCBJJiMzOTttIGxlYW5pbmcgdG93YXJkIGFzc3VtaW5nIHRoaXMgaXMgYWJvdXQgbmV0d29yayBhcmNoaXRlY3R1cmUgb3IgYSBsb2dpY2FsbHkgY29ubmVjdGVkIHRlYW0gd2l0aGluIGEgbGFyZ2VyIG9yZ2FuaXphdGlvbi4KCk15IG5leHQgc3RlcCBpcyB0byBjb25zaWRlciB0aGUgaW1wbGljYXRpb25zIG9mICYjMzQ7TkVUJiMzNDsgc3BlY2lmaWNhbGx5LiBJcyB0aGlzIGFib3V0IG5ldHdvcmsgc2VjdXJpdHk/IERhdGEgdHJhbnNmZXIgcHJvdG9jb2xzPyBCYW5kd2lkdGggbWFuYWdlbWVudD8gT3IgcGVyaGFwcyB0aGUgTkVUIGlzIHNpbXBseSBhbiBhYmJyZXZpYXRpb24gZm9yIGFub3RoZXIgY29uY2VwdCBvciBncm91cCB0aGF0IG1ha2VzIHRoaXMgbW9yZSBvZiBhbiAmIzM0O2luLWhvdXNlJiMzNDsgdGVybSB0aGF0IG1pZ2h0IGJlIHVzZWQgYnkgYSBzcGVjaWZpYyBvcmdhbmlzYXRpb24gb3IgdGVhbT8gV2l0aG91dCBhZGRpdGlvbmFsIGNsdWVzLCBJIGhhdmUgdG8gY29uc2lkZXIgYWxsIHBvc3NpYmlsaXRpZXMsIGZyb20gdGhlIGxvd2VzdCBuZXR3b3JrIGxheWVyIHByb3RvY29scyB0byBoaWdoZXItbGV2ZWwgYXBwbGljYXRpb24gaW50ZXJhY3Rpb25zLgoKRmluYWxseSwgdGhlICYjMzQ7VEVBTSYjMzQ7IGNvbXBvbmVudCBpcyBpbnRlcmVzdGluZy4gSG93IGRvZXMgdGhpcyAmIzM0O05FVCYjMzQ7IGZ1bmN0aW9uIGFzIGEgdGVhbT8gSXMgaXQgYSBncm91cCBvZiBlbmdpbmVlcnM/IEEgc2V0IG9mIGF1dG9tYXRlZCBzeXN0ZW1zIHRoYXQgZm9ybSBhIG5ldHdvcms/IEhvdyBkb2VzIGl0IGludGVncmF0ZSB3aXRoIG90aGVyIGVsZW1lbnRzIG9mIHRoaXMgYmlnZ2VyIHBpY3R1cmU/IElzIHRoaXMgYSBzb2Z0d2FyZSB0ZWFtLCBhIG5ldHdvcmsgb3BlcmF0aW9ucyB0ZWFtLCBvciBhIGNyb3NzLWZ1bmN0aW9uYWwgdGVhbSBidWlsdCBhcm91bmQgbmV0d29yay1jZW50cmljIHRhc2tzPyBUaGUgaW50ZXJwbGF5IGJldHdlZW4gdGhlICYjMzQ7TkVUJiMzNDsgYXNwZWN0IGFuZCB0aGUgJiMzNDtURUFNJiMzNDsgYXNwZWN0IGlzIHdoYXQgY2FwdHVyZXMgbXkgZm9jdXMuIEkmIzM5O20gZ29pbmcgdG8gbmVlZCBtb3JlIGluZm9ybWF0aW9uIHRvIGZvcm0gYSBjb25jbHVzaXZlIGFuYWx5c2lzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE2OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfVEVBTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC90ZWFtL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZzoyOm1lbnVjb25maWcgTkVUX1RFQU1cbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7RXRoZXJuZXQgdGVhbSBkcml2ZXIgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZz0xNj1pZiBORVRfVEVBTVxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTE3LVxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnOjE4OmNvbmZpZyBORVRfVEVBTV9NT0RFX0JST0FEQ0FTVFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTE5LVx0dHJpc3RhdGUgXCYjMzQ7QnJvYWRjYXN0IG1vZGUgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy0yOC1cbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZzoyOTpjb25maWcgTkVUX1RFQU1fTU9ERV9ST1VORFJPQklOXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctMzAtXHR0cmlzdGF0ZSBcJiMzNDtSb3VuZC1yb2JpbiBtb2RlIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctNDAtXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWc6NDE6Y29uZmlnIE5FVF9URUFNX01PREVfUkFORE9NXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctNDItXHR0cmlzdGF0ZSBcJiMzNDtSYW5kb20gbW9kZSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTUyLVxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnOjUzOmNvbmZpZyBORVRfVEVBTV9NT0RFX0FDVElWRUJBQ0tVUFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTU0LVx0dHJpc3RhdGUgXCYjMzQ7QWN0aXZlLWJhY2t1cCBtb2RlIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctNjUtXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWc6NjY6Y29uZmlnIE5FVF9URUFNX01PREVfTE9BREJBTEFOQ0VcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy02Ny1cdHRyaXN0YXRlIFwmIzM0O0xvYWQtYmFsYW5jZSBtb2RlIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNjowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTczCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogODYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzoKCioqQW5hbHl6aW5nIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIHNvIHRoZSBjb3JlIG9mIHRoaXMgc2VlbXMgdG8gcmV2b2x2ZSBhcm91bmQgYEJPTkRJTkdgIGFuZCBgTkVUX1RFQU1gIGNvbmZpZ3VyYXRpb25zLiBUaG9zZSBhcmUgdGhlIG9uZXMgd2UmIzM5O3JlIGZvY3VzaW5nIG9uLiBUaGUgcmVsZXZhbnQgZnVuY3Rpb25zIGFyZSBgYm9uZF9lbnNsYXZlYCBhbmQgYHRlYW1fcG9ydF9hZGRgLCB3aGljaCBtYWtlcyBzZW5zZS4gRnVuY3Rpb25hbGx5LCB0aGUgY2hhbmdlIGlzIHNvdW5kIGFuZCByZWFjaGFibGUsIGdvb2QuCgpOb3csIGxldCYjMzk7cyBqdXN0IG1ha2Ugc3VyZSB3ZSBoYXZlbiYjMzk7dCBvdmVybG9va2VkIGFueSBjcnVjaWFsIGRlcGVuZGVuY2llcy4gYEJPTkRJTkdgIHVzdWFsbHkgcmVxdWlyZXMgYElORVRgLCB0aGF0JiMzOTtzIGEgcHJldHR5IHN0YW5kYXJkIGFzc3VtcHRpb24uIEJ1dCB3aGF0IGFib3V0IGBORVRfVEVBTWA/IEkmIzM5O2QgYmV0dGVyIGRvdWJsZS1jaGVjayBpZiBpdCBhbHNvIHJlbGllcyBvbiBgSU5FVGAuIEl0JiMzOTtzIGFsd2F5cyBiZXN0IHRvIGJlIHRob3JvdWdoIGFuZCBub3QgYXNzdW1lIGFueXRoaW5nLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIG5ldHdvcmsgY29uZmlndXJhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE2OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlcGVuZHMgb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC90ZWFtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnPTE4PWNvbmZpZyBORVRfVEVBTV9NT0RFX0JST0FEQ0FTVFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTE5LVx0dHJpc3RhdGUgXCYjMzQ7QnJvYWRjYXN0IG1vZGUgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnOjIwOlx0ZGVwZW5kcyBvbiBORVRfVEVBTVxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTIxLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZz0yOT1jb25maWcgTkVUX1RFQU1fTU9ERV9ST1VORFJPQklOXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctMzAtXHR0cmlzdGF0ZSBcJiMzNDtSb3VuZC1yb2JpbiBtb2RlIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZzozMTpcdGRlcGVuZHMgb24gTkVUX1RFQU1cbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy0zMi1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWc9NDE9Y29uZmlnIE5FVF9URUFNX01PREVfUkFORE9NXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctNDItXHR0cmlzdGF0ZSBcJiMzNDtSYW5kb20gbW9kZSBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWc6NDM6XHRkZXBlbmRzIG9uIE5FVF9URUFNXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctNDQtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnPTUzPWNvbmZpZyBORVRfVEVBTV9NT0RFX0FDVElWRUJBQ0tVUFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTU0LVx0dHJpc3RhdGUgXCYjMzQ7QWN0aXZlLWJhY2t1cCBtb2RlIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZzo1NTpcdGRlcGVuZHMgb24gTkVUX1RFQU1cbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy01Ni1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWc9NjY9Y29uZmlnIE5FVF9URUFNX01PREVfTE9BREJBTEFOQ0VcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy02Ny1cdHRyaXN0YXRlIFwmIzM0O0xvYWQtYmFsYW5jZSBtb2RlIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZzo2ODpcdGRlcGVuZHMgb24gTkVUX1RFQU1cbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy02OS1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTY6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDg4MwoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIHRha2luZyBvbiB0aGUgcGVyc29uYSB5b3UgcmVxdWVzdGVkOgoKKipEZWNvbnN0cnVjdGluZyBEZXBlbmRlbmNpZXMgaW4gQ2hlbWljYWwgQm9uZGluZyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gZGlzc2VjdCB0aGUgdmVyeSBmb3VuZGF0aW9uIG9mIHRoaXMgY29uY2VwdDogYEJPTkRJTkdgLiBJIG5lZWQgdG8gZmlndXJlIG91dCwgd2l0aCBhYnNvbHV0ZSBwcmVjaXNpb24sIHdoYXQgZmFjdG9ycyBhbmQgcHJpbmNpcGxlcyBpdCYjMzk7cyAqZW50aXJlbHkqIGNvbnRpbmdlbnQgdXBvbi4gVGhpcyBpc24mIzM5O3QganVzdCBhIHN1cmZhY2UtbGV2ZWwgb3ZlcnZpZXc7IEkmIzM5O20gdGFsa2luZyBhYm91dCB0aGUgYmVkcm9jay4gV2hhdCBhcmUgdGhlIGZ1bmRhbWVudGFsIHBoeXNpY2FsIGFuZCBjaGVtaWNhbCBwcmluY2lwbGVzPyBXaGF0IG1vZGVscyB1bmRlcnBpbiBvdXIgdW5kZXJzdGFuZGluZz8gQXJlIHdlIHRhbGtpbmcgY2xhc3NpY2FsIGVsZWN0cm9zdGF0aWNzLCBxdWFudHVtIG1lY2hhbmljYWwgZWZmZWN0cywgb3IgYSBibGVuZCBvZiBib3RoPyBXaGF0IGFyZSB0aGUga2V5IG1hdGhlbWF0aWNhbCBleHByZXNzaW9ucywgYW5kIGhvdyBkbyB0aGV5IGludGVycmVsYXRlPyBJdCYjMzk7cyBhYm91dCBwdWxsaW5nIGJhY2sgdGhlIGxheWVycyB1bnRpbCBJIGNhbiBzZWUgdGhlIHJhdywgZXNzZW50aWFsIGNvbXBvbmVudHMuIFRoaXMgcmVxdWlyZXMgYSBzeXN0ZW1hdGljLCBhbG1vc3QgYW5hbHl0aWNhbCBhcHByb2FjaCwgYW5kIEkmIzM5O2xsIG5lZWQgdG8gd29yayB0aHJvdWdoIHRoaXMgY2FyZWZ1bGx5LiBJJiMzOTttIHRoaW5raW5nLi4uIHdoYXQmIzM5O3MgdGhlIGZpcnN0IHByaW5jaXBsZSB0byBjaGVjaz8KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTY6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJPTkRJTkcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWc9Mzk9aWYgTkVUX0NPUkVcbmRyaXZlcnMvbmV0L0tjb25maWctNDAtXG5kcml2ZXJzL25ldC9LY29uZmlnOjQxOmNvbmZpZyBCT05ESU5HXG5kcml2ZXJzL25ldC9LY29uZmlnLTQyLVx0dHJpc3RhdGUgXCYjMzQ7Qm9uZGluZyBkcml2ZXIgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNjowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTkxCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkmIzM5O20gdGFraW5nIGEgbG9vayBhdCB0aGlzIGNvbmZpZ3VyYXRpb24sIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiB3aGF0JiMzOTtzIHVuZGVyIHRoZSBgY29uZmlnIEJPTkRJTkdgIGRpcmVjdGl2ZS4gTXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgaXMgdG8gdW5kZXJzdGFuZCB0aGUgaW50ZW50IGFuZCBzdHJ1Y3R1cmUgaGVyZS4gSSYjMzk7bSBleHBlY3RpbmcgdG8gc2VlIGRlZmluaXRpb25zIHJlbGF0ZWQgdG8gbmV0d29yayBib25kaW5nIOKAkyBpbnRlcmZhY2UgYWdncmVnYXRpb24sIGxvYWQgYmFsYW5jaW5nLCBmYWlsb3ZlciwgdGhhdCBzb3J0IG9mIHRoaW5nLiBJIGFudGljaXBhdGUgcG90ZW50aWFsbHkgc2VlaW5nIGRpZmZlcmVudCBib25kaW5nIG1vZGVzIGRlZmluZWQgKGUuZy4sIGFjdGl2ZS1iYWNrdXAsIExBQ1AsIGJhbGFuY2UtcnIsIGV0Yy4pLCBhbG9uZyB3aXRoIGFzc29jaWF0ZWQgcGFyYW1ldGVycyBsaWtlIHRoZSBpbnRlcmZhY2VzIGludm9sdmVkLCB0aGUgYm9uZGluZyBkcml2ZXIgYmVpbmcgdXNlZCwgYW5kIHBlcmhhcHMgZXZlbiBzb21lIHR1bmluZyBvcHRpb25zIGxpa2UgdGhlIHRyYW5zbWl0IGhhc2ggcG9saWN5IG9yIEFSUCBtb25pdG9yaW5nIHNldHRpbmdzLiBJJiMzOTttIG1lbnRhbGx5IHBhcnNpbmcgdGhpcyBmb3IgYmVzdCBwcmFjdGljZXMgb3IgYW55IGltbWVkaWF0ZSByZWQgZmxhZ3MuIEkgYW0gaW1tZWRpYXRlbHkgYXdhcmUgb2YgbXkgbmVlZCB0byBjb21wYXJlIHRoaXMgY29uZmlnIHdpdGggYmVzdCBwcmFjdGljZSBhbmQgbXkgb3duIHByZXZpb3VzIGV4cGVyaWVuY2UuIEkgbmVlZCB0byBub3RlIGFueSB1bnVzdWFsIG9yIHVuZXhwZWN0ZWQgc2V0dGluZ3MuIFVsdGltYXRlbHksIEkmIzM5O20gdHJ5aW5nIHRvIHF1aWNrbHkgYXNjZXJ0YWluIHRoZSBvdmVyYWxsIG5ldHdvcmtpbmcgZGVzaWduIHdpdGhpbiB0aGlzIHNlY3Rpb24gYW5kIHdoZXRoZXIgaXQgYWxpZ25zIHdpdGggcGVyZm9ybWFuY2UgYW5kIHJlZHVuZGFuY3kgcmVxdWlyZW1lbnRzIGZvciB0aGUgc3lzdGVtLiBJJiMzOTttIGxvb2tpbmcgZm9yIGEgY2xlYXIgYW5kIGNvbmNpc2UgZGVjbGFyYXRpb24gb2YgdGhlIGJvbmRpbmcgc2V0dXAgYW5kIGhvdyBpdCB3aWxsIG9wZXJhdGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE2OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlcGVuZHMgb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWc9Nj1tZW51Y29uZmlnIE5FVERFVklDRVNcbmRyaXZlcnMvbmV0L0tjb25maWctNy1cdGRlZmF1bHQgeSBpZiBVTUxcbmRyaXZlcnMvbmV0L0tjb25maWc6ODpcdGRlcGVuZHMgb24gTkVUXG5kcml2ZXJzL25ldC9LY29uZmlnLTktXHRib29sIFwmIzM0O05ldHdvcmsgZGV2aWNlIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTQxPWNvbmZpZyBCT05ESU5HXG5kcml2ZXJzL25ldC9LY29uZmlnLTQyLVx0dHJpc3RhdGUgXCYjMzQ7Qm9uZGluZyBkcml2ZXIgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzo0MzpcdGRlcGVuZHMgb24gSU5FVFxuZHJpdmVycy9uZXQvS2NvbmZpZzo0NDpcdGRlcGVuZHMgb24gVExTIHx8IFRMU19ERVZJQ0U9blxuZHJpdmVycy9uZXQvS2NvbmZpZy00NS1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTc0PWNvbmZpZyBXSVJFR1VBUkRcbmRyaXZlcnMvbmV0L0tjb25maWctNzUtXHR0cmlzdGF0ZSBcJiMzNDtXaXJlR3VhcmQgc2VjdXJlIG5ldHdvcmsgdHVubmVsXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjc2Olx0ZGVwZW5kcyBvbiBORVQgXHUwMDI2XHUwMDI2IElORVRcbmRyaXZlcnMvbmV0L0tjb25maWctNzctXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTkyPWNvbmZpZyBXSVJFR1VBUkRfREVCVUdcbmRyaXZlcnMvbmV0L0tjb25maWctOTMtXHRib29sIFwmIzM0O0RlYnVnZ2luZyBjaGVja3MgYW5kIHZlcmJvc2UgbWVzc2FnZXNcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6OTQ6XHRkZXBlbmRzIG9uIFdJUkVHVUFSRFxuZHJpdmVycy9uZXQvS2NvbmZpZy05NS1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTEwMz1jb25maWcgT1ZQTlxuZHJpdmVycy9uZXQvS2NvbmZpZy0xMDQtXHR0cmlzdGF0ZSBcJiMzNDtPcGVuVlBOIGRhdGEgY2hhbm5lbCBvZmZsb2FkXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjEwNTpcdGRlcGVuZHMgb24gTkVUIFx1MDAyNlx1MDAyNiBJTkVUXG5kcml2ZXJzL25ldC9LY29uZmlnLTEwNi1cdHNlbGVjdCBEU1RfQ0FDSEVcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTEzNj1jb25maWcgTkVUX0ZDXG5kcml2ZXJzL25ldC9LY29uZmlnLTEzNy1cdGJvb2wgXCYjMzQ7RmlicmUgQ2hhbm5lbCBkcml2ZXIgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzoxMzg6XHRkZXBlbmRzIG9uIFNDU0kgXHUwMDI2XHUwMDI2IFBDSVxuZHJpdmVycy9uZXQvS2NvbmZpZy0xMzktXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0xNDk9Y29uZmlnIElGQlxuZHJpdmVycy9uZXQvS2NvbmZpZy0xNTAtXHR0cmlzdGF0ZSBcJiMzNDtJbnRlcm1lZGlhdGUgRnVuY3Rpb25hbCBCbG9jayBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjE1MTpcdGRlcGVuZHMgb24gTkVUX0FDVF9NSVJSRUQgfHwgTkZUX0ZXRF9ORVRERVZcbmRyaXZlcnMvbmV0L0tjb25maWctMTUyLVx0c2VsZWN0IE5FVF9SRURJUkVDVFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9MTc5PWNvbmZpZyBNQUNWVEFQXG5kcml2ZXJzL25ldC9LY29uZmlnLTE4MC1cdHRyaXN0YXRlIFwmIzM0O01BQy1WTEFOIGJhc2VkIHRhcCBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6MTgxOlx0ZGVwZW5kcyBvbiBNQUNWTEFOXG5kcml2ZXJzL25ldC9LY29uZmlnOjE4MjpcdGRlcGVuZHMgb24gSU5FVFxuZHJpdmVycy9uZXQvS2NvbmZpZy0xODMtXHRzZWxlY3QgVEFQXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0xOTM9Y29uZmlnIElQVkxBTl9MM1NcbmRyaXZlcnMvbmV0L0tjb25maWc6MTk0Olx0ZGVwZW5kcyBvbiBORVRGSUxURVJcbmRyaXZlcnMvbmV0L0tjb25maWc6MTk1Olx0ZGVwZW5kcyBvbiBJUFZMQU5cbmRyaXZlcnMvbmV0L0tjb25maWctMTk2LVx0ZGVmX2Jvb2wgeVxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9MTk5PWNvbmZpZyBJUFZMQU5cbmRyaXZlcnMvbmV0L0tjb25maWctMjAwLVx0dHJpc3RhdGUgXCYjMzQ7SVAtVkxBTiBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjIwMTpcdGRlcGVuZHMgb24gSU5FVFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yMDItXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0yMTY9Y29uZmlnIElQVlRBUFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yMTctXHR0cmlzdGF0ZSBcJiMzNDtJUC1WTEFOIGJhc2VkIHRhcCBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6MjE4Olx0ZGVwZW5kcyBvbiBJUFZMQU5cbmRyaXZlcnMvbmV0L0tjb25maWc6MjE5Olx0ZGVwZW5kcyBvbiBJTkVUXG5kcml2ZXJzL25ldC9LY29uZmlnLTIyMC1cdHNlbGVjdCBUQVBcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTIzMD1jb25maWcgVlhMQU5cbmRyaXZlcnMvbmV0L0tjb25maWctMjMxLVx0dHJpc3RhdGUgXCYjMzQ7VmlydHVhbCBlWHRlbnNpYmxlIExvY2FsIEFyZWEgTmV0d29yayAoVlhMQU4pXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjIzMjpcdGRlcGVuZHMgb24gSU5FVFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yMzMtXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTI0NT1jb25maWcgR0VORVZFXG5kcml2ZXJzL25ldC9LY29uZmlnLTI0Ni1cdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgTmV0d29yayBWaXJ0dWFsaXphdGlvbiBFbmNhcHN1bGF0aW9uXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjI0NzpcdGRlcGVuZHMgb24gSU5FVFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yNDgtXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTI2MD1jb25maWcgQkFSRVVEUFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yNjEtXHR0cmlzdGF0ZSBcJiMzNDtCYXJlIFVEUCBFbmNhcHN1bGF0aW9uXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjI2MjpcdGRlcGVuZHMgb24gSU5FVFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yNjMtXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTI3Mj1jb25maWcgR1RQXG5kcml2ZXJzL25ldC9LY29uZmlnLTI3My1cdHRyaXN0YXRlIFwmIzM0O0dQUlMgVHVubmVsaW5nIFByb3RvY29sIGRhdGFwYXRoIChHVFAtVSlcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6Mjc0Olx0ZGVwZW5kcyBvbiBJTkVUXG5kcml2ZXJzL25ldC9LY29uZmlnLTI3NS1cdHNlbGVjdCBORVRfVURQX1RVTk5FTFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9Mjg5PWNvbmZpZyBQRkNQXG5kcml2ZXJzL25ldC9LY29uZmlnLTI5MC1cdHRyaXN0YXRlIFwmIzM0O1BhY2tldCBGb3J3YXJkaW5nIENvbnRyb2wgUHJvdG9jb2wgKFBGQ1ApXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjI5MTpcdGRlcGVuZHMgb24gSU5FVFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yOTItXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTMwMj1jb25maWcgQU1UXG5kcml2ZXJzL25ldC9LY29uZmlnLTMwMy1cdHRyaXN0YXRlIFwmIzM0O0F1dG9tYXRpYyBNdWx0aWNhc3QgVHVubmVsaW5nIChBTVQpXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjMwNDpcdGRlcGVuZHMgb24gSU5FVCBcdTAwMjZcdTAwMjYgSVBfTVVMVElDQVNUXG5kcml2ZXJzL25ldC9LY29uZmlnLTMwNS1cdHNlbGVjdCBORVRfVURQX1RVTk5FTFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9MzI3PWNvbmZpZyBORVRDT05TT0xFXG5kcml2ZXJzL25ldC9LY29uZmlnLTMyOC1cdHRyaXN0YXRlIFwmIzM0O05ldHdvcmsgY29uc29sZSBsb2dnaW5nIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6MzI5Olx0ZGVwZW5kcyBvbiBQUklOVEtcbmRyaXZlcnMvbmV0L0tjb25maWctMzMwLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9MzM0PWNvbmZpZyBORVRDT05TT0xFX0RZTkFNSUNcbmRyaXZlcnMvbmV0L0tjb25maWctMzM1LVx0Ym9vbCBcJiMzNDtEeW5hbWljIHJlY29uZmlndXJhdGlvbiBvZiBsb2dnaW5nIHRhcmdldHNcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6MzM2Olx0ZGVwZW5kcyBvbiBORVRDT05TT0xFIFx1MDAyNlx1MDAyNiBTWVNGUyBcdTAwMjZcdTAwMjYgQ09ORklHRlNfRlMgXHUwMDI2XHUwMDI2IFxcXG5kcml2ZXJzL25ldC9LY29uZmlnLTMzNy1cdFx0XHQhKE5FVENPTlNPTEU9eSBcdTAwMjZcdTAwMjYgQ09ORklHRlNfRlM9bSlcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTM0NT1jb25maWcgTkVUQ09OU09MRV9FWFRFTkRFRF9MT0dcbmRyaXZlcnMvbmV0L0tjb25maWctMzQ2LVx0Ym9vbCBcJiMzNDtTZXQga2VybmVsIGV4dGVuZGVkIG1lc3NhZ2UgYnkgZGVmYXVsdFwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzozNDc6XHRkZXBlbmRzIG9uIE5FVENPTlNPTEVcbmRyaXZlcnMvbmV0L0tjb25maWctMzQ4LVx0ZGVmYXVsdCBuXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0zNTU9Y29uZmlnIE5FVENPTlNPTEVfUFJFUEVORF9SRUxFQVNFXG5kcml2ZXJzL25ldC9LY29uZmlnLTM1Ni1cdGJvb2wgXCYjMzQ7UHJlcGVuZCBrZXJuZWwgcmVsZWFzZSB2ZXJzaW9uIGluIHRoZSBtZXNzYWdlIGJ5IGRlZmF1bHRcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6MzU3Olx0ZGVwZW5kcyBvbiBORVRDT05TT0xFX0VYVEVOREVEX0xPR1xuZHJpdmVycy9uZXQvS2NvbmZpZy0zNTgtXHRkZWZhdWx0IG5cbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTM3Mz1jb25maWcgTlRCX05FVERFVlxuZHJpdmVycy9uZXQvS2NvbmZpZy0zNzQtXHR0cmlzdGF0ZSBcJiMzNDtWaXJ0dWFsIEV0aGVybmV0IG92ZXIgTlRCIFRyYW5zcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzozNzU6XHRkZXBlbmRzIG9uIE5UQl9UUkFOU1BPUlRcbmRyaXZlcnMvbmV0L0tjb25maWctMzc2LVxuZHJpdmVycy9uZXQvS2NvbmZpZz0zNzc9Y29uZmlnIFJJT05FVFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zNzgtXHR0cmlzdGF0ZSBcJiMzNDtSYXBpZElPIEV0aGVybmV0IG92ZXIgbWVzc2FnaW5nIGRyaXZlciBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjM3OTpcdGRlcGVuZHMgb24gUkFQSURJT1xuZHJpdmVycy9uZXQvS2NvbmZpZy0zODAtXG5kcml2ZXJzL25ldC9LY29uZmlnPTM4MT1jb25maWcgUklPTkVUX1RYX1NJWkVcbmRyaXZlcnMvbmV0L0tjb25maWctMzgyLVx0aW50IFwmIzM0O051bWJlciBvZiBvdXRib3VuZCBxdWV1ZSBlbnRyaWVzXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjM4MzpcdGRlcGVuZHMgb24gUklPTkVUXG5kcml2ZXJzL25ldC9LY29uZmlnLTM4NC1cdGRlZmF1bHQgXCYjMzQ7MTI4XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0zODY9Y29uZmlnIFJJT05FVF9SWF9TSVpFXG5kcml2ZXJzL25ldC9LY29uZmlnLTM4Ny1cdGludCBcJiMzNDtOdW1iZXIgb2YgaW5ib3VuZCBxdWV1ZSBlbnRyaWVzXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjM4ODpcdGRlcGVuZHMgb24gUklPTkVUXG5kcml2ZXJzL25ldC9LY29uZmlnLTM4OS1cdGRlZmF1bHQgXCYjMzQ7MTI4XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0zOTE9Y29uZmlnIFRVTlxuZHJpdmVycy9uZXQvS2NvbmZpZy0zOTItXHR0cmlzdGF0ZSBcJiMzNDtVbml2ZXJzYWwgVFVOL1RBUCBkZXZpY2UgZHJpdmVyIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6MzkzOlx0ZGVwZW5kcyBvbiBJTkVUXG5kcml2ZXJzL25ldC9LY29uZmlnLTM5NC1cdHNlbGVjdCBDUkMzMlxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9NDQzPWNvbmZpZyBWSVJUSU9fTkVUXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ0NC1cdHRyaXN0YXRlIFwmIzM0O1ZpcnRpbyBuZXR3b3JrIGRyaXZlclwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzo0NDU6XHRkZXBlbmRzIG9uIFZJUlRJT1xuZHJpdmVycy9uZXQvS2NvbmZpZy00NDYtXHRzZWxlY3QgTkVUX0ZBSUxPVkVSXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz00NjM9Y29uZmlnIE5FVEtJVFxuZHJpdmVycy9uZXQvS2NvbmZpZy00NjQtXHRib29sIFwmIzM0O0JQRi1wcm9ncmFtbWFibGUgbmV0d29yayBkZXZpY2VcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6NDY1Olx0ZGVwZW5kcyBvbiBCUEZfU1lTQ0FMTFxuZHJpdmVycy9uZXQvS2NvbmZpZy00NjYtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz00NzI9Y29uZmlnIE5FVF9WUkZcbmRyaXZlcnMvbmV0L0tjb25maWctNDczLVx0dHJpc3RhdGUgXCYjMzQ7VmlydHVhbCBSb3V0aW5nIGFuZCBGb3J3YXJkaW5nIChMaXRlKVwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzo0NzQ6XHRkZXBlbmRzIG9uIElQX01VTFRJUExFX1RBQkxFU1xuZHJpdmVycy9uZXQvS2NvbmZpZzo0NzU6XHRkZXBlbmRzIG9uIE5FVF9MM19NQVNURVJfREVWXG5kcml2ZXJzL25ldC9LY29uZmlnOjQ3NjpcdGRlcGVuZHMgb24gSVBWNl9NVUxUSVBMRV9UQUJMRVMgfHwgSVBWNj1uXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ3Ny1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTQ4MT1jb25maWcgVlNPQ0tNT05cbmRyaXZlcnMvbmV0L0tjb25maWctNDgyLVx0dHJpc3RhdGUgXCYjMzQ7VmlydHVhbCB2c29jayBtb25pdG9yaW5nIGRldmljZVwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzo0ODM6XHRkZXBlbmRzIG9uIFZIT1NUX1ZTT0NLXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ4NC1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTQ4OT1jb25maWcgTUhJX05FVFxuZHJpdmVycy9uZXQvS2NvbmZpZy00OTAtXHR0cmlzdGF0ZSBcJiMzNDtNSEkgbmV0d29yayBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6NDkxOlx0ZGVwZW5kcyBvbiBNSElfQlVTXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ5Mi1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTU0ND1jb25maWcgWEVOX05FVERFVl9GUk9OVEVORFxuZHJpdmVycy9uZXQvS2NvbmZpZy01NDUtXHR0cmlzdGF0ZSBcJiMzNDtYZW4gbmV0d29yayBkZXZpY2UgZnJvbnRlbmQgZHJpdmVyXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjU0NjpcdGRlcGVuZHMgb24gWEVOXG5kcml2ZXJzL25ldC9LY29uZmlnLTU0Ny1cdHNlbGVjdCBYRU5fWEVOQlVTX0ZST05URU5EXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz01NjI9Y29uZmlnIFhFTl9ORVRERVZfQkFDS0VORFxuZHJpdmVycy9uZXQvS2NvbmZpZy01NjMtXHR0cmlzdGF0ZSBcJiMzNDtYZW4gYmFja2VuZCBuZXR3b3JrIGRldmljZVwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzo1NjQ6XHRkZXBlbmRzIG9uIFhFTl9CQUNLRU5EXG5kcml2ZXJzL25ldC9LY29uZmlnLTU2NS1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTU4ND1jb25maWcgVk1YTkVUM1xuZHJpdmVycy9uZXQvS2NvbmZpZy01ODUtXHR0cmlzdGF0ZSBcJiMzNDtWTXdhcmUgVk1YTkVUMyBldGhlcm5ldCBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6NTg2Olx0ZGVwZW5kcyBvbiBQQ0kgXHUwMDI2XHUwMDI2IElORVRcbmRyaXZlcnMvbmV0L0tjb25maWc6NTg3Olx0ZGVwZW5kcyBvbiBQQUdFX1NJWkVfTEVTU19USEFOXzY0S0JcbmRyaXZlcnMvbmV0L0tjb25maWctNTg4LVx0c2VsZWN0IFBBR0VfUE9PTFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9NTk0PWNvbmZpZyBGVUpJVFNVX0VTXG5kcml2ZXJzL25ldC9LY29uZmlnLTU5NS1cdHRyaXN0YXRlIFwmIzM0O0ZVSklUU1UgRXh0ZW5kZWQgU29ja2V0IE5ldHdvcmsgRGV2aWNlIGRyaXZlclwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzo1OTY6XHRkZXBlbmRzIG9uIEFDUElcbmRyaXZlcnMvbmV0L0tjb25maWctNTk3LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9NjA0PWNvbmZpZyBORVRERVZTSU1cbmRyaXZlcnMvbmV0L0tjb25maWctNjA1LVx0dHJpc3RhdGUgXCYjMzQ7U2ltdWxhdGVkIG5ldHdvcmtpbmcgZGV2aWNlXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjYwNjpcdGRlcGVuZHMgb24gREVCVUdfRlNcbmRyaXZlcnMvbmV0L0tjb25maWc6NjA3Olx0ZGVwZW5kcyBvbiBJTkVUXG5kcml2ZXJzL25ldC9LY29uZmlnOjYwODpcdGRlcGVuZHMgb24gUFNBTVBMRSB8fCBQU0FNUExFPW5cbmRyaXZlcnMvbmV0L0tjb25maWc6NjA5Olx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19NT0NLIHx8IFBUUF8xNTg4X0NMT0NLX01PQ0s9blxuZHJpdmVycy9uZXQvS2NvbmZpZy02MTAtXHRzZWxlY3QgTkVUX0RFVkxJTktcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTY6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODQ5NAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDcyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyBOZXR3b3JrIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoZXNlIG5ldHdvcmsgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJdCBsb29rcyBsaWtlIGBCT05ESU5HYCBpcyBleHBsaWNpdGx5IHJlbGlhbnQgb24gYm90aCBgSU5FVGAgYW5kIGVpdGhlciBgVExTYCBvciwgY3J1Y2lhbGx5LCBgVExTX0RFVklDRWAgKm5vdCogYmVpbmcgZGVmaW5lZC4gVGhhdCYjMzk7cyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLiBOb3csIEkmIzM5O20gbG9va2luZyBhdCBgTkVUX1RFQU1gLiBNeSBpbml0aWFsIGltcHJlc3Npb24gd2FzIHRoYXQgaXQgb25seSBuZWVkZWQgYE5FVGAsIGFuZCBub3RoaW5nIGVsc2UuIEkgbmVlZCB0byBtYWtlIGNlcnRhaW4gdGhvdWdoLCBzbyBJJiMzOTtsbCBkb3VibGUtY2hlY2sgdGhlIEtjb25maWcgZmlsZSBmb3IgYE5FVF9URUFNYC4gSSBrbm93IEnigJl2ZSBzZWVuIHRoYXQgZHJpdmVyIGJlZm9yZS4gQWgsIHllcywgaXQmIzM5O3MgbG9jYXRlZCBpbiBgZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnYC4gTGV0IG1lIGdvIGJhY2sgdGhlcmUgYW5kIHJlLWV4YW1pbmUgdGhhdCBLY29uZmlnIGZpbGUganVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE2OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlcGVuZHMgb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC90ZWFtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnPTE4PWNvbmZpZyBORVRfVEVBTV9NT0RFX0JST0FEQ0FTVFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTE5LVx0dHJpc3RhdGUgXCYjMzQ7QnJvYWRjYXN0IG1vZGUgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnOjIwOlx0ZGVwZW5kcyBvbiBORVRfVEVBTVxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTIxLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZz0yOT1jb25maWcgTkVUX1RFQU1fTU9ERV9ST1VORFJPQklOXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctMzAtXHR0cmlzdGF0ZSBcJiMzNDtSb3VuZC1yb2JpbiBtb2RlIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZzozMTpcdGRlcGVuZHMgb24gTkVUX1RFQU1cbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy0zMi1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWc9NDE9Y29uZmlnIE5FVF9URUFNX01PREVfUkFORE9NXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctNDItXHR0cmlzdGF0ZSBcJiMzNDtSYW5kb20gbW9kZSBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWc6NDM6XHRkZXBlbmRzIG9uIE5FVF9URUFNXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctNDQtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnPTUzPWNvbmZpZyBORVRfVEVBTV9NT0RFX0FDVElWRUJBQ0tVUFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTU0LVx0dHJpc3RhdGUgXCYjMzQ7QWN0aXZlLWJhY2t1cCBtb2RlIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZzo1NTpcdGRlcGVuZHMgb24gTkVUX1RFQU1cbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy01Ni1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWc9NjY9Y29uZmlnIE5FVF9URUFNX01PREVfTE9BREJBTEFOQ0VcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy02Ny1cdHRyaXN0YXRlIFwmIzM0O0xvYWQtYmFsYW5jZSBtb2RlIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZzo2ODpcdGRlcGVuZHMgb24gTkVUX1RFQU1cbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy02OS1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTY6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTE3OAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGluIHRoZSBmaXJzdCBwZXJzb24sIGFzc3VtaW5nIHRoZSBjb250ZXh0IGlzIGtlcm5lbCBkZXZlbG9wbWVudCBhbmQgSSYjMzk7bSBhbiBleHBlcnQ6CgoqKkludmVzdGlnYXRpbmcgYSBOZXR3b3JrIERyaXZlciYjMzk7cyBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgbGV0IG1lIHNlZS4gYE5FVF9URUFNYC4uLiBIbW0sIGl0IHNlZW1zIGxpa2UgdGhlcmUgYXJlIG5vIGV4cGxpY2l0IGBkZXBlbmRzIG9uYCBjbGF1c2VzIGxpc3RlZCBmb3IgYE5FVF9URUFNYCBpdHNlbGYgaW4gdGhlIEtjb25maWcgZmlsZS4gVGhhdCYjMzk7cyB1bnVzdWFsLiBJdCBtYWtlcyBtZSB3b25kZXIgd2hhdCB0aGUgYWN0aXZhdGlvbiBjcml0ZXJpYSBhcmUgZm9yIHRoaXMgdGhpbmcuIEFoYSEgV2FpdCBhIHNlY29uZC4uLiBJIGJldCBpdCYjMzk7cyBpbmNsdWRlZCBmcm9tIGBkcml2ZXJzL25ldC9LY29uZmlnYCwgaXNuJiMzOTt0IGl0PyBUaGF0IHdvdWxkIGV4cGxhaW4gdGhlIGxhY2sgb2YgZGlyZWN0IGRlcGVuZGVuY2llcyBpbiB0aGlzIHNlY3Rpb24uIEkgbmVlZCB0byBnbyBsb29rIHRoZXJlIGFuZCBzZWUgd2hhdCBjb25kaXRpb25hbHMgYXJlIGFwcGxpZWQgaW4gdGhhdCBmaWxlIHRoYXQgYnJpbmcgYE5FVF9URUFNYCBpbnRvIHRoZSBwaWN0dXJlLiBUaGF0IHdpbGwgY2xhcmlmeSBob3cgdGhpcyBmZWF0dXJlIGlzIGVuYWJsZWQsIGV2ZW4gaWYgdGhlIG9wdGlvbiBpdHNlbGYgZG9lc24mIzM5O3QgZXhwbGljaXRseSBzdGF0ZSBpdHMgcmVxdWlyZW1lbnRzIGRpcmVjdGx5IGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE2OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC90ZWFtL0tjb25maWdcJiMzNDsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWc9MTQ5PWNvbmZpZyBJRkJcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTE2Mi1cbmRyaXZlcnMvbmV0L0tjb25maWc6MTYzOnNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC90ZWFtL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWctMTY0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNjowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NTA4CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMTY0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIE5ldHdvcmsgVGVhbSBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O3ZlIG5hdmlnYXRlZCB0byBgZHJpdmVycy9uZXQvS2NvbmZpZ2AsIGFuZCBhcyBleHBlY3RlZCwgYE5FVF9URUFNYCBzaXRzIGNvbWZvcnRhYmx5IHVuZGVyIGBtZW51Y29uZmlnIE5FVERFVklDRVNgLCB3aGljaCBpcyBpdHNlbGYgZGVwZW5kZW50IG9uIGBORVRgLiBHb29kLCB0aGF0IHZhbGlkYXRlcyB0aGUgaW5pdGlhbCBhc3N1bXB0aW9ucywgdGhlIGBORVRfVEVBTWAgZGVwZW5kZW5jeSBpcyBpbiBwbGFjZS4KCk5vdywgdGhlIGNydWNpYWwgbmV4dCBzdGVwLiBXZSBuZWVkIHRvIGV4cGxpY2l0bHkgZW5zdXJlIHRoYXQgYm90aCBgQk9ORElOR2AgYW5kIGBORVRfVEVBTWAgYXJlIGVuYWJsZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24uIFRoYXQgZmVlbHMgbGlrZSBhIHByZXJlcXVpc2l0ZSB0byBhbnkgcmVhbCBmdW5jdGlvbmFsaXR5LgoKQW5kIGxldOKAmXMgbG9vayBhdCB0aGUgdGVhbSBtb2RlczogYE5FVF9URUFNX01PREVfUk9VTkRST0JJTmAsIGBORVRfVEVBTV9NT0RFX0FDVElWRUJBQ0tVUGAsIGBORVRfVEVBTV9NT0RFX0JST0FEQ0FTVGAsIGBORVRfVEVBTV9NT0RFX1JBTkRPTWAsIGFuZCBgTkVUX1RFQU1fTU9ERV9MT0FEQkFMQU5DRWAuIEkmIzM5O20gZ3Vlc3NpbmcgdGhlc2Ugd2lsbCBiZSBlc3NlbnRpYWwgZm9yIGFjdHVhbGx5ICp1c2luZyogdGhlIHRlYW1pbmcgZmVhdHVyZXMuIFNvLCB0aGV5IHdhcnJhbnQgY2xvc2VyIGluc3BlY3Rpb24uCgpXYWl0LCBob2xkIG9uIGEgc2Vjb25kLiBgdGVhbV9wb3J0X2FkZGAsIHdoaWNoIGlzIGZ1bmRhbWVudGFsIHRvIHRoZSB3aG9sZSB0aGluZywgaXMgYWN0dWFsbHkgaW1wbGVtZW50ZWQgaW4gYHRlYW1fY29yZS5jYC4gQW5kIHRoYXQgY29kZSBpcyBjb21waWxlZCBvbmx5IGlmIGBORVRfVEVBTWAgaXMgZW5hYmxlZC4gVGhhdOKAmXMgYSBrZXkgcGllY2Ugb2YgaW5mb3JtYXRpb24uIExldCYjMzk7cyBtYWtlIGNlcnRhaW4gdGhhdCYjMzk7cyB0aGUgb25seSBwcmUtcmVxdWlzaXRlLgoKUmlnaHQsIHRpbWUgdG8gY2hlY2sgYGRyaXZlcnMvbmV0L3RlYW0vTWFrZWZpbGVgIHRvIGNvbmZpcm0gdGhlIHJlbGF0aW9uc2hpcC4gTGV0JiMzOTtzIHNlZSBob3cgdGhlIG9iamVjdHMgZ2V0IGJ1aWx0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNjowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0ZWFtX2NvcmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC90ZWFtL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3RlYW0vTWFrZWZpbGUtNS1cbmRyaXZlcnMvbmV0L3RlYW0vTWFrZWZpbGU6Njp0ZWFtLXk6PSB0ZWFtX2NvcmUubyB0ZWFtX25sLm9cbmRyaXZlcnMvbmV0L3RlYW0vTWFrZWZpbGUtNy1vYmotJChDT05GSUdfTkVUX1RFQU0pICYjNDM7PSB0ZWFtLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTY6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAwODEKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA1OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzcywgZ2l2ZW4gbXkgZXhwZXJ0aXNlOgoKKipNeSBEZWR1Y3RpdmUgUmVhc29uaW5nIG9uIEtlcm5lbCBNb2R1bGUgRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUuIFRoaW5raW5nIGFib3V0IHRoaXMga2VybmVsIG1vZHVsZSBzaXR1YXRpb24uLi4gYHRlYW1fY29yZS5vYCBpcyBkZWZpbml0ZWx5IHB1bGxlZCBpbiBhcyBwYXJ0IG9mIHRoZSBicm9hZGVyIGB0ZWFtLm9gIGJ1aWxkIHByb2Nlc3MsIGFuZCB0aGF0IGVudGlyZSBgdGVhbS5vYCB0aGluZyBpcyBzcGVjaWZpY2FsbHkgZ292ZXJuZWQgYnkgYENPTkZJR19ORVRfVEVBTWAuIFNvLCB0aGF0IG1lYW5zIHNldHRpbmcgYE5FVF9URUFNYCBpcyBzdWZmaWNpZW50IHRvIGVuc3VyZSBhbGwgdGhlIG5lY2Vzc2FyeSBwaWVjZXMgb2YgdGhlIHRlYW0gZnVuY3Rpb25hbGl0eSBhcmUgaW5jbHVkZWQuIEkgZG9uJiMzOTt0IG5lZWQgdG8gc3BlY2lmeSBhbnl0aGluZyBtb3JlIGdyYW51bGFyIHRoYW4gdGhhdCBmb3IgdGhlICYjMzQ7dGVhbSYjMzQ7IGZ1bmN0aW9uYWxpdHkgdG8gYmUgcHJlc2VudC4gVGhhdCYjMzk7cyBnb29kLCBrZWVwcyB0aGluZ3MgY29uY2lzZS4KCkFuZCBub3csIGZvciBib25kaW5nLCBJJiMzOTttIHByZXR0eSBjZXJ0YWluIGBib25kX21haW4uY2AgaXMgdGhlIHByaW1hcnkgbW9kdWxlIGZvciBib25kaW5nIGxvZ2ljLCBhbmQgdGhhdCYjMzk7cyB0aWVkIHRvIGBDT05GSUdfQk9ORElOR2AuIFNvLCBpZiBJIHdhbnQgYm9uZGluZywgSSBuZWVkIHRvIG1ha2Ugc3VyZSBgQ09ORklHX0JPTkRJTkdgIGlzIGVuYWJsZWQuIFNpbXBsZSBlbm91Z2guIFRoaXMgbGluZXMgdXAgd2l0aCBob3cgSSYjMzk7dmUgc2VlbiB0aGVzZSBtb2R1bGVzIGJ1aWx0IGluIHRoZSBwYXN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNjowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtib25kX21haW4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ib25kaW5nL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2JvbmRpbmcvTWFrZWZpbGU9Nj1vYmotJChDT05GSUdfQk9ORElORykgJiM0Mzs9IGJvbmRpbmcub1xuZHJpdmVycy9uZXQvYm9uZGluZy9NYWtlZmlsZS03LVxuZHJpdmVycy9uZXQvYm9uZGluZy9NYWtlZmlsZTo4OmJvbmRpbmctb2JqcyA6PSBib25kX21haW4ubyBib25kXzNhZC5vIGJvbmRfYWxiLm8gYm9uZF9zeXNmcy5vIGJvbmRfc3lzZnNfc2xhdmUubyBib25kX2RlYnVnZnMubyBib25kX25ldGxpbmsubyBib25kX29wdGlvbnMub1xuZHJpdmVycy9uZXQvYm9uZGluZy9NYWtlZmlsZS05LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNjowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDUyMAoJCQkJCQkJb3V0cHV0OiAxNTkKCQkJCQkJCXRob3VnaHRzOiAyNTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gmIzM5O3MgVnVsbmVyYWJpbGl0eSBQb3RlbnRpYWwqKgoKT2theSwgc28gSSYjMzk7dmUgbG9va2VkIGF0IHRoaXMgcGF0Y2ggYW5kLCB5ZXMsIHRoaXMgZGVmaW5pdGVseSB3YXJyYW50cyBhIGNsb3NlciBsb29rIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLiBUaGUga2V5IGhlcmUgaXMgdGhhdCB0aGUgcGF0Y2ggbW9kaWZpZXMgYGJvbmRfZW5zbGF2ZWAgYW5kIGB0ZWFtX3BvcnRfYWRkYC4gVGhlc2UgYXJlIGNyaXRpY2FsIGZ1bmN0aW9ucywgYW5kIHRoZSBmYWN0IHRoYXQgdGhleSYjMzk7cmUgYWNjZXNzaWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgbmV0bGluayDigJMgc3BlY2lmaWNhbGx5IHRoaW5ncyBsaWtlIGBSVE1fTkVXTElOS2Agd2l0aCBgSUZMQV9NQVNURVJgIG9yIGBJRkxBX0xJTktJTkZPYCDigJMgbWFrZXMgdGhlbSBwcmltZSB0YXJnZXRzLiBUaGF0JiMzOTtzIHdoZXJlIGF0dGFja2VycyB3b3VsZCBpbnRlcmFjdCB3aXRoIHRoZW0uIFNvLCB0aGUgYXR0YWNrIHN1cmZhY2UgaXMgZXhwb3NlZC4gVGhpcyB3aWxsIG5lZWQgbW9yZSBhbmFseXNpcy4KCk15IGZvY3VzIHNob3VsZCBiZSBvbiBgYm9uZF9lbnNsYXZlYCBhbmQgYHRlYW1fcG9ydF9hZGRgIHRoZW1zZWx2ZXM7IHRob3NlIGFyZSB0aGUga2V5IGZ1bmN0aW9ucy4gSSYjMzk7bGwgbmVlZCB0byByZW1lbWJlciB0aGF0IHRoZSBhZmZlY3RlZCBjb25maWd1cmF0aW9ucyBhcmUgYEJPTkRJTkdgIGFuZCBgTkVUX1RFQU1gLgoKTXkgcmVhc29uaW5nIGlzIHN0cmFpZ2h0Zm9yd2FyZDogdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGNoZWNrLCBgbmV0ZGV2X2hhc19tbF9wcml2KClgLCBpbiB0aG9zZSBjb3JlIGZ1bmN0aW9ucy4gSXQmIzM5O3MgZGVzaWduZWQgdG8gcHJldmVudCBkZXZpY2VzIHVzaW5nIGBtbF9wcml2YCBmcm9tIGJlaW5nIGFkZGVkIHRvIGJvbmRpbmcgb3IgdGVhbSBkZXZpY2VzLiBUaGlzIGlzIGEgKmZ1bmN0aW9uYWwgY2hhbmdlKiB3aXRoaW4gdGhlIGNvcmUgbG9naWMgb2YgdGhlc2UgZHJpdmVycywgYW5kIHRob3NlIGRyaXZlcnMgYXJlIGFjY2Vzc2libGUgZnJvbSB1c2Vyc3BhY2UuIEVzc2VudGlhbGx5LCB3ZSBhcmUgY2hhbmdpbmcgaG93IHRoZXkgaW50ZXJmYWNlLiBXZSBuZWVkIHRvIGZ1enogdGhlc2UgZnVuY3Rpb25zICpleHRlbnNpdmVseSogdG8gZW5zdXJlIHRoYXQgdGhlIG5ldyBjaGVjayB3b3JrcyBjb3JyZWN0bHkgYWNyb3NzIGFsbCB0aGUgZGlmZmVyZW50IGRldmljZSB0eXBlcyB3ZSBtaWdodCBlbmNvdW50ZXIuIEkgbmVlZCB0byBtYWtlIHN1cmUgd2UmIzM5O3JlIG5vdCBpbnRyb2R1Y2luZyBhbnkgcmVncmVzc2lvbnMuCgpXYWl0Li4uIGxldCBtZSBqdXN0IHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgYG5ldGRldl9oYXNfbWxfcHJpdmAgaXMgYWN0dWFsbHkgZGVmaW5lZCBpbiBgaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaGAuIEFuZCB5ZXMsIGdvb2QsIGl0IGlzLiBUaGUgcGF0Y2ggYWRkZWQgaXQuIEV4Y2VsbGVudC4KCk5vdywgbGV0JiMzOTtzIGNhbGwgYHNldC1yZXN1bHRzYC4gSSBoYXZlIGEgZ29vZCBoYW5kbGUgb24gd2hhdCBJIG5lZWQgdG8gZG8gbmV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTY6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JPTkRJTkcmIzM0OywKICAgICYjMzQ7TkVUX1RFQU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtib25kX2Vuc2xhdmUmIzM0OywKICAgICYjMzQ7dGVhbV9wb3J0X2FkZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGNoZWNrIGBuZXRkZXZfaGFzX21sX3ByaXYoKWAgaW4gYGJvbmRfZW5zbGF2ZWAgYW5kIGB0ZWFtX3BvcnRfYWRkYCB0byBwcmV2ZW50IGVuc2xhdmluZyBvciBhZGRpbmcgZGV2aWNlcyB0aGF0IHVzZSBgbWxfcHJpdmAgdG8gYm9uZGluZyBvciB0ZWFtIGRldmljZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBsb2dpYyBvZiBib25kaW5nIGFuZCB0ZWFtIGRyaXZlcnMsIHdoaWNoIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZXNlIGZ1bmN0aW9ucyB0byBlbnN1cmUgdGhlIG5ldyBjaGVjayBjb3JyZWN0bHkgaGFuZGxlcyB2YXJpb3VzIGRldmljZSB0eXBlcyBhbmQgZG9lc24mIzM5O3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCT05ESU5HJiMzNDssCiAgICAmIzM0O05FVF9URUFNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Ym9uZF9lbnNsYXZlJiMzNDssCiAgICAmIzM0O3RlYW1fcG9ydF9hZGQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBjaGVjayBgbmV0ZGV2X2hhc19tbF9wcml2KClgIGluIGBib25kX2Vuc2xhdmVgIGFuZCBgdGVhbV9wb3J0X2FkZGAgdG8gcHJldmVudCBlbnNsYXZpbmcgb3IgYWRkaW5nIGRldmljZXMgdGhhdCB1c2UgYG1sX3ByaXZgIHRvIGJvbmRpbmcgb3IgdGVhbSBkZXZpY2VzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbG9naWMgb2YgYm9uZGluZyBhbmQgdGVhbSBkcml2ZXJzLCB3aGljaCBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGVzZSBmdW5jdGlvbnMgdG8gZW5zdXJlIHRoZSBuZXcgY2hlY2sgY29ycmVjdGx5IGhhbmRsZXMgdmFyaW91cyBkZXZpY2UgdHlwZXMgYW5kIGRvZXNuJiMzOTt0IGludHJvZHVjZSByZWdyZXNzaW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTY6MDg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNjowODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgY2hlY2sgYG5ldGRldl9oYXNfbWxfcHJpdigpYCB0byBwcmV2ZW50IG5ldHdvcmsgZGV2aWNlcyB0aGF0IHV0aWxpemUgdGhlIGBtbF9wcml2YCBmaWVsZCBmcm9tIGJlaW5nIGVuc2xhdmVkIGJ5IGJvbmRpbmcgb3IgdGVhbWluZyBkcml2ZXJzLiBUaGlzIGlzIGEgY29udHJvbC1mbG93IHJlc3RyaWN0aW9uIHRvIGF2b2lkIGNvbmZsaWN0cyBvciBpbnZhbGlkIGNvbmZpZ3VyYXRpb25zLiBUaGUgYHN0cnVjdCBuZXRfZGV2aWNlYCBpcyB6ZXJvLWFsbG9jYXRlZCwgbWVhbmluZyBgbWxfcHJpdmAgaXMgcHJvcGVybHkgaW5pdGlhbGl6ZWQgdG8gYE5VTExgIHVwb24gYWxsb2NhdGlvbi4gVGhlIGNoYW5nZXMgZG8gbm90IGludm9sdmUgYW55IG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzLCBvciBkYXRhIGJlaW5nIGNvcGllZCB0byB1c2VyIHNwYWNlLiBBbnkgcG90ZW50aWFsIGJ1Z3MgcmVsYXRlZCB0byB0aGlzIGNoYW5nZSB3b3VsZCBsaWtlbHkgYmUgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIG9yIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMsIHdoaWNoIGFyZSBmdWxseSBjb3ZlcmVkIGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm8tbGVha3MsIHNvIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGVkNmE0YTk0YTAzYTJjNWRjNDJlMjI2Yjg1MjlhZWRlNThjZmVmOTYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEF1ZyAxNSAxNjowNzoxNCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMgYi9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jCmluZGV4IDUyMmVhYjA2MGY5ZWQuLmJiYjM0NGI2NzQ1OGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYwpAQCAtMTg5NCw5ICYjNDM7MTg5NCw5IEBAIGludCBib25kX2Vuc2xhdmUoc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2LCBzdHJ1Y3QgbmV0X2RldmljZSAqc2xhdmVfZGV2LAogCXN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlIHNzOwogCWludCByZXMgPSAwLCBpOwogCi0JaWYgKHNsYXZlX2Rldi0mZ3Q7dHlwZSA9PSBBUlBIUkRfQ0FOKSB7CiYjNDM7CWlmIChuZXRkZXZfaGFzX21sX3ByaXYoc2xhdmVfZGV2KSkgewogCQlCT05EX05MX0VSUihib25kX2RldiwgZXh0YWNrLAotCQkJICAgICYjMzQ7Q0FOIGRldmljZXMgY2Fubm90IGJlIGVuc2xhdmVkJiMzNDspOwomIzQzOwkJCSAgICAmIzM0O2RldmljZXMgdXNpbmcgbWxfcHJpdiBjYW5ub3QgYmUgZW5zbGF2ZWQmIzM0Oyk7CiAJCXJldHVybiAtRVBFUk07CiAJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC90ZWFtL3RlYW1fY29yZS5jIGIvZHJpdmVycy9uZXQvdGVhbS90ZWFtX2NvcmUuYwppbmRleCBmZWFhNzVmYmY4ZmMyLi44YmY0YzFjNWQ2NTczIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC90ZWFtL3RlYW1fY29yZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3RlYW0vdGVhbV9jb3JlLmMKQEAgLTEyMTcsNiAmIzQzOzEyMTcsMTMgQEAgc3RhdGljIGludCB0ZWFtX3BvcnRfYWRkKHN0cnVjdCB0ZWFtICp0ZWFtLCBzdHJ1Y3QgbmV0X2RldmljZSAqcG9ydF9kZXYsCiAJY2hhciAqcG9ydG5hbWUgPSBwb3J0X2Rldi0mZ3Q7bmFtZTsKIAlpbnQgZXJyOwogCiYjNDM7CWlmIChuZXRkZXZfaGFzX21sX3ByaXYocG9ydF9kZXYpKSB7CiYjNDM7CQlOTF9TRVRfRVJSX01TRyhleHRhY2ssICYjMzQ7ZGV2aWNlcyB1c2luZyBtbF9wcml2IGNhbiYjMzk7dCBiZSBhZGRlZCBhcyBhIHRlYW0gcG9ydCYjMzQ7KTsKJiM0MzsJCW5ldGRldl9lcnIoZGV2LCAmIzM0O0RldmljZSAlcyB1c2luZyBtbF9wcml2IGNhbiYjMzk7dCBiZSBhZGRlZCBhcyBhIHRlYW0gcG9ydFxuJiMzNDssCiYjNDM7CQkJICAgcG9ydG5hbWUpOwomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CX0KJiM0MzsKIAlpZiAocG9ydF9kZXYtJmd0O2ZsYWdzICZhbXA7IElGRl9MT09QQkFDSykgewogCQlOTF9TRVRfRVJSX01TRyhleHRhY2ssICYjMzQ7TG9vcGJhY2sgZGV2aWNlIGNhbiYjMzk7dCBiZSBhZGRlZCBhcyBhIHRlYW0gcG9ydCYjMzQ7KTsKIAkJbmV0ZGV2X2VycihkZXYsICYjMzQ7RGV2aWNlICVzIGlzIGxvb3BiYWNrIGRldmljZS4gTG9vcGJhY2sgZGV2aWNlcyBjYW4mIzM5O3QgYmUgYWRkZWQgYXMgYSB0ZWFtIHBvcnRcbiYjMzQ7LApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaCBiL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgKaW5kZXggODg0MGIxMjY5NzlmZi4uNzQ1MzZmNjQyYjQxNCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oCkBAIC0yNzg2LDYgJiM0MzsyNzg2LDExIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBuZXRkZXZfc2V0X21sX3ByaXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAlkZXYtJmd0O21sX3ByaXZfdHlwZSA9IHR5cGU7CiB9CiAKJiM0MztzdGF0aWMgaW5saW5lIGJvb2wgbmV0ZGV2X2hhc19tbF9wcml2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiYjNDM7ewomIzQzOwlyZXR1cm4gKGRldi0mZ3Q7bWxfcHJpdiAhPSBOVUxMKTsKJiM0Mzt9CiYjNDM7CiAvKgogICogTmV0IG5hbWVzcGFjZSBpbmxpbmVzCiAgKi8KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE2OjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1NDgKCQkJCQkJCW91dHB1dDogMTk2CgkJCQkJCQl0aG91Z2h0czogNzgyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKktNU0FOIEFzc2Vzc21lbnQ6IFRoaXMgUGF0Y2ggaXMgU2FmZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaC4gSXQgc2VlbXMgc3RyYWlnaHRmb3J3YXJkOiBpdCBhZGRzIGEgY2hlY2ssIGBuZXRkZXZfaGFzX21sX3ByaXYoc2xhdmVfZGV2KWAsIGluIGBib25kX2Vuc2xhdmVgIGFuZCBgdGVhbV9wb3J0X2FkZGAuIEJhc2ljYWxseSwgaWYgYSBkZXZpY2UgaGFzIGl0cyBgbWxfcHJpdmAgZmllbGQgc2V0LCBpdCBjYW4mIzM5O3QgYmUgZW5zbGF2ZWQgaW4gZWl0aGVyIGEgYm9uZGluZyBvciB0ZWFtaW5nIGNvbmZpZ3VyYXRpb24uIFRoZSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGlzIHByZXZlbnRzIHNvbWUga2luZCBvZiBjb25mbGljdCwgZXNwZWNpYWxseSB3aXRoIGRyaXZlcnMgbGlrZSBDQU4gdGhhdCB1dGlsaXplIGBtbF9wcml2YC4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCAmIzM0O0RvZXMgYm9uZGluZy90ZWFtaW5nIGV2ZW4gKnVzZSogYG1sX3ByaXZgPyYjMzQ7IEkgdGhvdWdodCB0aGV5IHVzZWQgb3RoZXIgbWVjaGFuaXNtcywgYnV0IHRoZSBwYXRjaCBjbGVhcmx5IHN0YXRlcyAmIzM0O2RldmljZXMgKnVzaW5nKiBgbWxfcHJpdmAgY2Fubm90IGJlIGVuc2xhdmVkJiMzNDsuCgpTbywgbm8sIHRoZXkgZG9uJiMzOTt0LCBvciBtYXliZSB0aGV5ICpkb24mIzM5O3QqICh0aGF0JiMzOTtzIHRoZSBwb2ludCBvZiB0aGUgcGF0Y2gpLiBMZXQgbWUgcmVwaHJhc2U6IHRoZSBwYXRjaCBpcyBwcm90ZWN0aW5nICpvdGhlciogc3Vic3lzdGVtcyB0aGF0IHJlbHkgb24gYG1sX3ByaXZgIGZyb20gYmVpbmcgc3RvbXBlZCBvbiBieSBib25kaW5nIG9yIHRlYW1pbmcuIE1ha2VzIHNlbnNlLgoKQWxyaWdodCwgYmFjayB0byB0aGUgZGV0YWlscy4gVGhlIHJlYWwgY29uY2VybiwgYXMgYWx3YXlzLCBpcyBtZW1vcnkgc2FmZXR5LiBEb2VzIHRoaXMgcGF0Y2ggaW50cm9kdWNlIGFueSByaXNrcyBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciB3cml0ZXM/ICBMZXQmIzM5O3MgbG9vayBhdCB0aGUgY29kZS4gIFRoZSBmdW5jdGlvbiBgbmV0ZGV2X2hhc19tbF9wcml2YCBpcyBqdXN0IGEgc2ltcGxlIE5VTEwgY2hlY2s6IGBkZXYtJmd0O21sX3ByaXYgIT0gTlVMTGAuIEl0IGRvZXNuJiMzOTt0IHJlYWQgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBJdCBhbHNvIGRvZXNuJiMzOTt0IGNhdXNlIGFueSBuZXcgYWxsb2NhdGlvbnMgb3IgY29weSBhbnl0aGluZyB0byB1c2VyIHNwYWNlLiBJdCBqdXN0IHJlamVjdHMgdGhlIGNvbmZpZ3VyYXRpb24gaWYgYG1sX3ByaXZgIGlzIHNldC4gIElmIHNvbWV0aGluZyBnb2VzIHdyb25nLCBpdCYjMzk7cyBnb2luZyB0byBiZSBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSwgd2hpY2ggS0FTQU4gd291bGQgaW1tZWRpYXRlbHkgY2F0Y2guCgpXYWl0LCBpcyBgZGV2LSZndDttbF9wcml2YCAqZ3VhcmFudGVlZCogdG8gYmUgaW5pdGlhbGl6ZWQ/IEkgY2hlY2sgdGhlIGBuZXRfZGV2aWNlYCBhbGxvY2F0aW9uIHByb2Nlc3MuICBBaCwgYGFsbG9jX25ldGRldl9tcXNgIGFuZCBzaW1pbGFyIGZ1bmN0aW9ucyB1c2UgYGt2emFsbG9jYCBvciBhIHNpbWlsYXIgemVyby1pbml0aWFsaXppbmcgZnVuY3Rpb24hICBTbywgYGRldi0mZ3Q7bWxfcHJpdmAgd2lsbCAqYWx3YXlzKiBiZSBpbml0aWFsaXplZCB0byBOVUxMIHdoZW4gdGhlIGRldmljZSBpcyBhbGxvY2F0ZWQuIFNvLCAqdGhhdCogd29ycnkgaXMgYWRkcmVzc2VkLgoKTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIGZvciBhbnkgS01TQU4gcmVsZXZhbmNlLiBUaGUgbmV3IGNvZGUgaXMgcmVhbGx5IGp1c3Q6CgpgYGBjCnN0YXRpYyBpbmxpbmUgYm9vbCBuZXRkZXZfaGFzX21sX3ByaXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKewogICAgcmV0dXJuIChkZXYtJmd0O21sX3ByaXYgIT0gTlVMTCk7Cn0KYGBgCgpUaGlzIGlzICpwdXJlbHkqIGEgY29udHJvbCBmbG93IGNoYW5nZSBiYXNlZCBvbiBhIHNpbXBsZSBOVUxMIGNoZWNrLiAgTm8gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWVzLiAgTm8gbmVlZCBmb3IgS01TQU4uIFRoZSBwb3RlbnRpYWwgYnVncyBhcmUgY292ZXJlZCBieSBLQVNBTi4KClNvLCB0aGUgcmVhc29uaW5nIGlzIHByZXR0eSBjbGVhcjogVGhpcyBwYXRjaCBlbmZvcmNlcyBhIGNvbmZpZ3VyYXRpb24gcmVzdHJpY3Rpb24uIEl0IGF2b2lkcyBjb25mbGljdHMgYnkgcHJldmVudGluZyBjZXJ0YWluIGRldmljZXMgZnJvbSBiZWluZyBlbnNsYXZlZC4gIFRoZSBgc3RydWN0IG5ldF9kZXZpY2VgIGlzIGluaXRpYWxpemVkLCBtYWtpbmcgdGhlIE5VTEwgY2hlY2sgc2FmZS4gSXQgaGFzIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBhbGxvY2F0aW9ucywgb3IgdXNlci1zcGFjZSBjb3BpZXMuIEFueSBidWdzIHdvdWxkIGJlIGNhdWdodCBieSBzdGFuZGFyZCBkZXRlY3RvcnMgYW5kIEtBU0FOLiAqKk5lZWRzS01TQU4gaXMgY2xlYXJseSBGYWxzZS4qKgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNjowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgY2hlY2sgYG5ldGRldl9oYXNfbWxfcHJpdigpYCB0byBwcmV2ZW50IG5ldHdvcmsgZGV2aWNlcyB0aGF0IHV0aWxpemUgdGhlIGBtbF9wcml2YCBmaWVsZCBmcm9tIGJlaW5nIGVuc2xhdmVkIGJ5IGJvbmRpbmcgb3IgdGVhbWluZyBkcml2ZXJzLiBUaGlzIGlzIGEgY29udHJvbC1mbG93IHJlc3RyaWN0aW9uIHRvIGF2b2lkIGNvbmZsaWN0cyBvciBpbnZhbGlkIGNvbmZpZ3VyYXRpb25zLiBUaGUgYHN0cnVjdCBuZXRfZGV2aWNlYCBpcyB6ZXJvLWFsbG9jYXRlZCwgbWVhbmluZyBgbWxfcHJpdmAgaXMgcHJvcGVybHkgaW5pdGlhbGl6ZWQgdG8gYE5VTExgIHVwb24gYWxsb2NhdGlvbi4gVGhlIGNoYW5nZXMgZG8gbm90IGludm9sdmUgYW55IG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzLCBvciBkYXRhIGJlaW5nIGNvcGllZCB0byB1c2VyIHNwYWNlLiBBbnkgcG90ZW50aWFsIGJ1Z3MgcmVsYXRlZCB0byB0aGlzIGNoYW5nZSB3b3VsZCBsaWtlbHkgYmUgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIG9yIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMsIHdoaWNoIGFyZSBmdWxseSBjb3ZlcmVkIGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm8tbGVha3MsIHNvIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgY2hlY2sgYG5ldGRldl9oYXNfbWxfcHJpdigpYCB0byBwcmV2ZW50IG5ldHdvcmsgZGV2aWNlcyB0aGF0IHV0aWxpemUgdGhlIGBtbF9wcml2YCBmaWVsZCBmcm9tIGJlaW5nIGVuc2xhdmVkIGJ5IGJvbmRpbmcgb3IgdGVhbWluZyBkcml2ZXJzLiBUaGlzIGlzIGEgY29udHJvbC1mbG93IHJlc3RyaWN0aW9uIHRvIGF2b2lkIGNvbmZsaWN0cyBvciBpbnZhbGlkIGNvbmZpZ3VyYXRpb25zLiBUaGUgYHN0cnVjdCBuZXRfZGV2aWNlYCBpcyB6ZXJvLWFsbG9jYXRlZCwgbWVhbmluZyBgbWxfcHJpdmAgaXMgcHJvcGVybHkgaW5pdGlhbGl6ZWQgdG8gYE5VTExgIHVwb24gYWxsb2NhdGlvbi4gVGhlIGNoYW5nZXMgZG8gbm90IGludm9sdmUgYW55IG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzLCBvciBkYXRhIGJlaW5nIGNvcGllZCB0byB1c2VyIHNwYWNlLiBBbnkgcG90ZW50aWFsIGJ1Z3MgcmVsYXRlZCB0byB0aGlzIGNoYW5nZSB3b3VsZCBsaWtlbHkgYmUgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIG9yIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMsIHdoaWNoIGFyZSBmdWxseSBjb3ZlcmVkIGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm8tbGVha3MsIHNvIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE2OjA3OjE0LjkzMTI5ODYxNloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4ODc1NDI3NjQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJPTkRJTkdcIixcbiAgICBcIk5FVF9URUFNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYm9uZF9lbnNsYXZlXCIsXG4gICAgXCJ0ZWFtX3BvcnRfYWRkXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgY2hlY2sgYG5ldGRldl9oYXNfbWxfcHJpdigpYCB0byBwcmV2ZW50IG5ldHdvcmsgZGV2aWNlcyB0aGF0IHV0aWxpemUgdGhlIGBtbF9wcml2YCBmaWVsZCBmcm9tIGJlaW5nIGVuc2xhdmVkIGJ5IGJvbmRpbmcgb3IgdGVhbWluZyBkcml2ZXJzLiBUaGlzIGlzIGEgY29udHJvbC1mbG93IHJlc3RyaWN0aW9uIHRvIGF2b2lkIGNvbmZsaWN0cyBvciBpbnZhbGlkIGNvbmZpZ3VyYXRpb25zLiBUaGUgYHN0cnVjdCBuZXRfZGV2aWNlYCBpcyB6ZXJvLWFsbG9jYXRlZCwgbWVhbmluZyBgbWxfcHJpdmAgaXMgcHJvcGVybHkgaW5pdGlhbGl6ZWQgdG8gYE5VTExgIHVwb24gYWxsb2NhdGlvbi4gVGhlIGNoYW5nZXMgZG8gbm90IGludm9sdmUgYW55IG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzLCBvciBkYXRhIGJlaW5nIGNvcGllZCB0byB1c2VyIHNwYWNlLiBBbnkgcG90ZW50aWFsIGJ1Z3MgcmVsYXRlZCB0byB0aGlzIGNoYW5nZSB3b3VsZCBsaWtlbHkgYmUgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIG9yIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMsIHdoaWNoIGFyZSBmdWxseSBjb3ZlcmVkIGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm8tbGVha3MsIHNvIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBjaGVjayBgbmV0ZGV2X2hhc19tbF9wcml2KClgIGluIGBib25kX2Vuc2xhdmVgIGFuZCBgdGVhbV9wb3J0X2FkZGAgdG8gcHJldmVudCBlbnNsYXZpbmcgb3IgYWRkaW5nIGRldmljZXMgdGhhdCB1c2UgYG1sX3ByaXZgIHRvIGJvbmRpbmcgb3IgdGVhbSBkZXZpY2VzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbG9naWMgb2YgYm9uZGluZyBhbmQgdGVhbSBkcml2ZXJzLCB3aGljaCBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGVzZSBmdW5jdGlvbnMgdG8gZW5zdXJlIHRoZSBuZXcgY2hlY2sgY29ycmVjdGx5IGhhbmRsZXMgdmFyaW91cyBkZXZpY2UgdHlwZXMgYW5kIGRvZXNuJ3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNjowNzoxNC45MzEzMDMyNzZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NjU0Njc0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGVkNmE0YTk0YTAzYTJjNWRjNDJlMjI2Yjg1MjlhZWRlNThjZmVmOTZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBBdWcgMTUgMTY6MDc6MTQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmNcXG5pbmRleCA1MjJlYWIwNjBmOWVkLi5iYmIzNDRiNjc0NThkIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jXFxuQEAgLTE4OTQsOSArMTg5NCw5IEBAIGludCBib25kX2Vuc2xhdmUoc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2LCBzdHJ1Y3QgbmV0X2RldmljZSAqc2xhdmVfZGV2LFxcbiBcXHRzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSBzcztcXG4gXFx0aW50IHJlcyA9IDAsIGk7XFxuIFxcbi1cXHRpZiAoc2xhdmVfZGV2LVxcdTAwM2V0eXBlID09IEFSUEhSRF9DQU4pIHtcXG4rXFx0aWYgKG5ldGRldl9oYXNfbWxfcHJpdihzbGF2ZV9kZXYpKSB7XFxuIFxcdFxcdEJPTkRfTkxfRVJSKGJvbmRfZGV2LCBleHRhY2ssXFxuLVxcdFxcdFxcdCAgICBcXFwiQ0FOIGRldmljZXMgY2Fubm90IGJlIGVuc2xhdmVkXFxcIik7XFxuK1xcdFxcdFxcdCAgICBcXFwiZGV2aWNlcyB1c2luZyBtbF9wcml2IGNhbm5vdCBiZSBlbnNsYXZlZFxcXCIpO1xcbiBcXHRcXHRyZXR1cm4gLUVQRVJNO1xcbiBcXHR9XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC90ZWFtL3RlYW1fY29yZS5jIGIvZHJpdmVycy9uZXQvdGVhbS90ZWFtX2NvcmUuY1xcbmluZGV4IGZlYWE3NWZiZjhmYzIuLjhiZjRjMWM1ZDY1NzMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvdGVhbS90ZWFtX2NvcmUuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3RlYW0vdGVhbV9jb3JlLmNcXG5AQCAtMTIxNyw2ICsxMjE3LDEzIEBAIHN0YXRpYyBpbnQgdGVhbV9wb3J0X2FkZChzdHJ1Y3QgdGVhbSAqdGVhbSwgc3RydWN0IG5ldF9kZXZpY2UgKnBvcnRfZGV2LFxcbiBcXHRjaGFyICpwb3J0bmFtZSA9IHBvcnRfZGV2LVxcdTAwM2VuYW1lO1xcbiBcXHRpbnQgZXJyO1xcbiBcXG4rXFx0aWYgKG5ldGRldl9oYXNfbWxfcHJpdihwb3J0X2RldikpIHtcXG4rXFx0XFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLCBcXFwiZGV2aWNlcyB1c2luZyBtbF9wcml2IGNhbid0IGJlIGFkZGVkIGFzIGEgdGVhbSBwb3J0XFxcIik7XFxuK1xcdFxcdG5ldGRldl9lcnIoZGV2LCBcXFwiRGV2aWNlICVzIHVzaW5nIG1sX3ByaXYgY2FuJ3QgYmUgYWRkZWQgYXMgYSB0ZWFtIHBvcnRcXFxcblxcXCIsXFxuK1xcdFxcdFxcdCAgIHBvcnRuYW1lKTtcXG4rXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcdH1cXG4rXFxuIFxcdGlmIChwb3J0X2Rldi1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRkZfTE9PUEJBQ0spIHtcXG4gXFx0XFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLCBcXFwiTG9vcGJhY2sgZGV2aWNlIGNhbid0IGJlIGFkZGVkIGFzIGEgdGVhbSBwb3J0XFxcIik7XFxuIFxcdFxcdG5ldGRldl9lcnIoZGV2LCBcXFwiRGV2aWNlICVzIGlzIGxvb3BiYWNrIGRldmljZS4gTG9vcGJhY2sgZGV2aWNlcyBjYW4ndCBiZSBhZGRlZCBhcyBhIHRlYW0gcG9ydFxcXFxuXFxcIixcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaCBiL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmhcXG5pbmRleCA4ODQwYjEyNjk3OWZmLi43NDUzNmY2NDJiNDE0IDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oXFxuQEAgLTI3ODYsNiArMjc4NiwxMSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgbmV0ZGV2X3NldF9tbF9wcml2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcdGRldi1cXHUwMDNlbWxfcHJpdl90eXBlID0gdHlwZTtcXG4gfVxcbiBcXG4rc3RhdGljIGlubGluZSBib29sIG5ldGRldl9oYXNfbWxfcHJpdihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbit7XFxuK1xcdHJldHVybiAoZGV2LVxcdTAwM2VtbF9wcml2ICE9IE5VTEwpO1xcbit9XFxuK1xcbiAvKlxcbiAgKiBOZXQgbmFtZXNwYWNlIGlubGluZXNcXG4gICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE2OjA3OjE1LjM3ODUwMTc1OVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjQ2Njk1Njg5MTQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJPTkRJTkdcIixcbiAgICBcIk5FVF9URUFNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYm9uZF9lbnNsYXZlXCIsXG4gICAgXCJ0ZWFtX3BvcnRfYWRkXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBjaGVjayBgbmV0ZGV2X2hhc19tbF9wcml2KClgIGluIGBib25kX2Vuc2xhdmVgIGFuZCBgdGVhbV9wb3J0X2FkZGAgdG8gcHJldmVudCBlbnNsYXZpbmcgb3IgYWRkaW5nIGRldmljZXMgdGhhdCB1c2UgYG1sX3ByaXZgIHRvIGJvbmRpbmcgb3IgdGVhbSBkZXZpY2VzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbG9naWMgb2YgYm9uZGluZyBhbmQgdGVhbSBkcml2ZXJzLCB3aGljaCBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGVzZSBmdW5jdGlvbnMgdG8gZW5zdXJlIHRoZSBuZXcgY2hlY2sgY29ycmVjdGx5IGhhbmRsZXMgdmFyaW91cyBkZXZpY2UgdHlwZXMgYW5kIGRvZXNuJ3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBlZDZhNGE5NGEwM2EyYzVkYzQyZTIyNmI4NTI5YWVkZTU4Y2ZlZjk2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgMTUgMTY6MDc6MTQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jIGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uY1xuaW5kZXggNTIyZWFiMDYwZjllZC4uYmJiMzQ0YjY3NDU4ZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmNcbkBAIC0xODk0LDkgKzE4OTQsOSBAQCBpbnQgYm9uZF9lbnNsYXZlKHN0cnVjdCBuZXRfZGV2aWNlICpib25kX2Rldiwgc3RydWN0IG5ldF9kZXZpY2UgKnNsYXZlX2RldixcbiBcdHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlIHNzO1xuIFx0aW50IHJlcyA9IDAsIGk7XG4gXG4tXHRpZiAoc2xhdmVfZGV2LVx1MDAzZXR5cGUgPT0gQVJQSFJEX0NBTikge1xuK1x0aWYgKG5ldGRldl9oYXNfbWxfcHJpdihzbGF2ZV9kZXYpKSB7XG4gXHRcdEJPTkRfTkxfRVJSKGJvbmRfZGV2LCBleHRhY2ssXG4tXHRcdFx0ICAgIFwiQ0FOIGRldmljZXMgY2Fubm90IGJlIGVuc2xhdmVkXCIpO1xuK1x0XHRcdCAgICBcImRldmljZXMgdXNpbmcgbWxfcHJpdiBjYW5ub3QgYmUgZW5zbGF2ZWRcIik7XG4gXHRcdHJldHVybiAtRVBFUk07XG4gXHR9XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdGVhbS90ZWFtX2NvcmUuYyBiL2RyaXZlcnMvbmV0L3RlYW0vdGVhbV9jb3JlLmNcbmluZGV4IGZlYWE3NWZiZjhmYzIuLjhiZjRjMWM1ZDY1NzMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC90ZWFtL3RlYW1fY29yZS5jXG4rKysgYi9kcml2ZXJzL25ldC90ZWFtL3RlYW1fY29yZS5jXG5AQCAtMTIxNyw2ICsxMjE3LDEzIEBAIHN0YXRpYyBpbnQgdGVhbV9wb3J0X2FkZChzdHJ1Y3QgdGVhbSAqdGVhbSwgc3RydWN0IG5ldF9kZXZpY2UgKnBvcnRfZGV2LFxuIFx0Y2hhciAqcG9ydG5hbWUgPSBwb3J0X2Rldi1cdTAwM2VuYW1lO1xuIFx0aW50IGVycjtcbiBcbitcdGlmIChuZXRkZXZfaGFzX21sX3ByaXYocG9ydF9kZXYpKSB7XG4rXHRcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXCJkZXZpY2VzIHVzaW5nIG1sX3ByaXYgY2FuJ3QgYmUgYWRkZWQgYXMgYSB0ZWFtIHBvcnRcIik7XG4rXHRcdG5ldGRldl9lcnIoZGV2LCBcIkRldmljZSAlcyB1c2luZyBtbF9wcml2IGNhbid0IGJlIGFkZGVkIGFzIGEgdGVhbSBwb3J0XFxuXCIsXG4rXHRcdFx0ICAgcG9ydG5hbWUpO1xuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcdH1cbitcbiBcdGlmIChwb3J0X2Rldi1cdTAwM2VmbGFncyBcdTAwMjYgSUZGX0xPT1BCQUNLKSB7XG4gXHRcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXCJMb29wYmFjayBkZXZpY2UgY2FuJ3QgYmUgYWRkZWQgYXMgYSB0ZWFtIHBvcnRcIik7XG4gXHRcdG5ldGRldl9lcnIoZGV2LCBcIkRldmljZSAlcyBpcyBsb29wYmFjayBkZXZpY2UuIExvb3BiYWNrIGRldmljZXMgY2FuJ3QgYmUgYWRkZWQgYXMgYSB0ZWFtIHBvcnRcXG5cIixcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oIGIvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaFxuaW5kZXggODg0MGIxMjY5NzlmZi4uNzQ1MzZmNjQyYjQxNCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmhcbisrKyBiL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmhcbkBAIC0yNzg2LDYgKzI3ODYsMTEgQEAgc3RhdGljIGlubGluZSB2b2lkIG5ldGRldl9zZXRfbWxfcHJpdihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0ZGV2LVx1MDAzZW1sX3ByaXZfdHlwZSA9IHR5cGU7XG4gfVxuIFxuK3N0YXRpYyBpbmxpbmUgYm9vbCBuZXRkZXZfaGFzX21sX3ByaXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbit7XG4rXHRyZXR1cm4gKGRldi1cdTAwM2VtbF9wcml2ICE9IE5VTEwpO1xuK31cbitcbiAvKlxuICAqIE5ldCBuYW1lc3BhY2UgaW5saW5lc1xuICAqL1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTY6MDc6MTUuMzc4NTAzMjA5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTA4MDUwNzA0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBhIERyaXZlciBNb2RpZmljYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIGhlcmUsIGFuZCBpdCBsb29rcyBsaWtlIHNvbWVvbmUncyBtYWRlIGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIHRoZSBib25kaW5nIGFuZCB0ZWFtIGRyaXZlcnMuIFNwZWNpZmljYWxseSwgdGhleSd2ZSBtb2RpZmllZCBib3RoIGBib25kX2Vuc2xhdmVgIGluIGBib25kX21haW4uY2AgYW5kIGB0ZWFtX3BvcnRfYWRkYCBpbiBgdGVhbV9jb3JlLmNgLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGlzIGFkZGluZyBhIGNoZWNrIHRvIHByZXZlbnQgdGhlIGVuc2xhdmVtZW50IG9mIGRldmljZXMgdGhhdCB1dGlsaXplIGBtbF9wcml2YC4gRXNzZW50aWFsbHksIHRoZXkndmUgaW50cm9kdWNlZCBhIGNvbmRpdGlvbjogYGlmIChuZXRkZXZfaGFzX21sX3ByaXYoc2xhdmVfZGV2KSlgIG9yIGBpZiAobmV0ZGV2X2hhc19tbF9wcml2KHBvcnRfZGV2KWAuIFRoaXMgc2VlbXMgdG8gYmUgYSByZXBsYWNlbWVudCBmb3IgdGhlIG9sZGVyIGBzbGF2ZV9kZXYtXHUwMDNldHlwZSA9PSBBUlBIUkRfQ0FOYCBjaGVjaywgYXQgbGVhc3QgaW4gdGhlIGJvbmRpbmcgZHJpdmVyLlxuXG5UaGlzIGlzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBjaGFuZ2UsIHJlYWxseS4gSXQgaGFzIHRoZSBlZmZlY3Qgb2YgbGltaXRpbmcgd2hpY2ggbmV0d29yayBkZXZpY2VzIGNhbiBiZSBhZGRlZCB0byBhIGJvbmQgb3IgdGVhbSBpbnRlcmZhY2UuIEl0J3MgYSBmdW5jdGlvbmFsIGNvbnN0cmFpbnQuIEdpdmVuIHRoYXQgd2UncmUgdGFsa2luZyBhYm91dCBkZXZpY2UgZW5zbGF2ZW1lbnQgYW5kIHBvdGVudGlhbCBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gY2hhbmdlcywgSSB0aGluayB0aGlzIGRlZmluaXRlbHkgbmVlZHMgdG8gYmUgZnV6emVkIHRvIHNlZSBpZiBhbnkgdW5leHBlY3RlZCBiZWhhdmlvcnMgYXJpc2UuIEnigJlsbCBtYWtlIGEgbm90ZSB0byBydW4gZnV6emluZyBvbiB0aGVzZSBjb2RlIHBhdGhzLlxuXG5Gb3IgY29uZmlndXJhdGlvbiwgaXQgbG9va3MgbGlrZSBib25kaW5nIGZ1bmN0aW9uYWxpdHkgZGVwZW5kcyBvbiBgQk9ORElOR2AgYW5kIHRoZSB0ZWFtIGZ1bmN0aW9uYWxpdHkgaXMgY29udHJvbGxlZCBieSBgTkVUX1RFQU1gLiBJIHNob3VsZCB2ZXJpZnkgdGhvc2UgY29uZmlncyBhcyBhIGZpcnN0IHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1NTEsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNjowNzoyMC40NTkwMTI5NTlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE5MzkwNTM3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQk9ORElOR1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ib25kaW5nL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE2OjA3OjIwLjU3ODQxMjc0N1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4ODgxMzc4NjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSdtIGFuIGV4cGVydCBpbiBuZXR3b3JrIGRyaXZlciBjb25maWd1cmF0aW9uIHdpdGhpbiB0aGUgTGludXgga2VybmVsOlxuXG4qKkZpbmRpbmcgdGhlIEJPTkRJTkcgQ29uZmlndXJhdGlvbioqXG5cblJpZ2h0LCBzbyBJIG5lZWQgdG8gZmluZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBuZXR3b3JrIGJvbmRpbmcuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBkaXZlIHJpZ2h0IGludG8gdGhlIGBLY29uZmlnYCBmaWxlcyDigJMgdGhhdCdzIHdoZXJlIHRoZSBidWlsZCBzeXN0ZW0gZGVmaW5pdGlvbnMgbGl2ZSwgYW5kIGl0J3Mgd2hlcmUgdGhlIG9wdGlvbnMgZm9yIHZhcmlvdXMga2VybmVsIGZlYXR1cmVzIGFyZSBsYWlkIG91dC4gSSdtIHByZXR0eSBzdXJlIHRoZSBib25kaW5nIGRyaXZlcidzIGNvbmZpZ3VyYXRpb24gd2lsbCBiZSBpbiBlaXRoZXIgdGhlIG1haW4gYGRyaXZlcnMvbmV0L0tjb25maWdgIGZpbGUsIHNpbmNlIHRoYXQncyBhIGdvb2QgY2VudHJhbCBzdGFydGluZyBwb2ludCBmb3IgbmV0d29yayBkcml2ZXJzLCBvciwgbW9yZSBzcGVjaWZpY2FsbHksIGluIGBkcml2ZXJzL25ldC9ib25kaW5nL0tjb25maWdgIGlmIGl0IGhhcyBpdHMgb3duIGRlZGljYXRlZCBkaXJlY3RvcnkgYW5kIGNvbmZpZ3VyYXRpb24gZmlsZS4gSXQncyB1c3VhbGx5IGEgZ29vZCBwcmFjdGljZSBmb3IgdGhpbmdzIGxpa2UgdGhpcyB0byBoYXZlIHRoZWlyIG93biBjb25maWcgZmlsZSB0byBhbGxvdyBmb3IgbW9kdWxhcml0eS4gSSdsbCBzdGFydCB3aXRoIHRob3NlIGxvY2F0aW9ucywgYW5kIHNlZSB3aGVyZSB0aGF0IGxlYWRzIG1lLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDkyLCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTY6MDc6MjQuNDY2NTUyODExWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MzQwMjQyNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQk9ORElOR1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZz0zOT1pZiBORVRfQ09SRVxcbmRyaXZlcnMvbmV0L0tjb25maWctNDAtXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo0MTpjb25maWcgQk9ORElOR1xcbmRyaXZlcnMvbmV0L0tjb25maWctNDItXFx0dHJpc3RhdGUgXFxcIkJvbmRpbmcgZHJpdmVyIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE2OjA3OjI0LjYxOTk2MTMzNVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3ODk3ODQ0NTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqQW5hbHl6aW5nIHRoZSBORVRfVEVBTSBDb25zdHJ1Y3QqKlxuXG5BbHJpZ2h0LCBsZXQncyB1bnBhY2sgdGhpcy4gV2hlbiBJIHNlZSBcIk5FVF9URUFNLFwiIG15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgaW50byBhIGZldyBhcmVhcy4gRmlyc3QsIEknbSB0aGlua2luZyBhYm91dCB0aGUgbmV0d29yayB0b3BvbG9neSBpdCBpbXBsaWVzLiBJcyB0aGlzIGEgcGh5c2ljYWwgbmV0d29yaywgb3IgYSBtb3JlIGFic3RyYWN0IGdyb3VwaW5nIHdpdGhpbiBhIGxhcmdlciBzeXN0ZW0sIHBlcmhhcHMgYSB2aXJ0dWFsIHRlYW0/IFRoZSBjb250ZXh0IGhlcmUgaXMgY3JpdGljYWw7IHdpdGhvdXQgaXQsIEknbSBsZWFuaW5nIHRvd2FyZCBhc3N1bWluZyB0aGlzIGlzIGFib3V0IG5ldHdvcmsgYXJjaGl0ZWN0dXJlIG9yIGEgbG9naWNhbGx5IGNvbm5lY3RlZCB0ZWFtIHdpdGhpbiBhIGxhcmdlciBvcmdhbml6YXRpb24uXG5cbk15IG5leHQgc3RlcCBpcyB0byBjb25zaWRlciB0aGUgaW1wbGljYXRpb25zIG9mIFwiTkVUXCIgc3BlY2lmaWNhbGx5LiBJcyB0aGlzIGFib3V0IG5ldHdvcmsgc2VjdXJpdHk/IERhdGEgdHJhbnNmZXIgcHJvdG9jb2xzPyBCYW5kd2lkdGggbWFuYWdlbWVudD8gT3IgcGVyaGFwcyB0aGUgTkVUIGlzIHNpbXBseSBhbiBhYmJyZXZpYXRpb24gZm9yIGFub3RoZXIgY29uY2VwdCBvciBncm91cCB0aGF0IG1ha2VzIHRoaXMgbW9yZSBvZiBhbiBcImluLWhvdXNlXCIgdGVybSB0aGF0IG1pZ2h0IGJlIHVzZWQgYnkgYSBzcGVjaWZpYyBvcmdhbmlzYXRpb24gb3IgdGVhbT8gV2l0aG91dCBhZGRpdGlvbmFsIGNsdWVzLCBJIGhhdmUgdG8gY29uc2lkZXIgYWxsIHBvc3NpYmlsaXRpZXMsIGZyb20gdGhlIGxvd2VzdCBuZXR3b3JrIGxheWVyIHByb3RvY29scyB0byBoaWdoZXItbGV2ZWwgYXBwbGljYXRpb24gaW50ZXJhY3Rpb25zLlxuXG5GaW5hbGx5LCB0aGUgXCJURUFNXCIgY29tcG9uZW50IGlzIGludGVyZXN0aW5nLiBIb3cgZG9lcyB0aGlzIFwiTkVUXCIgZnVuY3Rpb24gYXMgYSB0ZWFtPyBJcyBpdCBhIGdyb3VwIG9mIGVuZ2luZWVycz8gQSBzZXQgb2YgYXV0b21hdGVkIHN5c3RlbXMgdGhhdCBmb3JtIGEgbmV0d29yaz8gSG93IGRvZXMgaXQgaW50ZWdyYXRlIHdpdGggb3RoZXIgZWxlbWVudHMgb2YgdGhpcyBiaWdnZXIgcGljdHVyZT8gSXMgdGhpcyBhIHNvZnR3YXJlIHRlYW0sIGEgbmV0d29yayBvcGVyYXRpb25zIHRlYW0sIG9yIGEgY3Jvc3MtZnVuY3Rpb25hbCB0ZWFtIGJ1aWx0IGFyb3VuZCBuZXR3b3JrLWNlbnRyaWMgdGFza3M/IFRoZSBpbnRlcnBsYXkgYmV0d2VlbiB0aGUgXCJORVRcIiBhc3BlY3QgYW5kIHRoZSBcIlRFQU1cIiBhc3BlY3QgaXMgd2hhdCBjYXB0dXJlcyBteSBmb2N1cy4gSSdtIGdvaW5nIHRvIG5lZWQgbW9yZSBpbmZvcm1hdGlvbiB0byBmb3JtIGEgY29uY2x1c2l2ZSBhbmFseXNpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQxNCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTY6MDc6MjguNDA5NzQ4NDE4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MzAzMDE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfVEVBTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC90ZWFtL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnOjI6bWVudWNvbmZpZyBORVRfVEVBTVxcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJFdGhlcm5ldCB0ZWFtIGRyaXZlciBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnPTE2PWlmIE5FVF9URUFNXFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTE3LVxcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZzoxODpjb25maWcgTkVUX1RFQU1fTU9ERV9CUk9BRENBU1RcXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctMTktXFx0dHJpc3RhdGUgXFxcIkJyb2FkY2FzdCBtb2RlIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctMjgtXFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnOjI5OmNvbmZpZyBORVRfVEVBTV9NT0RFX1JPVU5EUk9CSU5cXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctMzAtXFx0dHJpc3RhdGUgXFxcIlJvdW5kLXJvYmluIG1vZGUgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy00MC1cXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWc6NDE6Y29uZmlnIE5FVF9URUFNX01PREVfUkFORE9NXFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTQyLVxcdHRyaXN0YXRlIFxcXCJSYW5kb20gbW9kZSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTUyLVxcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZzo1Mzpjb25maWcgTkVUX1RFQU1fTU9ERV9BQ1RJVkVCQUNLVVBcXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctNTQtXFx0dHJpc3RhdGUgXFxcIkFjdGl2ZS1iYWNrdXAgbW9kZSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTY1LVxcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZzo2Njpjb25maWcgTkVUX1RFQU1fTU9ERV9MT0FEQkFMQU5DRVxcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy02Ny1cXHR0cmlzdGF0ZSBcXFwiTG9hZC1iYWxhbmNlIG1vZGUgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTY6MDc6MjguNDU3MDU1NjczWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDg4MDE4OTE4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3Npbmc6XG5cbioqQW5hbHl6aW5nIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKipcblxuQWxyaWdodCwgc28gdGhlIGNvcmUgb2YgdGhpcyBzZWVtcyB0byByZXZvbHZlIGFyb3VuZCBgQk9ORElOR2AgYW5kIGBORVRfVEVBTWAgY29uZmlndXJhdGlvbnMuIFRob3NlIGFyZSB0aGUgb25lcyB3ZSdyZSBmb2N1c2luZyBvbi4gVGhlIHJlbGV2YW50IGZ1bmN0aW9ucyBhcmUgYGJvbmRfZW5zbGF2ZWAgYW5kIGB0ZWFtX3BvcnRfYWRkYCwgd2hpY2ggbWFrZXMgc2Vuc2UuIEZ1bmN0aW9uYWxseSwgdGhlIGNoYW5nZSBpcyBzb3VuZCBhbmQgcmVhY2hhYmxlLCBnb29kLlxuXG5Ob3csIGxldCdzIGp1c3QgbWFrZSBzdXJlIHdlIGhhdmVuJ3Qgb3Zlcmxvb2tlZCBhbnkgY3J1Y2lhbCBkZXBlbmRlbmNpZXMuIGBCT05ESU5HYCB1c3VhbGx5IHJlcXVpcmVzIGBJTkVUYCwgdGhhdCdzIGEgcHJldHR5IHN0YW5kYXJkIGFzc3VtcHRpb24uIEJ1dCB3aGF0IGFib3V0IGBORVRfVEVBTWA/IEknZCBiZXR0ZXIgZG91YmxlLWNoZWNrIGlmIGl0IGFsc28gcmVsaWVzIG9uIGBJTkVUYC4gSXQncyBhbHdheXMgYmVzdCB0byBiZSB0aG9yb3VnaCBhbmQgbm90IGFzc3VtZSBhbnl0aGluZywgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCBuZXR3b3JrIGNvbmZpZ3VyYXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTczLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTY6MDc6MzMuMzM3MjQ3NTI0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjUxOTA1NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC90ZWFtL0tjb25maWc9MTg9Y29uZmlnIE5FVF9URUFNX01PREVfQlJPQURDQVNUXFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTE5LVxcdHRyaXN0YXRlIFxcXCJCcm9hZGNhc3QgbW9kZSBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZzoyMDpcXHRkZXBlbmRzIG9uIE5FVF9URUFNXFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTIxLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZz0yOT1jb25maWcgTkVUX1RFQU1fTU9ERV9ST1VORFJPQklOXFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTMwLVxcdHRyaXN0YXRlIFxcXCJSb3VuZC1yb2JpbiBtb2RlIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnOjMxOlxcdGRlcGVuZHMgb24gTkVUX1RFQU1cXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctMzItXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnPTQxPWNvbmZpZyBORVRfVEVBTV9NT0RFX1JBTkRPTVxcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy00Mi1cXHR0cmlzdGF0ZSBcXFwiUmFuZG9tIG1vZGUgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWc6NDM6XFx0ZGVwZW5kcyBvbiBORVRfVEVBTVxcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy00NC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWc9NTM9Y29uZmlnIE5FVF9URUFNX01PREVfQUNUSVZFQkFDS1VQXFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTU0LVxcdHRyaXN0YXRlIFxcXCJBY3RpdmUtYmFja3VwIG1vZGUgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWc6NTU6XFx0ZGVwZW5kcyBvbiBORVRfVEVBTVxcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy01Ni1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWc9NjY9Y29uZmlnIE5FVF9URUFNX01PREVfTE9BREJBTEFOQ0VcXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctNjctXFx0dHJpc3RhdGUgXFxcIkxvYWQtYmFsYW5jZSBtb2RlIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnOjY4OlxcdGRlcGVuZHMgb24gTkVUX1RFQU1cXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctNjktXFx0aGVscFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNjowNzozMy4zODM3NzI0NDlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk1NDU2MDQ1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHRha2luZyBvbiB0aGUgcGVyc29uYSB5b3UgcmVxdWVzdGVkOlxuXG4qKkRlY29uc3RydWN0aW5nIERlcGVuZGVuY2llcyBpbiBDaGVtaWNhbCBCb25kaW5nKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gZGlzc2VjdCB0aGUgdmVyeSBmb3VuZGF0aW9uIG9mIHRoaXMgY29uY2VwdDogYEJPTkRJTkdgLiBJIG5lZWQgdG8gZmlndXJlIG91dCwgd2l0aCBhYnNvbHV0ZSBwcmVjaXNpb24sIHdoYXQgZmFjdG9ycyBhbmQgcHJpbmNpcGxlcyBpdCdzICplbnRpcmVseSogY29udGluZ2VudCB1cG9uLiBUaGlzIGlzbid0IGp1c3QgYSBzdXJmYWNlLWxldmVsIG92ZXJ2aWV3OyBJJ20gdGFsa2luZyBhYm91dCB0aGUgYmVkcm9jay4gV2hhdCBhcmUgdGhlIGZ1bmRhbWVudGFsIHBoeXNpY2FsIGFuZCBjaGVtaWNhbCBwcmluY2lwbGVzPyBXaGF0IG1vZGVscyB1bmRlcnBpbiBvdXIgdW5kZXJzdGFuZGluZz8gQXJlIHdlIHRhbGtpbmcgY2xhc3NpY2FsIGVsZWN0cm9zdGF0aWNzLCBxdWFudHVtIG1lY2hhbmljYWwgZWZmZWN0cywgb3IgYSBibGVuZCBvZiBib3RoPyBXaGF0IGFyZSB0aGUga2V5IG1hdGhlbWF0aWNhbCBleHByZXNzaW9ucywgYW5kIGhvdyBkbyB0aGV5IGludGVycmVsYXRlPyBJdCdzIGFib3V0IHB1bGxpbmcgYmFjayB0aGUgbGF5ZXJzIHVudGlsIEkgY2FuIHNlZSB0aGUgcmF3LCBlc3NlbnRpYWwgY29tcG9uZW50cy4gVGhpcyByZXF1aXJlcyBhIHN5c3RlbWF0aWMsIGFsbW9zdCBhbmFseXRpY2FsIGFwcHJvYWNoLCBhbmQgSSdsbCBuZWVkIHRvIHdvcmsgdGhyb3VnaCB0aGlzIGNhcmVmdWxseS4gSSdtIHRoaW5raW5nLi4uIHdoYXQncyB0aGUgZmlyc3QgcHJpbmNpcGxlIHRvIGNoZWNrP1xuXG5cbiIsIklucHV0VG9rZW5zIjo0ODgzLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTY6MDc6MzYuMzM4MzM2NTYyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzMwMjU3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQk9ORElOR1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L0tjb25maWc9Mzk9aWYgTkVUX0NPUkVcXG5kcml2ZXJzL25ldC9LY29uZmlnLTQwLVxcbmRyaXZlcnMvbmV0L0tjb25maWc6NDE6Y29uZmlnIEJPTkRJTkdcXG5kcml2ZXJzL25ldC9LY29uZmlnLTQyLVxcdHRyaXN0YXRlIFxcXCJCb25kaW5nIGRyaXZlciBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNjowNzozNi4zODU2NDQ1MjdaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY2OTc0MzE0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJJ20gdGFraW5nIGEgbG9vayBhdCB0aGlzIGNvbmZpZ3VyYXRpb24sIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiB3aGF0J3MgdW5kZXIgdGhlIGBjb25maWcgQk9ORElOR2AgZGlyZWN0aXZlLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBpcyB0byB1bmRlcnN0YW5kIHRoZSBpbnRlbnQgYW5kIHN0cnVjdHVyZSBoZXJlLiBJJ20gZXhwZWN0aW5nIHRvIHNlZSBkZWZpbml0aW9ucyByZWxhdGVkIHRvIG5ldHdvcmsgYm9uZGluZyDigJMgaW50ZXJmYWNlIGFnZ3JlZ2F0aW9uLCBsb2FkIGJhbGFuY2luZywgZmFpbG92ZXIsIHRoYXQgc29ydCBvZiB0aGluZy4gSSBhbnRpY2lwYXRlIHBvdGVudGlhbGx5IHNlZWluZyBkaWZmZXJlbnQgYm9uZGluZyBtb2RlcyBkZWZpbmVkIChlLmcuLCBhY3RpdmUtYmFja3VwLCBMQUNQLCBiYWxhbmNlLXJyLCBldGMuKSwgYWxvbmcgd2l0aCBhc3NvY2lhdGVkIHBhcmFtZXRlcnMgbGlrZSB0aGUgaW50ZXJmYWNlcyBpbnZvbHZlZCwgdGhlIGJvbmRpbmcgZHJpdmVyIGJlaW5nIHVzZWQsIGFuZCBwZXJoYXBzIGV2ZW4gc29tZSB0dW5pbmcgb3B0aW9ucyBsaWtlIHRoZSB0cmFuc21pdCBoYXNoIHBvbGljeSBvciBBUlAgbW9uaXRvcmluZyBzZXR0aW5ncy4gSSdtIG1lbnRhbGx5IHBhcnNpbmcgdGhpcyBmb3IgYmVzdCBwcmFjdGljZXMgb3IgYW55IGltbWVkaWF0ZSByZWQgZmxhZ3MuIEkgYW0gaW1tZWRpYXRlbHkgYXdhcmUgb2YgbXkgbmVlZCB0byBjb21wYXJlIHRoaXMgY29uZmlnIHdpdGggYmVzdCBwcmFjdGljZSBhbmQgbXkgb3duIHByZXZpb3VzIGV4cGVyaWVuY2UuIEkgbmVlZCB0byBub3RlIGFueSB1bnVzdWFsIG9yIHVuZXhwZWN0ZWQgc2V0dGluZ3MuIFVsdGltYXRlbHksIEknbSB0cnlpbmcgdG8gcXVpY2tseSBhc2NlcnRhaW4gdGhlIG92ZXJhbGwgbmV0d29ya2luZyBkZXNpZ24gd2l0aGluIHRoaXMgc2VjdGlvbiBhbmQgd2hldGhlciBpdCBhbGlnbnMgd2l0aCBwZXJmb3JtYW5jZSBhbmQgcmVkdW5kYW5jeSByZXF1aXJlbWVudHMgZm9yIHRoZSBzeXN0ZW0uIEknbSBsb29raW5nIGZvciBhIGNsZWFyIGFuZCBjb25jaXNlIGRlY2xhcmF0aW9uIG9mIHRoZSBib25kaW5nIHNldHVwIGFuZCBob3cgaXQgd2lsbCBvcGVyYXRlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTkxLCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTY6MDc6NDAuMDU1MzkwMTc0WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjI2NDQ5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZz02PW1lbnVjb25maWcgTkVUREVWSUNFU1xcbmRyaXZlcnMvbmV0L0tjb25maWctNy1cXHRkZWZhdWx0IHkgaWYgVU1MXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo4OlxcdGRlcGVuZHMgb24gTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZy05LVxcdGJvb2wgXFxcIk5ldHdvcmsgZGV2aWNlIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTQxPWNvbmZpZyBCT05ESU5HXFxuZHJpdmVycy9uZXQvS2NvbmZpZy00Mi1cXHR0cmlzdGF0ZSBcXFwiQm9uZGluZyBkcml2ZXIgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjQzOlxcdGRlcGVuZHMgb24gSU5FVFxcbmRyaXZlcnMvbmV0L0tjb25maWc6NDQ6XFx0ZGVwZW5kcyBvbiBUTFMgfHwgVExTX0RFVklDRT1uXFxuZHJpdmVycy9uZXQvS2NvbmZpZy00NS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTc0PWNvbmZpZyBXSVJFR1VBUkRcXG5kcml2ZXJzL25ldC9LY29uZmlnLTc1LVxcdHRyaXN0YXRlIFxcXCJXaXJlR3VhcmQgc2VjdXJlIG5ldHdvcmsgdHVubmVsXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6NzY6XFx0ZGVwZW5kcyBvbiBORVQgXFx1MDAyNlxcdTAwMjYgSU5FVFxcbmRyaXZlcnMvbmV0L0tjb25maWctNzctXFx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTkyPWNvbmZpZyBXSVJFR1VBUkRfREVCVUdcXG5kcml2ZXJzL25ldC9LY29uZmlnLTkzLVxcdGJvb2wgXFxcIkRlYnVnZ2luZyBjaGVja3MgYW5kIHZlcmJvc2UgbWVzc2FnZXNcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo5NDpcXHRkZXBlbmRzIG9uIFdJUkVHVUFSRFxcbmRyaXZlcnMvbmV0L0tjb25maWctOTUtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0xMDM9Y29uZmlnIE9WUE5cXG5kcml2ZXJzL25ldC9LY29uZmlnLTEwNC1cXHR0cmlzdGF0ZSBcXFwiT3BlblZQTiBkYXRhIGNoYW5uZWwgb2ZmbG9hZFxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjEwNTpcXHRkZXBlbmRzIG9uIE5FVCBcXHUwMDI2XFx1MDAyNiBJTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0xMDYtXFx0c2VsZWN0IERTVF9DQUNIRVxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0xMzY9Y29uZmlnIE5FVF9GQ1xcbmRyaXZlcnMvbmV0L0tjb25maWctMTM3LVxcdGJvb2wgXFxcIkZpYnJlIENoYW5uZWwgZHJpdmVyIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzoxMzg6XFx0ZGVwZW5kcyBvbiBTQ1NJIFxcdTAwMjZcXHUwMDI2IFBDSVxcbmRyaXZlcnMvbmV0L0tjb25maWctMTM5LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9MTQ5PWNvbmZpZyBJRkJcXG5kcml2ZXJzL25ldC9LY29uZmlnLTE1MC1cXHR0cmlzdGF0ZSBcXFwiSW50ZXJtZWRpYXRlIEZ1bmN0aW9uYWwgQmxvY2sgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjE1MTpcXHRkZXBlbmRzIG9uIE5FVF9BQ1RfTUlSUkVEIHx8IE5GVF9GV0RfTkVUREVWXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0xNTItXFx0c2VsZWN0IE5FVF9SRURJUkVDVFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0xNzk9Y29uZmlnIE1BQ1ZUQVBcXG5kcml2ZXJzL25ldC9LY29uZmlnLTE4MC1cXHR0cmlzdGF0ZSBcXFwiTUFDLVZMQU4gYmFzZWQgdGFwIGRyaXZlclxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjE4MTpcXHRkZXBlbmRzIG9uIE1BQ1ZMQU5cXG5kcml2ZXJzL25ldC9LY29uZmlnOjE4MjpcXHRkZXBlbmRzIG9uIElORVRcXG5kcml2ZXJzL25ldC9LY29uZmlnLTE4My1cXHRzZWxlY3QgVEFQXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTE5Mz1jb25maWcgSVBWTEFOX0wzU1xcbmRyaXZlcnMvbmV0L0tjb25maWc6MTk0OlxcdGRlcGVuZHMgb24gTkVURklMVEVSXFxuZHJpdmVycy9uZXQvS2NvbmZpZzoxOTU6XFx0ZGVwZW5kcyBvbiBJUFZMQU5cXG5kcml2ZXJzL25ldC9LY29uZmlnLTE5Ni1cXHRkZWZfYm9vbCB5XFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTE5OT1jb25maWcgSVBWTEFOXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yMDAtXFx0dHJpc3RhdGUgXFxcIklQLVZMQU4gc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjIwMTpcXHRkZXBlbmRzIG9uIElORVRcXG5kcml2ZXJzL25ldC9LY29uZmlnLTIwMi1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTIxNj1jb25maWcgSVBWVEFQXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yMTctXFx0dHJpc3RhdGUgXFxcIklQLVZMQU4gYmFzZWQgdGFwIGRyaXZlclxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjIxODpcXHRkZXBlbmRzIG9uIElQVkxBTlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MjE5OlxcdGRlcGVuZHMgb24gSU5FVFxcbmRyaXZlcnMvbmV0L0tjb25maWctMjIwLVxcdHNlbGVjdCBUQVBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9MjMwPWNvbmZpZyBWWExBTlxcbmRyaXZlcnMvbmV0L0tjb25maWctMjMxLVxcdHRyaXN0YXRlIFxcXCJWaXJ0dWFsIGVYdGVuc2libGUgTG9jYWwgQXJlYSBOZXR3b3JrIChWWExBTilcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzoyMzI6XFx0ZGVwZW5kcyBvbiBJTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yMzMtXFx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTI0NT1jb25maWcgR0VORVZFXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yNDYtXFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgTmV0d29yayBWaXJ0dWFsaXphdGlvbiBFbmNhcHN1bGF0aW9uXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MjQ3OlxcdGRlcGVuZHMgb24gSU5FVFxcbmRyaXZlcnMvbmV0L0tjb25maWctMjQ4LVxcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0yNjA9Y29uZmlnIEJBUkVVRFBcXG5kcml2ZXJzL25ldC9LY29uZmlnLTI2MS1cXHR0cmlzdGF0ZSBcXFwiQmFyZSBVRFAgRW5jYXBzdWxhdGlvblxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjI2MjpcXHRkZXBlbmRzIG9uIElORVRcXG5kcml2ZXJzL25ldC9LY29uZmlnLTI2My1cXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9MjcyPWNvbmZpZyBHVFBcXG5kcml2ZXJzL25ldC9LY29uZmlnLTI3My1cXHR0cmlzdGF0ZSBcXFwiR1BSUyBUdW5uZWxpbmcgUHJvdG9jb2wgZGF0YXBhdGggKEdUUC1VKVxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjI3NDpcXHRkZXBlbmRzIG9uIElORVRcXG5kcml2ZXJzL25ldC9LY29uZmlnLTI3NS1cXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9Mjg5PWNvbmZpZyBQRkNQXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yOTAtXFx0dHJpc3RhdGUgXFxcIlBhY2tldCBGb3J3YXJkaW5nIENvbnRyb2wgUHJvdG9jb2wgKFBGQ1ApXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MjkxOlxcdGRlcGVuZHMgb24gSU5FVFxcbmRyaXZlcnMvbmV0L0tjb25maWctMjkyLVxcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0zMDI9Y29uZmlnIEFNVFxcbmRyaXZlcnMvbmV0L0tjb25maWctMzAzLVxcdHRyaXN0YXRlIFxcXCJBdXRvbWF0aWMgTXVsdGljYXN0IFR1bm5lbGluZyAoQU1UKVxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjMwNDpcXHRkZXBlbmRzIG9uIElORVQgXFx1MDAyNlxcdTAwMjYgSVBfTVVMVElDQVNUXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zMDUtXFx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTMyNz1jb25maWcgTkVUQ09OU09MRVxcbmRyaXZlcnMvbmV0L0tjb25maWctMzI4LVxcdHRyaXN0YXRlIFxcXCJOZXR3b3JrIGNvbnNvbGUgbG9nZ2luZyBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MzI5OlxcdGRlcGVuZHMgb24gUFJJTlRLXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zMzAtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0zMzQ9Y29uZmlnIE5FVENPTlNPTEVfRFlOQU1JQ1xcbmRyaXZlcnMvbmV0L0tjb25maWctMzM1LVxcdGJvb2wgXFxcIkR5bmFtaWMgcmVjb25maWd1cmF0aW9uIG9mIGxvZ2dpbmcgdGFyZ2V0c1xcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjMzNjpcXHRkZXBlbmRzIG9uIE5FVENPTlNPTEUgXFx1MDAyNlxcdTAwMjYgU1lTRlMgXFx1MDAyNlxcdTAwMjYgQ09ORklHRlNfRlMgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbmRyaXZlcnMvbmV0L0tjb25maWctMzM3LVxcdFxcdFxcdCEoTkVUQ09OU09MRT15IFxcdTAwMjZcXHUwMDI2IENPTkZJR0ZTX0ZTPW0pXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTM0NT1jb25maWcgTkVUQ09OU09MRV9FWFRFTkRFRF9MT0dcXG5kcml2ZXJzL25ldC9LY29uZmlnLTM0Ni1cXHRib29sIFxcXCJTZXQga2VybmVsIGV4dGVuZGVkIG1lc3NhZ2UgYnkgZGVmYXVsdFxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjM0NzpcXHRkZXBlbmRzIG9uIE5FVENPTlNPTEVcXG5kcml2ZXJzL25ldC9LY29uZmlnLTM0OC1cXHRkZWZhdWx0IG5cXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9MzU1PWNvbmZpZyBORVRDT05TT0xFX1BSRVBFTkRfUkVMRUFTRVxcbmRyaXZlcnMvbmV0L0tjb25maWctMzU2LVxcdGJvb2wgXFxcIlByZXBlbmQga2VybmVsIHJlbGVhc2UgdmVyc2lvbiBpbiB0aGUgbWVzc2FnZSBieSBkZWZhdWx0XFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MzU3OlxcdGRlcGVuZHMgb24gTkVUQ09OU09MRV9FWFRFTkRFRF9MT0dcXG5kcml2ZXJzL25ldC9LY29uZmlnLTM1OC1cXHRkZWZhdWx0IG5cXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9MzczPWNvbmZpZyBOVEJfTkVUREVWXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zNzQtXFx0dHJpc3RhdGUgXFxcIlZpcnR1YWwgRXRoZXJuZXQgb3ZlciBOVEIgVHJhbnNwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6Mzc1OlxcdGRlcGVuZHMgb24gTlRCX1RSQU5TUE9SVFxcbmRyaXZlcnMvbmV0L0tjb25maWctMzc2LVxcbmRyaXZlcnMvbmV0L0tjb25maWc9Mzc3PWNvbmZpZyBSSU9ORVRcXG5kcml2ZXJzL25ldC9LY29uZmlnLTM3OC1cXHR0cmlzdGF0ZSBcXFwiUmFwaWRJTyBFdGhlcm5ldCBvdmVyIG1lc3NhZ2luZyBkcml2ZXIgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjM3OTpcXHRkZXBlbmRzIG9uIFJBUElESU9cXG5kcml2ZXJzL25ldC9LY29uZmlnLTM4MC1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTM4MT1jb25maWcgUklPTkVUX1RYX1NJWkVcXG5kcml2ZXJzL25ldC9LY29uZmlnLTM4Mi1cXHRpbnQgXFxcIk51bWJlciBvZiBvdXRib3VuZCBxdWV1ZSBlbnRyaWVzXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MzgzOlxcdGRlcGVuZHMgb24gUklPTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zODQtXFx0ZGVmYXVsdCBcXFwiMTI4XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0zODY9Y29uZmlnIFJJT05FVF9SWF9TSVpFXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zODctXFx0aW50IFxcXCJOdW1iZXIgb2YgaW5ib3VuZCBxdWV1ZSBlbnRyaWVzXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6Mzg4OlxcdGRlcGVuZHMgb24gUklPTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zODktXFx0ZGVmYXVsdCBcXFwiMTI4XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0zOTE9Y29uZmlnIFRVTlxcbmRyaXZlcnMvbmV0L0tjb25maWctMzkyLVxcdHRyaXN0YXRlIFxcXCJVbml2ZXJzYWwgVFVOL1RBUCBkZXZpY2UgZHJpdmVyIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzozOTM6XFx0ZGVwZW5kcyBvbiBJTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zOTQtXFx0c2VsZWN0IENSQzMyXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTQ0Mz1jb25maWcgVklSVElPX05FVFxcbmRyaXZlcnMvbmV0L0tjb25maWctNDQ0LVxcdHRyaXN0YXRlIFxcXCJWaXJ0aW8gbmV0d29yayBkcml2ZXJcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo0NDU6XFx0ZGVwZW5kcyBvbiBWSVJUSU9cXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ0Ni1cXHRzZWxlY3QgTkVUX0ZBSUxPVkVSXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTQ2Mz1jb25maWcgTkVUS0lUXFxuZHJpdmVycy9uZXQvS2NvbmZpZy00NjQtXFx0Ym9vbCBcXFwiQlBGLXByb2dyYW1tYWJsZSBuZXR3b3JrIGRldmljZVxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjQ2NTpcXHRkZXBlbmRzIG9uIEJQRl9TWVNDQUxMXFxuZHJpdmVycy9uZXQvS2NvbmZpZy00NjYtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz00NzI9Y29uZmlnIE5FVF9WUkZcXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ3My1cXHR0cmlzdGF0ZSBcXFwiVmlydHVhbCBSb3V0aW5nIGFuZCBGb3J3YXJkaW5nIChMaXRlKVxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjQ3NDpcXHRkZXBlbmRzIG9uIElQX01VTFRJUExFX1RBQkxFU1xcbmRyaXZlcnMvbmV0L0tjb25maWc6NDc1OlxcdGRlcGVuZHMgb24gTkVUX0wzX01BU1RFUl9ERVZcXG5kcml2ZXJzL25ldC9LY29uZmlnOjQ3NjpcXHRkZXBlbmRzIG9uIElQVjZfTVVMVElQTEVfVEFCTEVTIHx8IElQVjY9blxcbmRyaXZlcnMvbmV0L0tjb25maWctNDc3LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NDgxPWNvbmZpZyBWU09DS01PTlxcbmRyaXZlcnMvbmV0L0tjb25maWctNDgyLVxcdHRyaXN0YXRlIFxcXCJWaXJ0dWFsIHZzb2NrIG1vbml0b3JpbmcgZGV2aWNlXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6NDgzOlxcdGRlcGVuZHMgb24gVkhPU1RfVlNPQ0tcXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ4NC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTQ4OT1jb25maWcgTUhJX05FVFxcbmRyaXZlcnMvbmV0L0tjb25maWctNDkwLVxcdHRyaXN0YXRlIFxcXCJNSEkgbmV0d29yayBkcml2ZXJcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo0OTE6XFx0ZGVwZW5kcyBvbiBNSElfQlVTXFxuZHJpdmVycy9uZXQvS2NvbmZpZy00OTItXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz01NDQ9Y29uZmlnIFhFTl9ORVRERVZfRlJPTlRFTkRcXG5kcml2ZXJzL25ldC9LY29uZmlnLTU0NS1cXHR0cmlzdGF0ZSBcXFwiWGVuIG5ldHdvcmsgZGV2aWNlIGZyb250ZW5kIGRyaXZlclxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjU0NjpcXHRkZXBlbmRzIG9uIFhFTlxcbmRyaXZlcnMvbmV0L0tjb25maWctNTQ3LVxcdHNlbGVjdCBYRU5fWEVOQlVTX0ZST05URU5EXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTU2Mj1jb25maWcgWEVOX05FVERFVl9CQUNLRU5EXFxuZHJpdmVycy9uZXQvS2NvbmZpZy01NjMtXFx0dHJpc3RhdGUgXFxcIlhlbiBiYWNrZW5kIG5ldHdvcmsgZGV2aWNlXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6NTY0OlxcdGRlcGVuZHMgb24gWEVOX0JBQ0tFTkRcXG5kcml2ZXJzL25ldC9LY29uZmlnLTU2NS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTU4ND1jb25maWcgVk1YTkVUM1xcbmRyaXZlcnMvbmV0L0tjb25maWctNTg1LVxcdHRyaXN0YXRlIFxcXCJWTXdhcmUgVk1YTkVUMyBldGhlcm5ldCBkcml2ZXJcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo1ODY6XFx0ZGVwZW5kcyBvbiBQQ0kgXFx1MDAyNlxcdTAwMjYgSU5FVFxcbmRyaXZlcnMvbmV0L0tjb25maWc6NTg3OlxcdGRlcGVuZHMgb24gUEFHRV9TSVpFX0xFU1NfVEhBTl82NEtCXFxuZHJpdmVycy9uZXQvS2NvbmZpZy01ODgtXFx0c2VsZWN0IFBBR0VfUE9PTFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz01OTQ9Y29uZmlnIEZVSklUU1VfRVNcXG5kcml2ZXJzL25ldC9LY29uZmlnLTU5NS1cXHR0cmlzdGF0ZSBcXFwiRlVKSVRTVSBFeHRlbmRlZCBTb2NrZXQgTmV0d29yayBEZXZpY2UgZHJpdmVyXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6NTk2OlxcdGRlcGVuZHMgb24gQUNQSVxcbmRyaXZlcnMvbmV0L0tjb25maWctNTk3LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NjA0PWNvbmZpZyBORVRERVZTSU1cXG5kcml2ZXJzL25ldC9LY29uZmlnLTYwNS1cXHR0cmlzdGF0ZSBcXFwiU2ltdWxhdGVkIG5ldHdvcmtpbmcgZGV2aWNlXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6NjA2OlxcdGRlcGVuZHMgb24gREVCVUdfRlNcXG5kcml2ZXJzL25ldC9LY29uZmlnOjYwNzpcXHRkZXBlbmRzIG9uIElORVRcXG5kcml2ZXJzL25ldC9LY29uZmlnOjYwODpcXHRkZXBlbmRzIG9uIFBTQU1QTEUgfHwgUFNBTVBMRT1uXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo2MDk6XFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19NT0NLIHx8IFBUUF8xNTg4X0NMT0NLX01PQ0s9blxcbmRyaXZlcnMvbmV0L0tjb25maWctNjEwLVxcdHNlbGVjdCBORVRfREVWTElOS1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNjowNzo0MC4xMDE2NTk0MTlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkyOTgwNTAwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeGFtaW5pbmcgTmV0d29yayBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhlc2UgbmV0d29yayBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEl0IGxvb2tzIGxpa2UgYEJPTkRJTkdgIGlzIGV4cGxpY2l0bHkgcmVsaWFudCBvbiBib3RoIGBJTkVUYCBhbmQgZWl0aGVyIGBUTFNgIG9yLCBjcnVjaWFsbHksIGBUTFNfREVWSUNFYCAqbm90KiBiZWluZyBkZWZpbmVkLiBUaGF0J3Mgc3RyYWlnaHRmb3J3YXJkIGVub3VnaC4gTm93LCBJJ20gbG9va2luZyBhdCBgTkVUX1RFQU1gLiBNeSBpbml0aWFsIGltcHJlc3Npb24gd2FzIHRoYXQgaXQgb25seSBuZWVkZWQgYE5FVGAsIGFuZCBub3RoaW5nIGVsc2UuIEkgbmVlZCB0byBtYWtlIGNlcnRhaW4gdGhvdWdoLCBzbyBJJ2xsIGRvdWJsZS1jaGVjayB0aGUgS2NvbmZpZyBmaWxlIGZvciBgTkVUX1RFQU1gLiBJIGtub3cgSeKAmXZlIHNlZW4gdGhhdCBkcml2ZXIgYmVmb3JlLiBBaCwgeWVzLCBpdCdzIGxvY2F0ZWQgaW4gYGRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZ2AuIExldCBtZSBnbyBiYWNrIHRoZXJlIGFuZCByZS1leGFtaW5lIHRoYXQgS2NvbmZpZyBmaWxlIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NDk0LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTY6MDc6NDQuMDMxNDY2OTc5WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Njg5MzYxNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC90ZWFtL0tjb25maWc9MTg9Y29uZmlnIE5FVF9URUFNX01PREVfQlJPQURDQVNUXFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTE5LVxcdHRyaXN0YXRlIFxcXCJCcm9hZGNhc3QgbW9kZSBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZzoyMDpcXHRkZXBlbmRzIG9uIE5FVF9URUFNXFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTIxLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZz0yOT1jb25maWcgTkVUX1RFQU1fTU9ERV9ST1VORFJPQklOXFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTMwLVxcdHRyaXN0YXRlIFxcXCJSb3VuZC1yb2JpbiBtb2RlIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnOjMxOlxcdGRlcGVuZHMgb24gTkVUX1RFQU1cXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctMzItXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnPTQxPWNvbmZpZyBORVRfVEVBTV9NT0RFX1JBTkRPTVxcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy00Mi1cXHR0cmlzdGF0ZSBcXFwiUmFuZG9tIG1vZGUgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWc6NDM6XFx0ZGVwZW5kcyBvbiBORVRfVEVBTVxcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy00NC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWc9NTM9Y29uZmlnIE5FVF9URUFNX01PREVfQUNUSVZFQkFDS1VQXFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTU0LVxcdHRyaXN0YXRlIFxcXCJBY3RpdmUtYmFja3VwIG1vZGUgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWc6NTU6XFx0ZGVwZW5kcyBvbiBORVRfVEVBTVxcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy01Ni1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWc9NjY9Y29uZmlnIE5FVF9URUFNX01PREVfTE9BREJBTEFOQ0VcXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctNjctXFx0dHJpc3RhdGUgXFxcIkxvYWQtYmFsYW5jZSBtb2RlIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnOjY4OlxcdGRlcGVuZHMgb24gTkVUX1RFQU1cXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctNjktXFx0aGVscFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNjowNzo0NC4wNzgzNjkyMTVaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE2NTQ3MTkzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGluIHRoZSBmaXJzdCBwZXJzb24sIGFzc3VtaW5nIHRoZSBjb250ZXh0IGlzIGtlcm5lbCBkZXZlbG9wbWVudCBhbmQgSSdtIGFuIGV4cGVydDpcblxuKipJbnZlc3RpZ2F0aW5nIGEgTmV0d29yayBEcml2ZXIncyBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBsZXQgbWUgc2VlLiBgTkVUX1RFQU1gLi4uIEhtbSwgaXQgc2VlbXMgbGlrZSB0aGVyZSBhcmUgbm8gZXhwbGljaXQgYGRlcGVuZHMgb25gIGNsYXVzZXMgbGlzdGVkIGZvciBgTkVUX1RFQU1gIGl0c2VsZiBpbiB0aGUgS2NvbmZpZyBmaWxlLiBUaGF0J3MgdW51c3VhbC4gSXQgbWFrZXMgbWUgd29uZGVyIHdoYXQgdGhlIGFjdGl2YXRpb24gY3JpdGVyaWEgYXJlIGZvciB0aGlzIHRoaW5nLiBBaGEhIFdhaXQgYSBzZWNvbmQuLi4gSSBiZXQgaXQncyBpbmNsdWRlZCBmcm9tIGBkcml2ZXJzL25ldC9LY29uZmlnYCwgaXNuJ3QgaXQ/IFRoYXQgd291bGQgZXhwbGFpbiB0aGUgbGFjayBvZiBkaXJlY3QgZGVwZW5kZW5jaWVzIGluIHRoaXMgc2VjdGlvbi4gSSBuZWVkIHRvIGdvIGxvb2sgdGhlcmUgYW5kIHNlZSB3aGF0IGNvbmRpdGlvbmFscyBhcmUgYXBwbGllZCBpbiB0aGF0IGZpbGUgdGhhdCBicmluZyBgTkVUX1RFQU1gIGludG8gdGhlIHBpY3R1cmUuIFRoYXQgd2lsbCBjbGFyaWZ5IGhvdyB0aGlzIGZlYXR1cmUgaXMgZW5hYmxlZCwgZXZlbiBpZiB0aGUgb3B0aW9uIGl0c2VsZiBkb2Vzbid0IGV4cGxpY2l0bHkgc3RhdGUgaXRzIHJlcXVpcmVtZW50cyBkaXJlY3RseSBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MTc4LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTY6MDc6NDcuMjQzODQ1MTM0WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzQxODI5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZ1xcXCJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnPTE0OT1jb25maWcgSUZCXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnLTE2Mi1cXG5kcml2ZXJzL25ldC9LY29uZmlnOjE2Mzpzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnLTE2NC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTY6MDc6NDcuMjkxMjcxMjI5WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2NzYwMTgxOTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgTmV0d29yayBUZWFtIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ3ZlIG5hdmlnYXRlZCB0byBgZHJpdmVycy9uZXQvS2NvbmZpZ2AsIGFuZCBhcyBleHBlY3RlZCwgYE5FVF9URUFNYCBzaXRzIGNvbWZvcnRhYmx5IHVuZGVyIGBtZW51Y29uZmlnIE5FVERFVklDRVNgLCB3aGljaCBpcyBpdHNlbGYgZGVwZW5kZW50IG9uIGBORVRgLiBHb29kLCB0aGF0IHZhbGlkYXRlcyB0aGUgaW5pdGlhbCBhc3N1bXB0aW9ucywgdGhlIGBORVRfVEVBTWAgZGVwZW5kZW5jeSBpcyBpbiBwbGFjZS5cblxuTm93LCB0aGUgY3J1Y2lhbCBuZXh0IHN0ZXAuIFdlIG5lZWQgdG8gZXhwbGljaXRseSBlbnN1cmUgdGhhdCBib3RoIGBCT05ESU5HYCBhbmQgYE5FVF9URUFNYCBhcmUgZW5hYmxlZCBpbiB0aGUgY29uZmlndXJhdGlvbi4gVGhhdCBmZWVscyBsaWtlIGEgcHJlcmVxdWlzaXRlIHRvIGFueSByZWFsIGZ1bmN0aW9uYWxpdHkuXG5cbkFuZCBsZXTigJlzIGxvb2sgYXQgdGhlIHRlYW0gbW9kZXM6IGBORVRfVEVBTV9NT0RFX1JPVU5EUk9CSU5gLCBgTkVUX1RFQU1fTU9ERV9BQ1RJVkVCQUNLVVBgLCBgTkVUX1RFQU1fTU9ERV9CUk9BRENBU1RgLCBgTkVUX1RFQU1fTU9ERV9SQU5ET01gLCBhbmQgYE5FVF9URUFNX01PREVfTE9BREJBTEFOQ0VgLiBJJ20gZ3Vlc3NpbmcgdGhlc2Ugd2lsbCBiZSBlc3NlbnRpYWwgZm9yIGFjdHVhbGx5ICp1c2luZyogdGhlIHRlYW1pbmcgZmVhdHVyZXMuIFNvLCB0aGV5IHdhcnJhbnQgY2xvc2VyIGluc3BlY3Rpb24uXG5cbldhaXQsIGhvbGQgb24gYSBzZWNvbmQuIGB0ZWFtX3BvcnRfYWRkYCwgd2hpY2ggaXMgZnVuZGFtZW50YWwgdG8gdGhlIHdob2xlIHRoaW5nLCBpcyBhY3R1YWxseSBpbXBsZW1lbnRlZCBpbiBgdGVhbV9jb3JlLmNgLiBBbmQgdGhhdCBjb2RlIGlzIGNvbXBpbGVkIG9ubHkgaWYgYE5FVF9URUFNYCBpcyBlbmFibGVkLiBUaGF04oCZcyBhIGtleSBwaWVjZSBvZiBpbmZvcm1hdGlvbi4gTGV0J3MgbWFrZSBjZXJ0YWluIHRoYXQncyB0aGUgb25seSBwcmUtcmVxdWlzaXRlLlxuXG5SaWdodCwgdGltZSB0byBjaGVjayBgZHJpdmVycy9uZXQvdGVhbS9NYWtlZmlsZWAgdG8gY29uZmlybSB0aGUgcmVsYXRpb25zaGlwLiBMZXQncyBzZWUgaG93IHRoZSBvYmplY3RzIGdldCBidWlsdC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTUwOCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNjowNzo1MS45NjcyOTI0NzdaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MDE3OTY1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRlYW1fY29yZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC90ZWFtL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3RlYW0vTWFrZWZpbGUtNS1cXG5kcml2ZXJzL25ldC90ZWFtL01ha2VmaWxlOjY6dGVhbS15Oj0gdGVhbV9jb3JlLm8gdGVhbV9ubC5vXFxuZHJpdmVycy9uZXQvdGVhbS9NYWtlZmlsZS03LW9iai0kKENPTkZJR19ORVRfVEVBTSkgKz0gdGVhbS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE2OjA3OjUyLjAxNDMxOTY5MloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTE3NTgzMTEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3MsIGdpdmVuIG15IGV4cGVydGlzZTpcblxuKipNeSBEZWR1Y3RpdmUgUmVhc29uaW5nIG9uIEtlcm5lbCBNb2R1bGUgRGVwZW5kZW5jaWVzKipcblxuQWxyaWdodCwgbGV0J3Mgc2VlLiBUaGlua2luZyBhYm91dCB0aGlzIGtlcm5lbCBtb2R1bGUgc2l0dWF0aW9uLi4uIGB0ZWFtX2NvcmUub2AgaXMgZGVmaW5pdGVseSBwdWxsZWQgaW4gYXMgcGFydCBvZiB0aGUgYnJvYWRlciBgdGVhbS5vYCBidWlsZCBwcm9jZXNzLCBhbmQgdGhhdCBlbnRpcmUgYHRlYW0ub2AgdGhpbmcgaXMgc3BlY2lmaWNhbGx5IGdvdmVybmVkIGJ5IGBDT05GSUdfTkVUX1RFQU1gLiBTbywgdGhhdCBtZWFucyBzZXR0aW5nIGBORVRfVEVBTWAgaXMgc3VmZmljaWVudCB0byBlbnN1cmUgYWxsIHRoZSBuZWNlc3NhcnkgcGllY2VzIG9mIHRoZSB0ZWFtIGZ1bmN0aW9uYWxpdHkgYXJlIGluY2x1ZGVkLiBJIGRvbid0IG5lZWQgdG8gc3BlY2lmeSBhbnl0aGluZyBtb3JlIGdyYW51bGFyIHRoYW4gdGhhdCBmb3IgdGhlIFwidGVhbVwiIGZ1bmN0aW9uYWxpdHkgdG8gYmUgcHJlc2VudC4gVGhhdCdzIGdvb2QsIGtlZXBzIHRoaW5ncyBjb25jaXNlLlxuXG5BbmQgbm93LCBmb3IgYm9uZGluZywgSSdtIHByZXR0eSBjZXJ0YWluIGBib25kX21haW4uY2AgaXMgdGhlIHByaW1hcnkgbW9kdWxlIGZvciBib25kaW5nIGxvZ2ljLCBhbmQgdGhhdCdzIHRpZWQgdG8gYENPTkZJR19CT05ESU5HYC4gU28sIGlmIEkgd2FudCBib25kaW5nLCBJIG5lZWQgdG8gbWFrZSBzdXJlIGBDT05GSUdfQk9ORElOR2AgaXMgZW5hYmxlZC4gU2ltcGxlIGVub3VnaC4gVGhpcyBsaW5lcyB1cCB3aXRoIGhvdyBJJ3ZlIHNlZW4gdGhlc2UgbW9kdWxlcyBidWlsdCBpbiB0aGUgcGFzdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAwODEsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNjowNzo1NS41MzE5MDU0ODVaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MDUwMzE2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJvbmRfbWFpblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ib25kaW5nL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2JvbmRpbmcvTWFrZWZpbGU9Nj1vYmotJChDT05GSUdfQk9ORElORykgKz0gYm9uZGluZy5vXFxuZHJpdmVycy9uZXQvYm9uZGluZy9NYWtlZmlsZS03LVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvTWFrZWZpbGU6ODpib25kaW5nLW9ianMgOj0gYm9uZF9tYWluLm8gYm9uZF8zYWQubyBib25kX2FsYi5vIGJvbmRfc3lzZnMubyBib25kX3N5c2ZzX3NsYXZlLm8gYm9uZF9kZWJ1Z2ZzLm8gYm9uZF9uZXRsaW5rLm8gYm9uZF9vcHRpb25zLm9cXG5kcml2ZXJzL25ldC9ib25kaW5nL01ha2VmaWxlLTktXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE2OjA3OjU1LjU3Nzk2MjI4WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY0MDg5MjU1NDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gncyBWdWxuZXJhYmlsaXR5IFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIEkndmUgbG9va2VkIGF0IHRoaXMgcGF0Y2ggYW5kLCB5ZXMsIHRoaXMgZGVmaW5pdGVseSB3YXJyYW50cyBhIGNsb3NlciBsb29rIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLiBUaGUga2V5IGhlcmUgaXMgdGhhdCB0aGUgcGF0Y2ggbW9kaWZpZXMgYGJvbmRfZW5zbGF2ZWAgYW5kIGB0ZWFtX3BvcnRfYWRkYC4gVGhlc2UgYXJlIGNyaXRpY2FsIGZ1bmN0aW9ucywgYW5kIHRoZSBmYWN0IHRoYXQgdGhleSdyZSBhY2Nlc3NpYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rIOKAkyBzcGVjaWZpY2FsbHkgdGhpbmdzIGxpa2UgYFJUTV9ORVdMSU5LYCB3aXRoIGBJRkxBX01BU1RFUmAgb3IgYElGTEFfTElOS0lORk9gIOKAkyBtYWtlcyB0aGVtIHByaW1lIHRhcmdldHMuIFRoYXQncyB3aGVyZSBhdHRhY2tlcnMgd291bGQgaW50ZXJhY3Qgd2l0aCB0aGVtLiBTbywgdGhlIGF0dGFjayBzdXJmYWNlIGlzIGV4cG9zZWQuIFRoaXMgd2lsbCBuZWVkIG1vcmUgYW5hbHlzaXMuXG5cbk15IGZvY3VzIHNob3VsZCBiZSBvbiBgYm9uZF9lbnNsYXZlYCBhbmQgYHRlYW1fcG9ydF9hZGRgIHRoZW1zZWx2ZXM7IHRob3NlIGFyZSB0aGUga2V5IGZ1bmN0aW9ucy4gSSdsbCBuZWVkIHRvIHJlbWVtYmVyIHRoYXQgdGhlIGFmZmVjdGVkIGNvbmZpZ3VyYXRpb25zIGFyZSBgQk9ORElOR2AgYW5kIGBORVRfVEVBTWAuXG5cbk15IHJlYXNvbmluZyBpcyBzdHJhaWdodGZvcndhcmQ6IHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBjaGVjaywgYG5ldGRldl9oYXNfbWxfcHJpdigpYCwgaW4gdGhvc2UgY29yZSBmdW5jdGlvbnMuIEl0J3MgZGVzaWduZWQgdG8gcHJldmVudCBkZXZpY2VzIHVzaW5nIGBtbF9wcml2YCBmcm9tIGJlaW5nIGFkZGVkIHRvIGJvbmRpbmcgb3IgdGVhbSBkZXZpY2VzLiBUaGlzIGlzIGEgKmZ1bmN0aW9uYWwgY2hhbmdlKiB3aXRoaW4gdGhlIGNvcmUgbG9naWMgb2YgdGhlc2UgZHJpdmVycywgYW5kIHRob3NlIGRyaXZlcnMgYXJlIGFjY2Vzc2libGUgZnJvbSB1c2Vyc3BhY2UuIEVzc2VudGlhbGx5LCB3ZSBhcmUgY2hhbmdpbmcgaG93IHRoZXkgaW50ZXJmYWNlLiBXZSBuZWVkIHRvIGZ1enogdGhlc2UgZnVuY3Rpb25zICpleHRlbnNpdmVseSogdG8gZW5zdXJlIHRoYXQgdGhlIG5ldyBjaGVjayB3b3JrcyBjb3JyZWN0bHkgYWNyb3NzIGFsbCB0aGUgZGlmZmVyZW50IGRldmljZSB0eXBlcyB3ZSBtaWdodCBlbmNvdW50ZXIuIEkgbmVlZCB0byBtYWtlIHN1cmUgd2UncmUgbm90IGludHJvZHVjaW5nIGFueSByZWdyZXNzaW9ucy5cblxuV2FpdC4uLiBsZXQgbWUganVzdCBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0IGBuZXRkZXZfaGFzX21sX3ByaXZgIGlzIGFjdHVhbGx5IGRlZmluZWQgaW4gYGluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmhgLiBBbmQgeWVzLCBnb29kLCBpdCBpcy4gVGhlIHBhdGNoIGFkZGVkIGl0LiBFeGNlbGxlbnQuXG5cbk5vdywgbGV0J3MgY2FsbCBgc2V0LXJlc3VsdHNgLiBJIGhhdmUgYSBnb29kIGhhbmRsZSBvbiB3aGF0IEkgbmVlZCB0byBkbyBuZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDUyMCwiT3V0cHV0VG9rZW5zIjoxNTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTY6MDg6MDEuOTg2ODkxODIyWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODcyOTU0MjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJPTkRJTkdcIixcbiAgICBcIk5FVF9URUFNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYm9uZF9lbnNsYXZlXCIsXG4gICAgXCJ0ZWFtX3BvcnRfYWRkXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBjaGVjayBgbmV0ZGV2X2hhc19tbF9wcml2KClgIGluIGBib25kX2Vuc2xhdmVgIGFuZCBgdGVhbV9wb3J0X2FkZGAgdG8gcHJldmVudCBlbnNsYXZpbmcgb3IgYWRkaW5nIGRldmljZXMgdGhhdCB1c2UgYG1sX3ByaXZgIHRvIGJvbmRpbmcgb3IgdGVhbSBkZXZpY2VzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbG9naWMgb2YgYm9uZGluZyBhbmQgdGVhbSBkcml2ZXJzLCB3aGljaCBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGVzZSBmdW5jdGlvbnMgdG8gZW5zdXJlIHRoZSBuZXcgY2hlY2sgY29ycmVjdGx5IGhhbmRsZXMgdmFyaW91cyBkZXZpY2UgdHlwZXMgYW5kIGRvZXNuJ3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJPTkRJTkdcIixcbiAgICBcIk5FVF9URUFNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYm9uZF9lbnNsYXZlXCIsXG4gICAgXCJ0ZWFtX3BvcnRfYWRkXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBjaGVjayBgbmV0ZGV2X2hhc19tbF9wcml2KClgIGluIGBib25kX2Vuc2xhdmVgIGFuZCBgdGVhbV9wb3J0X2FkZGAgdG8gcHJldmVudCBlbnNsYXZpbmcgb3IgYWRkaW5nIGRldmljZXMgdGhhdCB1c2UgYG1sX3ByaXZgIHRvIGJvbmRpbmcgb3IgdGVhbSBkZXZpY2VzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbG9naWMgb2YgYm9uZGluZyBhbmQgdGVhbSBkcml2ZXJzLCB3aGljaCBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGVzZSBmdW5jdGlvbnMgdG8gZW5zdXJlIHRoZSBuZXcgY2hlY2sgY29ycmVjdGx5IGhhbmRsZXMgdmFyaW91cyBkZXZpY2UgdHlwZXMgYW5kIGRvZXNuJ3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNjowODowMi4wNzQxOTUyMjNaIiwiU2VxIjoyNSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNzMyNTE2OTI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTY6MDg6MDIuMDc0NzY4NzIzWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjExNzMxOTM4MTY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgY2hlY2sgYG5ldGRldl9oYXNfbWxfcHJpdigpYCB0byBwcmV2ZW50IG5ldHdvcmsgZGV2aWNlcyB0aGF0IHV0aWxpemUgdGhlIGBtbF9wcml2YCBmaWVsZCBmcm9tIGJlaW5nIGVuc2xhdmVkIGJ5IGJvbmRpbmcgb3IgdGVhbWluZyBkcml2ZXJzLiBUaGlzIGlzIGEgY29udHJvbC1mbG93IHJlc3RyaWN0aW9uIHRvIGF2b2lkIGNvbmZsaWN0cyBvciBpbnZhbGlkIGNvbmZpZ3VyYXRpb25zLiBUaGUgYHN0cnVjdCBuZXRfZGV2aWNlYCBpcyB6ZXJvLWFsbG9jYXRlZCwgbWVhbmluZyBgbWxfcHJpdmAgaXMgcHJvcGVybHkgaW5pdGlhbGl6ZWQgdG8gYE5VTExgIHVwb24gYWxsb2NhdGlvbi4gVGhlIGNoYW5nZXMgZG8gbm90IGludm9sdmUgYW55IG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzLCBvciBkYXRhIGJlaW5nIGNvcGllZCB0byB1c2VyIHNwYWNlLiBBbnkgcG90ZW50aWFsIGJ1Z3MgcmVsYXRlZCB0byB0aGlzIGNoYW5nZSB3b3VsZCBsaWtlbHkgYmUgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIG9yIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMsIHdoaWNoIGFyZSBmdWxseSBjb3ZlcmVkIGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm8tbGVha3MsIHNvIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZWQ2YTRhOTRhMDNhMmM1ZGM0MmUyMjZiODUyOWFlZGU1OGNmZWY5NlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDE1IDE2OjA3OjE0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmNcbmluZGV4IDUyMmVhYjA2MGY5ZWQuLmJiYjM0NGI2NzQ1OGQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jXG5AQCAtMTg5NCw5ICsxODk0LDkgQEAgaW50IGJvbmRfZW5zbGF2ZShzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYsIHN0cnVjdCBuZXRfZGV2aWNlICpzbGF2ZV9kZXYsXG4gXHRzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSBzcztcbiBcdGludCByZXMgPSAwLCBpO1xuIFxuLVx0aWYgKHNsYXZlX2Rldi1cdTAwM2V0eXBlID09IEFSUEhSRF9DQU4pIHtcbitcdGlmIChuZXRkZXZfaGFzX21sX3ByaXYoc2xhdmVfZGV2KSkge1xuIFx0XHRCT05EX05MX0VSUihib25kX2RldiwgZXh0YWNrLFxuLVx0XHRcdCAgICBcIkNBTiBkZXZpY2VzIGNhbm5vdCBiZSBlbnNsYXZlZFwiKTtcbitcdFx0XHQgICAgXCJkZXZpY2VzIHVzaW5nIG1sX3ByaXYgY2Fubm90IGJlIGVuc2xhdmVkXCIpO1xuIFx0XHRyZXR1cm4gLUVQRVJNO1xuIFx0fVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3RlYW0vdGVhbV9jb3JlLmMgYi9kcml2ZXJzL25ldC90ZWFtL3RlYW1fY29yZS5jXG5pbmRleCBmZWFhNzVmYmY4ZmMyLi44YmY0YzFjNWQ2NTczIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvdGVhbS90ZWFtX2NvcmUuY1xuKysrIGIvZHJpdmVycy9uZXQvdGVhbS90ZWFtX2NvcmUuY1xuQEAgLTEyMTcsNiArMTIxNywxMyBAQCBzdGF0aWMgaW50IHRlYW1fcG9ydF9hZGQoc3RydWN0IHRlYW0gKnRlYW0sIHN0cnVjdCBuZXRfZGV2aWNlICpwb3J0X2RldixcbiBcdGNoYXIgKnBvcnRuYW1lID0gcG9ydF9kZXYtXHUwMDNlbmFtZTtcbiBcdGludCBlcnI7XG4gXG4rXHRpZiAobmV0ZGV2X2hhc19tbF9wcml2KHBvcnRfZGV2KSkge1xuK1x0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFwiZGV2aWNlcyB1c2luZyBtbF9wcml2IGNhbid0IGJlIGFkZGVkIGFzIGEgdGVhbSBwb3J0XCIpO1xuK1x0XHRuZXRkZXZfZXJyKGRldiwgXCJEZXZpY2UgJXMgdXNpbmcgbWxfcHJpdiBjYW4ndCBiZSBhZGRlZCBhcyBhIHRlYW0gcG9ydFxcblwiLFxuK1x0XHRcdCAgIHBvcnRuYW1lKTtcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHR9XG4rXG4gXHRpZiAocG9ydF9kZXYtXHUwMDNlZmxhZ3MgXHUwMDI2IElGRl9MT09QQkFDSykge1xuIFx0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFwiTG9vcGJhY2sgZGV2aWNlIGNhbid0IGJlIGFkZGVkIGFzIGEgdGVhbSBwb3J0XCIpO1xuIFx0XHRuZXRkZXZfZXJyKGRldiwgXCJEZXZpY2UgJXMgaXMgbG9vcGJhY2sgZGV2aWNlLiBMb29wYmFjayBkZXZpY2VzIGNhbid0IGJlIGFkZGVkIGFzIGEgdGVhbSBwb3J0XFxuXCIsXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaCBiL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmhcbmluZGV4IDg4NDBiMTI2OTc5ZmYuLjc0NTM2ZjY0MmI0MTQgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oXG5AQCAtMjc4Niw2ICsyNzg2LDExIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBuZXRkZXZfc2V0X21sX3ByaXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdGRldi1cdTAwM2VtbF9wcml2X3R5cGUgPSB0eXBlO1xuIH1cbiBcbitzdGF0aWMgaW5saW5lIGJvb2wgbmV0ZGV2X2hhc19tbF9wcml2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4re1xuK1x0cmV0dXJuIChkZXYtXHUwMDNlbWxfcHJpdiAhPSBOVUxMKTtcbit9XG4rXG4gLypcbiAgKiBOZXQgbmFtZXNwYWNlIGlubGluZXNcbiAgKi9cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE2OjA4OjAyLjA3NDc2OTkyM1oiLCJTZXEiOjI3LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTczMTkwNTIwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipLTVNBTiBBc3Nlc3NtZW50OiBUaGlzIFBhdGNoIGlzIFNhZmUqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoLiBJdCBzZWVtcyBzdHJhaWdodGZvcndhcmQ6IGl0IGFkZHMgYSBjaGVjaywgYG5ldGRldl9oYXNfbWxfcHJpdihzbGF2ZV9kZXYpYCwgaW4gYGJvbmRfZW5zbGF2ZWAgYW5kIGB0ZWFtX3BvcnRfYWRkYC4gQmFzaWNhbGx5LCBpZiBhIGRldmljZSBoYXMgaXRzIGBtbF9wcml2YCBmaWVsZCBzZXQsIGl0IGNhbid0IGJlIGVuc2xhdmVkIGluIGVpdGhlciBhIGJvbmRpbmcgb3IgdGVhbWluZyBjb25maWd1cmF0aW9uLiBUaGUgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBwcmV2ZW50cyBzb21lIGtpbmQgb2YgY29uZmxpY3QsIGVzcGVjaWFsbHkgd2l0aCBkcml2ZXJzIGxpa2UgQ0FOIHRoYXQgdXRpbGl6ZSBgbWxfcHJpdmAuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgXCJEb2VzIGJvbmRpbmcvdGVhbWluZyBldmVuICp1c2UqIGBtbF9wcml2YD9cIiBJIHRob3VnaHQgdGhleSB1c2VkIG90aGVyIG1lY2hhbmlzbXMsIGJ1dCB0aGUgcGF0Y2ggY2xlYXJseSBzdGF0ZXMgXCJkZXZpY2VzICp1c2luZyogYG1sX3ByaXZgIGNhbm5vdCBiZSBlbnNsYXZlZFwiLlxuXG5Tbywgbm8sIHRoZXkgZG9uJ3QsIG9yIG1heWJlIHRoZXkgKmRvbid0KiAodGhhdCdzIHRoZSBwb2ludCBvZiB0aGUgcGF0Y2gpLiBMZXQgbWUgcmVwaHJhc2U6IHRoZSBwYXRjaCBpcyBwcm90ZWN0aW5nICpvdGhlciogc3Vic3lzdGVtcyB0aGF0IHJlbHkgb24gYG1sX3ByaXZgIGZyb20gYmVpbmcgc3RvbXBlZCBvbiBieSBib25kaW5nIG9yIHRlYW1pbmcuIE1ha2VzIHNlbnNlLlxuXG5BbHJpZ2h0LCBiYWNrIHRvIHRoZSBkZXRhaWxzLiBUaGUgcmVhbCBjb25jZXJuLCBhcyBhbHdheXMsIGlzIG1lbW9yeSBzYWZldHkuIERvZXMgdGhpcyBwYXRjaCBpbnRyb2R1Y2UgYW55IHJpc2tzIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIHdyaXRlcz8gIExldCdzIGxvb2sgYXQgdGhlIGNvZGUuICBUaGUgZnVuY3Rpb24gYG5ldGRldl9oYXNfbWxfcHJpdmAgaXMganVzdCBhIHNpbXBsZSBOVUxMIGNoZWNrOiBgZGV2LVx1MDAzZW1sX3ByaXYgIT0gTlVMTGAuIEl0IGRvZXNuJ3QgcmVhZCBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkuIEl0IGFsc28gZG9lc24ndCBjYXVzZSBhbnkgbmV3IGFsbG9jYXRpb25zIG9yIGNvcHkgYW55dGhpbmcgdG8gdXNlciBzcGFjZS4gSXQganVzdCByZWplY3RzIHRoZSBjb25maWd1cmF0aW9uIGlmIGBtbF9wcml2YCBpcyBzZXQuICBJZiBzb21ldGhpbmcgZ29lcyB3cm9uZywgaXQncyBnb2luZyB0byBiZSBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSwgd2hpY2ggS0FTQU4gd291bGQgaW1tZWRpYXRlbHkgY2F0Y2guXG5cbldhaXQsIGlzIGBkZXYtXHUwMDNlbWxfcHJpdmAgKmd1YXJhbnRlZWQqIHRvIGJlIGluaXRpYWxpemVkPyBJIGNoZWNrIHRoZSBgbmV0X2RldmljZWAgYWxsb2NhdGlvbiBwcm9jZXNzLiAgQWgsIGBhbGxvY19uZXRkZXZfbXFzYCBhbmQgc2ltaWxhciBmdW5jdGlvbnMgdXNlIGBrdnphbGxvY2Agb3IgYSBzaW1pbGFyIHplcm8taW5pdGlhbGl6aW5nIGZ1bmN0aW9uISAgU28sIGBkZXYtXHUwMDNlbWxfcHJpdmAgd2lsbCAqYWx3YXlzKiBiZSBpbml0aWFsaXplZCB0byBOVUxMIHdoZW4gdGhlIGRldmljZSBpcyBhbGxvY2F0ZWQuIFNvLCAqdGhhdCogd29ycnkgaXMgYWRkcmVzc2VkLlxuXG5MZXQgbWUganVzdCBkb3VibGUtY2hlY2sgZm9yIGFueSBLTVNBTiByZWxldmFuY2UuIFRoZSBuZXcgY29kZSBpcyByZWFsbHkganVzdDpcblxuYGBgY1xuc3RhdGljIGlubGluZSBib29sIG5ldGRldl9oYXNfbWxfcHJpdihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxue1xuICAgIHJldHVybiAoZGV2LVx1MDAzZW1sX3ByaXYgIT0gTlVMTCk7XG59XG5gYGBcblxuVGhpcyBpcyAqcHVyZWx5KiBhIGNvbnRyb2wgZmxvdyBjaGFuZ2UgYmFzZWQgb24gYSBzaW1wbGUgTlVMTCBjaGVjay4gIE5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3Vlcy4gIE5vIG5lZWQgZm9yIEtNU0FOLiBUaGUgcG90ZW50aWFsIGJ1Z3MgYXJlIGNvdmVyZWQgYnkgS0FTQU4uXG5cblNvLCB0aGUgcmVhc29uaW5nIGlzIHByZXR0eSBjbGVhcjogVGhpcyBwYXRjaCBlbmZvcmNlcyBhIGNvbmZpZ3VyYXRpb24gcmVzdHJpY3Rpb24uIEl0IGF2b2lkcyBjb25mbGljdHMgYnkgcHJldmVudGluZyBjZXJ0YWluIGRldmljZXMgZnJvbSBiZWluZyBlbnNsYXZlZC4gIFRoZSBgc3RydWN0IG5ldF9kZXZpY2VgIGlzIGluaXRpYWxpemVkLCBtYWtpbmcgdGhlIE5VTEwgY2hlY2sgc2FmZS4gSXQgaGFzIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBhbGxvY2F0aW9ucywgb3IgdXNlci1zcGFjZSBjb3BpZXMuIEFueSBidWdzIHdvdWxkIGJlIGNhdWdodCBieSBzdGFuZGFyZCBkZXRlY3RvcnMgYW5kIEtBU0FOLiAqKk5lZWRzS01TQU4gaXMgY2xlYXJseSBGYWxzZS4qKlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTQ4LCJPdXRwdXRUb2tlbnMiOjE5NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc4MiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE2OjA4OjEzLjgwNjY4MDYwMVoiLCJTZXEiOjI4LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGNoZWNrIGBuZXRkZXZfaGFzX21sX3ByaXYoKWAgdG8gcHJldmVudCBuZXR3b3JrIGRldmljZXMgdGhhdCB1dGlsaXplIHRoZSBgbWxfcHJpdmAgZmllbGQgZnJvbSBiZWluZyBlbnNsYXZlZCBieSBib25kaW5nIG9yIHRlYW1pbmcgZHJpdmVycy4gVGhpcyBpcyBhIGNvbnRyb2wtZmxvdyByZXN0cmljdGlvbiB0byBhdm9pZCBjb25mbGljdHMgb3IgaW52YWxpZCBjb25maWd1cmF0aW9ucy4gVGhlIGBzdHJ1Y3QgbmV0X2RldmljZWAgaXMgemVyby1hbGxvY2F0ZWQsIG1lYW5pbmcgYG1sX3ByaXZgIGlzIHByb3Blcmx5IGluaXRpYWxpemVkIHRvIGBOVUxMYCB1cG9uIGFsbG9jYXRpb24uIFRoZSBjaGFuZ2VzIGRvIG5vdCBpbnZvbHZlIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBjb21wbGV4IGRhdGEgc3RydWN0dXJlcywgb3IgZGF0YSBiZWluZyBjb3BpZWQgdG8gdXNlciBzcGFjZS4gQW55IHBvdGVudGlhbCBidWdzIHJlbGF0ZWQgdG8gdGhpcyBjaGFuZ2Ugd291bGQgbGlrZWx5IGJlIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBvciBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzLCB3aGljaCBhcmUgZnVsbHkgY292ZXJlZCBieSBLQVNBTiBhbmQgc3RhbmRhcmQgYnVnIGRldGVjdG9ycy4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBpbmZvLWxlYWtzLCBzbyBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBjaGVjayBgbmV0ZGV2X2hhc19tbF9wcml2KClgIHRvIHByZXZlbnQgbmV0d29yayBkZXZpY2VzIHRoYXQgdXRpbGl6ZSB0aGUgYG1sX3ByaXZgIGZpZWxkIGZyb20gYmVpbmcgZW5zbGF2ZWQgYnkgYm9uZGluZyBvciB0ZWFtaW5nIGRyaXZlcnMuIFRoaXMgaXMgYSBjb250cm9sLWZsb3cgcmVzdHJpY3Rpb24gdG8gYXZvaWQgY29uZmxpY3RzIG9yIGludmFsaWQgY29uZmlndXJhdGlvbnMuIFRoZSBgc3RydWN0IG5ldF9kZXZpY2VgIGlzIHplcm8tYWxsb2NhdGVkLCBtZWFuaW5nIGBtbF9wcml2YCBpcyBwcm9wZXJseSBpbml0aWFsaXplZCB0byBgTlVMTGAgdXBvbiBhbGxvY2F0aW9uLiBUaGUgY2hhbmdlcyBkbyBub3QgaW52b2x2ZSBhbnkgbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMsIG9yIGRhdGEgYmVpbmcgY29waWVkIHRvIHVzZXIgc3BhY2UuIEFueSBwb3RlbnRpYWwgYnVncyByZWxhdGVkIHRvIHRoaXMgY2hhbmdlIHdvdWxkIGxpa2VseSBiZSBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgb3IgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcywgd2hpY2ggYXJlIGZ1bGx5IGNvdmVyZWQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mby1sZWFrcywgc28gYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowj8d2d[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-15 15:51:23 +0000 UTC FinishedAt: 2026-08-15 16:08:15 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "24ef02f934eeb48830cff6b739abc3c62b1d107b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BONDING", "NET_TEAM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "24ef02f934eeb48830cff6b739abc3c62b1d107b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BONDING", "NET_TEAM" ], "series_id": "b5b5a9c9-0e42-4c76-a144-e6eea40666d8" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "bond_enslave", "team_port_add" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE2OjA3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JPTkRJTkcmIzM0OywKICAgICYjMzQ7TkVUX1RFQU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtib25kX2Vuc2xhdmUmIzM0OywKICAgICYjMzQ7dGVhbV9wb3J0X2FkZCYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBjaGVjayBgbmV0ZGV2X2hhc19tbF9wcml2KClgIHRvIHByZXZlbnQgbmV0d29yayBkZXZpY2VzIHRoYXQgdXRpbGl6ZSB0aGUgYG1sX3ByaXZgIGZpZWxkIGZyb20gYmVpbmcgZW5zbGF2ZWQgYnkgYm9uZGluZyBvciB0ZWFtaW5nIGRyaXZlcnMuIFRoaXMgaXMgYSBjb250cm9sLWZsb3cgcmVzdHJpY3Rpb24gdG8gYXZvaWQgY29uZmxpY3RzIG9yIGludmFsaWQgY29uZmlndXJhdGlvbnMuIFRoZSBgc3RydWN0IG5ldF9kZXZpY2VgIGlzIHplcm8tYWxsb2NhdGVkLCBtZWFuaW5nIGBtbF9wcml2YCBpcyBwcm9wZXJseSBpbml0aWFsaXplZCB0byBgTlVMTGAgdXBvbiBhbGxvY2F0aW9uLiBUaGUgY2hhbmdlcyBkbyBub3QgaW52b2x2ZSBhbnkgbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMsIG9yIGRhdGEgYmVpbmcgY29waWVkIHRvIHVzZXIgc3BhY2UuIEFueSBwb3RlbnRpYWwgYnVncyByZWxhdGVkIHRvIHRoaXMgY2hhbmdlIHdvdWxkIGxpa2VseSBiZSBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgb3IgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcywgd2hpY2ggYXJlIGZ1bGx5IGNvdmVyZWQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mby1sZWFrcywgc28gYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBjaGVjayBgbmV0ZGV2X2hhc19tbF9wcml2KClgIGluIGBib25kX2Vuc2xhdmVgIGFuZCBgdGVhbV9wb3J0X2FkZGAgdG8gcHJldmVudCBlbnNsYXZpbmcgb3IgYWRkaW5nIGRldmljZXMgdGhhdCB1c2UgYG1sX3ByaXZgIHRvIGJvbmRpbmcgb3IgdGVhbSBkZXZpY2VzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbG9naWMgb2YgYm9uZGluZyBhbmQgdGVhbSBkcml2ZXJzLCB3aGljaCBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGVzZSBmdW5jdGlvbnMgdG8gZW5zdXJlIHRoZSBuZXcgY2hlY2sgY29ycmVjdGx5IGhhbmRsZXMgdmFyaW91cyBkZXZpY2UgdHlwZXMgYW5kIGRvZXNuJiMzOTt0IGludHJvZHVjZSByZWdyZXNzaW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNjowNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGVkNmE0YTk0YTAzYTJjNWRjNDJlMjI2Yjg1MjlhZWRlNThjZmVmOTZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyAxNSAxNjowNzoxNCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jIGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uY1xuaW5kZXggNTIyZWFiMDYwZjllZC4uYmJiMzQ0YjY3NDU4ZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmNcbkBAIC0xODk0LDkgJiM0MzsxODk0LDkgQEAgaW50IGJvbmRfZW5zbGF2ZShzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYsIHN0cnVjdCBuZXRfZGV2aWNlICpzbGF2ZV9kZXYsXG4gXHRzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSBzcztcbiBcdGludCByZXMgPSAwLCBpO1xuIFxuLVx0aWYgKHNsYXZlX2Rldi1cdTAwM2V0eXBlID09IEFSUEhSRF9DQU4pIHtcbiYjNDM7XHRpZiAobmV0ZGV2X2hhc19tbF9wcml2KHNsYXZlX2RldikpIHtcbiBcdFx0Qk9ORF9OTF9FUlIoYm9uZF9kZXYsIGV4dGFjayxcbi1cdFx0XHQgICAgXCYjMzQ7Q0FOIGRldmljZXMgY2Fubm90IGJlIGVuc2xhdmVkXCYjMzQ7KTtcbiYjNDM7XHRcdFx0ICAgIFwmIzM0O2RldmljZXMgdXNpbmcgbWxfcHJpdiBjYW5ub3QgYmUgZW5zbGF2ZWRcJiMzNDspO1xuIFx0XHRyZXR1cm4gLUVQRVJNO1xuIFx0fVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3RlYW0vdGVhbV9jb3JlLmMgYi9kcml2ZXJzL25ldC90ZWFtL3RlYW1fY29yZS5jXG5pbmRleCBmZWFhNzVmYmY4ZmMyLi44YmY0YzFjNWQ2NTczIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvdGVhbS90ZWFtX2NvcmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvdGVhbS90ZWFtX2NvcmUuY1xuQEAgLTEyMTcsNiAmIzQzOzEyMTcsMTMgQEAgc3RhdGljIGludCB0ZWFtX3BvcnRfYWRkKHN0cnVjdCB0ZWFtICp0ZWFtLCBzdHJ1Y3QgbmV0X2RldmljZSAqcG9ydF9kZXYsXG4gXHRjaGFyICpwb3J0bmFtZSA9IHBvcnRfZGV2LVx1MDAzZW5hbWU7XG4gXHRpbnQgZXJyO1xuIFxuJiM0MztcdGlmIChuZXRkZXZfaGFzX21sX3ByaXYocG9ydF9kZXYpKSB7XG4mIzQzO1x0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFwmIzM0O2RldmljZXMgdXNpbmcgbWxfcHJpdiBjYW4mIzM5O3QgYmUgYWRkZWQgYXMgYSB0ZWFtIHBvcnRcJiMzNDspO1xuJiM0MztcdFx0bmV0ZGV2X2VycihkZXYsIFwmIzM0O0RldmljZSAlcyB1c2luZyBtbF9wcml2IGNhbiYjMzk7dCBiZSBhZGRlZCBhcyBhIHRlYW0gcG9ydFxcblwmIzM0OyxcbiYjNDM7XHRcdFx0ICAgcG9ydG5hbWUpO1xuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1x0fVxuJiM0MztcbiBcdGlmIChwb3J0X2Rldi1cdTAwM2VmbGFncyBcdTAwMjYgSUZGX0xPT1BCQUNLKSB7XG4gXHRcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXCYjMzQ7TG9vcGJhY2sgZGV2aWNlIGNhbiYjMzk7dCBiZSBhZGRlZCBhcyBhIHRlYW0gcG9ydFwmIzM0Oyk7XG4gXHRcdG5ldGRldl9lcnIoZGV2LCBcJiMzNDtEZXZpY2UgJXMgaXMgbG9vcGJhY2sgZGV2aWNlLiBMb29wYmFjayBkZXZpY2VzIGNhbiYjMzk7dCBiZSBhZGRlZCBhcyBhIHRlYW0gcG9ydFxcblwmIzM0OyxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oIGIvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaFxuaW5kZXggODg0MGIxMjY5NzlmZi4uNzQ1MzZmNjQyYjQxNCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmhcbkBAIC0yNzg2LDYgJiM0MzsyNzg2LDExIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBuZXRkZXZfc2V0X21sX3ByaXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdGRldi1cdTAwM2VtbF9wcml2X3R5cGUgPSB0eXBlO1xuIH1cbiBcbiYjNDM7c3RhdGljIGlubGluZSBib29sIG5ldGRldl9oYXNfbWxfcHJpdihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIChkZXYtXHUwMDNlbWxfcHJpdiAhPSBOVUxMKTtcbiYjNDM7fVxuJiM0MztcbiAvKlxuICAqIE5ldCBuYW1lc3BhY2UgaW5saW5lc1xuICAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE2OjA3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCT05ESU5HJiMzNDssCiAgICAmIzM0O05FVF9URUFNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Ym9uZF9lbnNsYXZlJiMzNDssCiAgICAmIzM0O3RlYW1fcG9ydF9hZGQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBjaGVjayBgbmV0ZGV2X2hhc19tbF9wcml2KClgIGluIGBib25kX2Vuc2xhdmVgIGFuZCBgdGVhbV9wb3J0X2FkZGAgdG8gcHJldmVudCBlbnNsYXZpbmcgb3IgYWRkaW5nIGRldmljZXMgdGhhdCB1c2UgYG1sX3ByaXZgIHRvIGJvbmRpbmcgb3IgdGVhbSBkZXZpY2VzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbG9naWMgb2YgYm9uZGluZyBhbmQgdGVhbSBkcml2ZXJzLCB3aGljaCBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGVzZSBmdW5jdGlvbnMgdG8gZW5zdXJlIHRoZSBuZXcgY2hlY2sgY29ycmVjdGx5IGhhbmRsZXMgdmFyaW91cyBkZXZpY2UgdHlwZXMgYW5kIGRvZXNuJiMzOTt0IGludHJvZHVjZSByZWdyZXNzaW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGVkNmE0YTk0YTAzYTJjNWRjNDJlMjI2Yjg1MjlhZWRlNThjZmVmOTYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEF1ZyAxNSAxNjowNzoxNCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMgYi9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jCmluZGV4IDUyMmVhYjA2MGY5ZWQuLmJiYjM0NGI2NzQ1OGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYwpAQCAtMTg5NCw5ICYjNDM7MTg5NCw5IEBAIGludCBib25kX2Vuc2xhdmUoc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2LCBzdHJ1Y3QgbmV0X2RldmljZSAqc2xhdmVfZGV2LAogCXN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlIHNzOwogCWludCByZXMgPSAwLCBpOwogCi0JaWYgKHNsYXZlX2Rldi0mZ3Q7dHlwZSA9PSBBUlBIUkRfQ0FOKSB7CiYjNDM7CWlmIChuZXRkZXZfaGFzX21sX3ByaXYoc2xhdmVfZGV2KSkgewogCQlCT05EX05MX0VSUihib25kX2RldiwgZXh0YWNrLAotCQkJICAgICYjMzQ7Q0FOIGRldmljZXMgY2Fubm90IGJlIGVuc2xhdmVkJiMzNDspOwomIzQzOwkJCSAgICAmIzM0O2RldmljZXMgdXNpbmcgbWxfcHJpdiBjYW5ub3QgYmUgZW5zbGF2ZWQmIzM0Oyk7CiAJCXJldHVybiAtRVBFUk07CiAJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC90ZWFtL3RlYW1fY29yZS5jIGIvZHJpdmVycy9uZXQvdGVhbS90ZWFtX2NvcmUuYwppbmRleCBmZWFhNzVmYmY4ZmMyLi44YmY0YzFjNWQ2NTczIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC90ZWFtL3RlYW1fY29yZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3RlYW0vdGVhbV9jb3JlLmMKQEAgLTEyMTcsNiAmIzQzOzEyMTcsMTMgQEAgc3RhdGljIGludCB0ZWFtX3BvcnRfYWRkKHN0cnVjdCB0ZWFtICp0ZWFtLCBzdHJ1Y3QgbmV0X2RldmljZSAqcG9ydF9kZXYsCiAJY2hhciAqcG9ydG5hbWUgPSBwb3J0X2Rldi0mZ3Q7bmFtZTsKIAlpbnQgZXJyOwogCiYjNDM7CWlmIChuZXRkZXZfaGFzX21sX3ByaXYocG9ydF9kZXYpKSB7CiYjNDM7CQlOTF9TRVRfRVJSX01TRyhleHRhY2ssICYjMzQ7ZGV2aWNlcyB1c2luZyBtbF9wcml2IGNhbiYjMzk7dCBiZSBhZGRlZCBhcyBhIHRlYW0gcG9ydCYjMzQ7KTsKJiM0MzsJCW5ldGRldl9lcnIoZGV2LCAmIzM0O0RldmljZSAlcyB1c2luZyBtbF9wcml2IGNhbiYjMzk7dCBiZSBhZGRlZCBhcyBhIHRlYW0gcG9ydFxuJiMzNDssCiYjNDM7CQkJICAgcG9ydG5hbWUpOwomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CX0KJiM0MzsKIAlpZiAocG9ydF9kZXYtJmd0O2ZsYWdzICZhbXA7IElGRl9MT09QQkFDSykgewogCQlOTF9TRVRfRVJSX01TRyhleHRhY2ssICYjMzQ7TG9vcGJhY2sgZGV2aWNlIGNhbiYjMzk7dCBiZSBhZGRlZCBhcyBhIHRlYW0gcG9ydCYjMzQ7KTsKIAkJbmV0ZGV2X2VycihkZXYsICYjMzQ7RGV2aWNlICVzIGlzIGxvb3BiYWNrIGRldmljZS4gTG9vcGJhY2sgZGV2aWNlcyBjYW4mIzM5O3QgYmUgYWRkZWQgYXMgYSB0ZWFtIHBvcnRcbiYjMzQ7LApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaCBiL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgKaW5kZXggODg0MGIxMjY5NzlmZi4uNzQ1MzZmNjQyYjQxNCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oCkBAIC0yNzg2LDYgJiM0MzsyNzg2LDExIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBuZXRkZXZfc2V0X21sX3ByaXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAlkZXYtJmd0O21sX3ByaXZfdHlwZSA9IHR5cGU7CiB9CiAKJiM0MztzdGF0aWMgaW5saW5lIGJvb2wgbmV0ZGV2X2hhc19tbF9wcml2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiYjNDM7ewomIzQzOwlyZXR1cm4gKGRldi0mZ3Q7bWxfcHJpdiAhPSBOVUxMKTsKJiM0Mzt9CiYjNDM7CiAvKgogICogTmV0IG5hbWVzcGFjZSBpbmxpbmVzCiAgKi8KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTY6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU1MQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDE5OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBhIERyaXZlciBNb2RpZmljYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggaGVyZSwgYW5kIGl0IGxvb2tzIGxpa2Ugc29tZW9uZSYjMzk7cyBtYWRlIGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIHRoZSBib25kaW5nIGFuZCB0ZWFtIGRyaXZlcnMuIFNwZWNpZmljYWxseSwgdGhleSYjMzk7dmUgbW9kaWZpZWQgYm90aCBgYm9uZF9lbnNsYXZlYCBpbiBgYm9uZF9tYWluLmNgIGFuZCBgdGVhbV9wb3J0X2FkZGAgaW4gYHRlYW1fY29yZS5jYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyBhZGRpbmcgYSBjaGVjayB0byBwcmV2ZW50IHRoZSBlbnNsYXZlbWVudCBvZiBkZXZpY2VzIHRoYXQgdXRpbGl6ZSBgbWxfcHJpdmAuIEVzc2VudGlhbGx5LCB0aGV5JiMzOTt2ZSBpbnRyb2R1Y2VkIGEgY29uZGl0aW9uOiBgaWYgKG5ldGRldl9oYXNfbWxfcHJpdihzbGF2ZV9kZXYpKWAgb3IgYGlmIChuZXRkZXZfaGFzX21sX3ByaXYocG9ydF9kZXYpYC4gVGhpcyBzZWVtcyB0byBiZSBhIHJlcGxhY2VtZW50IGZvciB0aGUgb2xkZXIgYHNsYXZlX2Rldi0mZ3Q7dHlwZSA9PSBBUlBIUkRfQ0FOYCBjaGVjaywgYXQgbGVhc3QgaW4gdGhlIGJvbmRpbmcgZHJpdmVyLgoKVGhpcyBpcyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgY2hhbmdlLCByZWFsbHkuIEl0IGhhcyB0aGUgZWZmZWN0IG9mIGxpbWl0aW5nIHdoaWNoIG5ldHdvcmsgZGV2aWNlcyBjYW4gYmUgYWRkZWQgdG8gYSBib25kIG9yIHRlYW0gaW50ZXJmYWNlLiBJdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY29uc3RyYWludC4gR2l2ZW4gdGhhdCB3ZSYjMzk7cmUgdGFsa2luZyBhYm91dCBkZXZpY2UgZW5zbGF2ZW1lbnQgYW5kIHBvdGVudGlhbCBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gY2hhbmdlcywgSSB0aGluayB0aGlzIGRlZmluaXRlbHkgbmVlZHMgdG8gYmUgZnV6emVkIHRvIHNlZSBpZiBhbnkgdW5leHBlY3RlZCBiZWhhdmlvcnMgYXJpc2UuIEnigJlsbCBtYWtlIGEgbm90ZSB0byBydW4gZnV6emluZyBvbiB0aGVzZSBjb2RlIHBhdGhzLgoKRm9yIGNvbmZpZ3VyYXRpb24sIGl0IGxvb2tzIGxpa2UgYm9uZGluZyBmdW5jdGlvbmFsaXR5IGRlcGVuZHMgb24gYEJPTkRJTkdgIGFuZCB0aGUgdGVhbSBmdW5jdGlvbmFsaXR5IGlzIGNvbnRyb2xsZWQgYnkgYE5FVF9URUFNYC4gSSBzaG91bGQgdmVyaWZ5IHRob3NlIGNvbmZpZ3MgYXMgYSBmaXJzdCBzdGVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE2OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJPTkRJTkcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ib25kaW5nL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE2OjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwOTIKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSYjMzk7bSBhbiBleHBlcnQgaW4gbmV0d29yayBkcml2ZXIgY29uZmlndXJhdGlvbiB3aXRoaW4gdGhlIExpbnV4IGtlcm5lbDoKCioqRmluZGluZyB0aGUgQk9ORElORyBDb25maWd1cmF0aW9uKioKClJpZ2h0LCBzbyBJIG5lZWQgdG8gZmluZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBuZXR3b3JrIGJvbmRpbmcuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBkaXZlIHJpZ2h0IGludG8gdGhlIGBLY29uZmlnYCBmaWxlcyDigJMgdGhhdCYjMzk7cyB3aGVyZSB0aGUgYnVpbGQgc3lzdGVtIGRlZmluaXRpb25zIGxpdmUsIGFuZCBpdCYjMzk7cyB3aGVyZSB0aGUgb3B0aW9ucyBmb3IgdmFyaW91cyBrZXJuZWwgZmVhdHVyZXMgYXJlIGxhaWQgb3V0LiBJJiMzOTttIHByZXR0eSBzdXJlIHRoZSBib25kaW5nIGRyaXZlciYjMzk7cyBjb25maWd1cmF0aW9uIHdpbGwgYmUgaW4gZWl0aGVyIHRoZSBtYWluIGBkcml2ZXJzL25ldC9LY29uZmlnYCBmaWxlLCBzaW5jZSB0aGF0JiMzOTtzIGEgZ29vZCBjZW50cmFsIHN0YXJ0aW5nIHBvaW50IGZvciBuZXR3b3JrIGRyaXZlcnMsIG9yLCBtb3JlIHNwZWNpZmljYWxseSwgaW4gYGRyaXZlcnMvbmV0L2JvbmRpbmcvS2NvbmZpZ2AgaWYgaXQgaGFzIGl0cyBvd24gZGVkaWNhdGVkIGRpcmVjdG9yeSBhbmQgY29uZmlndXJhdGlvbiBmaWxlLiBJdCYjMzk7cyB1c3VhbGx5IGEgZ29vZCBwcmFjdGljZSBmb3IgdGhpbmdzIGxpa2UgdGhpcyB0byBoYXZlIHRoZWlyIG93biBjb25maWcgZmlsZSB0byBhbGxvdyBmb3IgbW9kdWxhcml0eS4gSSYjMzk7bGwgc3RhcnQgd2l0aCB0aG9zZSBsb2NhdGlvbnMsIGFuZCBzZWUgd2hlcmUgdGhhdCBsZWFkcyBtZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNjowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQk9ORElORyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9LY29uZmlnPTM5PWlmIE5FVF9DT1JFXG5kcml2ZXJzL25ldC9LY29uZmlnLTQwLVxuZHJpdmVycy9uZXQvS2NvbmZpZzo0MTpjb25maWcgQk9ORElOR1xuZHJpdmVycy9uZXQvS2NvbmZpZy00Mi1cdHRyaXN0YXRlIFwmIzM0O0JvbmRpbmcgZHJpdmVyIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNjowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDE0CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkFuYWx5emluZyB0aGUgTkVUX1RFQU0gQ29uc3RydWN0KioKCkFscmlnaHQsIGxldCYjMzk7cyB1bnBhY2sgdGhpcy4gV2hlbiBJIHNlZSAmIzM0O05FVF9URUFNLCYjMzQ7IG15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgaW50byBhIGZldyBhcmVhcy4gRmlyc3QsIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIG5ldHdvcmsgdG9wb2xvZ3kgaXQgaW1wbGllcy4gSXMgdGhpcyBhIHBoeXNpY2FsIG5ldHdvcmssIG9yIGEgbW9yZSBhYnN0cmFjdCBncm91cGluZyB3aXRoaW4gYSBsYXJnZXIgc3lzdGVtLCBwZXJoYXBzIGEgdmlydHVhbCB0ZWFtPyBUaGUgY29udGV4dCBoZXJlIGlzIGNyaXRpY2FsOyB3aXRob3V0IGl0LCBJJiMzOTttIGxlYW5pbmcgdG93YXJkIGFzc3VtaW5nIHRoaXMgaXMgYWJvdXQgbmV0d29yayBhcmNoaXRlY3R1cmUgb3IgYSBsb2dpY2FsbHkgY29ubmVjdGVkIHRlYW0gd2l0aGluIGEgbGFyZ2VyIG9yZ2FuaXphdGlvbi4KCk15IG5leHQgc3RlcCBpcyB0byBjb25zaWRlciB0aGUgaW1wbGljYXRpb25zIG9mICYjMzQ7TkVUJiMzNDsgc3BlY2lmaWNhbGx5LiBJcyB0aGlzIGFib3V0IG5ldHdvcmsgc2VjdXJpdHk/IERhdGEgdHJhbnNmZXIgcHJvdG9jb2xzPyBCYW5kd2lkdGggbWFuYWdlbWVudD8gT3IgcGVyaGFwcyB0aGUgTkVUIGlzIHNpbXBseSBhbiBhYmJyZXZpYXRpb24gZm9yIGFub3RoZXIgY29uY2VwdCBvciBncm91cCB0aGF0IG1ha2VzIHRoaXMgbW9yZSBvZiBhbiAmIzM0O2luLWhvdXNlJiMzNDsgdGVybSB0aGF0IG1pZ2h0IGJlIHVzZWQgYnkgYSBzcGVjaWZpYyBvcmdhbmlzYXRpb24gb3IgdGVhbT8gV2l0aG91dCBhZGRpdGlvbmFsIGNsdWVzLCBJIGhhdmUgdG8gY29uc2lkZXIgYWxsIHBvc3NpYmlsaXRpZXMsIGZyb20gdGhlIGxvd2VzdCBuZXR3b3JrIGxheWVyIHByb3RvY29scyB0byBoaWdoZXItbGV2ZWwgYXBwbGljYXRpb24gaW50ZXJhY3Rpb25zLgoKRmluYWxseSwgdGhlICYjMzQ7VEVBTSYjMzQ7IGNvbXBvbmVudCBpcyBpbnRlcmVzdGluZy4gSG93IGRvZXMgdGhpcyAmIzM0O05FVCYjMzQ7IGZ1bmN0aW9uIGFzIGEgdGVhbT8gSXMgaXQgYSBncm91cCBvZiBlbmdpbmVlcnM/IEEgc2V0IG9mIGF1dG9tYXRlZCBzeXN0ZW1zIHRoYXQgZm9ybSBhIG5ldHdvcms/IEhvdyBkb2VzIGl0IGludGVncmF0ZSB3aXRoIG90aGVyIGVsZW1lbnRzIG9mIHRoaXMgYmlnZ2VyIHBpY3R1cmU/IElzIHRoaXMgYSBzb2Z0d2FyZSB0ZWFtLCBhIG5ldHdvcmsgb3BlcmF0aW9ucyB0ZWFtLCBvciBhIGNyb3NzLWZ1bmN0aW9uYWwgdGVhbSBidWlsdCBhcm91bmQgbmV0d29yay1jZW50cmljIHRhc2tzPyBUaGUgaW50ZXJwbGF5IGJldHdlZW4gdGhlICYjMzQ7TkVUJiMzNDsgYXNwZWN0IGFuZCB0aGUgJiMzNDtURUFNJiMzNDsgYXNwZWN0IGlzIHdoYXQgY2FwdHVyZXMgbXkgZm9jdXMuIEkmIzM5O20gZ29pbmcgdG8gbmVlZCBtb3JlIGluZm9ybWF0aW9uIHRvIGZvcm0gYSBjb25jbHVzaXZlIGFuYWx5c2lzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE2OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfVEVBTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC90ZWFtL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZzoyOm1lbnVjb25maWcgTkVUX1RFQU1cbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7RXRoZXJuZXQgdGVhbSBkcml2ZXIgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZz0xNj1pZiBORVRfVEVBTVxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTE3LVxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnOjE4OmNvbmZpZyBORVRfVEVBTV9NT0RFX0JST0FEQ0FTVFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTE5LVx0dHJpc3RhdGUgXCYjMzQ7QnJvYWRjYXN0IG1vZGUgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy0yOC1cbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZzoyOTpjb25maWcgTkVUX1RFQU1fTU9ERV9ST1VORFJPQklOXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctMzAtXHR0cmlzdGF0ZSBcJiMzNDtSb3VuZC1yb2JpbiBtb2RlIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctNDAtXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWc6NDE6Y29uZmlnIE5FVF9URUFNX01PREVfUkFORE9NXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctNDItXHR0cmlzdGF0ZSBcJiMzNDtSYW5kb20gbW9kZSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTUyLVxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnOjUzOmNvbmZpZyBORVRfVEVBTV9NT0RFX0FDVElWRUJBQ0tVUFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTU0LVx0dHJpc3RhdGUgXCYjMzQ7QWN0aXZlLWJhY2t1cCBtb2RlIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctNjUtXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWc6NjY6Y29uZmlnIE5FVF9URUFNX01PREVfTE9BREJBTEFOQ0VcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy02Ny1cdHRyaXN0YXRlIFwmIzM0O0xvYWQtYmFsYW5jZSBtb2RlIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNjowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTczCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogODYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzoKCioqQW5hbHl6aW5nIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIHNvIHRoZSBjb3JlIG9mIHRoaXMgc2VlbXMgdG8gcmV2b2x2ZSBhcm91bmQgYEJPTkRJTkdgIGFuZCBgTkVUX1RFQU1gIGNvbmZpZ3VyYXRpb25zLiBUaG9zZSBhcmUgdGhlIG9uZXMgd2UmIzM5O3JlIGZvY3VzaW5nIG9uLiBUaGUgcmVsZXZhbnQgZnVuY3Rpb25zIGFyZSBgYm9uZF9lbnNsYXZlYCBhbmQgYHRlYW1fcG9ydF9hZGRgLCB3aGljaCBtYWtlcyBzZW5zZS4gRnVuY3Rpb25hbGx5LCB0aGUgY2hhbmdlIGlzIHNvdW5kIGFuZCByZWFjaGFibGUsIGdvb2QuCgpOb3csIGxldCYjMzk7cyBqdXN0IG1ha2Ugc3VyZSB3ZSBoYXZlbiYjMzk7dCBvdmVybG9va2VkIGFueSBjcnVjaWFsIGRlcGVuZGVuY2llcy4gYEJPTkRJTkdgIHVzdWFsbHkgcmVxdWlyZXMgYElORVRgLCB0aGF0JiMzOTtzIGEgcHJldHR5IHN0YW5kYXJkIGFzc3VtcHRpb24uIEJ1dCB3aGF0IGFib3V0IGBORVRfVEVBTWA/IEkmIzM5O2QgYmV0dGVyIGRvdWJsZS1jaGVjayBpZiBpdCBhbHNvIHJlbGllcyBvbiBgSU5FVGAuIEl0JiMzOTtzIGFsd2F5cyBiZXN0IHRvIGJlIHRob3JvdWdoIGFuZCBub3QgYXNzdW1lIGFueXRoaW5nLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIG5ldHdvcmsgY29uZmlndXJhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE2OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlcGVuZHMgb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC90ZWFtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnPTE4PWNvbmZpZyBORVRfVEVBTV9NT0RFX0JST0FEQ0FTVFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTE5LVx0dHJpc3RhdGUgXCYjMzQ7QnJvYWRjYXN0IG1vZGUgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnOjIwOlx0ZGVwZW5kcyBvbiBORVRfVEVBTVxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTIxLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZz0yOT1jb25maWcgTkVUX1RFQU1fTU9ERV9ST1VORFJPQklOXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctMzAtXHR0cmlzdGF0ZSBcJiMzNDtSb3VuZC1yb2JpbiBtb2RlIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZzozMTpcdGRlcGVuZHMgb24gTkVUX1RFQU1cbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy0zMi1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWc9NDE9Y29uZmlnIE5FVF9URUFNX01PREVfUkFORE9NXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctNDItXHR0cmlzdGF0ZSBcJiMzNDtSYW5kb20gbW9kZSBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWc6NDM6XHRkZXBlbmRzIG9uIE5FVF9URUFNXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctNDQtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnPTUzPWNvbmZpZyBORVRfVEVBTV9NT0RFX0FDVElWRUJBQ0tVUFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTU0LVx0dHJpc3RhdGUgXCYjMzQ7QWN0aXZlLWJhY2t1cCBtb2RlIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZzo1NTpcdGRlcGVuZHMgb24gTkVUX1RFQU1cbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy01Ni1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWc9NjY9Y29uZmlnIE5FVF9URUFNX01PREVfTE9BREJBTEFOQ0VcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy02Ny1cdHRyaXN0YXRlIFwmIzM0O0xvYWQtYmFsYW5jZSBtb2RlIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZzo2ODpcdGRlcGVuZHMgb24gTkVUX1RFQU1cbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy02OS1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTY6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDg4MwoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIHRha2luZyBvbiB0aGUgcGVyc29uYSB5b3UgcmVxdWVzdGVkOgoKKipEZWNvbnN0cnVjdGluZyBEZXBlbmRlbmNpZXMgaW4gQ2hlbWljYWwgQm9uZGluZyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gZGlzc2VjdCB0aGUgdmVyeSBmb3VuZGF0aW9uIG9mIHRoaXMgY29uY2VwdDogYEJPTkRJTkdgLiBJIG5lZWQgdG8gZmlndXJlIG91dCwgd2l0aCBhYnNvbHV0ZSBwcmVjaXNpb24sIHdoYXQgZmFjdG9ycyBhbmQgcHJpbmNpcGxlcyBpdCYjMzk7cyAqZW50aXJlbHkqIGNvbnRpbmdlbnQgdXBvbi4gVGhpcyBpc24mIzM5O3QganVzdCBhIHN1cmZhY2UtbGV2ZWwgb3ZlcnZpZXc7IEkmIzM5O20gdGFsa2luZyBhYm91dCB0aGUgYmVkcm9jay4gV2hhdCBhcmUgdGhlIGZ1bmRhbWVudGFsIHBoeXNpY2FsIGFuZCBjaGVtaWNhbCBwcmluY2lwbGVzPyBXaGF0IG1vZGVscyB1bmRlcnBpbiBvdXIgdW5kZXJzdGFuZGluZz8gQXJlIHdlIHRhbGtpbmcgY2xhc3NpY2FsIGVsZWN0cm9zdGF0aWNzLCBxdWFudHVtIG1lY2hhbmljYWwgZWZmZWN0cywgb3IgYSBibGVuZCBvZiBib3RoPyBXaGF0IGFyZSB0aGUga2V5IG1hdGhlbWF0aWNhbCBleHByZXNzaW9ucywgYW5kIGhvdyBkbyB0aGV5IGludGVycmVsYXRlPyBJdCYjMzk7cyBhYm91dCBwdWxsaW5nIGJhY2sgdGhlIGxheWVycyB1bnRpbCBJIGNhbiBzZWUgdGhlIHJhdywgZXNzZW50aWFsIGNvbXBvbmVudHMuIFRoaXMgcmVxdWlyZXMgYSBzeXN0ZW1hdGljLCBhbG1vc3QgYW5hbHl0aWNhbCBhcHByb2FjaCwgYW5kIEkmIzM5O2xsIG5lZWQgdG8gd29yayB0aHJvdWdoIHRoaXMgY2FyZWZ1bGx5LiBJJiMzOTttIHRoaW5raW5nLi4uIHdoYXQmIzM5O3MgdGhlIGZpcnN0IHByaW5jaXBsZSB0byBjaGVjaz8KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTY6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJPTkRJTkcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWc9Mzk9aWYgTkVUX0NPUkVcbmRyaXZlcnMvbmV0L0tjb25maWctNDAtXG5kcml2ZXJzL25ldC9LY29uZmlnOjQxOmNvbmZpZyBCT05ESU5HXG5kcml2ZXJzL25ldC9LY29uZmlnLTQyLVx0dHJpc3RhdGUgXCYjMzQ7Qm9uZGluZyBkcml2ZXIgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNjowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTkxCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkmIzM5O20gdGFraW5nIGEgbG9vayBhdCB0aGlzIGNvbmZpZ3VyYXRpb24sIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiB3aGF0JiMzOTtzIHVuZGVyIHRoZSBgY29uZmlnIEJPTkRJTkdgIGRpcmVjdGl2ZS4gTXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgaXMgdG8gdW5kZXJzdGFuZCB0aGUgaW50ZW50IGFuZCBzdHJ1Y3R1cmUgaGVyZS4gSSYjMzk7bSBleHBlY3RpbmcgdG8gc2VlIGRlZmluaXRpb25zIHJlbGF0ZWQgdG8gbmV0d29yayBib25kaW5nIOKAkyBpbnRlcmZhY2UgYWdncmVnYXRpb24sIGxvYWQgYmFsYW5jaW5nLCBmYWlsb3ZlciwgdGhhdCBzb3J0IG9mIHRoaW5nLiBJIGFudGljaXBhdGUgcG90ZW50aWFsbHkgc2VlaW5nIGRpZmZlcmVudCBib25kaW5nIG1vZGVzIGRlZmluZWQgKGUuZy4sIGFjdGl2ZS1iYWNrdXAsIExBQ1AsIGJhbGFuY2UtcnIsIGV0Yy4pLCBhbG9uZyB3aXRoIGFzc29jaWF0ZWQgcGFyYW1ldGVycyBsaWtlIHRoZSBpbnRlcmZhY2VzIGludm9sdmVkLCB0aGUgYm9uZGluZyBkcml2ZXIgYmVpbmcgdXNlZCwgYW5kIHBlcmhhcHMgZXZlbiBzb21lIHR1bmluZyBvcHRpb25zIGxpa2UgdGhlIHRyYW5zbWl0IGhhc2ggcG9saWN5IG9yIEFSUCBtb25pdG9yaW5nIHNldHRpbmdzLiBJJiMzOTttIG1lbnRhbGx5IHBhcnNpbmcgdGhpcyBmb3IgYmVzdCBwcmFjdGljZXMgb3IgYW55IGltbWVkaWF0ZSByZWQgZmxhZ3MuIEkgYW0gaW1tZWRpYXRlbHkgYXdhcmUgb2YgbXkgbmVlZCB0byBjb21wYXJlIHRoaXMgY29uZmlnIHdpdGggYmVzdCBwcmFjdGljZSBhbmQgbXkgb3duIHByZXZpb3VzIGV4cGVyaWVuY2UuIEkgbmVlZCB0byBub3RlIGFueSB1bnVzdWFsIG9yIHVuZXhwZWN0ZWQgc2V0dGluZ3MuIFVsdGltYXRlbHksIEkmIzM5O20gdHJ5aW5nIHRvIHF1aWNrbHkgYXNjZXJ0YWluIHRoZSBvdmVyYWxsIG5ldHdvcmtpbmcgZGVzaWduIHdpdGhpbiB0aGlzIHNlY3Rpb24gYW5kIHdoZXRoZXIgaXQgYWxpZ25zIHdpdGggcGVyZm9ybWFuY2UgYW5kIHJlZHVuZGFuY3kgcmVxdWlyZW1lbnRzIGZvciB0aGUgc3lzdGVtLiBJJiMzOTttIGxvb2tpbmcgZm9yIGEgY2xlYXIgYW5kIGNvbmNpc2UgZGVjbGFyYXRpb24gb2YgdGhlIGJvbmRpbmcgc2V0dXAgYW5kIGhvdyBpdCB3aWxsIG9wZXJhdGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE2OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlcGVuZHMgb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWc9Nj1tZW51Y29uZmlnIE5FVERFVklDRVNcbmRyaXZlcnMvbmV0L0tjb25maWctNy1cdGRlZmF1bHQgeSBpZiBVTUxcbmRyaXZlcnMvbmV0L0tjb25maWc6ODpcdGRlcGVuZHMgb24gTkVUXG5kcml2ZXJzL25ldC9LY29uZmlnLTktXHRib29sIFwmIzM0O05ldHdvcmsgZGV2aWNlIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTQxPWNvbmZpZyBCT05ESU5HXG5kcml2ZXJzL25ldC9LY29uZmlnLTQyLVx0dHJpc3RhdGUgXCYjMzQ7Qm9uZGluZyBkcml2ZXIgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzo0MzpcdGRlcGVuZHMgb24gSU5FVFxuZHJpdmVycy9uZXQvS2NvbmZpZzo0NDpcdGRlcGVuZHMgb24gVExTIHx8IFRMU19ERVZJQ0U9blxuZHJpdmVycy9uZXQvS2NvbmZpZy00NS1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTc0PWNvbmZpZyBXSVJFR1VBUkRcbmRyaXZlcnMvbmV0L0tjb25maWctNzUtXHR0cmlzdGF0ZSBcJiMzNDtXaXJlR3VhcmQgc2VjdXJlIG5ldHdvcmsgdHVubmVsXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjc2Olx0ZGVwZW5kcyBvbiBORVQgXHUwMDI2XHUwMDI2IElORVRcbmRyaXZlcnMvbmV0L0tjb25maWctNzctXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTkyPWNvbmZpZyBXSVJFR1VBUkRfREVCVUdcbmRyaXZlcnMvbmV0L0tjb25maWctOTMtXHRib29sIFwmIzM0O0RlYnVnZ2luZyBjaGVja3MgYW5kIHZlcmJvc2UgbWVzc2FnZXNcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6OTQ6XHRkZXBlbmRzIG9uIFdJUkVHVUFSRFxuZHJpdmVycy9uZXQvS2NvbmZpZy05NS1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTEwMz1jb25maWcgT1ZQTlxuZHJpdmVycy9uZXQvS2NvbmZpZy0xMDQtXHR0cmlzdGF0ZSBcJiMzNDtPcGVuVlBOIGRhdGEgY2hhbm5lbCBvZmZsb2FkXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjEwNTpcdGRlcGVuZHMgb24gTkVUIFx1MDAyNlx1MDAyNiBJTkVUXG5kcml2ZXJzL25ldC9LY29uZmlnLTEwNi1cdHNlbGVjdCBEU1RfQ0FDSEVcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTEzNj1jb25maWcgTkVUX0ZDXG5kcml2ZXJzL25ldC9LY29uZmlnLTEzNy1cdGJvb2wgXCYjMzQ7RmlicmUgQ2hhbm5lbCBkcml2ZXIgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzoxMzg6XHRkZXBlbmRzIG9uIFNDU0kgXHUwMDI2XHUwMDI2IFBDSVxuZHJpdmVycy9uZXQvS2NvbmZpZy0xMzktXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0xNDk9Y29uZmlnIElGQlxuZHJpdmVycy9uZXQvS2NvbmZpZy0xNTAtXHR0cmlzdGF0ZSBcJiMzNDtJbnRlcm1lZGlhdGUgRnVuY3Rpb25hbCBCbG9jayBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjE1MTpcdGRlcGVuZHMgb24gTkVUX0FDVF9NSVJSRUQgfHwgTkZUX0ZXRF9ORVRERVZcbmRyaXZlcnMvbmV0L0tjb25maWctMTUyLVx0c2VsZWN0IE5FVF9SRURJUkVDVFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9MTc5PWNvbmZpZyBNQUNWVEFQXG5kcml2ZXJzL25ldC9LY29uZmlnLTE4MC1cdHRyaXN0YXRlIFwmIzM0O01BQy1WTEFOIGJhc2VkIHRhcCBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6MTgxOlx0ZGVwZW5kcyBvbiBNQUNWTEFOXG5kcml2ZXJzL25ldC9LY29uZmlnOjE4MjpcdGRlcGVuZHMgb24gSU5FVFxuZHJpdmVycy9uZXQvS2NvbmZpZy0xODMtXHRzZWxlY3QgVEFQXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0xOTM9Y29uZmlnIElQVkxBTl9MM1NcbmRyaXZlcnMvbmV0L0tjb25maWc6MTk0Olx0ZGVwZW5kcyBvbiBORVRGSUxURVJcbmRyaXZlcnMvbmV0L0tjb25maWc6MTk1Olx0ZGVwZW5kcyBvbiBJUFZMQU5cbmRyaXZlcnMvbmV0L0tjb25maWctMTk2LVx0ZGVmX2Jvb2wgeVxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9MTk5PWNvbmZpZyBJUFZMQU5cbmRyaXZlcnMvbmV0L0tjb25maWctMjAwLVx0dHJpc3RhdGUgXCYjMzQ7SVAtVkxBTiBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjIwMTpcdGRlcGVuZHMgb24gSU5FVFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yMDItXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0yMTY9Y29uZmlnIElQVlRBUFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yMTctXHR0cmlzdGF0ZSBcJiMzNDtJUC1WTEFOIGJhc2VkIHRhcCBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6MjE4Olx0ZGVwZW5kcyBvbiBJUFZMQU5cbmRyaXZlcnMvbmV0L0tjb25maWc6MjE5Olx0ZGVwZW5kcyBvbiBJTkVUXG5kcml2ZXJzL25ldC9LY29uZmlnLTIyMC1cdHNlbGVjdCBUQVBcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTIzMD1jb25maWcgVlhMQU5cbmRyaXZlcnMvbmV0L0tjb25maWctMjMxLVx0dHJpc3RhdGUgXCYjMzQ7VmlydHVhbCBlWHRlbnNpYmxlIExvY2FsIEFyZWEgTmV0d29yayAoVlhMQU4pXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjIzMjpcdGRlcGVuZHMgb24gSU5FVFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yMzMtXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTI0NT1jb25maWcgR0VORVZFXG5kcml2ZXJzL25ldC9LY29uZmlnLTI0Ni1cdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgTmV0d29yayBWaXJ0dWFsaXphdGlvbiBFbmNhcHN1bGF0aW9uXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjI0NzpcdGRlcGVuZHMgb24gSU5FVFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yNDgtXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTI2MD1jb25maWcgQkFSRVVEUFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yNjEtXHR0cmlzdGF0ZSBcJiMzNDtCYXJlIFVEUCBFbmNhcHN1bGF0aW9uXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjI2MjpcdGRlcGVuZHMgb24gSU5FVFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yNjMtXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTI3Mj1jb25maWcgR1RQXG5kcml2ZXJzL25ldC9LY29uZmlnLTI3My1cdHRyaXN0YXRlIFwmIzM0O0dQUlMgVHVubmVsaW5nIFByb3RvY29sIGRhdGFwYXRoIChHVFAtVSlcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6Mjc0Olx0ZGVwZW5kcyBvbiBJTkVUXG5kcml2ZXJzL25ldC9LY29uZmlnLTI3NS1cdHNlbGVjdCBORVRfVURQX1RVTk5FTFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9Mjg5PWNvbmZpZyBQRkNQXG5kcml2ZXJzL25ldC9LY29uZmlnLTI5MC1cdHRyaXN0YXRlIFwmIzM0O1BhY2tldCBGb3J3YXJkaW5nIENvbnRyb2wgUHJvdG9jb2wgKFBGQ1ApXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjI5MTpcdGRlcGVuZHMgb24gSU5FVFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yOTItXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTMwMj1jb25maWcgQU1UXG5kcml2ZXJzL25ldC9LY29uZmlnLTMwMy1cdHRyaXN0YXRlIFwmIzM0O0F1dG9tYXRpYyBNdWx0aWNhc3QgVHVubmVsaW5nIChBTVQpXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjMwNDpcdGRlcGVuZHMgb24gSU5FVCBcdTAwMjZcdTAwMjYgSVBfTVVMVElDQVNUXG5kcml2ZXJzL25ldC9LY29uZmlnLTMwNS1cdHNlbGVjdCBORVRfVURQX1RVTk5FTFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9MzI3PWNvbmZpZyBORVRDT05TT0xFXG5kcml2ZXJzL25ldC9LY29uZmlnLTMyOC1cdHRyaXN0YXRlIFwmIzM0O05ldHdvcmsgY29uc29sZSBsb2dnaW5nIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6MzI5Olx0ZGVwZW5kcyBvbiBQUklOVEtcbmRyaXZlcnMvbmV0L0tjb25maWctMzMwLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9MzM0PWNvbmZpZyBORVRDT05TT0xFX0RZTkFNSUNcbmRyaXZlcnMvbmV0L0tjb25maWctMzM1LVx0Ym9vbCBcJiMzNDtEeW5hbWljIHJlY29uZmlndXJhdGlvbiBvZiBsb2dnaW5nIHRhcmdldHNcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6MzM2Olx0ZGVwZW5kcyBvbiBORVRDT05TT0xFIFx1MDAyNlx1MDAyNiBTWVNGUyBcdTAwMjZcdTAwMjYgQ09ORklHRlNfRlMgXHUwMDI2XHUwMDI2IFxcXG5kcml2ZXJzL25ldC9LY29uZmlnLTMzNy1cdFx0XHQhKE5FVENPTlNPTEU9eSBcdTAwMjZcdTAwMjYgQ09ORklHRlNfRlM9bSlcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTM0NT1jb25maWcgTkVUQ09OU09MRV9FWFRFTkRFRF9MT0dcbmRyaXZlcnMvbmV0L0tjb25maWctMzQ2LVx0Ym9vbCBcJiMzNDtTZXQga2VybmVsIGV4dGVuZGVkIG1lc3NhZ2UgYnkgZGVmYXVsdFwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzozNDc6XHRkZXBlbmRzIG9uIE5FVENPTlNPTEVcbmRyaXZlcnMvbmV0L0tjb25maWctMzQ4LVx0ZGVmYXVsdCBuXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0zNTU9Y29uZmlnIE5FVENPTlNPTEVfUFJFUEVORF9SRUxFQVNFXG5kcml2ZXJzL25ldC9LY29uZmlnLTM1Ni1cdGJvb2wgXCYjMzQ7UHJlcGVuZCBrZXJuZWwgcmVsZWFzZSB2ZXJzaW9uIGluIHRoZSBtZXNzYWdlIGJ5IGRlZmF1bHRcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6MzU3Olx0ZGVwZW5kcyBvbiBORVRDT05TT0xFX0VYVEVOREVEX0xPR1xuZHJpdmVycy9uZXQvS2NvbmZpZy0zNTgtXHRkZWZhdWx0IG5cbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTM3Mz1jb25maWcgTlRCX05FVERFVlxuZHJpdmVycy9uZXQvS2NvbmZpZy0zNzQtXHR0cmlzdGF0ZSBcJiMzNDtWaXJ0dWFsIEV0aGVybmV0IG92ZXIgTlRCIFRyYW5zcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzozNzU6XHRkZXBlbmRzIG9uIE5UQl9UUkFOU1BPUlRcbmRyaXZlcnMvbmV0L0tjb25maWctMzc2LVxuZHJpdmVycy9uZXQvS2NvbmZpZz0zNzc9Y29uZmlnIFJJT05FVFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zNzgtXHR0cmlzdGF0ZSBcJiMzNDtSYXBpZElPIEV0aGVybmV0IG92ZXIgbWVzc2FnaW5nIGRyaXZlciBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjM3OTpcdGRlcGVuZHMgb24gUkFQSURJT1xuZHJpdmVycy9uZXQvS2NvbmZpZy0zODAtXG5kcml2ZXJzL25ldC9LY29uZmlnPTM4MT1jb25maWcgUklPTkVUX1RYX1NJWkVcbmRyaXZlcnMvbmV0L0tjb25maWctMzgyLVx0aW50IFwmIzM0O051bWJlciBvZiBvdXRib3VuZCBxdWV1ZSBlbnRyaWVzXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjM4MzpcdGRlcGVuZHMgb24gUklPTkVUXG5kcml2ZXJzL25ldC9LY29uZmlnLTM4NC1cdGRlZmF1bHQgXCYjMzQ7MTI4XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0zODY9Y29uZmlnIFJJT05FVF9SWF9TSVpFXG5kcml2ZXJzL25ldC9LY29uZmlnLTM4Ny1cdGludCBcJiMzNDtOdW1iZXIgb2YgaW5ib3VuZCBxdWV1ZSBlbnRyaWVzXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjM4ODpcdGRlcGVuZHMgb24gUklPTkVUXG5kcml2ZXJzL25ldC9LY29uZmlnLTM4OS1cdGRlZmF1bHQgXCYjMzQ7MTI4XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0zOTE9Y29uZmlnIFRVTlxuZHJpdmVycy9uZXQvS2NvbmZpZy0zOTItXHR0cmlzdGF0ZSBcJiMzNDtVbml2ZXJzYWwgVFVOL1RBUCBkZXZpY2UgZHJpdmVyIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6MzkzOlx0ZGVwZW5kcyBvbiBJTkVUXG5kcml2ZXJzL25ldC9LY29uZmlnLTM5NC1cdHNlbGVjdCBDUkMzMlxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9NDQzPWNvbmZpZyBWSVJUSU9fTkVUXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ0NC1cdHRyaXN0YXRlIFwmIzM0O1ZpcnRpbyBuZXR3b3JrIGRyaXZlclwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzo0NDU6XHRkZXBlbmRzIG9uIFZJUlRJT1xuZHJpdmVycy9uZXQvS2NvbmZpZy00NDYtXHRzZWxlY3QgTkVUX0ZBSUxPVkVSXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz00NjM9Y29uZmlnIE5FVEtJVFxuZHJpdmVycy9uZXQvS2NvbmZpZy00NjQtXHRib29sIFwmIzM0O0JQRi1wcm9ncmFtbWFibGUgbmV0d29yayBkZXZpY2VcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6NDY1Olx0ZGVwZW5kcyBvbiBCUEZfU1lTQ0FMTFxuZHJpdmVycy9uZXQvS2NvbmZpZy00NjYtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz00NzI9Y29uZmlnIE5FVF9WUkZcbmRyaXZlcnMvbmV0L0tjb25maWctNDczLVx0dHJpc3RhdGUgXCYjMzQ7VmlydHVhbCBSb3V0aW5nIGFuZCBGb3J3YXJkaW5nIChMaXRlKVwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzo0NzQ6XHRkZXBlbmRzIG9uIElQX01VTFRJUExFX1RBQkxFU1xuZHJpdmVycy9uZXQvS2NvbmZpZzo0NzU6XHRkZXBlbmRzIG9uIE5FVF9MM19NQVNURVJfREVWXG5kcml2ZXJzL25ldC9LY29uZmlnOjQ3NjpcdGRlcGVuZHMgb24gSVBWNl9NVUxUSVBMRV9UQUJMRVMgfHwgSVBWNj1uXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ3Ny1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTQ4MT1jb25maWcgVlNPQ0tNT05cbmRyaXZlcnMvbmV0L0tjb25maWctNDgyLVx0dHJpc3RhdGUgXCYjMzQ7VmlydHVhbCB2c29jayBtb25pdG9yaW5nIGRldmljZVwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzo0ODM6XHRkZXBlbmRzIG9uIFZIT1NUX1ZTT0NLXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ4NC1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTQ4OT1jb25maWcgTUhJX05FVFxuZHJpdmVycy9uZXQvS2NvbmZpZy00OTAtXHR0cmlzdGF0ZSBcJiMzNDtNSEkgbmV0d29yayBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6NDkxOlx0ZGVwZW5kcyBvbiBNSElfQlVTXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ5Mi1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTU0ND1jb25maWcgWEVOX05FVERFVl9GUk9OVEVORFxuZHJpdmVycy9uZXQvS2NvbmZpZy01NDUtXHR0cmlzdGF0ZSBcJiMzNDtYZW4gbmV0d29yayBkZXZpY2UgZnJvbnRlbmQgZHJpdmVyXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjU0NjpcdGRlcGVuZHMgb24gWEVOXG5kcml2ZXJzL25ldC9LY29uZmlnLTU0Ny1cdHNlbGVjdCBYRU5fWEVOQlVTX0ZST05URU5EXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz01NjI9Y29uZmlnIFhFTl9ORVRERVZfQkFDS0VORFxuZHJpdmVycy9uZXQvS2NvbmZpZy01NjMtXHR0cmlzdGF0ZSBcJiMzNDtYZW4gYmFja2VuZCBuZXR3b3JrIGRldmljZVwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzo1NjQ6XHRkZXBlbmRzIG9uIFhFTl9CQUNLRU5EXG5kcml2ZXJzL25ldC9LY29uZmlnLTU2NS1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTU4ND1jb25maWcgVk1YTkVUM1xuZHJpdmVycy9uZXQvS2NvbmZpZy01ODUtXHR0cmlzdGF0ZSBcJiMzNDtWTXdhcmUgVk1YTkVUMyBldGhlcm5ldCBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6NTg2Olx0ZGVwZW5kcyBvbiBQQ0kgXHUwMDI2XHUwMDI2IElORVRcbmRyaXZlcnMvbmV0L0tjb25maWc6NTg3Olx0ZGVwZW5kcyBvbiBQQUdFX1NJWkVfTEVTU19USEFOXzY0S0JcbmRyaXZlcnMvbmV0L0tjb25maWctNTg4LVx0c2VsZWN0IFBBR0VfUE9PTFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9NTk0PWNvbmZpZyBGVUpJVFNVX0VTXG5kcml2ZXJzL25ldC9LY29uZmlnLTU5NS1cdHRyaXN0YXRlIFwmIzM0O0ZVSklUU1UgRXh0ZW5kZWQgU29ja2V0IE5ldHdvcmsgRGV2aWNlIGRyaXZlclwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzo1OTY6XHRkZXBlbmRzIG9uIEFDUElcbmRyaXZlcnMvbmV0L0tjb25maWctNTk3LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9NjA0PWNvbmZpZyBORVRERVZTSU1cbmRyaXZlcnMvbmV0L0tjb25maWctNjA1LVx0dHJpc3RhdGUgXCYjMzQ7U2ltdWxhdGVkIG5ldHdvcmtpbmcgZGV2aWNlXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjYwNjpcdGRlcGVuZHMgb24gREVCVUdfRlNcbmRyaXZlcnMvbmV0L0tjb25maWc6NjA3Olx0ZGVwZW5kcyBvbiBJTkVUXG5kcml2ZXJzL25ldC9LY29uZmlnOjYwODpcdGRlcGVuZHMgb24gUFNBTVBMRSB8fCBQU0FNUExFPW5cbmRyaXZlcnMvbmV0L0tjb25maWc6NjA5Olx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19NT0NLIHx8IFBUUF8xNTg4X0NMT0NLX01PQ0s9blxuZHJpdmVycy9uZXQvS2NvbmZpZy02MTAtXHRzZWxlY3QgTkVUX0RFVkxJTktcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTY6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODQ5NAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDcyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyBOZXR3b3JrIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoZXNlIG5ldHdvcmsgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJdCBsb29rcyBsaWtlIGBCT05ESU5HYCBpcyBleHBsaWNpdGx5IHJlbGlhbnQgb24gYm90aCBgSU5FVGAgYW5kIGVpdGhlciBgVExTYCBvciwgY3J1Y2lhbGx5LCBgVExTX0RFVklDRWAgKm5vdCogYmVpbmcgZGVmaW5lZC4gVGhhdCYjMzk7cyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLiBOb3csIEkmIzM5O20gbG9va2luZyBhdCBgTkVUX1RFQU1gLiBNeSBpbml0aWFsIGltcHJlc3Npb24gd2FzIHRoYXQgaXQgb25seSBuZWVkZWQgYE5FVGAsIGFuZCBub3RoaW5nIGVsc2UuIEkgbmVlZCB0byBtYWtlIGNlcnRhaW4gdGhvdWdoLCBzbyBJJiMzOTtsbCBkb3VibGUtY2hlY2sgdGhlIEtjb25maWcgZmlsZSBmb3IgYE5FVF9URUFNYC4gSSBrbm93IEnigJl2ZSBzZWVuIHRoYXQgZHJpdmVyIGJlZm9yZS4gQWgsIHllcywgaXQmIzM5O3MgbG9jYXRlZCBpbiBgZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnYC4gTGV0IG1lIGdvIGJhY2sgdGhlcmUgYW5kIHJlLWV4YW1pbmUgdGhhdCBLY29uZmlnIGZpbGUganVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE2OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlcGVuZHMgb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC90ZWFtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnPTE4PWNvbmZpZyBORVRfVEVBTV9NT0RFX0JST0FEQ0FTVFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTE5LVx0dHJpc3RhdGUgXCYjMzQ7QnJvYWRjYXN0IG1vZGUgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnOjIwOlx0ZGVwZW5kcyBvbiBORVRfVEVBTVxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTIxLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZz0yOT1jb25maWcgTkVUX1RFQU1fTU9ERV9ST1VORFJPQklOXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctMzAtXHR0cmlzdGF0ZSBcJiMzNDtSb3VuZC1yb2JpbiBtb2RlIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZzozMTpcdGRlcGVuZHMgb24gTkVUX1RFQU1cbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy0zMi1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWc9NDE9Y29uZmlnIE5FVF9URUFNX01PREVfUkFORE9NXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctNDItXHR0cmlzdGF0ZSBcJiMzNDtSYW5kb20gbW9kZSBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWc6NDM6XHRkZXBlbmRzIG9uIE5FVF9URUFNXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctNDQtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnPTUzPWNvbmZpZyBORVRfVEVBTV9NT0RFX0FDVElWRUJBQ0tVUFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTU0LVx0dHJpc3RhdGUgXCYjMzQ7QWN0aXZlLWJhY2t1cCBtb2RlIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZzo1NTpcdGRlcGVuZHMgb24gTkVUX1RFQU1cbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy01Ni1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWc9NjY9Y29uZmlnIE5FVF9URUFNX01PREVfTE9BREJBTEFOQ0VcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy02Ny1cdHRyaXN0YXRlIFwmIzM0O0xvYWQtYmFsYW5jZSBtb2RlIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZzo2ODpcdGRlcGVuZHMgb24gTkVUX1RFQU1cbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy02OS1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTY6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTE3OAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGluIHRoZSBmaXJzdCBwZXJzb24sIGFzc3VtaW5nIHRoZSBjb250ZXh0IGlzIGtlcm5lbCBkZXZlbG9wbWVudCBhbmQgSSYjMzk7bSBhbiBleHBlcnQ6CgoqKkludmVzdGlnYXRpbmcgYSBOZXR3b3JrIERyaXZlciYjMzk7cyBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgbGV0IG1lIHNlZS4gYE5FVF9URUFNYC4uLiBIbW0sIGl0IHNlZW1zIGxpa2UgdGhlcmUgYXJlIG5vIGV4cGxpY2l0IGBkZXBlbmRzIG9uYCBjbGF1c2VzIGxpc3RlZCBmb3IgYE5FVF9URUFNYCBpdHNlbGYgaW4gdGhlIEtjb25maWcgZmlsZS4gVGhhdCYjMzk7cyB1bnVzdWFsLiBJdCBtYWtlcyBtZSB3b25kZXIgd2hhdCB0aGUgYWN0aXZhdGlvbiBjcml0ZXJpYSBhcmUgZm9yIHRoaXMgdGhpbmcuIEFoYSEgV2FpdCBhIHNlY29uZC4uLiBJIGJldCBpdCYjMzk7cyBpbmNsdWRlZCBmcm9tIGBkcml2ZXJzL25ldC9LY29uZmlnYCwgaXNuJiMzOTt0IGl0PyBUaGF0IHdvdWxkIGV4cGxhaW4gdGhlIGxhY2sgb2YgZGlyZWN0IGRlcGVuZGVuY2llcyBpbiB0aGlzIHNlY3Rpb24uIEkgbmVlZCB0byBnbyBsb29rIHRoZXJlIGFuZCBzZWUgd2hhdCBjb25kaXRpb25hbHMgYXJlIGFwcGxpZWQgaW4gdGhhdCBmaWxlIHRoYXQgYnJpbmcgYE5FVF9URUFNYCBpbnRvIHRoZSBwaWN0dXJlLiBUaGF0IHdpbGwgY2xhcmlmeSBob3cgdGhpcyBmZWF0dXJlIGlzIGVuYWJsZWQsIGV2ZW4gaWYgdGhlIG9wdGlvbiBpdHNlbGYgZG9lc24mIzM5O3QgZXhwbGljaXRseSBzdGF0ZSBpdHMgcmVxdWlyZW1lbnRzIGRpcmVjdGx5IGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE2OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC90ZWFtL0tjb25maWdcJiMzNDsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWc9MTQ5PWNvbmZpZyBJRkJcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTE2Mi1cbmRyaXZlcnMvbmV0L0tjb25maWc6MTYzOnNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC90ZWFtL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWctMTY0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNjowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NTA4CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMTY0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIE5ldHdvcmsgVGVhbSBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O3ZlIG5hdmlnYXRlZCB0byBgZHJpdmVycy9uZXQvS2NvbmZpZ2AsIGFuZCBhcyBleHBlY3RlZCwgYE5FVF9URUFNYCBzaXRzIGNvbWZvcnRhYmx5IHVuZGVyIGBtZW51Y29uZmlnIE5FVERFVklDRVNgLCB3aGljaCBpcyBpdHNlbGYgZGVwZW5kZW50IG9uIGBORVRgLiBHb29kLCB0aGF0IHZhbGlkYXRlcyB0aGUgaW5pdGlhbCBhc3N1bXB0aW9ucywgdGhlIGBORVRfVEVBTWAgZGVwZW5kZW5jeSBpcyBpbiBwbGFjZS4KCk5vdywgdGhlIGNydWNpYWwgbmV4dCBzdGVwLiBXZSBuZWVkIHRvIGV4cGxpY2l0bHkgZW5zdXJlIHRoYXQgYm90aCBgQk9ORElOR2AgYW5kIGBORVRfVEVBTWAgYXJlIGVuYWJsZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24uIFRoYXQgZmVlbHMgbGlrZSBhIHByZXJlcXVpc2l0ZSB0byBhbnkgcmVhbCBmdW5jdGlvbmFsaXR5LgoKQW5kIGxldOKAmXMgbG9vayBhdCB0aGUgdGVhbSBtb2RlczogYE5FVF9URUFNX01PREVfUk9VTkRST0JJTmAsIGBORVRfVEVBTV9NT0RFX0FDVElWRUJBQ0tVUGAsIGBORVRfVEVBTV9NT0RFX0JST0FEQ0FTVGAsIGBORVRfVEVBTV9NT0RFX1JBTkRPTWAsIGFuZCBgTkVUX1RFQU1fTU9ERV9MT0FEQkFMQU5DRWAuIEkmIzM5O20gZ3Vlc3NpbmcgdGhlc2Ugd2lsbCBiZSBlc3NlbnRpYWwgZm9yIGFjdHVhbGx5ICp1c2luZyogdGhlIHRlYW1pbmcgZmVhdHVyZXMuIFNvLCB0aGV5IHdhcnJhbnQgY2xvc2VyIGluc3BlY3Rpb24uCgpXYWl0LCBob2xkIG9uIGEgc2Vjb25kLiBgdGVhbV9wb3J0X2FkZGAsIHdoaWNoIGlzIGZ1bmRhbWVudGFsIHRvIHRoZSB3aG9sZSB0aGluZywgaXMgYWN0dWFsbHkgaW1wbGVtZW50ZWQgaW4gYHRlYW1fY29yZS5jYC4gQW5kIHRoYXQgY29kZSBpcyBjb21waWxlZCBvbmx5IGlmIGBORVRfVEVBTWAgaXMgZW5hYmxlZC4gVGhhdOKAmXMgYSBrZXkgcGllY2Ugb2YgaW5mb3JtYXRpb24uIExldCYjMzk7cyBtYWtlIGNlcnRhaW4gdGhhdCYjMzk7cyB0aGUgb25seSBwcmUtcmVxdWlzaXRlLgoKUmlnaHQsIHRpbWUgdG8gY2hlY2sgYGRyaXZlcnMvbmV0L3RlYW0vTWFrZWZpbGVgIHRvIGNvbmZpcm0gdGhlIHJlbGF0aW9uc2hpcC4gTGV0JiMzOTtzIHNlZSBob3cgdGhlIG9iamVjdHMgZ2V0IGJ1aWx0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNjowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0ZWFtX2NvcmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC90ZWFtL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3RlYW0vTWFrZWZpbGUtNS1cbmRyaXZlcnMvbmV0L3RlYW0vTWFrZWZpbGU6Njp0ZWFtLXk6PSB0ZWFtX2NvcmUubyB0ZWFtX25sLm9cbmRyaXZlcnMvbmV0L3RlYW0vTWFrZWZpbGUtNy1vYmotJChDT05GSUdfTkVUX1RFQU0pICYjNDM7PSB0ZWFtLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTY6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAwODEKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA1OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzcywgZ2l2ZW4gbXkgZXhwZXJ0aXNlOgoKKipNeSBEZWR1Y3RpdmUgUmVhc29uaW5nIG9uIEtlcm5lbCBNb2R1bGUgRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUuIFRoaW5raW5nIGFib3V0IHRoaXMga2VybmVsIG1vZHVsZSBzaXR1YXRpb24uLi4gYHRlYW1fY29yZS5vYCBpcyBkZWZpbml0ZWx5IHB1bGxlZCBpbiBhcyBwYXJ0IG9mIHRoZSBicm9hZGVyIGB0ZWFtLm9gIGJ1aWxkIHByb2Nlc3MsIGFuZCB0aGF0IGVudGlyZSBgdGVhbS5vYCB0aGluZyBpcyBzcGVjaWZpY2FsbHkgZ292ZXJuZWQgYnkgYENPTkZJR19ORVRfVEVBTWAuIFNvLCB0aGF0IG1lYW5zIHNldHRpbmcgYE5FVF9URUFNYCBpcyBzdWZmaWNpZW50IHRvIGVuc3VyZSBhbGwgdGhlIG5lY2Vzc2FyeSBwaWVjZXMgb2YgdGhlIHRlYW0gZnVuY3Rpb25hbGl0eSBhcmUgaW5jbHVkZWQuIEkgZG9uJiMzOTt0IG5lZWQgdG8gc3BlY2lmeSBhbnl0aGluZyBtb3JlIGdyYW51bGFyIHRoYW4gdGhhdCBmb3IgdGhlICYjMzQ7dGVhbSYjMzQ7IGZ1bmN0aW9uYWxpdHkgdG8gYmUgcHJlc2VudC4gVGhhdCYjMzk7cyBnb29kLCBrZWVwcyB0aGluZ3MgY29uY2lzZS4KCkFuZCBub3csIGZvciBib25kaW5nLCBJJiMzOTttIHByZXR0eSBjZXJ0YWluIGBib25kX21haW4uY2AgaXMgdGhlIHByaW1hcnkgbW9kdWxlIGZvciBib25kaW5nIGxvZ2ljLCBhbmQgdGhhdCYjMzk7cyB0aWVkIHRvIGBDT05GSUdfQk9ORElOR2AuIFNvLCBpZiBJIHdhbnQgYm9uZGluZywgSSBuZWVkIHRvIG1ha2Ugc3VyZSBgQ09ORklHX0JPTkRJTkdgIGlzIGVuYWJsZWQuIFNpbXBsZSBlbm91Z2guIFRoaXMgbGluZXMgdXAgd2l0aCBob3cgSSYjMzk7dmUgc2VlbiB0aGVzZSBtb2R1bGVzIGJ1aWx0IGluIHRoZSBwYXN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNjowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtib25kX21haW4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ib25kaW5nL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2JvbmRpbmcvTWFrZWZpbGU9Nj1vYmotJChDT05GSUdfQk9ORElORykgJiM0Mzs9IGJvbmRpbmcub1xuZHJpdmVycy9uZXQvYm9uZGluZy9NYWtlZmlsZS03LVxuZHJpdmVycy9uZXQvYm9uZGluZy9NYWtlZmlsZTo4OmJvbmRpbmctb2JqcyA6PSBib25kX21haW4ubyBib25kXzNhZC5vIGJvbmRfYWxiLm8gYm9uZF9zeXNmcy5vIGJvbmRfc3lzZnNfc2xhdmUubyBib25kX2RlYnVnZnMubyBib25kX25ldGxpbmsubyBib25kX29wdGlvbnMub1xuZHJpdmVycy9uZXQvYm9uZGluZy9NYWtlZmlsZS05LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNjowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDUyMAoJCQkJCQkJb3V0cHV0OiAxNTkKCQkJCQkJCXRob3VnaHRzOiAyNTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gmIzM5O3MgVnVsbmVyYWJpbGl0eSBQb3RlbnRpYWwqKgoKT2theSwgc28gSSYjMzk7dmUgbG9va2VkIGF0IHRoaXMgcGF0Y2ggYW5kLCB5ZXMsIHRoaXMgZGVmaW5pdGVseSB3YXJyYW50cyBhIGNsb3NlciBsb29rIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLiBUaGUga2V5IGhlcmUgaXMgdGhhdCB0aGUgcGF0Y2ggbW9kaWZpZXMgYGJvbmRfZW5zbGF2ZWAgYW5kIGB0ZWFtX3BvcnRfYWRkYC4gVGhlc2UgYXJlIGNyaXRpY2FsIGZ1bmN0aW9ucywgYW5kIHRoZSBmYWN0IHRoYXQgdGhleSYjMzk7cmUgYWNjZXNzaWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgbmV0bGluayDigJMgc3BlY2lmaWNhbGx5IHRoaW5ncyBsaWtlIGBSVE1fTkVXTElOS2Agd2l0aCBgSUZMQV9NQVNURVJgIG9yIGBJRkxBX0xJTktJTkZPYCDigJMgbWFrZXMgdGhlbSBwcmltZSB0YXJnZXRzLiBUaGF0JiMzOTtzIHdoZXJlIGF0dGFja2VycyB3b3VsZCBpbnRlcmFjdCB3aXRoIHRoZW0uIFNvLCB0aGUgYXR0YWNrIHN1cmZhY2UgaXMgZXhwb3NlZC4gVGhpcyB3aWxsIG5lZWQgbW9yZSBhbmFseXNpcy4KCk15IGZvY3VzIHNob3VsZCBiZSBvbiBgYm9uZF9lbnNsYXZlYCBhbmQgYHRlYW1fcG9ydF9hZGRgIHRoZW1zZWx2ZXM7IHRob3NlIGFyZSB0aGUga2V5IGZ1bmN0aW9ucy4gSSYjMzk7bGwgbmVlZCB0byByZW1lbWJlciB0aGF0IHRoZSBhZmZlY3RlZCBjb25maWd1cmF0aW9ucyBhcmUgYEJPTkRJTkdgIGFuZCBgTkVUX1RFQU1gLgoKTXkgcmVhc29uaW5nIGlzIHN0cmFpZ2h0Zm9yd2FyZDogdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGNoZWNrLCBgbmV0ZGV2X2hhc19tbF9wcml2KClgLCBpbiB0aG9zZSBjb3JlIGZ1bmN0aW9ucy4gSXQmIzM5O3MgZGVzaWduZWQgdG8gcHJldmVudCBkZXZpY2VzIHVzaW5nIGBtbF9wcml2YCBmcm9tIGJlaW5nIGFkZGVkIHRvIGJvbmRpbmcgb3IgdGVhbSBkZXZpY2VzLiBUaGlzIGlzIGEgKmZ1bmN0aW9uYWwgY2hhbmdlKiB3aXRoaW4gdGhlIGNvcmUgbG9naWMgb2YgdGhlc2UgZHJpdmVycywgYW5kIHRob3NlIGRyaXZlcnMgYXJlIGFjY2Vzc2libGUgZnJvbSB1c2Vyc3BhY2UuIEVzc2VudGlhbGx5LCB3ZSBhcmUgY2hhbmdpbmcgaG93IHRoZXkgaW50ZXJmYWNlLiBXZSBuZWVkIHRvIGZ1enogdGhlc2UgZnVuY3Rpb25zICpleHRlbnNpdmVseSogdG8gZW5zdXJlIHRoYXQgdGhlIG5ldyBjaGVjayB3b3JrcyBjb3JyZWN0bHkgYWNyb3NzIGFsbCB0aGUgZGlmZmVyZW50IGRldmljZSB0eXBlcyB3ZSBtaWdodCBlbmNvdW50ZXIuIEkgbmVlZCB0byBtYWtlIHN1cmUgd2UmIzM5O3JlIG5vdCBpbnRyb2R1Y2luZyBhbnkgcmVncmVzc2lvbnMuCgpXYWl0Li4uIGxldCBtZSBqdXN0IHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgYG5ldGRldl9oYXNfbWxfcHJpdmAgaXMgYWN0dWFsbHkgZGVmaW5lZCBpbiBgaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaGAuIEFuZCB5ZXMsIGdvb2QsIGl0IGlzLiBUaGUgcGF0Y2ggYWRkZWQgaXQuIEV4Y2VsbGVudC4KCk5vdywgbGV0JiMzOTtzIGNhbGwgYHNldC1yZXN1bHRzYC4gSSBoYXZlIGEgZ29vZCBoYW5kbGUgb24gd2hhdCBJIG5lZWQgdG8gZG8gbmV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTY6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JPTkRJTkcmIzM0OywKICAgICYjMzQ7TkVUX1RFQU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtib25kX2Vuc2xhdmUmIzM0OywKICAgICYjMzQ7dGVhbV9wb3J0X2FkZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGNoZWNrIGBuZXRkZXZfaGFzX21sX3ByaXYoKWAgaW4gYGJvbmRfZW5zbGF2ZWAgYW5kIGB0ZWFtX3BvcnRfYWRkYCB0byBwcmV2ZW50IGVuc2xhdmluZyBvciBhZGRpbmcgZGV2aWNlcyB0aGF0IHVzZSBgbWxfcHJpdmAgdG8gYm9uZGluZyBvciB0ZWFtIGRldmljZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBsb2dpYyBvZiBib25kaW5nIGFuZCB0ZWFtIGRyaXZlcnMsIHdoaWNoIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZXNlIGZ1bmN0aW9ucyB0byBlbnN1cmUgdGhlIG5ldyBjaGVjayBjb3JyZWN0bHkgaGFuZGxlcyB2YXJpb3VzIGRldmljZSB0eXBlcyBhbmQgZG9lc24mIzM5O3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCT05ESU5HJiMzNDssCiAgICAmIzM0O05FVF9URUFNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Ym9uZF9lbnNsYXZlJiMzNDssCiAgICAmIzM0O3RlYW1fcG9ydF9hZGQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBjaGVjayBgbmV0ZGV2X2hhc19tbF9wcml2KClgIGluIGBib25kX2Vuc2xhdmVgIGFuZCBgdGVhbV9wb3J0X2FkZGAgdG8gcHJldmVudCBlbnNsYXZpbmcgb3IgYWRkaW5nIGRldmljZXMgdGhhdCB1c2UgYG1sX3ByaXZgIHRvIGJvbmRpbmcgb3IgdGVhbSBkZXZpY2VzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbG9naWMgb2YgYm9uZGluZyBhbmQgdGVhbSBkcml2ZXJzLCB3aGljaCBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGVzZSBmdW5jdGlvbnMgdG8gZW5zdXJlIHRoZSBuZXcgY2hlY2sgY29ycmVjdGx5IGhhbmRsZXMgdmFyaW91cyBkZXZpY2UgdHlwZXMgYW5kIGRvZXNuJiMzOTt0IGludHJvZHVjZSByZWdyZXNzaW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTY6MDg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNjowODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgY2hlY2sgYG5ldGRldl9oYXNfbWxfcHJpdigpYCB0byBwcmV2ZW50IG5ldHdvcmsgZGV2aWNlcyB0aGF0IHV0aWxpemUgdGhlIGBtbF9wcml2YCBmaWVsZCBmcm9tIGJlaW5nIGVuc2xhdmVkIGJ5IGJvbmRpbmcgb3IgdGVhbWluZyBkcml2ZXJzLiBUaGlzIGlzIGEgY29udHJvbC1mbG93IHJlc3RyaWN0aW9uIHRvIGF2b2lkIGNvbmZsaWN0cyBvciBpbnZhbGlkIGNvbmZpZ3VyYXRpb25zLiBUaGUgYHN0cnVjdCBuZXRfZGV2aWNlYCBpcyB6ZXJvLWFsbG9jYXRlZCwgbWVhbmluZyBgbWxfcHJpdmAgaXMgcHJvcGVybHkgaW5pdGlhbGl6ZWQgdG8gYE5VTExgIHVwb24gYWxsb2NhdGlvbi4gVGhlIGNoYW5nZXMgZG8gbm90IGludm9sdmUgYW55IG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzLCBvciBkYXRhIGJlaW5nIGNvcGllZCB0byB1c2VyIHNwYWNlLiBBbnkgcG90ZW50aWFsIGJ1Z3MgcmVsYXRlZCB0byB0aGlzIGNoYW5nZSB3b3VsZCBsaWtlbHkgYmUgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIG9yIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMsIHdoaWNoIGFyZSBmdWxseSBjb3ZlcmVkIGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm8tbGVha3MsIHNvIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGVkNmE0YTk0YTAzYTJjNWRjNDJlMjI2Yjg1MjlhZWRlNThjZmVmOTYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEF1ZyAxNSAxNjowNzoxNCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMgYi9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jCmluZGV4IDUyMmVhYjA2MGY5ZWQuLmJiYjM0NGI2NzQ1OGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYwpAQCAtMTg5NCw5ICYjNDM7MTg5NCw5IEBAIGludCBib25kX2Vuc2xhdmUoc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2LCBzdHJ1Y3QgbmV0X2RldmljZSAqc2xhdmVfZGV2LAogCXN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlIHNzOwogCWludCByZXMgPSAwLCBpOwogCi0JaWYgKHNsYXZlX2Rldi0mZ3Q7dHlwZSA9PSBBUlBIUkRfQ0FOKSB7CiYjNDM7CWlmIChuZXRkZXZfaGFzX21sX3ByaXYoc2xhdmVfZGV2KSkgewogCQlCT05EX05MX0VSUihib25kX2RldiwgZXh0YWNrLAotCQkJICAgICYjMzQ7Q0FOIGRldmljZXMgY2Fubm90IGJlIGVuc2xhdmVkJiMzNDspOwomIzQzOwkJCSAgICAmIzM0O2RldmljZXMgdXNpbmcgbWxfcHJpdiBjYW5ub3QgYmUgZW5zbGF2ZWQmIzM0Oyk7CiAJCXJldHVybiAtRVBFUk07CiAJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC90ZWFtL3RlYW1fY29yZS5jIGIvZHJpdmVycy9uZXQvdGVhbS90ZWFtX2NvcmUuYwppbmRleCBmZWFhNzVmYmY4ZmMyLi44YmY0YzFjNWQ2NTczIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC90ZWFtL3RlYW1fY29yZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3RlYW0vdGVhbV9jb3JlLmMKQEAgLTEyMTcsNiAmIzQzOzEyMTcsMTMgQEAgc3RhdGljIGludCB0ZWFtX3BvcnRfYWRkKHN0cnVjdCB0ZWFtICp0ZWFtLCBzdHJ1Y3QgbmV0X2RldmljZSAqcG9ydF9kZXYsCiAJY2hhciAqcG9ydG5hbWUgPSBwb3J0X2Rldi0mZ3Q7bmFtZTsKIAlpbnQgZXJyOwogCiYjNDM7CWlmIChuZXRkZXZfaGFzX21sX3ByaXYocG9ydF9kZXYpKSB7CiYjNDM7CQlOTF9TRVRfRVJSX01TRyhleHRhY2ssICYjMzQ7ZGV2aWNlcyB1c2luZyBtbF9wcml2IGNhbiYjMzk7dCBiZSBhZGRlZCBhcyBhIHRlYW0gcG9ydCYjMzQ7KTsKJiM0MzsJCW5ldGRldl9lcnIoZGV2LCAmIzM0O0RldmljZSAlcyB1c2luZyBtbF9wcml2IGNhbiYjMzk7dCBiZSBhZGRlZCBhcyBhIHRlYW0gcG9ydFxuJiMzNDssCiYjNDM7CQkJICAgcG9ydG5hbWUpOwomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CX0KJiM0MzsKIAlpZiAocG9ydF9kZXYtJmd0O2ZsYWdzICZhbXA7IElGRl9MT09QQkFDSykgewogCQlOTF9TRVRfRVJSX01TRyhleHRhY2ssICYjMzQ7TG9vcGJhY2sgZGV2aWNlIGNhbiYjMzk7dCBiZSBhZGRlZCBhcyBhIHRlYW0gcG9ydCYjMzQ7KTsKIAkJbmV0ZGV2X2VycihkZXYsICYjMzQ7RGV2aWNlICVzIGlzIGxvb3BiYWNrIGRldmljZS4gTG9vcGJhY2sgZGV2aWNlcyBjYW4mIzM5O3QgYmUgYWRkZWQgYXMgYSB0ZWFtIHBvcnRcbiYjMzQ7LApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaCBiL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgKaW5kZXggODg0MGIxMjY5NzlmZi4uNzQ1MzZmNjQyYjQxNCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oCkBAIC0yNzg2LDYgJiM0MzsyNzg2LDExIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBuZXRkZXZfc2V0X21sX3ByaXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAlkZXYtJmd0O21sX3ByaXZfdHlwZSA9IHR5cGU7CiB9CiAKJiM0MztzdGF0aWMgaW5saW5lIGJvb2wgbmV0ZGV2X2hhc19tbF9wcml2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiYjNDM7ewomIzQzOwlyZXR1cm4gKGRldi0mZ3Q7bWxfcHJpdiAhPSBOVUxMKTsKJiM0Mzt9CiYjNDM7CiAvKgogICogTmV0IG5hbWVzcGFjZSBpbmxpbmVzCiAgKi8KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE2OjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1NDgKCQkJCQkJCW91dHB1dDogMTk2CgkJCQkJCQl0aG91Z2h0czogNzgyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKktNU0FOIEFzc2Vzc21lbnQ6IFRoaXMgUGF0Y2ggaXMgU2FmZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaC4gSXQgc2VlbXMgc3RyYWlnaHRmb3J3YXJkOiBpdCBhZGRzIGEgY2hlY2ssIGBuZXRkZXZfaGFzX21sX3ByaXYoc2xhdmVfZGV2KWAsIGluIGBib25kX2Vuc2xhdmVgIGFuZCBgdGVhbV9wb3J0X2FkZGAuIEJhc2ljYWxseSwgaWYgYSBkZXZpY2UgaGFzIGl0cyBgbWxfcHJpdmAgZmllbGQgc2V0LCBpdCBjYW4mIzM5O3QgYmUgZW5zbGF2ZWQgaW4gZWl0aGVyIGEgYm9uZGluZyBvciB0ZWFtaW5nIGNvbmZpZ3VyYXRpb24uIFRoZSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGlzIHByZXZlbnRzIHNvbWUga2luZCBvZiBjb25mbGljdCwgZXNwZWNpYWxseSB3aXRoIGRyaXZlcnMgbGlrZSBDQU4gdGhhdCB1dGlsaXplIGBtbF9wcml2YC4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCAmIzM0O0RvZXMgYm9uZGluZy90ZWFtaW5nIGV2ZW4gKnVzZSogYG1sX3ByaXZgPyYjMzQ7IEkgdGhvdWdodCB0aGV5IHVzZWQgb3RoZXIgbWVjaGFuaXNtcywgYnV0IHRoZSBwYXRjaCBjbGVhcmx5IHN0YXRlcyAmIzM0O2RldmljZXMgKnVzaW5nKiBgbWxfcHJpdmAgY2Fubm90IGJlIGVuc2xhdmVkJiMzNDsuCgpTbywgbm8sIHRoZXkgZG9uJiMzOTt0LCBvciBtYXliZSB0aGV5ICpkb24mIzM5O3QqICh0aGF0JiMzOTtzIHRoZSBwb2ludCBvZiB0aGUgcGF0Y2gpLiBMZXQgbWUgcmVwaHJhc2U6IHRoZSBwYXRjaCBpcyBwcm90ZWN0aW5nICpvdGhlciogc3Vic3lzdGVtcyB0aGF0IHJlbHkgb24gYG1sX3ByaXZgIGZyb20gYmVpbmcgc3RvbXBlZCBvbiBieSBib25kaW5nIG9yIHRlYW1pbmcuIE1ha2VzIHNlbnNlLgoKQWxyaWdodCwgYmFjayB0byB0aGUgZGV0YWlscy4gVGhlIHJlYWwgY29uY2VybiwgYXMgYWx3YXlzLCBpcyBtZW1vcnkgc2FmZXR5LiBEb2VzIHRoaXMgcGF0Y2ggaW50cm9kdWNlIGFueSByaXNrcyBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciB3cml0ZXM/ICBMZXQmIzM5O3MgbG9vayBhdCB0aGUgY29kZS4gIFRoZSBmdW5jdGlvbiBgbmV0ZGV2X2hhc19tbF9wcml2YCBpcyBqdXN0IGEgc2ltcGxlIE5VTEwgY2hlY2s6IGBkZXYtJmd0O21sX3ByaXYgIT0gTlVMTGAuIEl0IGRvZXNuJiMzOTt0IHJlYWQgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBJdCBhbHNvIGRvZXNuJiMzOTt0IGNhdXNlIGFueSBuZXcgYWxsb2NhdGlvbnMgb3IgY29weSBhbnl0aGluZyB0byB1c2VyIHNwYWNlLiBJdCBqdXN0IHJlamVjdHMgdGhlIGNvbmZpZ3VyYXRpb24gaWYgYG1sX3ByaXZgIGlzIHNldC4gIElmIHNvbWV0aGluZyBnb2VzIHdyb25nLCBpdCYjMzk7cyBnb2luZyB0byBiZSBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSwgd2hpY2ggS0FTQU4gd291bGQgaW1tZWRpYXRlbHkgY2F0Y2guCgpXYWl0LCBpcyBgZGV2LSZndDttbF9wcml2YCAqZ3VhcmFudGVlZCogdG8gYmUgaW5pdGlhbGl6ZWQ/IEkgY2hlY2sgdGhlIGBuZXRfZGV2aWNlYCBhbGxvY2F0aW9uIHByb2Nlc3MuICBBaCwgYGFsbG9jX25ldGRldl9tcXNgIGFuZCBzaW1pbGFyIGZ1bmN0aW9ucyB1c2UgYGt2emFsbG9jYCBvciBhIHNpbWlsYXIgemVyby1pbml0aWFsaXppbmcgZnVuY3Rpb24hICBTbywgYGRldi0mZ3Q7bWxfcHJpdmAgd2lsbCAqYWx3YXlzKiBiZSBpbml0aWFsaXplZCB0byBOVUxMIHdoZW4gdGhlIGRldmljZSBpcyBhbGxvY2F0ZWQuIFNvLCAqdGhhdCogd29ycnkgaXMgYWRkcmVzc2VkLgoKTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIGZvciBhbnkgS01TQU4gcmVsZXZhbmNlLiBUaGUgbmV3IGNvZGUgaXMgcmVhbGx5IGp1c3Q6CgpgYGBjCnN0YXRpYyBpbmxpbmUgYm9vbCBuZXRkZXZfaGFzX21sX3ByaXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKewogICAgcmV0dXJuIChkZXYtJmd0O21sX3ByaXYgIT0gTlVMTCk7Cn0KYGBgCgpUaGlzIGlzICpwdXJlbHkqIGEgY29udHJvbCBmbG93IGNoYW5nZSBiYXNlZCBvbiBhIHNpbXBsZSBOVUxMIGNoZWNrLiAgTm8gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWVzLiAgTm8gbmVlZCBmb3IgS01TQU4uIFRoZSBwb3RlbnRpYWwgYnVncyBhcmUgY292ZXJlZCBieSBLQVNBTi4KClNvLCB0aGUgcmVhc29uaW5nIGlzIHByZXR0eSBjbGVhcjogVGhpcyBwYXRjaCBlbmZvcmNlcyBhIGNvbmZpZ3VyYXRpb24gcmVzdHJpY3Rpb24uIEl0IGF2b2lkcyBjb25mbGljdHMgYnkgcHJldmVudGluZyBjZXJ0YWluIGRldmljZXMgZnJvbSBiZWluZyBlbnNsYXZlZC4gIFRoZSBgc3RydWN0IG5ldF9kZXZpY2VgIGlzIGluaXRpYWxpemVkLCBtYWtpbmcgdGhlIE5VTEwgY2hlY2sgc2FmZS4gSXQgaGFzIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBhbGxvY2F0aW9ucywgb3IgdXNlci1zcGFjZSBjb3BpZXMuIEFueSBidWdzIHdvdWxkIGJlIGNhdWdodCBieSBzdGFuZGFyZCBkZXRlY3RvcnMgYW5kIEtBU0FOLiAqKk5lZWRzS01TQU4gaXMgY2xlYXJseSBGYWxzZS4qKgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNjowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgY2hlY2sgYG5ldGRldl9oYXNfbWxfcHJpdigpYCB0byBwcmV2ZW50IG5ldHdvcmsgZGV2aWNlcyB0aGF0IHV0aWxpemUgdGhlIGBtbF9wcml2YCBmaWVsZCBmcm9tIGJlaW5nIGVuc2xhdmVkIGJ5IGJvbmRpbmcgb3IgdGVhbWluZyBkcml2ZXJzLiBUaGlzIGlzIGEgY29udHJvbC1mbG93IHJlc3RyaWN0aW9uIHRvIGF2b2lkIGNvbmZsaWN0cyBvciBpbnZhbGlkIGNvbmZpZ3VyYXRpb25zLiBUaGUgYHN0cnVjdCBuZXRfZGV2aWNlYCBpcyB6ZXJvLWFsbG9jYXRlZCwgbWVhbmluZyBgbWxfcHJpdmAgaXMgcHJvcGVybHkgaW5pdGlhbGl6ZWQgdG8gYE5VTExgIHVwb24gYWxsb2NhdGlvbi4gVGhlIGNoYW5nZXMgZG8gbm90IGludm9sdmUgYW55IG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzLCBvciBkYXRhIGJlaW5nIGNvcGllZCB0byB1c2VyIHNwYWNlLiBBbnkgcG90ZW50aWFsIGJ1Z3MgcmVsYXRlZCB0byB0aGlzIGNoYW5nZSB3b3VsZCBsaWtlbHkgYmUgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIG9yIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMsIHdoaWNoIGFyZSBmdWxseSBjb3ZlcmVkIGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm8tbGVha3MsIHNvIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgY2hlY2sgYG5ldGRldl9oYXNfbWxfcHJpdigpYCB0byBwcmV2ZW50IG5ldHdvcmsgZGV2aWNlcyB0aGF0IHV0aWxpemUgdGhlIGBtbF9wcml2YCBmaWVsZCBmcm9tIGJlaW5nIGVuc2xhdmVkIGJ5IGJvbmRpbmcgb3IgdGVhbWluZyBkcml2ZXJzLiBUaGlzIGlzIGEgY29udHJvbC1mbG93IHJlc3RyaWN0aW9uIHRvIGF2b2lkIGNvbmZsaWN0cyBvciBpbnZhbGlkIGNvbmZpZ3VyYXRpb25zLiBUaGUgYHN0cnVjdCBuZXRfZGV2aWNlYCBpcyB6ZXJvLWFsbG9jYXRlZCwgbWVhbmluZyBgbWxfcHJpdmAgaXMgcHJvcGVybHkgaW5pdGlhbGl6ZWQgdG8gYE5VTExgIHVwb24gYWxsb2NhdGlvbi4gVGhlIGNoYW5nZXMgZG8gbm90IGludm9sdmUgYW55IG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzLCBvciBkYXRhIGJlaW5nIGNvcGllZCB0byB1c2VyIHNwYWNlLiBBbnkgcG90ZW50aWFsIGJ1Z3MgcmVsYXRlZCB0byB0aGlzIGNoYW5nZSB3b3VsZCBsaWtlbHkgYmUgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIG9yIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMsIHdoaWNoIGFyZSBmdWxseSBjb3ZlcmVkIGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm8tbGVha3MsIHNvIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE2OjA3OjE0LjkzMTI5ODYxNloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4ODc1NDI3NjQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJPTkRJTkdcIixcbiAgICBcIk5FVF9URUFNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYm9uZF9lbnNsYXZlXCIsXG4gICAgXCJ0ZWFtX3BvcnRfYWRkXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgY2hlY2sgYG5ldGRldl9oYXNfbWxfcHJpdigpYCB0byBwcmV2ZW50IG5ldHdvcmsgZGV2aWNlcyB0aGF0IHV0aWxpemUgdGhlIGBtbF9wcml2YCBmaWVsZCBmcm9tIGJlaW5nIGVuc2xhdmVkIGJ5IGJvbmRpbmcgb3IgdGVhbWluZyBkcml2ZXJzLiBUaGlzIGlzIGEgY29udHJvbC1mbG93IHJlc3RyaWN0aW9uIHRvIGF2b2lkIGNvbmZsaWN0cyBvciBpbnZhbGlkIGNvbmZpZ3VyYXRpb25zLiBUaGUgYHN0cnVjdCBuZXRfZGV2aWNlYCBpcyB6ZXJvLWFsbG9jYXRlZCwgbWVhbmluZyBgbWxfcHJpdmAgaXMgcHJvcGVybHkgaW5pdGlhbGl6ZWQgdG8gYE5VTExgIHVwb24gYWxsb2NhdGlvbi4gVGhlIGNoYW5nZXMgZG8gbm90IGludm9sdmUgYW55IG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzLCBvciBkYXRhIGJlaW5nIGNvcGllZCB0byB1c2VyIHNwYWNlLiBBbnkgcG90ZW50aWFsIGJ1Z3MgcmVsYXRlZCB0byB0aGlzIGNoYW5nZSB3b3VsZCBsaWtlbHkgYmUgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIG9yIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMsIHdoaWNoIGFyZSBmdWxseSBjb3ZlcmVkIGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm8tbGVha3MsIHNvIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBjaGVjayBgbmV0ZGV2X2hhc19tbF9wcml2KClgIGluIGBib25kX2Vuc2xhdmVgIGFuZCBgdGVhbV9wb3J0X2FkZGAgdG8gcHJldmVudCBlbnNsYXZpbmcgb3IgYWRkaW5nIGRldmljZXMgdGhhdCB1c2UgYG1sX3ByaXZgIHRvIGJvbmRpbmcgb3IgdGVhbSBkZXZpY2VzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbG9naWMgb2YgYm9uZGluZyBhbmQgdGVhbSBkcml2ZXJzLCB3aGljaCBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGVzZSBmdW5jdGlvbnMgdG8gZW5zdXJlIHRoZSBuZXcgY2hlY2sgY29ycmVjdGx5IGhhbmRsZXMgdmFyaW91cyBkZXZpY2UgdHlwZXMgYW5kIGRvZXNuJ3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNjowNzoxNC45MzEzMDMyNzZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NjU0Njc0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGVkNmE0YTk0YTAzYTJjNWRjNDJlMjI2Yjg1MjlhZWRlNThjZmVmOTZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBBdWcgMTUgMTY6MDc6MTQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmNcXG5pbmRleCA1MjJlYWIwNjBmOWVkLi5iYmIzNDRiNjc0NThkIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jXFxuQEAgLTE4OTQsOSArMTg5NCw5IEBAIGludCBib25kX2Vuc2xhdmUoc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2LCBzdHJ1Y3QgbmV0X2RldmljZSAqc2xhdmVfZGV2LFxcbiBcXHRzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSBzcztcXG4gXFx0aW50IHJlcyA9IDAsIGk7XFxuIFxcbi1cXHRpZiAoc2xhdmVfZGV2LVxcdTAwM2V0eXBlID09IEFSUEhSRF9DQU4pIHtcXG4rXFx0aWYgKG5ldGRldl9oYXNfbWxfcHJpdihzbGF2ZV9kZXYpKSB7XFxuIFxcdFxcdEJPTkRfTkxfRVJSKGJvbmRfZGV2LCBleHRhY2ssXFxuLVxcdFxcdFxcdCAgICBcXFwiQ0FOIGRldmljZXMgY2Fubm90IGJlIGVuc2xhdmVkXFxcIik7XFxuK1xcdFxcdFxcdCAgICBcXFwiZGV2aWNlcyB1c2luZyBtbF9wcml2IGNhbm5vdCBiZSBlbnNsYXZlZFxcXCIpO1xcbiBcXHRcXHRyZXR1cm4gLUVQRVJNO1xcbiBcXHR9XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC90ZWFtL3RlYW1fY29yZS5jIGIvZHJpdmVycy9uZXQvdGVhbS90ZWFtX2NvcmUuY1xcbmluZGV4IGZlYWE3NWZiZjhmYzIuLjhiZjRjMWM1ZDY1NzMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvdGVhbS90ZWFtX2NvcmUuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3RlYW0vdGVhbV9jb3JlLmNcXG5AQCAtMTIxNyw2ICsxMjE3LDEzIEBAIHN0YXRpYyBpbnQgdGVhbV9wb3J0X2FkZChzdHJ1Y3QgdGVhbSAqdGVhbSwgc3RydWN0IG5ldF9kZXZpY2UgKnBvcnRfZGV2LFxcbiBcXHRjaGFyICpwb3J0bmFtZSA9IHBvcnRfZGV2LVxcdTAwM2VuYW1lO1xcbiBcXHRpbnQgZXJyO1xcbiBcXG4rXFx0aWYgKG5ldGRldl9oYXNfbWxfcHJpdihwb3J0X2RldikpIHtcXG4rXFx0XFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLCBcXFwiZGV2aWNlcyB1c2luZyBtbF9wcml2IGNhbid0IGJlIGFkZGVkIGFzIGEgdGVhbSBwb3J0XFxcIik7XFxuK1xcdFxcdG5ldGRldl9lcnIoZGV2LCBcXFwiRGV2aWNlICVzIHVzaW5nIG1sX3ByaXYgY2FuJ3QgYmUgYWRkZWQgYXMgYSB0ZWFtIHBvcnRcXFxcblxcXCIsXFxuK1xcdFxcdFxcdCAgIHBvcnRuYW1lKTtcXG4rXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcdH1cXG4rXFxuIFxcdGlmIChwb3J0X2Rldi1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRkZfTE9PUEJBQ0spIHtcXG4gXFx0XFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLCBcXFwiTG9vcGJhY2sgZGV2aWNlIGNhbid0IGJlIGFkZGVkIGFzIGEgdGVhbSBwb3J0XFxcIik7XFxuIFxcdFxcdG5ldGRldl9lcnIoZGV2LCBcXFwiRGV2aWNlICVzIGlzIGxvb3BiYWNrIGRldmljZS4gTG9vcGJhY2sgZGV2aWNlcyBjYW4ndCBiZSBhZGRlZCBhcyBhIHRlYW0gcG9ydFxcXFxuXFxcIixcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaCBiL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmhcXG5pbmRleCA4ODQwYjEyNjk3OWZmLi43NDUzNmY2NDJiNDE0IDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oXFxuQEAgLTI3ODYsNiArMjc4NiwxMSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgbmV0ZGV2X3NldF9tbF9wcml2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcdGRldi1cXHUwMDNlbWxfcHJpdl90eXBlID0gdHlwZTtcXG4gfVxcbiBcXG4rc3RhdGljIGlubGluZSBib29sIG5ldGRldl9oYXNfbWxfcHJpdihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbit7XFxuK1xcdHJldHVybiAoZGV2LVxcdTAwM2VtbF9wcml2ICE9IE5VTEwpO1xcbit9XFxuK1xcbiAvKlxcbiAgKiBOZXQgbmFtZXNwYWNlIGlubGluZXNcXG4gICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE2OjA3OjE1LjM3ODUwMTc1OVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjQ2Njk1Njg5MTQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJPTkRJTkdcIixcbiAgICBcIk5FVF9URUFNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYm9uZF9lbnNsYXZlXCIsXG4gICAgXCJ0ZWFtX3BvcnRfYWRkXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBjaGVjayBgbmV0ZGV2X2hhc19tbF9wcml2KClgIGluIGBib25kX2Vuc2xhdmVgIGFuZCBgdGVhbV9wb3J0X2FkZGAgdG8gcHJldmVudCBlbnNsYXZpbmcgb3IgYWRkaW5nIGRldmljZXMgdGhhdCB1c2UgYG1sX3ByaXZgIHRvIGJvbmRpbmcgb3IgdGVhbSBkZXZpY2VzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbG9naWMgb2YgYm9uZGluZyBhbmQgdGVhbSBkcml2ZXJzLCB3aGljaCBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGVzZSBmdW5jdGlvbnMgdG8gZW5zdXJlIHRoZSBuZXcgY2hlY2sgY29ycmVjdGx5IGhhbmRsZXMgdmFyaW91cyBkZXZpY2UgdHlwZXMgYW5kIGRvZXNuJ3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBlZDZhNGE5NGEwM2EyYzVkYzQyZTIyNmI4NTI5YWVkZTU4Y2ZlZjk2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgMTUgMTY6MDc6MTQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jIGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uY1xuaW5kZXggNTIyZWFiMDYwZjllZC4uYmJiMzQ0YjY3NDU4ZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmNcbkBAIC0xODk0LDkgKzE4OTQsOSBAQCBpbnQgYm9uZF9lbnNsYXZlKHN0cnVjdCBuZXRfZGV2aWNlICpib25kX2Rldiwgc3RydWN0IG5ldF9kZXZpY2UgKnNsYXZlX2RldixcbiBcdHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlIHNzO1xuIFx0aW50IHJlcyA9IDAsIGk7XG4gXG4tXHRpZiAoc2xhdmVfZGV2LVx1MDAzZXR5cGUgPT0gQVJQSFJEX0NBTikge1xuK1x0aWYgKG5ldGRldl9oYXNfbWxfcHJpdihzbGF2ZV9kZXYpKSB7XG4gXHRcdEJPTkRfTkxfRVJSKGJvbmRfZGV2LCBleHRhY2ssXG4tXHRcdFx0ICAgIFwiQ0FOIGRldmljZXMgY2Fubm90IGJlIGVuc2xhdmVkXCIpO1xuK1x0XHRcdCAgICBcImRldmljZXMgdXNpbmcgbWxfcHJpdiBjYW5ub3QgYmUgZW5zbGF2ZWRcIik7XG4gXHRcdHJldHVybiAtRVBFUk07XG4gXHR9XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdGVhbS90ZWFtX2NvcmUuYyBiL2RyaXZlcnMvbmV0L3RlYW0vdGVhbV9jb3JlLmNcbmluZGV4IGZlYWE3NWZiZjhmYzIuLjhiZjRjMWM1ZDY1NzMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC90ZWFtL3RlYW1fY29yZS5jXG4rKysgYi9kcml2ZXJzL25ldC90ZWFtL3RlYW1fY29yZS5jXG5AQCAtMTIxNyw2ICsxMjE3LDEzIEBAIHN0YXRpYyBpbnQgdGVhbV9wb3J0X2FkZChzdHJ1Y3QgdGVhbSAqdGVhbSwgc3RydWN0IG5ldF9kZXZpY2UgKnBvcnRfZGV2LFxuIFx0Y2hhciAqcG9ydG5hbWUgPSBwb3J0X2Rldi1cdTAwM2VuYW1lO1xuIFx0aW50IGVycjtcbiBcbitcdGlmIChuZXRkZXZfaGFzX21sX3ByaXYocG9ydF9kZXYpKSB7XG4rXHRcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXCJkZXZpY2VzIHVzaW5nIG1sX3ByaXYgY2FuJ3QgYmUgYWRkZWQgYXMgYSB0ZWFtIHBvcnRcIik7XG4rXHRcdG5ldGRldl9lcnIoZGV2LCBcIkRldmljZSAlcyB1c2luZyBtbF9wcml2IGNhbid0IGJlIGFkZGVkIGFzIGEgdGVhbSBwb3J0XFxuXCIsXG4rXHRcdFx0ICAgcG9ydG5hbWUpO1xuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcdH1cbitcbiBcdGlmIChwb3J0X2Rldi1cdTAwM2VmbGFncyBcdTAwMjYgSUZGX0xPT1BCQUNLKSB7XG4gXHRcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXCJMb29wYmFjayBkZXZpY2UgY2FuJ3QgYmUgYWRkZWQgYXMgYSB0ZWFtIHBvcnRcIik7XG4gXHRcdG5ldGRldl9lcnIoZGV2LCBcIkRldmljZSAlcyBpcyBsb29wYmFjayBkZXZpY2UuIExvb3BiYWNrIGRldmljZXMgY2FuJ3QgYmUgYWRkZWQgYXMgYSB0ZWFtIHBvcnRcXG5cIixcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oIGIvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaFxuaW5kZXggODg0MGIxMjY5NzlmZi4uNzQ1MzZmNjQyYjQxNCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmhcbisrKyBiL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmhcbkBAIC0yNzg2LDYgKzI3ODYsMTEgQEAgc3RhdGljIGlubGluZSB2b2lkIG5ldGRldl9zZXRfbWxfcHJpdihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0ZGV2LVx1MDAzZW1sX3ByaXZfdHlwZSA9IHR5cGU7XG4gfVxuIFxuK3N0YXRpYyBpbmxpbmUgYm9vbCBuZXRkZXZfaGFzX21sX3ByaXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbit7XG4rXHRyZXR1cm4gKGRldi1cdTAwM2VtbF9wcml2ICE9IE5VTEwpO1xuK31cbitcbiAvKlxuICAqIE5ldCBuYW1lc3BhY2UgaW5saW5lc1xuICAqL1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTY6MDc6MTUuMzc4NTAzMjA5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTA4MDUwNzA0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBhIERyaXZlciBNb2RpZmljYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIGhlcmUsIGFuZCBpdCBsb29rcyBsaWtlIHNvbWVvbmUncyBtYWRlIGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIHRoZSBib25kaW5nIGFuZCB0ZWFtIGRyaXZlcnMuIFNwZWNpZmljYWxseSwgdGhleSd2ZSBtb2RpZmllZCBib3RoIGBib25kX2Vuc2xhdmVgIGluIGBib25kX21haW4uY2AgYW5kIGB0ZWFtX3BvcnRfYWRkYCBpbiBgdGVhbV9jb3JlLmNgLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGlzIGFkZGluZyBhIGNoZWNrIHRvIHByZXZlbnQgdGhlIGVuc2xhdmVtZW50IG9mIGRldmljZXMgdGhhdCB1dGlsaXplIGBtbF9wcml2YC4gRXNzZW50aWFsbHksIHRoZXkndmUgaW50cm9kdWNlZCBhIGNvbmRpdGlvbjogYGlmIChuZXRkZXZfaGFzX21sX3ByaXYoc2xhdmVfZGV2KSlgIG9yIGBpZiAobmV0ZGV2X2hhc19tbF9wcml2KHBvcnRfZGV2KWAuIFRoaXMgc2VlbXMgdG8gYmUgYSByZXBsYWNlbWVudCBmb3IgdGhlIG9sZGVyIGBzbGF2ZV9kZXYtXHUwMDNldHlwZSA9PSBBUlBIUkRfQ0FOYCBjaGVjaywgYXQgbGVhc3QgaW4gdGhlIGJvbmRpbmcgZHJpdmVyLlxuXG5UaGlzIGlzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBjaGFuZ2UsIHJlYWxseS4gSXQgaGFzIHRoZSBlZmZlY3Qgb2YgbGltaXRpbmcgd2hpY2ggbmV0d29yayBkZXZpY2VzIGNhbiBiZSBhZGRlZCB0byBhIGJvbmQgb3IgdGVhbSBpbnRlcmZhY2UuIEl0J3MgYSBmdW5jdGlvbmFsIGNvbnN0cmFpbnQuIEdpdmVuIHRoYXQgd2UncmUgdGFsa2luZyBhYm91dCBkZXZpY2UgZW5zbGF2ZW1lbnQgYW5kIHBvdGVudGlhbCBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gY2hhbmdlcywgSSB0aGluayB0aGlzIGRlZmluaXRlbHkgbmVlZHMgdG8gYmUgZnV6emVkIHRvIHNlZSBpZiBhbnkgdW5leHBlY3RlZCBiZWhhdmlvcnMgYXJpc2UuIEnigJlsbCBtYWtlIGEgbm90ZSB0byBydW4gZnV6emluZyBvbiB0aGVzZSBjb2RlIHBhdGhzLlxuXG5Gb3IgY29uZmlndXJhdGlvbiwgaXQgbG9va3MgbGlrZSBib25kaW5nIGZ1bmN0aW9uYWxpdHkgZGVwZW5kcyBvbiBgQk9ORElOR2AgYW5kIHRoZSB0ZWFtIGZ1bmN0aW9uYWxpdHkgaXMgY29udHJvbGxlZCBieSBgTkVUX1RFQU1gLiBJIHNob3VsZCB2ZXJpZnkgdGhvc2UgY29uZmlncyBhcyBhIGZpcnN0IHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1NTEsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNjowNzoyMC40NTkwMTI5NTlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE5MzkwNTM3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQk9ORElOR1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ib25kaW5nL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE2OjA3OjIwLjU3ODQxMjc0N1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4ODgxMzc4NjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSdtIGFuIGV4cGVydCBpbiBuZXR3b3JrIGRyaXZlciBjb25maWd1cmF0aW9uIHdpdGhpbiB0aGUgTGludXgga2VybmVsOlxuXG4qKkZpbmRpbmcgdGhlIEJPTkRJTkcgQ29uZmlndXJhdGlvbioqXG5cblJpZ2h0LCBzbyBJIG5lZWQgdG8gZmluZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBuZXR3b3JrIGJvbmRpbmcuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBkaXZlIHJpZ2h0IGludG8gdGhlIGBLY29uZmlnYCBmaWxlcyDigJMgdGhhdCdzIHdoZXJlIHRoZSBidWlsZCBzeXN0ZW0gZGVmaW5pdGlvbnMgbGl2ZSwgYW5kIGl0J3Mgd2hlcmUgdGhlIG9wdGlvbnMgZm9yIHZhcmlvdXMga2VybmVsIGZlYXR1cmVzIGFyZSBsYWlkIG91dC4gSSdtIHByZXR0eSBzdXJlIHRoZSBib25kaW5nIGRyaXZlcidzIGNvbmZpZ3VyYXRpb24gd2lsbCBiZSBpbiBlaXRoZXIgdGhlIG1haW4gYGRyaXZlcnMvbmV0L0tjb25maWdgIGZpbGUsIHNpbmNlIHRoYXQncyBhIGdvb2QgY2VudHJhbCBzdGFydGluZyBwb2ludCBmb3IgbmV0d29yayBkcml2ZXJzLCBvciwgbW9yZSBzcGVjaWZpY2FsbHksIGluIGBkcml2ZXJzL25ldC9ib25kaW5nL0tjb25maWdgIGlmIGl0IGhhcyBpdHMgb3duIGRlZGljYXRlZCBkaXJlY3RvcnkgYW5kIGNvbmZpZ3VyYXRpb24gZmlsZS4gSXQncyB1c3VhbGx5IGEgZ29vZCBwcmFjdGljZSBmb3IgdGhpbmdzIGxpa2UgdGhpcyB0byBoYXZlIHRoZWlyIG93biBjb25maWcgZmlsZSB0byBhbGxvdyBmb3IgbW9kdWxhcml0eS4gSSdsbCBzdGFydCB3aXRoIHRob3NlIGxvY2F0aW9ucywgYW5kIHNlZSB3aGVyZSB0aGF0IGxlYWRzIG1lLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDkyLCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTY6MDc6MjQuNDY2NTUyODExWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MzQwMjQyNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQk9ORElOR1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZz0zOT1pZiBORVRfQ09SRVxcbmRyaXZlcnMvbmV0L0tjb25maWctNDAtXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo0MTpjb25maWcgQk9ORElOR1xcbmRyaXZlcnMvbmV0L0tjb25maWctNDItXFx0dHJpc3RhdGUgXFxcIkJvbmRpbmcgZHJpdmVyIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE2OjA3OjI0LjYxOTk2MTMzNVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3ODk3ODQ0NTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqQW5hbHl6aW5nIHRoZSBORVRfVEVBTSBDb25zdHJ1Y3QqKlxuXG5BbHJpZ2h0LCBsZXQncyB1bnBhY2sgdGhpcy4gV2hlbiBJIHNlZSBcIk5FVF9URUFNLFwiIG15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgaW50byBhIGZldyBhcmVhcy4gRmlyc3QsIEknbSB0aGlua2luZyBhYm91dCB0aGUgbmV0d29yayB0b3BvbG9neSBpdCBpbXBsaWVzLiBJcyB0aGlzIGEgcGh5c2ljYWwgbmV0d29yaywgb3IgYSBtb3JlIGFic3RyYWN0IGdyb3VwaW5nIHdpdGhpbiBhIGxhcmdlciBzeXN0ZW0sIHBlcmhhcHMgYSB2aXJ0dWFsIHRlYW0/IFRoZSBjb250ZXh0IGhlcmUgaXMgY3JpdGljYWw7IHdpdGhvdXQgaXQsIEknbSBsZWFuaW5nIHRvd2FyZCBhc3N1bWluZyB0aGlzIGlzIGFib3V0IG5ldHdvcmsgYXJjaGl0ZWN0dXJlIG9yIGEgbG9naWNhbGx5IGNvbm5lY3RlZCB0ZWFtIHdpdGhpbiBhIGxhcmdlciBvcmdhbml6YXRpb24uXG5cbk15IG5leHQgc3RlcCBpcyB0byBjb25zaWRlciB0aGUgaW1wbGljYXRpb25zIG9mIFwiTkVUXCIgc3BlY2lmaWNhbGx5LiBJcyB0aGlzIGFib3V0IG5ldHdvcmsgc2VjdXJpdHk/IERhdGEgdHJhbnNmZXIgcHJvdG9jb2xzPyBCYW5kd2lkdGggbWFuYWdlbWVudD8gT3IgcGVyaGFwcyB0aGUgTkVUIGlzIHNpbXBseSBhbiBhYmJyZXZpYXRpb24gZm9yIGFub3RoZXIgY29uY2VwdCBvciBncm91cCB0aGF0IG1ha2VzIHRoaXMgbW9yZSBvZiBhbiBcImluLWhvdXNlXCIgdGVybSB0aGF0IG1pZ2h0IGJlIHVzZWQgYnkgYSBzcGVjaWZpYyBvcmdhbmlzYXRpb24gb3IgdGVhbT8gV2l0aG91dCBhZGRpdGlvbmFsIGNsdWVzLCBJIGhhdmUgdG8gY29uc2lkZXIgYWxsIHBvc3NpYmlsaXRpZXMsIGZyb20gdGhlIGxvd2VzdCBuZXR3b3JrIGxheWVyIHByb3RvY29scyB0byBoaWdoZXItbGV2ZWwgYXBwbGljYXRpb24gaW50ZXJhY3Rpb25zLlxuXG5GaW5hbGx5LCB0aGUgXCJURUFNXCIgY29tcG9uZW50IGlzIGludGVyZXN0aW5nLiBIb3cgZG9lcyB0aGlzIFwiTkVUXCIgZnVuY3Rpb24gYXMgYSB0ZWFtPyBJcyBpdCBhIGdyb3VwIG9mIGVuZ2luZWVycz8gQSBzZXQgb2YgYXV0b21hdGVkIHN5c3RlbXMgdGhhdCBmb3JtIGEgbmV0d29yaz8gSG93IGRvZXMgaXQgaW50ZWdyYXRlIHdpdGggb3RoZXIgZWxlbWVudHMgb2YgdGhpcyBiaWdnZXIgcGljdHVyZT8gSXMgdGhpcyBhIHNvZnR3YXJlIHRlYW0sIGEgbmV0d29yayBvcGVyYXRpb25zIHRlYW0sIG9yIGEgY3Jvc3MtZnVuY3Rpb25hbCB0ZWFtIGJ1aWx0IGFyb3VuZCBuZXR3b3JrLWNlbnRyaWMgdGFza3M/IFRoZSBpbnRlcnBsYXkgYmV0d2VlbiB0aGUgXCJORVRcIiBhc3BlY3QgYW5kIHRoZSBcIlRFQU1cIiBhc3BlY3QgaXMgd2hhdCBjYXB0dXJlcyBteSBmb2N1cy4gSSdtIGdvaW5nIHRvIG5lZWQgbW9yZSBpbmZvcm1hdGlvbiB0byBmb3JtIGEgY29uY2x1c2l2ZSBhbmFseXNpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQxNCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTY6MDc6MjguNDA5NzQ4NDE4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MzAzMDE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfVEVBTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC90ZWFtL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnOjI6bWVudWNvbmZpZyBORVRfVEVBTVxcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJFdGhlcm5ldCB0ZWFtIGRyaXZlciBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnPTE2PWlmIE5FVF9URUFNXFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTE3LVxcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZzoxODpjb25maWcgTkVUX1RFQU1fTU9ERV9CUk9BRENBU1RcXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctMTktXFx0dHJpc3RhdGUgXFxcIkJyb2FkY2FzdCBtb2RlIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctMjgtXFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnOjI5OmNvbmZpZyBORVRfVEVBTV9NT0RFX1JPVU5EUk9CSU5cXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctMzAtXFx0dHJpc3RhdGUgXFxcIlJvdW5kLXJvYmluIG1vZGUgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy00MC1cXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWc6NDE6Y29uZmlnIE5FVF9URUFNX01PREVfUkFORE9NXFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTQyLVxcdHRyaXN0YXRlIFxcXCJSYW5kb20gbW9kZSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTUyLVxcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZzo1Mzpjb25maWcgTkVUX1RFQU1fTU9ERV9BQ1RJVkVCQUNLVVBcXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctNTQtXFx0dHJpc3RhdGUgXFxcIkFjdGl2ZS1iYWNrdXAgbW9kZSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTY1LVxcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZzo2Njpjb25maWcgTkVUX1RFQU1fTU9ERV9MT0FEQkFMQU5DRVxcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy02Ny1cXHR0cmlzdGF0ZSBcXFwiTG9hZC1iYWxhbmNlIG1vZGUgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTY6MDc6MjguNDU3MDU1NjczWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDg4MDE4OTE4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3Npbmc6XG5cbioqQW5hbHl6aW5nIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKipcblxuQWxyaWdodCwgc28gdGhlIGNvcmUgb2YgdGhpcyBzZWVtcyB0byByZXZvbHZlIGFyb3VuZCBgQk9ORElOR2AgYW5kIGBORVRfVEVBTWAgY29uZmlndXJhdGlvbnMuIFRob3NlIGFyZSB0aGUgb25lcyB3ZSdyZSBmb2N1c2luZyBvbi4gVGhlIHJlbGV2YW50IGZ1bmN0aW9ucyBhcmUgYGJvbmRfZW5zbGF2ZWAgYW5kIGB0ZWFtX3BvcnRfYWRkYCwgd2hpY2ggbWFrZXMgc2Vuc2UuIEZ1bmN0aW9uYWxseSwgdGhlIGNoYW5nZSBpcyBzb3VuZCBhbmQgcmVhY2hhYmxlLCBnb29kLlxuXG5Ob3csIGxldCdzIGp1c3QgbWFrZSBzdXJlIHdlIGhhdmVuJ3Qgb3Zlcmxvb2tlZCBhbnkgY3J1Y2lhbCBkZXBlbmRlbmNpZXMuIGBCT05ESU5HYCB1c3VhbGx5IHJlcXVpcmVzIGBJTkVUYCwgdGhhdCdzIGEgcHJldHR5IHN0YW5kYXJkIGFzc3VtcHRpb24uIEJ1dCB3aGF0IGFib3V0IGBORVRfVEVBTWA/IEknZCBiZXR0ZXIgZG91YmxlLWNoZWNrIGlmIGl0IGFsc28gcmVsaWVzIG9uIGBJTkVUYC4gSXQncyBhbHdheXMgYmVzdCB0byBiZSB0aG9yb3VnaCBhbmQgbm90IGFzc3VtZSBhbnl0aGluZywgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCBuZXR3b3JrIGNvbmZpZ3VyYXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTczLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTY6MDc6MzMuMzM3MjQ3NTI0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjUxOTA1NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC90ZWFtL0tjb25maWc9MTg9Y29uZmlnIE5FVF9URUFNX01PREVfQlJPQURDQVNUXFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTE5LVxcdHRyaXN0YXRlIFxcXCJCcm9hZGNhc3QgbW9kZSBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZzoyMDpcXHRkZXBlbmRzIG9uIE5FVF9URUFNXFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTIxLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZz0yOT1jb25maWcgTkVUX1RFQU1fTU9ERV9ST1VORFJPQklOXFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTMwLVxcdHRyaXN0YXRlIFxcXCJSb3VuZC1yb2JpbiBtb2RlIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnOjMxOlxcdGRlcGVuZHMgb24gTkVUX1RFQU1cXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctMzItXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnPTQxPWNvbmZpZyBORVRfVEVBTV9NT0RFX1JBTkRPTVxcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy00Mi1cXHR0cmlzdGF0ZSBcXFwiUmFuZG9tIG1vZGUgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWc6NDM6XFx0ZGVwZW5kcyBvbiBORVRfVEVBTVxcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy00NC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWc9NTM9Y29uZmlnIE5FVF9URUFNX01PREVfQUNUSVZFQkFDS1VQXFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTU0LVxcdHRyaXN0YXRlIFxcXCJBY3RpdmUtYmFja3VwIG1vZGUgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWc6NTU6XFx0ZGVwZW5kcyBvbiBORVRfVEVBTVxcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy01Ni1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWc9NjY9Y29uZmlnIE5FVF9URUFNX01PREVfTE9BREJBTEFOQ0VcXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctNjctXFx0dHJpc3RhdGUgXFxcIkxvYWQtYmFsYW5jZSBtb2RlIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnOjY4OlxcdGRlcGVuZHMgb24gTkVUX1RFQU1cXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctNjktXFx0aGVscFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNjowNzozMy4zODM3NzI0NDlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk1NDU2MDQ1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHRha2luZyBvbiB0aGUgcGVyc29uYSB5b3UgcmVxdWVzdGVkOlxuXG4qKkRlY29uc3RydWN0aW5nIERlcGVuZGVuY2llcyBpbiBDaGVtaWNhbCBCb25kaW5nKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gZGlzc2VjdCB0aGUgdmVyeSBmb3VuZGF0aW9uIG9mIHRoaXMgY29uY2VwdDogYEJPTkRJTkdgLiBJIG5lZWQgdG8gZmlndXJlIG91dCwgd2l0aCBhYnNvbHV0ZSBwcmVjaXNpb24sIHdoYXQgZmFjdG9ycyBhbmQgcHJpbmNpcGxlcyBpdCdzICplbnRpcmVseSogY29udGluZ2VudCB1cG9uLiBUaGlzIGlzbid0IGp1c3QgYSBzdXJmYWNlLWxldmVsIG92ZXJ2aWV3OyBJJ20gdGFsa2luZyBhYm91dCB0aGUgYmVkcm9jay4gV2hhdCBhcmUgdGhlIGZ1bmRhbWVudGFsIHBoeXNpY2FsIGFuZCBjaGVtaWNhbCBwcmluY2lwbGVzPyBXaGF0IG1vZGVscyB1bmRlcnBpbiBvdXIgdW5kZXJzdGFuZGluZz8gQXJlIHdlIHRhbGtpbmcgY2xhc3NpY2FsIGVsZWN0cm9zdGF0aWNzLCBxdWFudHVtIG1lY2hhbmljYWwgZWZmZWN0cywgb3IgYSBibGVuZCBvZiBib3RoPyBXaGF0IGFyZSB0aGUga2V5IG1hdGhlbWF0aWNhbCBleHByZXNzaW9ucywgYW5kIGhvdyBkbyB0aGV5IGludGVycmVsYXRlPyBJdCdzIGFib3V0IHB1bGxpbmcgYmFjayB0aGUgbGF5ZXJzIHVudGlsIEkgY2FuIHNlZSB0aGUgcmF3LCBlc3NlbnRpYWwgY29tcG9uZW50cy4gVGhpcyByZXF1aXJlcyBhIHN5c3RlbWF0aWMsIGFsbW9zdCBhbmFseXRpY2FsIGFwcHJvYWNoLCBhbmQgSSdsbCBuZWVkIHRvIHdvcmsgdGhyb3VnaCB0aGlzIGNhcmVmdWxseS4gSSdtIHRoaW5raW5nLi4uIHdoYXQncyB0aGUgZmlyc3QgcHJpbmNpcGxlIHRvIGNoZWNrP1xuXG5cbiIsIklucHV0VG9rZW5zIjo0ODgzLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTY6MDc6MzYuMzM4MzM2NTYyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzMwMjU3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQk9ORElOR1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L0tjb25maWc9Mzk9aWYgTkVUX0NPUkVcXG5kcml2ZXJzL25ldC9LY29uZmlnLTQwLVxcbmRyaXZlcnMvbmV0L0tjb25maWc6NDE6Y29uZmlnIEJPTkRJTkdcXG5kcml2ZXJzL25ldC9LY29uZmlnLTQyLVxcdHRyaXN0YXRlIFxcXCJCb25kaW5nIGRyaXZlciBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNjowNzozNi4zODU2NDQ1MjdaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY2OTc0MzE0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJJ20gdGFraW5nIGEgbG9vayBhdCB0aGlzIGNvbmZpZ3VyYXRpb24sIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiB3aGF0J3MgdW5kZXIgdGhlIGBjb25maWcgQk9ORElOR2AgZGlyZWN0aXZlLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBpcyB0byB1bmRlcnN0YW5kIHRoZSBpbnRlbnQgYW5kIHN0cnVjdHVyZSBoZXJlLiBJJ20gZXhwZWN0aW5nIHRvIHNlZSBkZWZpbml0aW9ucyByZWxhdGVkIHRvIG5ldHdvcmsgYm9uZGluZyDigJMgaW50ZXJmYWNlIGFnZ3JlZ2F0aW9uLCBsb2FkIGJhbGFuY2luZywgZmFpbG92ZXIsIHRoYXQgc29ydCBvZiB0aGluZy4gSSBhbnRpY2lwYXRlIHBvdGVudGlhbGx5IHNlZWluZyBkaWZmZXJlbnQgYm9uZGluZyBtb2RlcyBkZWZpbmVkIChlLmcuLCBhY3RpdmUtYmFja3VwLCBMQUNQLCBiYWxhbmNlLXJyLCBldGMuKSwgYWxvbmcgd2l0aCBhc3NvY2lhdGVkIHBhcmFtZXRlcnMgbGlrZSB0aGUgaW50ZXJmYWNlcyBpbnZvbHZlZCwgdGhlIGJvbmRpbmcgZHJpdmVyIGJlaW5nIHVzZWQsIGFuZCBwZXJoYXBzIGV2ZW4gc29tZSB0dW5pbmcgb3B0aW9ucyBsaWtlIHRoZSB0cmFuc21pdCBoYXNoIHBvbGljeSBvciBBUlAgbW9uaXRvcmluZyBzZXR0aW5ncy4gSSdtIG1lbnRhbGx5IHBhcnNpbmcgdGhpcyBmb3IgYmVzdCBwcmFjdGljZXMgb3IgYW55IGltbWVkaWF0ZSByZWQgZmxhZ3MuIEkgYW0gaW1tZWRpYXRlbHkgYXdhcmUgb2YgbXkgbmVlZCB0byBjb21wYXJlIHRoaXMgY29uZmlnIHdpdGggYmVzdCBwcmFjdGljZSBhbmQgbXkgb3duIHByZXZpb3VzIGV4cGVyaWVuY2UuIEkgbmVlZCB0byBub3RlIGFueSB1bnVzdWFsIG9yIHVuZXhwZWN0ZWQgc2V0dGluZ3MuIFVsdGltYXRlbHksIEknbSB0cnlpbmcgdG8gcXVpY2tseSBhc2NlcnRhaW4gdGhlIG92ZXJhbGwgbmV0d29ya2luZyBkZXNpZ24gd2l0aGluIHRoaXMgc2VjdGlvbiBhbmQgd2hldGhlciBpdCBhbGlnbnMgd2l0aCBwZXJmb3JtYW5jZSBhbmQgcmVkdW5kYW5jeSByZXF1aXJlbWVudHMgZm9yIHRoZSBzeXN0ZW0uIEknbSBsb29raW5nIGZvciBhIGNsZWFyIGFuZCBjb25jaXNlIGRlY2xhcmF0aW9uIG9mIHRoZSBib25kaW5nIHNldHVwIGFuZCBob3cgaXQgd2lsbCBvcGVyYXRlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTkxLCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTY6MDc6NDAuMDU1MzkwMTc0WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjI2NDQ5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZz02PW1lbnVjb25maWcgTkVUREVWSUNFU1xcbmRyaXZlcnMvbmV0L0tjb25maWctNy1cXHRkZWZhdWx0IHkgaWYgVU1MXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo4OlxcdGRlcGVuZHMgb24gTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZy05LVxcdGJvb2wgXFxcIk5ldHdvcmsgZGV2aWNlIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTQxPWNvbmZpZyBCT05ESU5HXFxuZHJpdmVycy9uZXQvS2NvbmZpZy00Mi1cXHR0cmlzdGF0ZSBcXFwiQm9uZGluZyBkcml2ZXIgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjQzOlxcdGRlcGVuZHMgb24gSU5FVFxcbmRyaXZlcnMvbmV0L0tjb25maWc6NDQ6XFx0ZGVwZW5kcyBvbiBUTFMgfHwgVExTX0RFVklDRT1uXFxuZHJpdmVycy9uZXQvS2NvbmZpZy00NS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTc0PWNvbmZpZyBXSVJFR1VBUkRcXG5kcml2ZXJzL25ldC9LY29uZmlnLTc1LVxcdHRyaXN0YXRlIFxcXCJXaXJlR3VhcmQgc2VjdXJlIG5ldHdvcmsgdHVubmVsXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6NzY6XFx0ZGVwZW5kcyBvbiBORVQgXFx1MDAyNlxcdTAwMjYgSU5FVFxcbmRyaXZlcnMvbmV0L0tjb25maWctNzctXFx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTkyPWNvbmZpZyBXSVJFR1VBUkRfREVCVUdcXG5kcml2ZXJzL25ldC9LY29uZmlnLTkzLVxcdGJvb2wgXFxcIkRlYnVnZ2luZyBjaGVja3MgYW5kIHZlcmJvc2UgbWVzc2FnZXNcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo5NDpcXHRkZXBlbmRzIG9uIFdJUkVHVUFSRFxcbmRyaXZlcnMvbmV0L0tjb25maWctOTUtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0xMDM9Y29uZmlnIE9WUE5cXG5kcml2ZXJzL25ldC9LY29uZmlnLTEwNC1cXHR0cmlzdGF0ZSBcXFwiT3BlblZQTiBkYXRhIGNoYW5uZWwgb2ZmbG9hZFxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjEwNTpcXHRkZXBlbmRzIG9uIE5FVCBcXHUwMDI2XFx1MDAyNiBJTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0xMDYtXFx0c2VsZWN0IERTVF9DQUNIRVxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0xMzY9Y29uZmlnIE5FVF9GQ1xcbmRyaXZlcnMvbmV0L0tjb25maWctMTM3LVxcdGJvb2wgXFxcIkZpYnJlIENoYW5uZWwgZHJpdmVyIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzoxMzg6XFx0ZGVwZW5kcyBvbiBTQ1NJIFxcdTAwMjZcXHUwMDI2IFBDSVxcbmRyaXZlcnMvbmV0L0tjb25maWctMTM5LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9MTQ5PWNvbmZpZyBJRkJcXG5kcml2ZXJzL25ldC9LY29uZmlnLTE1MC1cXHR0cmlzdGF0ZSBcXFwiSW50ZXJtZWRpYXRlIEZ1bmN0aW9uYWwgQmxvY2sgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjE1MTpcXHRkZXBlbmRzIG9uIE5FVF9BQ1RfTUlSUkVEIHx8IE5GVF9GV0RfTkVUREVWXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0xNTItXFx0c2VsZWN0IE5FVF9SRURJUkVDVFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0xNzk9Y29uZmlnIE1BQ1ZUQVBcXG5kcml2ZXJzL25ldC9LY29uZmlnLTE4MC1cXHR0cmlzdGF0ZSBcXFwiTUFDLVZMQU4gYmFzZWQgdGFwIGRyaXZlclxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjE4MTpcXHRkZXBlbmRzIG9uIE1BQ1ZMQU5cXG5kcml2ZXJzL25ldC9LY29uZmlnOjE4MjpcXHRkZXBlbmRzIG9uIElORVRcXG5kcml2ZXJzL25ldC9LY29uZmlnLTE4My1cXHRzZWxlY3QgVEFQXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTE5Mz1jb25maWcgSVBWTEFOX0wzU1xcbmRyaXZlcnMvbmV0L0tjb25maWc6MTk0OlxcdGRlcGVuZHMgb24gTkVURklMVEVSXFxuZHJpdmVycy9uZXQvS2NvbmZpZzoxOTU6XFx0ZGVwZW5kcyBvbiBJUFZMQU5cXG5kcml2ZXJzL25ldC9LY29uZmlnLTE5Ni1cXHRkZWZfYm9vbCB5XFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTE5OT1jb25maWcgSVBWTEFOXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yMDAtXFx0dHJpc3RhdGUgXFxcIklQLVZMQU4gc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjIwMTpcXHRkZXBlbmRzIG9uIElORVRcXG5kcml2ZXJzL25ldC9LY29uZmlnLTIwMi1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTIxNj1jb25maWcgSVBWVEFQXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yMTctXFx0dHJpc3RhdGUgXFxcIklQLVZMQU4gYmFzZWQgdGFwIGRyaXZlclxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjIxODpcXHRkZXBlbmRzIG9uIElQVkxBTlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MjE5OlxcdGRlcGVuZHMgb24gSU5FVFxcbmRyaXZlcnMvbmV0L0tjb25maWctMjIwLVxcdHNlbGVjdCBUQVBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9MjMwPWNvbmZpZyBWWExBTlxcbmRyaXZlcnMvbmV0L0tjb25maWctMjMxLVxcdHRyaXN0YXRlIFxcXCJWaXJ0dWFsIGVYdGVuc2libGUgTG9jYWwgQXJlYSBOZXR3b3JrIChWWExBTilcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzoyMzI6XFx0ZGVwZW5kcyBvbiBJTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yMzMtXFx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTI0NT1jb25maWcgR0VORVZFXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yNDYtXFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgTmV0d29yayBWaXJ0dWFsaXphdGlvbiBFbmNhcHN1bGF0aW9uXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MjQ3OlxcdGRlcGVuZHMgb24gSU5FVFxcbmRyaXZlcnMvbmV0L0tjb25maWctMjQ4LVxcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0yNjA9Y29uZmlnIEJBUkVVRFBcXG5kcml2ZXJzL25ldC9LY29uZmlnLTI2MS1cXHR0cmlzdGF0ZSBcXFwiQmFyZSBVRFAgRW5jYXBzdWxhdGlvblxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjI2MjpcXHRkZXBlbmRzIG9uIElORVRcXG5kcml2ZXJzL25ldC9LY29uZmlnLTI2My1cXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9MjcyPWNvbmZpZyBHVFBcXG5kcml2ZXJzL25ldC9LY29uZmlnLTI3My1cXHR0cmlzdGF0ZSBcXFwiR1BSUyBUdW5uZWxpbmcgUHJvdG9jb2wgZGF0YXBhdGggKEdUUC1VKVxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjI3NDpcXHRkZXBlbmRzIG9uIElORVRcXG5kcml2ZXJzL25ldC9LY29uZmlnLTI3NS1cXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9Mjg5PWNvbmZpZyBQRkNQXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yOTAtXFx0dHJpc3RhdGUgXFxcIlBhY2tldCBGb3J3YXJkaW5nIENvbnRyb2wgUHJvdG9jb2wgKFBGQ1ApXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MjkxOlxcdGRlcGVuZHMgb24gSU5FVFxcbmRyaXZlcnMvbmV0L0tjb25maWctMjkyLVxcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0zMDI9Y29uZmlnIEFNVFxcbmRyaXZlcnMvbmV0L0tjb25maWctMzAzLVxcdHRyaXN0YXRlIFxcXCJBdXRvbWF0aWMgTXVsdGljYXN0IFR1bm5lbGluZyAoQU1UKVxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjMwNDpcXHRkZXBlbmRzIG9uIElORVQgXFx1MDAyNlxcdTAwMjYgSVBfTVVMVElDQVNUXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zMDUtXFx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTMyNz1jb25maWcgTkVUQ09OU09MRVxcbmRyaXZlcnMvbmV0L0tjb25maWctMzI4LVxcdHRyaXN0YXRlIFxcXCJOZXR3b3JrIGNvbnNvbGUgbG9nZ2luZyBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MzI5OlxcdGRlcGVuZHMgb24gUFJJTlRLXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zMzAtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0zMzQ9Y29uZmlnIE5FVENPTlNPTEVfRFlOQU1JQ1xcbmRyaXZlcnMvbmV0L0tjb25maWctMzM1LVxcdGJvb2wgXFxcIkR5bmFtaWMgcmVjb25maWd1cmF0aW9uIG9mIGxvZ2dpbmcgdGFyZ2V0c1xcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjMzNjpcXHRkZXBlbmRzIG9uIE5FVENPTlNPTEUgXFx1MDAyNlxcdTAwMjYgU1lTRlMgXFx1MDAyNlxcdTAwMjYgQ09ORklHRlNfRlMgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbmRyaXZlcnMvbmV0L0tjb25maWctMzM3LVxcdFxcdFxcdCEoTkVUQ09OU09MRT15IFxcdTAwMjZcXHUwMDI2IENPTkZJR0ZTX0ZTPW0pXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTM0NT1jb25maWcgTkVUQ09OU09MRV9FWFRFTkRFRF9MT0dcXG5kcml2ZXJzL25ldC9LY29uZmlnLTM0Ni1cXHRib29sIFxcXCJTZXQga2VybmVsIGV4dGVuZGVkIG1lc3NhZ2UgYnkgZGVmYXVsdFxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjM0NzpcXHRkZXBlbmRzIG9uIE5FVENPTlNPTEVcXG5kcml2ZXJzL25ldC9LY29uZmlnLTM0OC1cXHRkZWZhdWx0IG5cXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9MzU1PWNvbmZpZyBORVRDT05TT0xFX1BSRVBFTkRfUkVMRUFTRVxcbmRyaXZlcnMvbmV0L0tjb25maWctMzU2LVxcdGJvb2wgXFxcIlByZXBlbmQga2VybmVsIHJlbGVhc2UgdmVyc2lvbiBpbiB0aGUgbWVzc2FnZSBieSBkZWZhdWx0XFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MzU3OlxcdGRlcGVuZHMgb24gTkVUQ09OU09MRV9FWFRFTkRFRF9MT0dcXG5kcml2ZXJzL25ldC9LY29uZmlnLTM1OC1cXHRkZWZhdWx0IG5cXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9MzczPWNvbmZpZyBOVEJfTkVUREVWXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zNzQtXFx0dHJpc3RhdGUgXFxcIlZpcnR1YWwgRXRoZXJuZXQgb3ZlciBOVEIgVHJhbnNwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6Mzc1OlxcdGRlcGVuZHMgb24gTlRCX1RSQU5TUE9SVFxcbmRyaXZlcnMvbmV0L0tjb25maWctMzc2LVxcbmRyaXZlcnMvbmV0L0tjb25maWc9Mzc3PWNvbmZpZyBSSU9ORVRcXG5kcml2ZXJzL25ldC9LY29uZmlnLTM3OC1cXHR0cmlzdGF0ZSBcXFwiUmFwaWRJTyBFdGhlcm5ldCBvdmVyIG1lc3NhZ2luZyBkcml2ZXIgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjM3OTpcXHRkZXBlbmRzIG9uIFJBUElESU9cXG5kcml2ZXJzL25ldC9LY29uZmlnLTM4MC1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTM4MT1jb25maWcgUklPTkVUX1RYX1NJWkVcXG5kcml2ZXJzL25ldC9LY29uZmlnLTM4Mi1cXHRpbnQgXFxcIk51bWJlciBvZiBvdXRib3VuZCBxdWV1ZSBlbnRyaWVzXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MzgzOlxcdGRlcGVuZHMgb24gUklPTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zODQtXFx0ZGVmYXVsdCBcXFwiMTI4XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0zODY9Y29uZmlnIFJJT05FVF9SWF9TSVpFXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zODctXFx0aW50IFxcXCJOdW1iZXIgb2YgaW5ib3VuZCBxdWV1ZSBlbnRyaWVzXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6Mzg4OlxcdGRlcGVuZHMgb24gUklPTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zODktXFx0ZGVmYXVsdCBcXFwiMTI4XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0zOTE9Y29uZmlnIFRVTlxcbmRyaXZlcnMvbmV0L0tjb25maWctMzkyLVxcdHRyaXN0YXRlIFxcXCJVbml2ZXJzYWwgVFVOL1RBUCBkZXZpY2UgZHJpdmVyIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzozOTM6XFx0ZGVwZW5kcyBvbiBJTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zOTQtXFx0c2VsZWN0IENSQzMyXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTQ0Mz1jb25maWcgVklSVElPX05FVFxcbmRyaXZlcnMvbmV0L0tjb25maWctNDQ0LVxcdHRyaXN0YXRlIFxcXCJWaXJ0aW8gbmV0d29yayBkcml2ZXJcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo0NDU6XFx0ZGVwZW5kcyBvbiBWSVJUSU9cXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ0Ni1cXHRzZWxlY3QgTkVUX0ZBSUxPVkVSXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTQ2Mz1jb25maWcgTkVUS0lUXFxuZHJpdmVycy9uZXQvS2NvbmZpZy00NjQtXFx0Ym9vbCBcXFwiQlBGLXByb2dyYW1tYWJsZSBuZXR3b3JrIGRldmljZVxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjQ2NTpcXHRkZXBlbmRzIG9uIEJQRl9TWVNDQUxMXFxuZHJpdmVycy9uZXQvS2NvbmZpZy00NjYtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz00NzI9Y29uZmlnIE5FVF9WUkZcXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ3My1cXHR0cmlzdGF0ZSBcXFwiVmlydHVhbCBSb3V0aW5nIGFuZCBGb3J3YXJkaW5nIChMaXRlKVxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjQ3NDpcXHRkZXBlbmRzIG9uIElQX01VTFRJUExFX1RBQkxFU1xcbmRyaXZlcnMvbmV0L0tjb25maWc6NDc1OlxcdGRlcGVuZHMgb24gTkVUX0wzX01BU1RFUl9ERVZcXG5kcml2ZXJzL25ldC9LY29uZmlnOjQ3NjpcXHRkZXBlbmRzIG9uIElQVjZfTVVMVElQTEVfVEFCTEVTIHx8IElQVjY9blxcbmRyaXZlcnMvbmV0L0tjb25maWctNDc3LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NDgxPWNvbmZpZyBWU09DS01PTlxcbmRyaXZlcnMvbmV0L0tjb25maWctNDgyLVxcdHRyaXN0YXRlIFxcXCJWaXJ0dWFsIHZzb2NrIG1vbml0b3JpbmcgZGV2aWNlXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6NDgzOlxcdGRlcGVuZHMgb24gVkhPU1RfVlNPQ0tcXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ4NC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTQ4OT1jb25maWcgTUhJX05FVFxcbmRyaXZlcnMvbmV0L0tjb25maWctNDkwLVxcdHRyaXN0YXRlIFxcXCJNSEkgbmV0d29yayBkcml2ZXJcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo0OTE6XFx0ZGVwZW5kcyBvbiBNSElfQlVTXFxuZHJpdmVycy9uZXQvS2NvbmZpZy00OTItXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz01NDQ9Y29uZmlnIFhFTl9ORVRERVZfRlJPTlRFTkRcXG5kcml2ZXJzL25ldC9LY29uZmlnLTU0NS1cXHR0cmlzdGF0ZSBcXFwiWGVuIG5ldHdvcmsgZGV2aWNlIGZyb250ZW5kIGRyaXZlclxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjU0NjpcXHRkZXBlbmRzIG9uIFhFTlxcbmRyaXZlcnMvbmV0L0tjb25maWctNTQ3LVxcdHNlbGVjdCBYRU5fWEVOQlVTX0ZST05URU5EXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTU2Mj1jb25maWcgWEVOX05FVERFVl9CQUNLRU5EXFxuZHJpdmVycy9uZXQvS2NvbmZpZy01NjMtXFx0dHJpc3RhdGUgXFxcIlhlbiBiYWNrZW5kIG5ldHdvcmsgZGV2aWNlXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6NTY0OlxcdGRlcGVuZHMgb24gWEVOX0JBQ0tFTkRcXG5kcml2ZXJzL25ldC9LY29uZmlnLTU2NS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTU4ND1jb25maWcgVk1YTkVUM1xcbmRyaXZlcnMvbmV0L0tjb25maWctNTg1LVxcdHRyaXN0YXRlIFxcXCJWTXdhcmUgVk1YTkVUMyBldGhlcm5ldCBkcml2ZXJcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo1ODY6XFx0ZGVwZW5kcyBvbiBQQ0kgXFx1MDAyNlxcdTAwMjYgSU5FVFxcbmRyaXZlcnMvbmV0L0tjb25maWc6NTg3OlxcdGRlcGVuZHMgb24gUEFHRV9TSVpFX0xFU1NfVEhBTl82NEtCXFxuZHJpdmVycy9uZXQvS2NvbmZpZy01ODgtXFx0c2VsZWN0IFBBR0VfUE9PTFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz01OTQ9Y29uZmlnIEZVSklUU1VfRVNcXG5kcml2ZXJzL25ldC9LY29uZmlnLTU5NS1cXHR0cmlzdGF0ZSBcXFwiRlVKSVRTVSBFeHRlbmRlZCBTb2NrZXQgTmV0d29yayBEZXZpY2UgZHJpdmVyXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6NTk2OlxcdGRlcGVuZHMgb24gQUNQSVxcbmRyaXZlcnMvbmV0L0tjb25maWctNTk3LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NjA0PWNvbmZpZyBORVRERVZTSU1cXG5kcml2ZXJzL25ldC9LY29uZmlnLTYwNS1cXHR0cmlzdGF0ZSBcXFwiU2ltdWxhdGVkIG5ldHdvcmtpbmcgZGV2aWNlXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6NjA2OlxcdGRlcGVuZHMgb24gREVCVUdfRlNcXG5kcml2ZXJzL25ldC9LY29uZmlnOjYwNzpcXHRkZXBlbmRzIG9uIElORVRcXG5kcml2ZXJzL25ldC9LY29uZmlnOjYwODpcXHRkZXBlbmRzIG9uIFBTQU1QTEUgfHwgUFNBTVBMRT1uXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo2MDk6XFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19NT0NLIHx8IFBUUF8xNTg4X0NMT0NLX01PQ0s9blxcbmRyaXZlcnMvbmV0L0tjb25maWctNjEwLVxcdHNlbGVjdCBORVRfREVWTElOS1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNjowNzo0MC4xMDE2NTk0MTlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkyOTgwNTAwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeGFtaW5pbmcgTmV0d29yayBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhlc2UgbmV0d29yayBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEl0IGxvb2tzIGxpa2UgYEJPTkRJTkdgIGlzIGV4cGxpY2l0bHkgcmVsaWFudCBvbiBib3RoIGBJTkVUYCBhbmQgZWl0aGVyIGBUTFNgIG9yLCBjcnVjaWFsbHksIGBUTFNfREVWSUNFYCAqbm90KiBiZWluZyBkZWZpbmVkLiBUaGF0J3Mgc3RyYWlnaHRmb3J3YXJkIGVub3VnaC4gTm93LCBJJ20gbG9va2luZyBhdCBgTkVUX1RFQU1gLiBNeSBpbml0aWFsIGltcHJlc3Npb24gd2FzIHRoYXQgaXQgb25seSBuZWVkZWQgYE5FVGAsIGFuZCBub3RoaW5nIGVsc2UuIEkgbmVlZCB0byBtYWtlIGNlcnRhaW4gdGhvdWdoLCBzbyBJJ2xsIGRvdWJsZS1jaGVjayB0aGUgS2NvbmZpZyBmaWxlIGZvciBgTkVUX1RFQU1gLiBJIGtub3cgSeKAmXZlIHNlZW4gdGhhdCBkcml2ZXIgYmVmb3JlLiBBaCwgeWVzLCBpdCdzIGxvY2F0ZWQgaW4gYGRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZ2AuIExldCBtZSBnbyBiYWNrIHRoZXJlIGFuZCByZS1leGFtaW5lIHRoYXQgS2NvbmZpZyBmaWxlIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NDk0LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTY6MDc6NDQuMDMxNDY2OTc5WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Njg5MzYxNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC90ZWFtL0tjb25maWc9MTg9Y29uZmlnIE5FVF9URUFNX01PREVfQlJPQURDQVNUXFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTE5LVxcdHRyaXN0YXRlIFxcXCJCcm9hZGNhc3QgbW9kZSBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZzoyMDpcXHRkZXBlbmRzIG9uIE5FVF9URUFNXFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTIxLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZz0yOT1jb25maWcgTkVUX1RFQU1fTU9ERV9ST1VORFJPQklOXFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTMwLVxcdHRyaXN0YXRlIFxcXCJSb3VuZC1yb2JpbiBtb2RlIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnOjMxOlxcdGRlcGVuZHMgb24gTkVUX1RFQU1cXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctMzItXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnPTQxPWNvbmZpZyBORVRfVEVBTV9NT0RFX1JBTkRPTVxcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy00Mi1cXHR0cmlzdGF0ZSBcXFwiUmFuZG9tIG1vZGUgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWc6NDM6XFx0ZGVwZW5kcyBvbiBORVRfVEVBTVxcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy00NC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWc9NTM9Y29uZmlnIE5FVF9URUFNX01PREVfQUNUSVZFQkFDS1VQXFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTU0LVxcdHRyaXN0YXRlIFxcXCJBY3RpdmUtYmFja3VwIG1vZGUgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWc6NTU6XFx0ZGVwZW5kcyBvbiBORVRfVEVBTVxcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy01Ni1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWc9NjY9Y29uZmlnIE5FVF9URUFNX01PREVfTE9BREJBTEFOQ0VcXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctNjctXFx0dHJpc3RhdGUgXFxcIkxvYWQtYmFsYW5jZSBtb2RlIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnOjY4OlxcdGRlcGVuZHMgb24gTkVUX1RFQU1cXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctNjktXFx0aGVscFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNjowNzo0NC4wNzgzNjkyMTVaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE2NTQ3MTkzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGluIHRoZSBmaXJzdCBwZXJzb24sIGFzc3VtaW5nIHRoZSBjb250ZXh0IGlzIGtlcm5lbCBkZXZlbG9wbWVudCBhbmQgSSdtIGFuIGV4cGVydDpcblxuKipJbnZlc3RpZ2F0aW5nIGEgTmV0d29yayBEcml2ZXIncyBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBsZXQgbWUgc2VlLiBgTkVUX1RFQU1gLi4uIEhtbSwgaXQgc2VlbXMgbGlrZSB0aGVyZSBhcmUgbm8gZXhwbGljaXQgYGRlcGVuZHMgb25gIGNsYXVzZXMgbGlzdGVkIGZvciBgTkVUX1RFQU1gIGl0c2VsZiBpbiB0aGUgS2NvbmZpZyBmaWxlLiBUaGF0J3MgdW51c3VhbC4gSXQgbWFrZXMgbWUgd29uZGVyIHdoYXQgdGhlIGFjdGl2YXRpb24gY3JpdGVyaWEgYXJlIGZvciB0aGlzIHRoaW5nLiBBaGEhIFdhaXQgYSBzZWNvbmQuLi4gSSBiZXQgaXQncyBpbmNsdWRlZCBmcm9tIGBkcml2ZXJzL25ldC9LY29uZmlnYCwgaXNuJ3QgaXQ/IFRoYXQgd291bGQgZXhwbGFpbiB0aGUgbGFjayBvZiBkaXJlY3QgZGVwZW5kZW5jaWVzIGluIHRoaXMgc2VjdGlvbi4gSSBuZWVkIHRvIGdvIGxvb2sgdGhlcmUgYW5kIHNlZSB3aGF0IGNvbmRpdGlvbmFscyBhcmUgYXBwbGllZCBpbiB0aGF0IGZpbGUgdGhhdCBicmluZyBgTkVUX1RFQU1gIGludG8gdGhlIHBpY3R1cmUuIFRoYXQgd2lsbCBjbGFyaWZ5IGhvdyB0aGlzIGZlYXR1cmUgaXMgZW5hYmxlZCwgZXZlbiBpZiB0aGUgb3B0aW9uIGl0c2VsZiBkb2Vzbid0IGV4cGxpY2l0bHkgc3RhdGUgaXRzIHJlcXVpcmVtZW50cyBkaXJlY3RseSBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MTc4LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTY6MDc6NDcuMjQzODQ1MTM0WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzQxODI5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZ1xcXCJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnPTE0OT1jb25maWcgSUZCXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnLTE2Mi1cXG5kcml2ZXJzL25ldC9LY29uZmlnOjE2Mzpzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnLTE2NC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTY6MDc6NDcuMjkxMjcxMjI5WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2NzYwMTgxOTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgTmV0d29yayBUZWFtIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ3ZlIG5hdmlnYXRlZCB0byBgZHJpdmVycy9uZXQvS2NvbmZpZ2AsIGFuZCBhcyBleHBlY3RlZCwgYE5FVF9URUFNYCBzaXRzIGNvbWZvcnRhYmx5IHVuZGVyIGBtZW51Y29uZmlnIE5FVERFVklDRVNgLCB3aGljaCBpcyBpdHNlbGYgZGVwZW5kZW50IG9uIGBORVRgLiBHb29kLCB0aGF0IHZhbGlkYXRlcyB0aGUgaW5pdGlhbCBhc3N1bXB0aW9ucywgdGhlIGBORVRfVEVBTWAgZGVwZW5kZW5jeSBpcyBpbiBwbGFjZS5cblxuTm93LCB0aGUgY3J1Y2lhbCBuZXh0IHN0ZXAuIFdlIG5lZWQgdG8gZXhwbGljaXRseSBlbnN1cmUgdGhhdCBib3RoIGBCT05ESU5HYCBhbmQgYE5FVF9URUFNYCBhcmUgZW5hYmxlZCBpbiB0aGUgY29uZmlndXJhdGlvbi4gVGhhdCBmZWVscyBsaWtlIGEgcHJlcmVxdWlzaXRlIHRvIGFueSByZWFsIGZ1bmN0aW9uYWxpdHkuXG5cbkFuZCBsZXTigJlzIGxvb2sgYXQgdGhlIHRlYW0gbW9kZXM6IGBORVRfVEVBTV9NT0RFX1JPVU5EUk9CSU5gLCBgTkVUX1RFQU1fTU9ERV9BQ1RJVkVCQUNLVVBgLCBgTkVUX1RFQU1fTU9ERV9CUk9BRENBU1RgLCBgTkVUX1RFQU1fTU9ERV9SQU5ET01gLCBhbmQgYE5FVF9URUFNX01PREVfTE9BREJBTEFOQ0VgLiBJJ20gZ3Vlc3NpbmcgdGhlc2Ugd2lsbCBiZSBlc3NlbnRpYWwgZm9yIGFjdHVhbGx5ICp1c2luZyogdGhlIHRlYW1pbmcgZmVhdHVyZXMuIFNvLCB0aGV5IHdhcnJhbnQgY2xvc2VyIGluc3BlY3Rpb24uXG5cbldhaXQsIGhvbGQgb24gYSBzZWNvbmQuIGB0ZWFtX3BvcnRfYWRkYCwgd2hpY2ggaXMgZnVuZGFtZW50YWwgdG8gdGhlIHdob2xlIHRoaW5nLCBpcyBhY3R1YWxseSBpbXBsZW1lbnRlZCBpbiBgdGVhbV9jb3JlLmNgLiBBbmQgdGhhdCBjb2RlIGlzIGNvbXBpbGVkIG9ubHkgaWYgYE5FVF9URUFNYCBpcyBlbmFibGVkLiBUaGF04oCZcyBhIGtleSBwaWVjZSBvZiBpbmZvcm1hdGlvbi4gTGV0J3MgbWFrZSBjZXJ0YWluIHRoYXQncyB0aGUgb25seSBwcmUtcmVxdWlzaXRlLlxuXG5SaWdodCwgdGltZSB0byBjaGVjayBgZHJpdmVycy9uZXQvdGVhbS9NYWtlZmlsZWAgdG8gY29uZmlybSB0aGUgcmVsYXRpb25zaGlwLiBMZXQncyBzZWUgaG93IHRoZSBvYmplY3RzIGdldCBidWlsdC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTUwOCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNjowNzo1MS45NjcyOTI0NzdaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MDE3OTY1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRlYW1fY29yZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC90ZWFtL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3RlYW0vTWFrZWZpbGUtNS1cXG5kcml2ZXJzL25ldC90ZWFtL01ha2VmaWxlOjY6dGVhbS15Oj0gdGVhbV9jb3JlLm8gdGVhbV9ubC5vXFxuZHJpdmVycy9uZXQvdGVhbS9NYWtlZmlsZS03LW9iai0kKENPTkZJR19ORVRfVEVBTSkgKz0gdGVhbS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE2OjA3OjUyLjAxNDMxOTY5MloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTE3NTgzMTEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3MsIGdpdmVuIG15IGV4cGVydGlzZTpcblxuKipNeSBEZWR1Y3RpdmUgUmVhc29uaW5nIG9uIEtlcm5lbCBNb2R1bGUgRGVwZW5kZW5jaWVzKipcblxuQWxyaWdodCwgbGV0J3Mgc2VlLiBUaGlua2luZyBhYm91dCB0aGlzIGtlcm5lbCBtb2R1bGUgc2l0dWF0aW9uLi4uIGB0ZWFtX2NvcmUub2AgaXMgZGVmaW5pdGVseSBwdWxsZWQgaW4gYXMgcGFydCBvZiB0aGUgYnJvYWRlciBgdGVhbS5vYCBidWlsZCBwcm9jZXNzLCBhbmQgdGhhdCBlbnRpcmUgYHRlYW0ub2AgdGhpbmcgaXMgc3BlY2lmaWNhbGx5IGdvdmVybmVkIGJ5IGBDT05GSUdfTkVUX1RFQU1gLiBTbywgdGhhdCBtZWFucyBzZXR0aW5nIGBORVRfVEVBTWAgaXMgc3VmZmljaWVudCB0byBlbnN1cmUgYWxsIHRoZSBuZWNlc3NhcnkgcGllY2VzIG9mIHRoZSB0ZWFtIGZ1bmN0aW9uYWxpdHkgYXJlIGluY2x1ZGVkLiBJIGRvbid0IG5lZWQgdG8gc3BlY2lmeSBhbnl0aGluZyBtb3JlIGdyYW51bGFyIHRoYW4gdGhhdCBmb3IgdGhlIFwidGVhbVwiIGZ1bmN0aW9uYWxpdHkgdG8gYmUgcHJlc2VudC4gVGhhdCdzIGdvb2QsIGtlZXBzIHRoaW5ncyBjb25jaXNlLlxuXG5BbmQgbm93LCBmb3IgYm9uZGluZywgSSdtIHByZXR0eSBjZXJ0YWluIGBib25kX21haW4uY2AgaXMgdGhlIHByaW1hcnkgbW9kdWxlIGZvciBib25kaW5nIGxvZ2ljLCBhbmQgdGhhdCdzIHRpZWQgdG8gYENPTkZJR19CT05ESU5HYC4gU28sIGlmIEkgd2FudCBib25kaW5nLCBJIG5lZWQgdG8gbWFrZSBzdXJlIGBDT05GSUdfQk9ORElOR2AgaXMgZW5hYmxlZC4gU2ltcGxlIGVub3VnaC4gVGhpcyBsaW5lcyB1cCB3aXRoIGhvdyBJJ3ZlIHNlZW4gdGhlc2UgbW9kdWxlcyBidWlsdCBpbiB0aGUgcGFzdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAwODEsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNjowNzo1NS41MzE5MDU0ODVaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MDUwMzE2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJvbmRfbWFpblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ib25kaW5nL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2JvbmRpbmcvTWFrZWZpbGU9Nj1vYmotJChDT05GSUdfQk9ORElORykgKz0gYm9uZGluZy5vXFxuZHJpdmVycy9uZXQvYm9uZGluZy9NYWtlZmlsZS03LVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvTWFrZWZpbGU6ODpib25kaW5nLW9ianMgOj0gYm9uZF9tYWluLm8gYm9uZF8zYWQubyBib25kX2FsYi5vIGJvbmRfc3lzZnMubyBib25kX3N5c2ZzX3NsYXZlLm8gYm9uZF9kZWJ1Z2ZzLm8gYm9uZF9uZXRsaW5rLm8gYm9uZF9vcHRpb25zLm9cXG5kcml2ZXJzL25ldC9ib25kaW5nL01ha2VmaWxlLTktXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE2OjA3OjU1LjU3Nzk2MjI4WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY0MDg5MjU1NDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gncyBWdWxuZXJhYmlsaXR5IFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIEkndmUgbG9va2VkIGF0IHRoaXMgcGF0Y2ggYW5kLCB5ZXMsIHRoaXMgZGVmaW5pdGVseSB3YXJyYW50cyBhIGNsb3NlciBsb29rIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLiBUaGUga2V5IGhlcmUgaXMgdGhhdCB0aGUgcGF0Y2ggbW9kaWZpZXMgYGJvbmRfZW5zbGF2ZWAgYW5kIGB0ZWFtX3BvcnRfYWRkYC4gVGhlc2UgYXJlIGNyaXRpY2FsIGZ1bmN0aW9ucywgYW5kIHRoZSBmYWN0IHRoYXQgdGhleSdyZSBhY2Nlc3NpYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rIOKAkyBzcGVjaWZpY2FsbHkgdGhpbmdzIGxpa2UgYFJUTV9ORVdMSU5LYCB3aXRoIGBJRkxBX01BU1RFUmAgb3IgYElGTEFfTElOS0lORk9gIOKAkyBtYWtlcyB0aGVtIHByaW1lIHRhcmdldHMuIFRoYXQncyB3aGVyZSBhdHRhY2tlcnMgd291bGQgaW50ZXJhY3Qgd2l0aCB0aGVtLiBTbywgdGhlIGF0dGFjayBzdXJmYWNlIGlzIGV4cG9zZWQuIFRoaXMgd2lsbCBuZWVkIG1vcmUgYW5hbHlzaXMuXG5cbk15IGZvY3VzIHNob3VsZCBiZSBvbiBgYm9uZF9lbnNsYXZlYCBhbmQgYHRlYW1fcG9ydF9hZGRgIHRoZW1zZWx2ZXM7IHRob3NlIGFyZSB0aGUga2V5IGZ1bmN0aW9ucy4gSSdsbCBuZWVkIHRvIHJlbWVtYmVyIHRoYXQgdGhlIGFmZmVjdGVkIGNvbmZpZ3VyYXRpb25zIGFyZSBgQk9ORElOR2AgYW5kIGBORVRfVEVBTWAuXG5cbk15IHJlYXNvbmluZyBpcyBzdHJhaWdodGZvcndhcmQ6IHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBjaGVjaywgYG5ldGRldl9oYXNfbWxfcHJpdigpYCwgaW4gdGhvc2UgY29yZSBmdW5jdGlvbnMuIEl0J3MgZGVzaWduZWQgdG8gcHJldmVudCBkZXZpY2VzIHVzaW5nIGBtbF9wcml2YCBmcm9tIGJlaW5nIGFkZGVkIHRvIGJvbmRpbmcgb3IgdGVhbSBkZXZpY2VzLiBUaGlzIGlzIGEgKmZ1bmN0aW9uYWwgY2hhbmdlKiB3aXRoaW4gdGhlIGNvcmUgbG9naWMgb2YgdGhlc2UgZHJpdmVycywgYW5kIHRob3NlIGRyaXZlcnMgYXJlIGFjY2Vzc2libGUgZnJvbSB1c2Vyc3BhY2UuIEVzc2VudGlhbGx5LCB3ZSBhcmUgY2hhbmdpbmcgaG93IHRoZXkgaW50ZXJmYWNlLiBXZSBuZWVkIHRvIGZ1enogdGhlc2UgZnVuY3Rpb25zICpleHRlbnNpdmVseSogdG8gZW5zdXJlIHRoYXQgdGhlIG5ldyBjaGVjayB3b3JrcyBjb3JyZWN0bHkgYWNyb3NzIGFsbCB0aGUgZGlmZmVyZW50IGRldmljZSB0eXBlcyB3ZSBtaWdodCBlbmNvdW50ZXIuIEkgbmVlZCB0byBtYWtlIHN1cmUgd2UncmUgbm90IGludHJvZHVjaW5nIGFueSByZWdyZXNzaW9ucy5cblxuV2FpdC4uLiBsZXQgbWUganVzdCBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0IGBuZXRkZXZfaGFzX21sX3ByaXZgIGlzIGFjdHVhbGx5IGRlZmluZWQgaW4gYGluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmhgLiBBbmQgeWVzLCBnb29kLCBpdCBpcy4gVGhlIHBhdGNoIGFkZGVkIGl0LiBFeGNlbGxlbnQuXG5cbk5vdywgbGV0J3MgY2FsbCBgc2V0LXJlc3VsdHNgLiBJIGhhdmUgYSBnb29kIGhhbmRsZSBvbiB3aGF0IEkgbmVlZCB0byBkbyBuZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDUyMCwiT3V0cHV0VG9rZW5zIjoxNTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTY6MDg6MDEuOTg2ODkxODIyWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODcyOTU0MjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJPTkRJTkdcIixcbiAgICBcIk5FVF9URUFNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYm9uZF9lbnNsYXZlXCIsXG4gICAgXCJ0ZWFtX3BvcnRfYWRkXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBjaGVjayBgbmV0ZGV2X2hhc19tbF9wcml2KClgIGluIGBib25kX2Vuc2xhdmVgIGFuZCBgdGVhbV9wb3J0X2FkZGAgdG8gcHJldmVudCBlbnNsYXZpbmcgb3IgYWRkaW5nIGRldmljZXMgdGhhdCB1c2UgYG1sX3ByaXZgIHRvIGJvbmRpbmcgb3IgdGVhbSBkZXZpY2VzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbG9naWMgb2YgYm9uZGluZyBhbmQgdGVhbSBkcml2ZXJzLCB3aGljaCBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGVzZSBmdW5jdGlvbnMgdG8gZW5zdXJlIHRoZSBuZXcgY2hlY2sgY29ycmVjdGx5IGhhbmRsZXMgdmFyaW91cyBkZXZpY2UgdHlwZXMgYW5kIGRvZXNuJ3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJPTkRJTkdcIixcbiAgICBcIk5FVF9URUFNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYm9uZF9lbnNsYXZlXCIsXG4gICAgXCJ0ZWFtX3BvcnRfYWRkXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBjaGVjayBgbmV0ZGV2X2hhc19tbF9wcml2KClgIGluIGBib25kX2Vuc2xhdmVgIGFuZCBgdGVhbV9wb3J0X2FkZGAgdG8gcHJldmVudCBlbnNsYXZpbmcgb3IgYWRkaW5nIGRldmljZXMgdGhhdCB1c2UgYG1sX3ByaXZgIHRvIGJvbmRpbmcgb3IgdGVhbSBkZXZpY2VzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbG9naWMgb2YgYm9uZGluZyBhbmQgdGVhbSBkcml2ZXJzLCB3aGljaCBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGVzZSBmdW5jdGlvbnMgdG8gZW5zdXJlIHRoZSBuZXcgY2hlY2sgY29ycmVjdGx5IGhhbmRsZXMgdmFyaW91cyBkZXZpY2UgdHlwZXMgYW5kIGRvZXNuJ3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNjowODowMi4wNzQxOTUyMjNaIiwiU2VxIjoyNSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNzMyNTE2OTI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTY6MDg6MDIuMDc0NzY4NzIzWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjExNzMxOTM4MTY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgY2hlY2sgYG5ldGRldl9oYXNfbWxfcHJpdigpYCB0byBwcmV2ZW50IG5ldHdvcmsgZGV2aWNlcyB0aGF0IHV0aWxpemUgdGhlIGBtbF9wcml2YCBmaWVsZCBmcm9tIGJlaW5nIGVuc2xhdmVkIGJ5IGJvbmRpbmcgb3IgdGVhbWluZyBkcml2ZXJzLiBUaGlzIGlzIGEgY29udHJvbC1mbG93IHJlc3RyaWN0aW9uIHRvIGF2b2lkIGNvbmZsaWN0cyBvciBpbnZhbGlkIGNvbmZpZ3VyYXRpb25zLiBUaGUgYHN0cnVjdCBuZXRfZGV2aWNlYCBpcyB6ZXJvLWFsbG9jYXRlZCwgbWVhbmluZyBgbWxfcHJpdmAgaXMgcHJvcGVybHkgaW5pdGlhbGl6ZWQgdG8gYE5VTExgIHVwb24gYWxsb2NhdGlvbi4gVGhlIGNoYW5nZXMgZG8gbm90IGludm9sdmUgYW55IG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzLCBvciBkYXRhIGJlaW5nIGNvcGllZCB0byB1c2VyIHNwYWNlLiBBbnkgcG90ZW50aWFsIGJ1Z3MgcmVsYXRlZCB0byB0aGlzIGNoYW5nZSB3b3VsZCBsaWtlbHkgYmUgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIG9yIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMsIHdoaWNoIGFyZSBmdWxseSBjb3ZlcmVkIGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm8tbGVha3MsIHNvIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZWQ2YTRhOTRhMDNhMmM1ZGM0MmUyMjZiODUyOWFlZGU1OGNmZWY5NlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDE1IDE2OjA3OjE0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmNcbmluZGV4IDUyMmVhYjA2MGY5ZWQuLmJiYjM0NGI2NzQ1OGQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jXG5AQCAtMTg5NCw5ICsxODk0LDkgQEAgaW50IGJvbmRfZW5zbGF2ZShzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYsIHN0cnVjdCBuZXRfZGV2aWNlICpzbGF2ZV9kZXYsXG4gXHRzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSBzcztcbiBcdGludCByZXMgPSAwLCBpO1xuIFxuLVx0aWYgKHNsYXZlX2Rldi1cdTAwM2V0eXBlID09IEFSUEhSRF9DQU4pIHtcbitcdGlmIChuZXRkZXZfaGFzX21sX3ByaXYoc2xhdmVfZGV2KSkge1xuIFx0XHRCT05EX05MX0VSUihib25kX2RldiwgZXh0YWNrLFxuLVx0XHRcdCAgICBcIkNBTiBkZXZpY2VzIGNhbm5vdCBiZSBlbnNsYXZlZFwiKTtcbitcdFx0XHQgICAgXCJkZXZpY2VzIHVzaW5nIG1sX3ByaXYgY2Fubm90IGJlIGVuc2xhdmVkXCIpO1xuIFx0XHRyZXR1cm4gLUVQRVJNO1xuIFx0fVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3RlYW0vdGVhbV9jb3JlLmMgYi9kcml2ZXJzL25ldC90ZWFtL3RlYW1fY29yZS5jXG5pbmRleCBmZWFhNzVmYmY4ZmMyLi44YmY0YzFjNWQ2NTczIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvdGVhbS90ZWFtX2NvcmUuY1xuKysrIGIvZHJpdmVycy9uZXQvdGVhbS90ZWFtX2NvcmUuY1xuQEAgLTEyMTcsNiArMTIxNywxMyBAQCBzdGF0aWMgaW50IHRlYW1fcG9ydF9hZGQoc3RydWN0IHRlYW0gKnRlYW0sIHN0cnVjdCBuZXRfZGV2aWNlICpwb3J0X2RldixcbiBcdGNoYXIgKnBvcnRuYW1lID0gcG9ydF9kZXYtXHUwMDNlbmFtZTtcbiBcdGludCBlcnI7XG4gXG4rXHRpZiAobmV0ZGV2X2hhc19tbF9wcml2KHBvcnRfZGV2KSkge1xuK1x0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFwiZGV2aWNlcyB1c2luZyBtbF9wcml2IGNhbid0IGJlIGFkZGVkIGFzIGEgdGVhbSBwb3J0XCIpO1xuK1x0XHRuZXRkZXZfZXJyKGRldiwgXCJEZXZpY2UgJXMgdXNpbmcgbWxfcHJpdiBjYW4ndCBiZSBhZGRlZCBhcyBhIHRlYW0gcG9ydFxcblwiLFxuK1x0XHRcdCAgIHBvcnRuYW1lKTtcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHR9XG4rXG4gXHRpZiAocG9ydF9kZXYtXHUwMDNlZmxhZ3MgXHUwMDI2IElGRl9MT09QQkFDSykge1xuIFx0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFwiTG9vcGJhY2sgZGV2aWNlIGNhbid0IGJlIGFkZGVkIGFzIGEgdGVhbSBwb3J0XCIpO1xuIFx0XHRuZXRkZXZfZXJyKGRldiwgXCJEZXZpY2UgJXMgaXMgbG9vcGJhY2sgZGV2aWNlLiBMb29wYmFjayBkZXZpY2VzIGNhbid0IGJlIGFkZGVkIGFzIGEgdGVhbSBwb3J0XFxuXCIsXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaCBiL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmhcbmluZGV4IDg4NDBiMTI2OTc5ZmYuLjc0NTM2ZjY0MmI0MTQgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oXG5AQCAtMjc4Niw2ICsyNzg2LDExIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBuZXRkZXZfc2V0X21sX3ByaXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdGRldi1cdTAwM2VtbF9wcml2X3R5cGUgPSB0eXBlO1xuIH1cbiBcbitzdGF0aWMgaW5saW5lIGJvb2wgbmV0ZGV2X2hhc19tbF9wcml2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4re1xuK1x0cmV0dXJuIChkZXYtXHUwMDNlbWxfcHJpdiAhPSBOVUxMKTtcbit9XG4rXG4gLypcbiAgKiBOZXQgbmFtZXNwYWNlIGlubGluZXNcbiAgKi9cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE2OjA4OjAyLjA3NDc2OTkyM1oiLCJTZXEiOjI3LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTczMTkwNTIwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipLTVNBTiBBc3Nlc3NtZW50OiBUaGlzIFBhdGNoIGlzIFNhZmUqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoLiBJdCBzZWVtcyBzdHJhaWdodGZvcndhcmQ6IGl0IGFkZHMgYSBjaGVjaywgYG5ldGRldl9oYXNfbWxfcHJpdihzbGF2ZV9kZXYpYCwgaW4gYGJvbmRfZW5zbGF2ZWAgYW5kIGB0ZWFtX3BvcnRfYWRkYC4gQmFzaWNhbGx5LCBpZiBhIGRldmljZSBoYXMgaXRzIGBtbF9wcml2YCBmaWVsZCBzZXQsIGl0IGNhbid0IGJlIGVuc2xhdmVkIGluIGVpdGhlciBhIGJvbmRpbmcgb3IgdGVhbWluZyBjb25maWd1cmF0aW9uLiBUaGUgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBwcmV2ZW50cyBzb21lIGtpbmQgb2YgY29uZmxpY3QsIGVzcGVjaWFsbHkgd2l0aCBkcml2ZXJzIGxpa2UgQ0FOIHRoYXQgdXRpbGl6ZSBgbWxfcHJpdmAuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgXCJEb2VzIGJvbmRpbmcvdGVhbWluZyBldmVuICp1c2UqIGBtbF9wcml2YD9cIiBJIHRob3VnaHQgdGhleSB1c2VkIG90aGVyIG1lY2hhbmlzbXMsIGJ1dCB0aGUgcGF0Y2ggY2xlYXJseSBzdGF0ZXMgXCJkZXZpY2VzICp1c2luZyogYG1sX3ByaXZgIGNhbm5vdCBiZSBlbnNsYXZlZFwiLlxuXG5Tbywgbm8sIHRoZXkgZG9uJ3QsIG9yIG1heWJlIHRoZXkgKmRvbid0KiAodGhhdCdzIHRoZSBwb2ludCBvZiB0aGUgcGF0Y2gpLiBMZXQgbWUgcmVwaHJhc2U6IHRoZSBwYXRjaCBpcyBwcm90ZWN0aW5nICpvdGhlciogc3Vic3lzdGVtcyB0aGF0IHJlbHkgb24gYG1sX3ByaXZgIGZyb20gYmVpbmcgc3RvbXBlZCBvbiBieSBib25kaW5nIG9yIHRlYW1pbmcuIE1ha2VzIHNlbnNlLlxuXG5BbHJpZ2h0LCBiYWNrIHRvIHRoZSBkZXRhaWxzLiBUaGUgcmVhbCBjb25jZXJuLCBhcyBhbHdheXMsIGlzIG1lbW9yeSBzYWZldHkuIERvZXMgdGhpcyBwYXRjaCBpbnRyb2R1Y2UgYW55IHJpc2tzIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIHdyaXRlcz8gIExldCdzIGxvb2sgYXQgdGhlIGNvZGUuICBUaGUgZnVuY3Rpb24gYG5ldGRldl9oYXNfbWxfcHJpdmAgaXMganVzdCBhIHNpbXBsZSBOVUxMIGNoZWNrOiBgZGV2LVx1MDAzZW1sX3ByaXYgIT0gTlVMTGAuIEl0IGRvZXNuJ3QgcmVhZCBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkuIEl0IGFsc28gZG9lc24ndCBjYXVzZSBhbnkgbmV3IGFsbG9jYXRpb25zIG9yIGNvcHkgYW55dGhpbmcgdG8gdXNlciBzcGFjZS4gSXQganVzdCByZWplY3RzIHRoZSBjb25maWd1cmF0aW9uIGlmIGBtbF9wcml2YCBpcyBzZXQuICBJZiBzb21ldGhpbmcgZ29lcyB3cm9uZywgaXQncyBnb2luZyB0byBiZSBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSwgd2hpY2ggS0FTQU4gd291bGQgaW1tZWRpYXRlbHkgY2F0Y2guXG5cbldhaXQsIGlzIGBkZXYtXHUwMDNlbWxfcHJpdmAgKmd1YXJhbnRlZWQqIHRvIGJlIGluaXRpYWxpemVkPyBJIGNoZWNrIHRoZSBgbmV0X2RldmljZWAgYWxsb2NhdGlvbiBwcm9jZXNzLiAgQWgsIGBhbGxvY19uZXRkZXZfbXFzYCBhbmQgc2ltaWxhciBmdW5jdGlvbnMgdXNlIGBrdnphbGxvY2Agb3IgYSBzaW1pbGFyIHplcm8taW5pdGlhbGl6aW5nIGZ1bmN0aW9uISAgU28sIGBkZXYtXHUwMDNlbWxfcHJpdmAgd2lsbCAqYWx3YXlzKiBiZSBpbml0aWFsaXplZCB0byBOVUxMIHdoZW4gdGhlIGRldmljZSBpcyBhbGxvY2F0ZWQuIFNvLCAqdGhhdCogd29ycnkgaXMgYWRkcmVzc2VkLlxuXG5MZXQgbWUganVzdCBkb3VibGUtY2hlY2sgZm9yIGFueSBLTVNBTiByZWxldmFuY2UuIFRoZSBuZXcgY29kZSBpcyByZWFsbHkganVzdDpcblxuYGBgY1xuc3RhdGljIGlubGluZSBib29sIG5ldGRldl9oYXNfbWxfcHJpdihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxue1xuICAgIHJldHVybiAoZGV2LVx1MDAzZW1sX3ByaXYgIT0gTlVMTCk7XG59XG5gYGBcblxuVGhpcyBpcyAqcHVyZWx5KiBhIGNvbnRyb2wgZmxvdyBjaGFuZ2UgYmFzZWQgb24gYSBzaW1wbGUgTlVMTCBjaGVjay4gIE5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3Vlcy4gIE5vIG5lZWQgZm9yIEtNU0FOLiBUaGUgcG90ZW50aWFsIGJ1Z3MgYXJlIGNvdmVyZWQgYnkgS0FTQU4uXG5cblNvLCB0aGUgcmVhc29uaW5nIGlzIHByZXR0eSBjbGVhcjogVGhpcyBwYXRjaCBlbmZvcmNlcyBhIGNvbmZpZ3VyYXRpb24gcmVzdHJpY3Rpb24uIEl0IGF2b2lkcyBjb25mbGljdHMgYnkgcHJldmVudGluZyBjZXJ0YWluIGRldmljZXMgZnJvbSBiZWluZyBlbnNsYXZlZC4gIFRoZSBgc3RydWN0IG5ldF9kZXZpY2VgIGlzIGluaXRpYWxpemVkLCBtYWtpbmcgdGhlIE5VTEwgY2hlY2sgc2FmZS4gSXQgaGFzIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBhbGxvY2F0aW9ucywgb3IgdXNlci1zcGFjZSBjb3BpZXMuIEFueSBidWdzIHdvdWxkIGJlIGNhdWdodCBieSBzdGFuZGFyZCBkZXRlY3RvcnMgYW5kIEtBU0FOLiAqKk5lZWRzS01TQU4gaXMgY2xlYXJseSBGYWxzZS4qKlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTQ4LCJPdXRwdXRUb2tlbnMiOjE5NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc4MiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE2OjA4OjEzLjgwNjY4MDYwMVoiLCJTZXEiOjI4LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGNoZWNrIGBuZXRkZXZfaGFzX21sX3ByaXYoKWAgdG8gcHJldmVudCBuZXR3b3JrIGRldmljZXMgdGhhdCB1dGlsaXplIHRoZSBgbWxfcHJpdmAgZmllbGQgZnJvbSBiZWluZyBlbnNsYXZlZCBieSBib25kaW5nIG9yIHRlYW1pbmcgZHJpdmVycy4gVGhpcyBpcyBhIGNvbnRyb2wtZmxvdyByZXN0cmljdGlvbiB0byBhdm9pZCBjb25mbGljdHMgb3IgaW52YWxpZCBjb25maWd1cmF0aW9ucy4gVGhlIGBzdHJ1Y3QgbmV0X2RldmljZWAgaXMgemVyby1hbGxvY2F0ZWQsIG1lYW5pbmcgYG1sX3ByaXZgIGlzIHByb3Blcmx5IGluaXRpYWxpemVkIHRvIGBOVUxMYCB1cG9uIGFsbG9jYXRpb24uIFRoZSBjaGFuZ2VzIGRvIG5vdCBpbnZvbHZlIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBjb21wbGV4IGRhdGEgc3RydWN0dXJlcywgb3IgZGF0YSBiZWluZyBjb3BpZWQgdG8gdXNlciBzcGFjZS4gQW55IHBvdGVudGlhbCBidWdzIHJlbGF0ZWQgdG8gdGhpcyBjaGFuZ2Ugd291bGQgbGlrZWx5IGJlIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBvciBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzLCB3aGljaCBhcmUgZnVsbHkgY292ZXJlZCBieSBLQVNBTiBhbmQgc3RhbmRhcmQgYnVnIGRldGVjdG9ycy4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBpbmZvLWxlYWtzLCBzbyBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBjaGVjayBgbmV0ZGV2X2hhc19tbF9wcml2KClgIHRvIHByZXZlbnQgbmV0d29yayBkZXZpY2VzIHRoYXQgdXRpbGl6ZSB0aGUgYG1sX3ByaXZgIGZpZWxkIGZyb20gYmVpbmcgZW5zbGF2ZWQgYnkgYm9uZGluZyBvciB0ZWFtaW5nIGRyaXZlcnMuIFRoaXMgaXMgYSBjb250cm9sLWZsb3cgcmVzdHJpY3Rpb24gdG8gYXZvaWQgY29uZmxpY3RzIG9yIGludmFsaWQgY29uZmlndXJhdGlvbnMuIFRoZSBgc3RydWN0IG5ldF9kZXZpY2VgIGlzIHplcm8tYWxsb2NhdGVkLCBtZWFuaW5nIGBtbF9wcml2YCBpcyBwcm9wZXJseSBpbml0aWFsaXplZCB0byBgTlVMTGAgdXBvbiBhbGxvY2F0aW9uLiBUaGUgY2hhbmdlcyBkbyBub3QgaW52b2x2ZSBhbnkgbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMsIG9yIGRhdGEgYmVpbmcgY29waWVkIHRvIHVzZXIgc3BhY2UuIEFueSBwb3RlbnRpYWwgYnVncyByZWxhdGVkIHRvIHRoaXMgY2hhbmdlIHdvdWxkIGxpa2VseSBiZSBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgb3IgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcywgd2hpY2ggYXJlIGZ1bGx5IGNvdmVyZWQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mby1sZWFrcywgc28gYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowj8d2d[1] Phase: Succeeded StartedAt: 2026-08-15 16:08:25 +0000 UTC FinishedAt: 2026-08-15 16:08:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowj8d2d[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-15 16:08:25 +0000 UTC FinishedAt: 2026-08-15 16:08:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowj8d2d[2] Phase: Succeeded StartedAt: 2026-08-15 16:08:25 +0000 UTC FinishedAt: 2026-08-15 19:52:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowj8d2d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_enslave","team_port_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"b5b5a9c9-0e42-4c76-a144-e6eea40666d8","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-15 16:08:25 +0000 UTC FinishedAt: 2026-08-15 19:52:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_enslave","team_port_add"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"b5b5a9c9-0e42-4c76-a144-e6eea40666d8","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowj8d2d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_enslave","team_port_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"b5b5a9c9-0e42-4c76-a144-e6eea40666d8","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-15 16:08:25 +0000 UTC FinishedAt: 2026-08-15 16:08:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowj8d2d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_enslave","team_port_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"b5b5a9c9-0e42-4c76-a144-e6eea40666d8","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-15 16:08:25 +0000 UTC FinishedAt: 2026-08-15 16:08:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowj8d2d/series-workflowj8d2d-convert-artifact-1489497543/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowj8d2d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_enslave","team_port_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"b5b5a9c9-0e42-4c76-a144-e6eea40666d8","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-15 16:08:35 +0000 UTC FinishedAt: 2026-08-15 16:24:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowj8d2d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_enslave","team_port_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"b5b5a9c9-0e42-4c76-a144-e6eea40666d8","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-15 16:08:35 +0000 UTC FinishedAt: 2026-08-15 16:24:39 +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:*8b5a95db-8562-4d2d-b5c6-d0def930584d,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-workflowj8d2d/series-workflowj8d2d-convert-artifact-1489497543/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": "03a00ccf-ae7e-4018-b224-81fc084fd441", "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-workflowj8d2d/series-workflowj8d2d-build-action-678622813/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowj8d2d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_enslave","team_port_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"b5b5a9c9-0e42-4c76-a144-e6eea40666d8","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-15 16:08:35 +0000 UTC FinishedAt: 2026-08-15 16:24:29 +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:*8b5a95db-8562-4d2d-b5c6-d0def930584d,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-workflowj8d2d/series-workflowj8d2d-convert-artifact-1489497543/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": "03a00ccf-ae7e-4018-b224-81fc084fd441", "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-workflowj8d2d/series-workflowj8d2d-build-action-678622813/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowj8d2d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_enslave","team_port_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"b5b5a9c9-0e42-4c76-a144-e6eea40666d8","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-15 16:24:39 +0000 UTC FinishedAt: 2026-08-15 16:24:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowj8d2d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_enslave","team_port_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"b5b5a9c9-0e42-4c76-a144-e6eea40666d8","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-15 16:24:39 +0000 UTC FinishedAt: 2026-08-15 16:24:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowj8d2d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_enslave","team_port_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"b5b5a9c9-0e42-4c76-a144-e6eea40666d8","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-15 16:24:39 +0000 UTC FinishedAt: 2026-08-15 16:24:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowj8d2d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_enslave","team_port_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"b5b5a9c9-0e42-4c76-a144-e6eea40666d8","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-15 16:24:39 +0000 UTC FinishedAt: 2026-08-15 16:24:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"b5b5a9c9-0e42-4c76-a144-e6eea40666d8","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowj8d2d/series-workflowj8d2d-convert-artifact-3684574966/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowj8d2d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_enslave","team_port_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"b5b5a9c9-0e42-4c76-a144-e6eea40666d8","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-15 16:24:49 +0000 UTC FinishedAt: 2026-08-15 16:27:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowj8d2d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_enslave","team_port_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"b5b5a9c9-0e42-4c76-a144-e6eea40666d8","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-15 16:24:49 +0000 UTC FinishedAt: 2026-08-15 16:26:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*03a00ccf-ae7e-4018-b224-81fc084fd441,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-workflowj8d2d/series-workflowj8d2d-build-action-678622813/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-workflowj8d2d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_enslave","team_port_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"b5b5a9c9-0e42-4c76-a144-e6eea40666d8","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-15 16:27:06 +0000 UTC FinishedAt: 2026-08-15 16:27:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowj8d2d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_enslave","team_port_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"b5b5a9c9-0e42-4c76-a144-e6eea40666d8","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-15 16:27:06 +0000 UTC FinishedAt: 2026-08-15 16:27:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowj8d2d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_enslave","team_port_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"b5b5a9c9-0e42-4c76-a144-e6eea40666d8","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-15 16:27:06 +0000 UTC FinishedAt: 2026-08-15 16:47:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowj8d2d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_enslave","team_port_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"b5b5a9c9-0e42-4c76-a144-e6eea40666d8","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-15 16:27:06 +0000 UTC FinishedAt: 2026-08-15 16:47:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*8b5a95db-8562-4d2d-b5c6-d0def930584d,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-workflowj8d2d/series-workflowj8d2d-convert-artifact-3684574966/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": "cf08341b-7a7a-43ff-81f5-402dfeff5baa", "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-workflowj8d2d/series-workflowj8d2d-build-action-875515386/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowj8d2d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_enslave","team_port_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"b5b5a9c9-0e42-4c76-a144-e6eea40666d8","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-15 16:27:06 +0000 UTC FinishedAt: 2026-08-15 16:47:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*8b5a95db-8562-4d2d-b5c6-d0def930584d,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-workflowj8d2d/series-workflowj8d2d-convert-artifact-3684574966/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": "cf08341b-7a7a-43ff-81f5-402dfeff5baa", "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-workflowj8d2d/series-workflowj8d2d-build-action-875515386/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowj8d2d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_enslave","team_port_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"b5b5a9c9-0e42-4c76-a144-e6eea40666d8","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-15 16:47:16 +0000 UTC FinishedAt: 2026-08-15 16:47:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowj8d2d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_enslave","team_port_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"b5b5a9c9-0e42-4c76-a144-e6eea40666d8","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-15 16:47:16 +0000 UTC FinishedAt: 2026-08-15 16:47:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowj8d2d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_enslave","team_port_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"b5b5a9c9-0e42-4c76-a144-e6eea40666d8","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-15 16:47:16 +0000 UTC FinishedAt: 2026-08-15 16:49:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowj8d2d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_enslave","team_port_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"b5b5a9c9-0e42-4c76-a144-e6eea40666d8","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-15 16:47:16 +0000 UTC FinishedAt: 2026-08-15 16:49:28 +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:*cf08341b-7a7a-43ff-81f5-402dfeff5baa,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-workflowj8d2d/series-workflowj8d2d-build-action-875515386/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-workflowj8d2d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_enslave","team_port_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"b5b5a9c9-0e42-4c76-a144-e6eea40666d8","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-15 16:49:39 +0000 UTC FinishedAt: 2026-08-15 19:52:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowj8d2d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_enslave","team_port_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"b5b5a9c9-0e42-4c76-a144-e6eea40666d8","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-15 16:49:39 +0000 UTC FinishedAt: 2026-08-15 19:52:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_enslave","team_port_add"],"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:*03a00ccf-ae7e-4018-b224-81fc084fd441,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*cf08341b-7a7a-43ff-81f5-402dfeff5baa,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-workflowj8d2d/series-workflowj8d2d-build-action-678622813/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-workflowj8d2d/series-workflowj8d2d-build-action-875515386/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowj8d2d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_enslave","team_port_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"b5b5a9c9-0e42-4c76-a144-e6eea40666d8","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-15 16:49:39 +0000 UTC FinishedAt: 2026-08-15 16:49:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowj8d2d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_enslave","team_port_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"b5b5a9c9-0e42-4c76-a144-e6eea40666d8","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-15 16:49:39 +0000 UTC FinishedAt: 2026-08-15 16:49:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_enslave","team_port_add"],"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-workflowj8d2d/series-workflowj8d2d-convert-artifact-2526250011/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowj8d2d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_enslave","team_port_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"b5b5a9c9-0e42-4c76-a144-e6eea40666d8","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-15 16:49:39 +0000 UTC FinishedAt: 2026-08-15 16:49:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowj8d2d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_enslave","team_port_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"b5b5a9c9-0e42-4c76-a144-e6eea40666d8","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-15 16:49:39 +0000 UTC FinishedAt: 2026-08-15 16:49:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowj8d2d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_enslave","team_port_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"b5b5a9c9-0e42-4c76-a144-e6eea40666d8","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-15 16:49:40 +0000 UTC FinishedAt: 2026-08-15 16:49:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowj8d2d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_enslave","team_port_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"b5b5a9c9-0e42-4c76-a144-e6eea40666d8","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-15 16:49:51 +0000 UTC FinishedAt: 2026-08-15 19:52:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowj8d2d[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_enslave","team_port_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"b5b5a9c9-0e42-4c76-a144-e6eea40666d8","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-15 16:49:51 +0000 UTC FinishedAt: 2026-08-15 19:52:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*03a00ccf-ae7e-4018-b224-81fc084fd441,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*cf08341b-7a7a-43ff-81f5-402dfeff5baa,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-workflowj8d2d/series-workflowj8d2d-build-action-678622813/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-workflowj8d2d/series-workflowj8d2d-build-action-875515386/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-workflowj8d2d/series-workflowj8d2d-convert-artifact-2526250011/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,}