Name: series-workflowjd46p Phase: Succeeded StartedAt: 2026-09-09 21:43:58 +0000 UTC FinishedAt: 2026-09-10 01:27:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjd46p[0] Phase: Succeeded StartedAt: 2026-09-09 21:43:58 +0000 UTC FinishedAt: 2026-09-09 21:46:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjd46p[0].run-triage Phase: Succeeded StartedAt: 2026-09-09 21:43:58 +0000 UTC FinishedAt: 2026-09-09 21:46:37 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "df2908090cda368b01ff43709f51890076c56157", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MEDIA_SUPPORT", "VIDEO_DEV" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "df2908090cda368b01ff43709f51890076c56157", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MEDIA_SUPPORT", "VIDEO_DEV" ], "series_id": "e40cd1e7-13e0-4bca-b362-dfd662d1c328" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "v4l2_ctrl_cluster", "v4l2_ctrl_auto_cluster" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDIxOjQ1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01FRElBX1NVUFBPUlQmIzM0OywKICAgICYjMzQ7VklERU9fREVWJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7djRsMl9jdHJsX2NsdXN0ZXImIzM0OywKICAgICYjMzQ7djRsMl9jdHJsX2F1dG9fY2x1c3RlciYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGB2NGwyX2N0cmxfY2x1c3RlcmAgYW5kIGB2NGwyX2N0cmxfYXV0b19jbHVzdGVyYCB0byBncmFjZWZ1bGx5IGhhbmRsZSBjYXNlcyB3aGVyZSBgY29udHJvbHNbMF1gIGlzIE5VTEwgb3IgYG5jb250cm9scyA9PSAwYCwgcHJldmVudGluZyBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIGFuZCByZW1vdmluZyBhbiB1bm5lY2Vzc2FyeSBXQVJOX09OLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UsIHJlYWQsIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBzdGFjayBvciBoZWFwIG1lbW9yeSwgbm9yIGRvZXMgaXQgcGFzcyB1bmluaXRpYWxpemVkIGRhdGEgdG8gdXNlciBzcGFjZS4gU3RhbmRhcmQgc2FuaXRpemVycyBhbmQgS0FTQU4gYXJlIHN1ZmZpY2llbnQgdG8gZGV0ZWN0IG1lbW9yeSBzYWZldHkgaXNzdWVzIGluIHRoZXNlIGNvbnRyb2wgcGF0aHMuIFRoZXJlZm9yZSwgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb250cm9sIGZsb3cgYW5kIE5VTEwgY2hlY2tzIGluIHRoZSBjb3JlIFY0TDIgY29udHJvbCBjbHVzdGVyaW5nIGZ1bmN0aW9ucyAodjRsMl9jdHJsX2NsdXN0ZXIgYW5kIHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIpLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSBhbmQgZXhlcmNpc2VkIGR1cmluZyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdmFyaW91cyBWNEwyIGRyaXZlcnMsIGluY2x1ZGluZyB2aXJ0dWFsIGRyaXZlcnMgKHN1Y2ggYXMgdml2aWQpIGFuZCBlbXVsYXRlZCBVU0IgbWVkaWEgZGV2aWNlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAyMTo0NTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDAzYzUxMjA4OGRmYWUxNjk4MzMzMjMxMjJmOTcyMjQwMTZjMzhiNzlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIFNlcCA5IDIxOjQ1OjM0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL3Y0bDItY3RybHMtY29yZS5jIGIvZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1jdHJscy1jb3JlLmNcbmluZGV4IDViOGE1OTRmYjllMjQuLmU3N2NlN2I1NmZjYTYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwyLWN0cmxzLWNvcmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1jdHJscy1jb3JlLmNcbkBAIC0yNTIxLDggJiM0MzsyNTIxLDE0IEBAIHZvaWQgdjRsMl9jdHJsX2NsdXN0ZXIodW5zaWduZWQgbmNvbnRyb2xzLCBzdHJ1Y3QgdjRsMl9jdHJsICoqY29udHJvbHMpXG4gXHRib29sIGhhc192b2xhdGlsZXMgPSBmYWxzZTtcbiBcdGludCBpO1xuIFxuLVx0LyogVGhlIGZpcnN0IGNvbnRyb2wgaXMgdGhlIG1hc3RlciBjb250cm9sIGFuZCBpdCBtdXN0IG5vdCBiZSBOVUxMICovXG4tXHRpZiAoV0FSTl9PTihuY29udHJvbHMgPT0gMCB8fCBjb250cm9sc1swXSA9PSBOVUxMKSlcbiYjNDM7XHRpZiAoV0FSTl9PTihuY29udHJvbHMgPT0gMCkpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogVGhlIGZpcnN0IGNvbnRyb2wgaXMgdGhlIG1hc3RlciBjb250cm9sLiBJZiB0aGlzIGlzIE5VTEwgdGhlblxuJiM0MztcdCAqIHRoZXJlIGlzIG5vdGhpbmcgdG8gZG8uXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKGNvbnRyb2xzWzBdID09IE5VTEwpXG4gXHRcdHJldHVybjtcbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5jb250cm9sczsgaSYjNDM7JiM0MzspIHtcbkBAIC0yNTQwLDEyICYjNDM7MjU0NiwxNCBAQCBFWFBPUlRfU1lNQk9MKHY0bDJfY3RybF9jbHVzdGVyKTtcbiB2b2lkIHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIodW5zaWduZWQgbmNvbnRyb2xzLCBzdHJ1Y3QgdjRsMl9jdHJsICoqY29udHJvbHMsXG4gXHRcdFx0ICAgIHU4IG1hbnVhbF92YWwsIGJvb2wgc2V0X3ZvbGF0aWxlKVxuIHtcbi1cdHN0cnVjdCB2NGwyX2N0cmwgKm1hc3RlciA9IGNvbnRyb2xzWzBdO1xuJiM0MztcdHN0cnVjdCB2NGwyX2N0cmwgKm1hc3RlciA9IG5jb250cm9scyA/IGNvbnRyb2xzWzBdIDogTlVMTDtcbiBcdHUzMiBmbGFnID0gMDtcbiBcdGludCBpO1xuIFxuIFx0djRsMl9jdHJsX2NsdXN0ZXIobmNvbnRyb2xzLCBjb250cm9scyk7XG4gXHRXQVJOX09OKG5jb250cm9scyBcdTAwM2M9IDEpO1xuJiM0MztcdGlmICghbWFzdGVyKVxuJiM0MztcdFx0cmV0dXJuO1xuIFx0V0FSTl9PTihtYW51YWxfdmFsIFx1MDAzYyBtYXN0ZXItXHUwMDNlbWluaW11bSB8fCBtYW51YWxfdmFsIFx1MDAzZSBtYXN0ZXItXHUwMDNlbWF4aW11bSk7XG4gXHRXQVJOX09OKHNldF92b2xhdGlsZSBcdTAwMjZcdTAwMjYgIWhhc19vcChtYXN0ZXIsIGdfdm9sYXRpbGVfY3RybCkpO1xuIFx0bWFzdGVyLVx1MDAzZWlzX2F1dG8gPSB0cnVlO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDIxOjQ1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01FRElBX1NVUFBPUlQmIzM0OywKICAgICYjMzQ7VklERU9fREVWJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7djRsMl9jdHJsX2NsdXN0ZXImIzM0OywKICAgICYjMzQ7djRsMl9jdHJsX2F1dG9fY2x1c3RlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb250cm9sIGZsb3cgYW5kIE5VTEwgY2hlY2tzIGluIHRoZSBjb3JlIFY0TDIgY29udHJvbCBjbHVzdGVyaW5nIGZ1bmN0aW9ucyAodjRsMl9jdHJsX2NsdXN0ZXIgYW5kIHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIpLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSBhbmQgZXhlcmNpc2VkIGR1cmluZyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdmFyaW91cyBWNEwyIGRyaXZlcnMsIGluY2x1ZGluZyB2aXJ0dWFsIGRyaXZlcnMgKHN1Y2ggYXMgdml2aWQpIGFuZCBlbXVsYXRlZCBVU0IgbWVkaWEgZGV2aWNlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDAzYzUxMjA4OGRmYWUxNjk4MzMzMjMxMjJmOTcyMjQwMTZjMzhiNzkKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIFNlcCA5IDIxOjQ1OjM0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1jdHJscy1jb3JlLmMgYi9kcml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwyLWN0cmxzLWNvcmUuYwppbmRleCA1YjhhNTk0ZmI5ZTI0Li5lNzdjZTdiNTZmY2E2IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwyLWN0cmxzLWNvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwyLWN0cmxzLWNvcmUuYwpAQCAtMjUyMSw4ICYjNDM7MjUyMSwxNCBAQCB2b2lkIHY0bDJfY3RybF9jbHVzdGVyKHVuc2lnbmVkIG5jb250cm9scywgc3RydWN0IHY0bDJfY3RybCAqKmNvbnRyb2xzKQogCWJvb2wgaGFzX3ZvbGF0aWxlcyA9IGZhbHNlOwogCWludCBpOwogCi0JLyogVGhlIGZpcnN0IGNvbnRyb2wgaXMgdGhlIG1hc3RlciBjb250cm9sIGFuZCBpdCBtdXN0IG5vdCBiZSBOVUxMICovCi0JaWYgKFdBUk5fT04obmNvbnRyb2xzID09IDAgfHwgY29udHJvbHNbMF0gPT0gTlVMTCkpCiYjNDM7CWlmIChXQVJOX09OKG5jb250cm9scyA9PSAwKSkKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJLyoKJiM0MzsJICogVGhlIGZpcnN0IGNvbnRyb2wgaXMgdGhlIG1hc3RlciBjb250cm9sLiBJZiB0aGlzIGlzIE5VTEwgdGhlbgomIzQzOwkgKiB0aGVyZSBpcyBub3RoaW5nIHRvIGRvLgomIzQzOwkgKi8KJiM0MzsJaWYgKGNvbnRyb2xzWzBdID09IE5VTEwpCiAJCXJldHVybjsKIAogCWZvciAoaSA9IDA7IGkgJmx0OyBuY29udHJvbHM7IGkmIzQzOyYjNDM7KSB7CkBAIC0yNTQwLDEyICYjNDM7MjU0NiwxNCBAQCBFWFBPUlRfU1lNQk9MKHY0bDJfY3RybF9jbHVzdGVyKTsKIHZvaWQgdjRsMl9jdHJsX2F1dG9fY2x1c3Rlcih1bnNpZ25lZCBuY29udHJvbHMsIHN0cnVjdCB2NGwyX2N0cmwgKipjb250cm9scywKIAkJCSAgICB1OCBtYW51YWxfdmFsLCBib29sIHNldF92b2xhdGlsZSkKIHsKLQlzdHJ1Y3QgdjRsMl9jdHJsICptYXN0ZXIgPSBjb250cm9sc1swXTsKJiM0MzsJc3RydWN0IHY0bDJfY3RybCAqbWFzdGVyID0gbmNvbnRyb2xzID8gY29udHJvbHNbMF0gOiBOVUxMOwogCXUzMiBmbGFnID0gMDsKIAlpbnQgaTsKIAogCXY0bDJfY3RybF9jbHVzdGVyKG5jb250cm9scywgY29udHJvbHMpOwogCVdBUk5fT04obmNvbnRyb2xzICZsdDs9IDEpOwomIzQzOwlpZiAoIW1hc3RlcikKJiM0MzsJCXJldHVybjsKIAlXQVJOX09OKG1hbnVhbF92YWwgJmx0OyBtYXN0ZXItJmd0O21pbmltdW0gfHwgbWFudWFsX3ZhbCAmZ3Q7IG1hc3Rlci0mZ3Q7bWF4aW11bSk7CiAJV0FSTl9PTihzZXRfdm9sYXRpbGUgJmFtcDsmYW1wOyAhaGFzX29wKG1hc3RlciwgZ192b2xhdGlsZV9jdHJsKSk7CiAJbWFzdGVyLSZndDtpc19hdXRvID0gdHJ1ZTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMjE6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzIzMwoJCQkJCQkJb3V0cHV0OiA1MQoJCQkJCQkJdGhvdWdodHM6IDEyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoOiBWaWRlbzRMaW51eCBDb250cm9sIENsdXN0ZXIqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIHBhdGNoIGFuZCB0aGUgYXNzb2NpYXRlZCBpbnN0cnVjdGlvbnMuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gYnJlYWsgaXQgZG93biBzeXN0ZW1hdGljYWxseS4gCgpGaXJzdCwgdGhlIHBhdGNoIGl0c2VsZi4gSXQgbG9va3MgbGlrZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIHRoZSB2aWRlbzRsaW51eCAoVjRMMikgY29yZSwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIHRoZSBjb250cm9sIGNsdXN0ZXIgZnVuY3Rpb25hbGl0eS4gVGhlIGRpZmYgdG91Y2hlcyBgZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1jdHJscy1jb3JlLmNgLCB3aGljaCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGlzIHJlbGF0ZWQgdG8gaG93IGNvbnRyb2xzIGFyZSBvcmdhbml6ZWQgYW5kIG1hbmFnZWQgd2l0aGluIFY0TDIuCgpUaGUgc2lnbmlmaWNhbnQgbW9kaWZpY2F0aW9ucyBhcmUgd2l0aGluIHRoZSBmdW5jdGlvbnMgYHY0bDJfY3RybF9jbHVzdGVyYCBhbmQgYHY0bDJfY3RybF9hdXRvX2NsdXN0ZXJgLiBUaGlzIHN1Z2dlc3RzIHRoZXkgYXJlIGVpdGhlciBlbmhhbmNpbmcgb3IgY2hhbmdpbmcgdGhlIGJlaGF2aW91ciBvZiB0aGVzZSBmdW5jdGlvbnMuIE5vdywgSSBzaG91bGQgZXhhbWluZSB0aGUgY29yZSBmaWxlIChgdjRsMi1jdHJscy1jb3JlLmNgKSBhcm91bmQgbGluZSAyNTIxIHRvIGZ1bGx5IGNvbXByZWhlbmQgdGhlIGNoYW5nZXMuIEluIG15IHZpZXcsIHRoaXMgd2lsbCBwcm92aWRlIHRoZSBuZWNlc3NhcnkgY29udGV4dCB0byBkZXRlcm1pbmUgaG93IHRoZSB1cGRhdGUgaGFzIGNoYW5nZWQgdGhlc2UgY3JpdGljYWwgZnVuY3Rpb25zLiBJIHdpbGwgYWxzbyBoYXZlIGEgcXVpY2sgbG9vayBhdCB0aGUgS2NvbmZpZyBmaWxlIGZvciB0aGUgVjRMMiBjb3JlLCBhcyBpdCBzaG91bGQgcHJvdmlkZSB2YWx1YWJsZSBpbmZvcm1hdGlvbiBvbiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gdGhpcyBmdW5jdGlvbmFsaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDIxOjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1jdHJscy1jb3JlLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNTE1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDU1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzI1MTU6XHR9XG4yNTE2Olx0RVhQT1JUX1NZTUJPTCh2NGwyX2N0cmxfcmFkaW9fZmlsdGVyKTtcbjI1MTc6XHRcbjI1MTg6XHQvKiBDbHVzdGVyIGNvbnRyb2xzICovXG4yNTE5Olx0dm9pZCB2NGwyX2N0cmxfY2x1c3Rlcih1bnNpZ25lZCBuY29udHJvbHMsIHN0cnVjdCB2NGwyX2N0cmwgKipjb250cm9scylcbjI1MjA6XHR7XG4yNTIxOlx0XHRib29sIGhhc192b2xhdGlsZXMgPSBmYWxzZTtcbjI1MjI6XHRcdGludCBpO1xuMjUyMzpcdFxuMjUyNDpcdFx0aWYgKFdBUk5fT04obmNvbnRyb2xzID09IDApKVxuMjUyNTpcdFx0XHRyZXR1cm47XG4yNTI2Olx0XG4yNTI3Olx0XHQvKlxuMjUyODpcdFx0ICogVGhlIGZpcnN0IGNvbnRyb2wgaXMgdGhlIG1hc3RlciBjb250cm9sLiBJZiB0aGlzIGlzIE5VTEwgdGhlblxuMjUyOTpcdFx0ICogdGhlcmUgaXMgbm90aGluZyB0byBkby5cbjI1MzA6XHRcdCAqL1xuMjUzMTpcdFx0aWYgKGNvbnRyb2xzWzBdID09IE5VTEwpXG4yNTMyOlx0XHRcdHJldHVybjtcbjI1MzM6XHRcbjI1MzQ6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5jb250cm9sczsgaSYjNDM7JiM0MzspIHtcbjI1MzU6XHRcdFx0aWYgKGNvbnRyb2xzW2ldKSB7XG4yNTM2Olx0XHRcdFx0Y29udHJvbHNbaV0tXHUwMDNlY2x1c3RlciA9IGNvbnRyb2xzO1xuMjUzNzpcdFx0XHRcdGNvbnRyb2xzW2ldLVx1MDAzZW5jb250cm9scyA9IG5jb250cm9scztcbjI1Mzg6XHRcdFx0XHRpZiAoY29udHJvbHNbaV0tXHUwMDNlZmxhZ3MgXHUwMDI2IFY0TDJfQ1RSTF9GTEFHX1ZPTEFUSUxFKVxuMjUzOTpcdFx0XHRcdFx0aGFzX3ZvbGF0aWxlcyA9IHRydWU7XG4yNTQwOlx0XHRcdH1cbjI1NDE6XHRcdH1cbjI1NDI6XHRcdGNvbnRyb2xzWzBdLVx1MDAzZWhhc192b2xhdGlsZXMgPSBoYXNfdm9sYXRpbGVzO1xuMjU0MzpcdH1cbjI1NDQ6XHRFWFBPUlRfU1lNQk9MKHY0bDJfY3RybF9jbHVzdGVyKTtcbjI1NDU6XHRcbjI1NDY6XHR2b2lkIHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIodW5zaWduZWQgbmNvbnRyb2xzLCBzdHJ1Y3QgdjRsMl9jdHJsICoqY29udHJvbHMsXG4yNTQ3Olx0XHRcdFx0ICAgIHU4IG1hbnVhbF92YWwsIGJvb2wgc2V0X3ZvbGF0aWxlKVxuMjU0ODpcdHtcbjI1NDk6XHRcdHN0cnVjdCB2NGwyX2N0cmwgKm1hc3RlciA9IG5jb250cm9scyA/IGNvbnRyb2xzWzBdIDogTlVMTDtcbjI1NTA6XHRcdHUzMiBmbGFnID0gMDtcbjI1NTE6XHRcdGludCBpO1xuMjU1MjpcdFxuMjU1MzpcdFx0djRsMl9jdHJsX2NsdXN0ZXIobmNvbnRyb2xzLCBjb250cm9scyk7XG4yNTU0Olx0XHRXQVJOX09OKG5jb250cm9scyBcdTAwM2M9IDEpO1xuMjU1NTpcdFx0aWYgKCFtYXN0ZXIpXG4yNTU2Olx0XHRcdHJldHVybjtcbjI1NTc6XHRcdFdBUk5fT04obWFudWFsX3ZhbCBcdTAwM2MgbWFzdGVyLVx1MDAzZW1pbmltdW0gfHwgbWFudWFsX3ZhbCBcdTAwM2UgbWFzdGVyLVx1MDAzZW1heGltdW0pO1xuMjU1ODpcdFx0V0FSTl9PTihzZXRfdm9sYXRpbGUgXHUwMDI2XHUwMDI2ICFoYXNfb3AobWFzdGVyLCBnX3ZvbGF0aWxlX2N0cmwpKTtcbjI1NTk6XHRcdG1hc3Rlci1cdTAwM2Vpc19hdXRvID0gdHJ1ZTtcbjI1NjA6XHRcdG1hc3Rlci1cdTAwM2VoYXNfdm9sYXRpbGVzID0gc2V0X3ZvbGF0aWxlO1xuMjU2MTpcdFx0bWFzdGVyLVx1MDAzZW1hbnVhbF9tb2RlX3ZhbHVlID0gbWFudWFsX3ZhbDtcbjI1NjI6XHRcdG1hc3Rlci1cdTAwM2VmbGFncyB8PSBWNEwyX0NUUkxfRkxBR19VUERBVEU7XG4yNTYzOlx0XG4yNTY0Olx0XHRpZiAoIWlzX2N1cl9tYW51YWwobWFzdGVyKSlcbjI1NjU6XHRcdFx0ZmxhZyA9IFY0TDJfQ1RSTF9GTEFHX0lOQUNUSVZFIHxcbjI1NjY6XHRcdFx0XHQoc2V0X3ZvbGF0aWxlID8gVjRMMl9DVFJMX0ZMQUdfVk9MQVRJTEUgOiAwKTtcbjI1Njc6XHRcbjI1Njg6XHRcdGZvciAoaSA9IDE7IGkgXHUwMDNjIG5jb250cm9sczsgaSYjNDM7JiM0MzspXG4yNTY5Olx0XHRcdGlmIChjb250cm9sc1tpXSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAyMTo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NTIxCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqSW52ZXN0aWdhdGluZyBDb250cm9sIENsdXN0ZXJzIGluIHRoZSBWNEwyIEZyYW1ld29yayoqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIGB2NGwyX2N0cmxfY2x1c3RlcmAgYW5kIGB2NGwyX2N0cmxfYXV0b19jbHVzdGVyYC4gTXkgaW1tZWRpYXRlIGdvYWwgaXMgdG8gbWFwIG91dCB0aGVpciB1c2FnZSDigJMgcGlucG9pbnRpbmcgd2hlcmUgdGhleSYjMzk7cmUgYmVpbmcgY2FsbGVkIHdpdGhpbiB0aGUga2VybmVsIGNvZGUgYW5kLCBjcnVjaWFsbHksIHdoaWNoIHNwZWNpZmljIGRyaXZlcnMgYXJlIGxldmVyYWdpbmcgdGhlbS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGxhbmRzY2FwZSBvZiB0aGVzZSBjb250cm9sIG1lY2hhbmlzbXMuCgpCZXlvbmQgdGhlIGNvcmUgZnVuY3Rpb25hbGl0eSwgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgYmlnZ2VyIHBpY3R1cmUsIGFuZCB0aGF0IG1lYW5zIGNvbnNpZGVyaW5nIGhvdyB0aGVzZSBjbHVzdGVycyBiZWhhdmUgaW4gYSB2aXJ0dWFsaXplZCBjb250ZXh0LiBJJiMzOTttIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIGhvdyB0aGV5IGZ1bmN0aW9uIHdpdGhpbiBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLiBTcGVjaWZpY2FsbHksIGhvdyBkbyB0aGV5IGhhbmRsZSBzZXR1cHMgdXNpbmcsIGZvciBleGFtcGxlLCB0aGUgYHV2Y3ZpZGVvYCBkcml2ZXIgb3ZlciBhIFVTQiBnYWRnZXQsIG9yLCBhbHRlcm5hdGl2ZWx5LCBlbXVsYXRlZCBWNEwyIGRyaXZlcnMgc3VjaCBhcyBgdml2aWRgIG9yIGB2aW1jYD8gVGhlIHZpcnR1YWxpemVkIHNwYWNlIG9mdGVuIHByZXNlbnRzIGl0cyBvd24gc2V0IG9mIGNoYWxsZW5nZXMsIGFuZCB1bmRlcnN0YW5kaW5nIGlmIGFuZCBob3cgdGhlc2UgY29udHJvbCBjbHVzdGVycyBmdW5jdGlvbiBpbiB0aG9zZSBzZXR0aW5ncyBpcyBjcml0aWNhbCBmb3IgYSBjb21wbGV0ZSBwaWN0dXJlLiBUaGlzIGNvdWxkIGhhdmUgaHVnZSBpbXBsaWNhdGlvbnMgb24gdGhlIHRlc3RpbmcsIGRlYnVnZ2luZywgYW5kIGRlcGxveW1lbnQgb2YgZHJpdmVycyBpbiBzaW11bGF0ZWQgc2NlbmFyaW9zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDIxOjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Y0bDJfY3RybF9hdXRvX2NsdXN0ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9ydGwyODMyX3Nkci5jPTEzMTk9c3RhdGljIGludCBydGwyODMyX3Nkcl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9ydGwyODMyX3Nkci5jLTE0MDEtXHRcdFx0XHRcdFx0ICAgMCwgODAwMDAwMCwgMTAwMDAwLCAwKTtcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9ydGwyODMyX3Nkci5jOjE0MDI6XHRcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXHUwMDI2ZGV2LVx1MDAzZWJhbmR3aWR0aF9hdXRvLCAwLCBmYWxzZSk7XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvcnRsMjgzMl9zZHIuYy0xNDAzLVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvcnRsMjgzMl9zZHIuYy0xNDEzLVx0XHRcdFx0XHRcdCAgIDYwMDAwMDApO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL3J0bDI4MzJfc2RyLmM6MTQxNDpcdFx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigyLCBcdTAwMjZkZXYtXHUwMDNlYmFuZHdpZHRoX2F1dG8sIDAsIGZhbHNlKTtcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9ydGwyODMyX3Nkci5jLTE0MTUtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbWVkaWEvaTJjL2Fsdml1bS1jc2kyLmM9MjA4OD1zdGF0aWMgaW50IGFsdml1bV9jdHJsX2luaXQoc3RydWN0IGFsdml1bV9kZXYgKmFsdml1bSlcbi0tXG5kcml2ZXJzL21lZGlhL2kyYy9hbHZpdW0tY3NpMi5jLTIxMTYtXHRcdGlmIChjdHJscy1cdTAwM2VhdXRvX3diKVxuZHJpdmVycy9tZWRpYS9pMmMvYWx2aXVtLWNzaTIuYzoyMTE3Olx0XHRcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMywgXHUwMDI2Y3RybHMtXHUwMDNlYXV0b193YiwgMCwgZmFsc2UpO1xuZHJpdmVycy9tZWRpYS9pMmMvYWx2aXVtLWNzaTIuYy0yMTE4LVx0fVxuLS1cbmRyaXZlcnMvbWVkaWEvaTJjL2Fsdml1bS1jc2kyLmMtMjE0MS1cdFx0aWYgKGN0cmxzLVx1MDAzZWF1dG9fZXhwKVxuZHJpdmVycy9tZWRpYS9pMmMvYWx2aXVtLWNzaTIuYzoyMTQyOlx0XHRcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXHUwMDI2Y3RybHMtXHUwMDNlYXV0b19leHAsXG5kcml2ZXJzL21lZGlhL2kyYy9hbHZpdW0tY3NpMi5jLTIxNDMtXHRcdFx0XHRcdCAgICAgICBWNEwyX0VYUE9TVVJFX01BTlVBTCwgdHJ1ZSk7XG4tLVxuZHJpdmVycy9tZWRpYS9pMmMvYWx2aXVtLWNzaTIuYy0yMTYwLVx0XHRpZiAoY3RybHMtXHUwMDNlYXV0b19nYWluKVxuZHJpdmVycy9tZWRpYS9pMmMvYWx2aXVtLWNzaTIuYzoyMTYxOlx0XHRcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXHUwMDI2Y3RybHMtXHUwMDNlYXV0b19nYWluLCAwLCB0cnVlKTtcbmRyaXZlcnMvbWVkaWEvaTJjL2Fsdml1bS1jc2kyLmMtMjE2Mi1cdH1cbi0tXG5kcml2ZXJzL21lZGlhL2kyYy9tdDltMDAxLmM9NzMwPXN0YXRpYyBpbnQgbXQ5bTAwMV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuLS1cbmRyaXZlcnMvbWVkaWEvaTJjL210OW0wMDEuYy03ODItXG5kcml2ZXJzL21lZGlhL2kyYy9tdDltMDAxLmM6NzgzOlx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigyLCBcdTAwMjZtdDltMDAxLVx1MDAzZWF1dG9leHBvc3VyZSxcbmRyaXZlcnMvbWVkaWEvaTJjL210OW0wMDEuYy03ODQtXHRcdFx0XHRcdFY0TDJfRVhQT1NVUkVfTUFOVUFMLCB0cnVlKTtcbi0tXG5kcml2ZXJzL21lZGlhL2kyYy9vdjU2NDAuYz0zNDI4PXN0YXRpYyBpbnQgb3Y1NjQwX2luaXRfY29udHJvbHMoc3RydWN0IG92NTY0MF9kZXYgKnNlbnNvcilcbi0tXG5kcml2ZXJzL21lZGlhL2kyYy9vdjU2NDAuYy0zNTMwLVxuZHJpdmVycy9tZWRpYS9pMmMvb3Y1NjQwLmM6MzUzMTpcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMywgXHUwMDI2Y3RybHMtXHUwMDNlYXV0b193YiwgMCwgZmFsc2UpO1xuZHJpdmVycy9tZWRpYS9pMmMvb3Y1NjQwLmM6MzUzMjpcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXHUwMDI2Y3RybHMtXHUwMDNlYXV0b19nYWluLCAwLCB0cnVlKTtcbmRyaXZlcnMvbWVkaWEvaTJjL292NTY0MC5jOjM1MzM6XHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDIsIFx1MDAyNmN0cmxzLVx1MDAzZWF1dG9fZXhwLCAxLCB0cnVlKTtcbmRyaXZlcnMvbWVkaWEvaTJjL292NTY0MC5jLTM1MzQtXG4tLVxuZHJpdmVycy9tZWRpYS9pMmMvb3Y1NjQ4LmM9MjAzOT1zdGF0aWMgaW50IG92NTY0OF9jdHJsc19pbml0KHN0cnVjdCBvdjU2NDhfc2Vuc29yICpzZW5zb3IpXG4tLVxuZHJpdmVycy9tZWRpYS9pMmMvb3Y1NjQ4LmMtMjA2MC1cbmRyaXZlcnMvbWVkaWEvaTJjL292NTY0OC5jOjIwNjE6XHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDIsIFx1MDAyNmN0cmxzLVx1MDAzZWV4cG9zdXJlX2F1dG8sIDEsIHRydWUpO1xuZHJpdmVycy9tZWRpYS9pMmMvb3Y1NjQ4LmMtMjA2Mi1cbi0tXG5kcml2ZXJzL21lZGlhL2kyYy9vdjU2NDguYy0yMDcwLVxuZHJpdmVycy9tZWRpYS9pMmMvb3Y1NjQ4LmM6MjA3MTpcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXHUwMDI2Y3RybHMtXHUwMDNlZ2Fpbl9hdXRvLCAwLCB0cnVlKTtcbmRyaXZlcnMvbWVkaWEvaTJjL292NTY0OC5jLTIwNzItXG4tLVxuZHJpdmVycy9tZWRpYS9pMmMvb3Y1NjQ4LmMtMjA4Ni1cbmRyaXZlcnMvbWVkaWEvaTJjL292NTY0OC5jOjIwODc6XHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDMsIFx1MDAyNmN0cmxzLVx1MDAzZXdoaXRlX2JhbGFuY2VfYXV0bywgMCwgZmFsc2UpO1xuZHJpdmVycy9tZWRpYS9pMmMvb3Y1NjQ4LmMtMjA4OC1cbi0tXG5kcml2ZXJzL21lZGlhL2kyYy9vdjc2NzAuYz0xODIzPXN0YXRpYyBpbnQgb3Y3NjcwX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9tZWRpYS9pMmMvb3Y3NjcwLmMtMTk0NC1cdCAqL1xuZHJpdmVycy9tZWRpYS9pMmMvb3Y3NjcwLmM6MTk0NTpcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXHUwMDI2aW5mby1cdTAwM2VhdXRvX2dhaW4sIDAsIHRydWUpO1xuZHJpdmVycy9tZWRpYS9pMmMvb3Y3NjcwLmM6MTk0NjpcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXHUwMDI2aW5mby1cdTAwM2VhdXRvX2V4cG9zdXJlLFxuZHJpdmVycy9tZWRpYS9pMmMvb3Y3NjcwLmMtMTk0Ny1cdFx0XHQgICAgICAgVjRMMl9FWFBPU1VSRV9NQU5VQUwsIGZhbHNlKTtcbi0tXG5kcml2ZXJzL21lZGlhL2kyYy9vdjc3NDAuYz05Mzk9c3RhdGljIGludCBvdjc3NDBfaW5pdF9jb250cm9scyhzdHJ1Y3Qgb3Y3NzQwICpvdjc3NDApXG4tLVxuZHJpdmVycy9tZWRpYS9pMmMvb3Y3NzQwLmMtOTg3LVxuZHJpdmVycy9tZWRpYS9pMmMvb3Y3NzQwLmM6OTg4Olx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigzLCBcdTAwMjZvdjc3NDAtXHUwMDNlYXV0b193YiwgMCwgZmFsc2UpO1xuZHJpdmVycy9tZWRpYS9pMmMvb3Y3NzQwLmM6OTg5Olx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigyLCBcdTAwMjZvdjc3NDAtXHUwMDNlYXV0b19nYWluLCAwLCB0cnVlKTtcbmRyaXZlcnMvbWVkaWEvaTJjL292Nzc0MC5jOjk5MDpcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXHUwMDI2b3Y3NzQwLVx1MDAzZWF1dG9fZXhwb3N1cmUsXG5kcml2ZXJzL21lZGlhL2kyYy9vdjc3NDAuYy05OTEtXHRcdFx0ICAgICAgIFY0TDJfRVhQT1NVUkVfTUFOVUFMLCB0cnVlKTtcbi0tXG5kcml2ZXJzL21lZGlhL2kyYy9vdjk2NTAuYz05ODY9c3RhdGljIGludCBvdjk2NXhfaW5pdGlhbGl6ZV9jb250cm9scyhzdHJ1Y3Qgb3Y5NjV4ICpvdjk2NXgpXG4tLVxuZHJpdmVycy9tZWRpYS9pMmMvb3Y5NjUwLmMtMTA0OC1cbmRyaXZlcnMvbWVkaWEvaTJjL292OTY1MC5jOjEwNDk6XHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDMsIFx1MDAyNmN0cmxzLVx1MDAzZWF1dG9fd2IsIDAsIGZhbHNlKTtcbmRyaXZlcnMvbWVkaWEvaTJjL292OTY1MC5jOjEwNTA6XHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDIsIFx1MDAyNmN0cmxzLVx1MDAzZWF1dG9fZ2FpbiwgMCwgdHJ1ZSk7XG5kcml2ZXJzL21lZGlhL2kyYy9vdjk2NTAuYzoxMDUxOlx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigyLCBcdTAwMjZjdHJscy1cdTAwM2VhdXRvX2V4cCwgMSwgdHJ1ZSk7XG5kcml2ZXJzL21lZGlhL2kyYy9vdjk2NTAuYy0xMDUyLVx0djRsMl9jdHJsX2NsdXN0ZXIoMiwgXHUwMDI2Y3RybHMtXHUwMDNlaGZsaXApO1xuLS1cbmRyaXZlcnMvbWVkaWEvaTJjL3M1YzczbTMvczVjNzNtMy1jdHJscy5jPTQ0MT1pbnQgczVjNzNtM19pbml0X2NvbnRyb2xzKHN0cnVjdCBzNWM3M20zICpzdGF0ZSlcbi0tXG5kcml2ZXJzL21lZGlhL2kyYy9zNWM3M20zL3M1YzczbTMtY3RybHMuYy01NDItXG5kcml2ZXJzL21lZGlhL2kyYy9zNWM3M20zL3M1YzczbTMtY3RybHMuYzo1NDM6XHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDMsIFx1MDAyNmN0cmxzLVx1MDAzZWF1dG9fZXhwb3N1cmUsIDAsIGZhbHNlKTtcbmRyaXZlcnMvbWVkaWEvaTJjL3M1YzczbTMvczVjNzNtMy1jdHJscy5jLTU0NC1cdGN0cmxzLVx1MDAzZWF1dG9faXNvLVx1MDAzZWZsYWdzIHw9IFY0TDJfQ1RSTF9GTEFHX1ZPTEFUSUxFIHxcbmRyaXZlcnMvbWVkaWEvaTJjL3M1YzczbTMvczVjNzNtMy1jdHJscy5jLTU0NS1cdFx0XHRcdFY0TDJfQ1RSTF9GTEFHX1VQREFURTtcbmRyaXZlcnMvbWVkaWEvaTJjL3M1YzczbTMvczVjNzNtMy1jdHJscy5jOjU0NjpcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXHUwMDI2Y3RybHMtXHUwMDNlYXV0b19pc28sIDAsIGZhbHNlKTtcbmRyaXZlcnMvbWVkaWEvaTJjL3M1YzczbTMvczVjNzNtMy1jdHJscy5jLTU0Ny1cdGN0cmxzLVx1MDAzZWFmX3N0YXR1cy1cdTAwM2VmbGFncyB8PSBWNEwyX0NUUkxfRkxBR19WT0xBVElMRTtcbi0tXG5kcml2ZXJzL21lZGlhL2kyYy9zNWs1YmFmLmM9MTYzMj1zdGF0aWMgaW50IHM1azViYWZfaW5pdGlhbGl6ZV9jdHJscyhzdHJ1Y3QgczVrNWJhZiAqc3RhdGUpXG4tLVxuZHJpdmVycy9tZWRpYS9pMmMvczVrNWJhZi5jLTE2NTEtXHRcdFx0XHRcdCAgICAgMCwgMjU1LCAxLCBTNUs1QkFGX0dBSU5fQkxVRV9ERUYpO1xuZHJpdmVycy9tZWRpYS9pMmMvczVrNWJhZi5jOjE2NTI6XHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDMsIFx1MDAyNmN0cmxzLVx1MDAzZWF3YiwgMCwgZmFsc2UpO1xuZHJpdmVycy9tZWRpYS9pMmMvczVrNWJhZi5jLTE2NTMtXG4tLVxuZHJpdmVycy9tZWRpYS9pMmMvczVrNWJhZi5jLTE2NjYtXHRcdFx0XHRcdDAsIDI1NiwgMSwgMjU2KTtcbmRyaXZlcnMvbWVkaWEvaTJjL3M1azViYWYuYzoxNjY3Olx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigzLCBcdTAwMjZjdHJscy1cdTAwM2VhdXRvX2V4cCwgMCwgZmFsc2UpO1xuZHJpdmVycy9tZWRpYS9pMmMvczVrNWJhZi5jLTE2NjgtXG4tLVxuZHJpdmVycy9tZWRpYS9pMmMvc2FhNzExNS5jPTE3OTk9c3RhdGljIGludCBzYWE3MTF4X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9tZWRpYS9pMmMvc2FhNzExNS5jLTE4NzItXHR9XG5kcml2ZXJzL21lZGlhL2kyYy9zYWE3MTE1LmM6MTg3MzpcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXHUwMDI2c3RhdGUtXHUwMDNlYWdjLCAwLCB0cnVlKTtcbmRyaXZlcnMvbWVkaWEvaTJjL3NhYTcxMTUuYy0xODc0LVxuLS1cbmRyaXZlcnMvbWVkaWEvaTJjL3ZkNTVnMS5jPTE1NzU9c3RhdGljIGludCB2ZDU1ZzFfaW5pdF9jdHJscyhzdHJ1Y3QgdmQ1NWcxICpzZW5zb3IpXG4tLVxuZHJpdmVycy9tZWRpYS9pMmMvdmQ1NWcxLmMtMTYxNi1cdFx0XHRcdFx0ICAgICAgMSwgVkQ1NUcxX0VYUE9fREVGKTtcbmRyaXZlcnMvbWVkaWEvaTJjL3ZkNTVnMS5jOjE2MTc6XHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDQsIFx1MDAyNnNlbnNvci1cdTAwM2VhZV9jdHJsLCBWNEwyX0VYUE9TVVJFX01BTlVBTCwgdHJ1ZSk7XG5kcml2ZXJzL21lZGlhL2kyYy92ZDU1ZzEuYy0xNjE4LVxuLS1cbmRyaXZlcnMvbWVkaWEvaTJjL3ZkNTZnMy5jPTYzMT1zdGF0aWMgaW50IHZkNTZnM19pbml0X2NvbnRyb2xzKHN0cnVjdCB2ZDU2ZzMgKnNlbnNvcilcbi0tXG5kcml2ZXJzL21lZGlhL2kyYy92ZDU2ZzMuYy03MjQtXHR2NGwyX2N0cmxfY2x1c3RlcigyLCBcdTAwMjZzZW5zb3ItXHUwMDNlaGZsaXBfY3RybCk7XG5kcml2ZXJzL21lZGlhL2kyYy92ZDU2ZzMuYzo3MjU6XHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDQsIFx1MDAyNnNlbnNvci1cdTAwM2VhZV9jdHJsLCBWNEwyX0VYUE9TVVJFX01BTlVBTCwgdHJ1ZSk7XG5kcml2ZXJzL21lZGlhL2kyYy92ZDU2ZzMuYy03MjYtXG4tLVxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9taWNyb2NoaXAvbWljcm9jaGlwLWlzYy1iYXNlLmM9MTYxMj1zdGF0aWMgaW50IGlzY19jdHJsX2luaXQoc3RydWN0IGlzY19kZXZpY2UgKmlzYylcbi0tXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL21pY3JvY2hpcC9taWNyb2NoaXAtaXNjLWJhc2UuYy0xNjYzLVx0ICovXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL21pY3JvY2hpcC9taWNyb2NoaXAtaXNjLWJhc2UuYzoxNjY0Olx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigxMCwgXHUwMDI2aXNjLVx1MDAzZWF3Yl9jdHJsLCAwLCB0cnVlKTtcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbWljcm9jaGlwL21pY3JvY2hpcC1pc2MtYmFzZS5jLTE2NjUtXG4tLVxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zYW1zdW5nL2V4eW5vczQtaXMvZmltYy1pc3AuYz02OTE9aW50IGZpbWNfaXNwX3N1YmRldl9jcmVhdGUoc3RydWN0IGZpbWNfaXNwICppc3ApXG4tLVxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zYW1zdW5nL2V4eW5vczQtaXMvZmltYy1pc3AuYy03NjUtXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3NhbXN1bmcvZXh5bm9zNC1pcy9maW1jLWlzcC5jOjc2NjpcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXHUwMDI2Y3RybHMtXHUwMDNlYXV0b19pc28sXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3NhbXN1bmcvZXh5bm9zNC1pcy9maW1jLWlzcC5jLTc2Ny1cdFx0XHRWNEwyX0lTT19TRU5TSVRJVklUWV9NQU5VQUwsIGZhbHNlKTtcbi0tXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3NhbXN1bmcvczNjLWNhbWlmL2NhbWlmLWNhcHR1cmUuYz0xNTM4PWludCBzM2NfY2FtaWZfY3JlYXRlX3N1YmRldihzdHJ1Y3QgY2FtaWZfZGV2ICpjYW1pZilcbi0tXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3NhbXN1bmcvczNjLWNhbWlmL2NhbWlmLWNhcHR1cmUuYy0xNTgwLVx0aWYgKGNhbWlmLVx1MDAzZXZhcmlhbnQtXHUwMDNlaGFzX2ltZ19lZmZlY3QpXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3NhbXN1bmcvczNjLWNhbWlmL2NhbWlmLWNhcHR1cmUuYzoxNTgxOlx0XHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDIsIFx1MDAyNmNhbWlmLVx1MDAzZWN0cmxfY29sb3JmeCxcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vc2Ftc3VuZy9zM2MtY2FtaWYvY2FtaWYtY2FwdHVyZS5jLTE1ODItXHRcdFx0ICAgICAgIFY0TDJfQ09MT1JGWF9TRVRfQ0JDUiwgZmFsc2UpO1xuLS1cbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL3ZpdmlkLWN0cmxzLmM9MTYzMT1pbnQgdml2aWRfY3JlYXRlX2NvbnRyb2xzKHN0cnVjdCB2aXZpZF9kZXYgKmRldiwgYm9vbCBzaG93X2Njc19jYXAsXG4tLVxuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtY3RybHMuYy0yMDE2LVx0aWYgKGRldi1cdTAwM2VhdXRvZ2FpbilcbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL3ZpdmlkLWN0cmxzLmM6MjAxNzpcdFx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigyLCBcdTAwMjZkZXYtXHUwMDNlYXV0b2dhaW4sIDAsIHRydWUpO1xuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtY3RybHMuYy0yMDE4LVxuLS1cbmRyaXZlcnMvbWVkaWEvdHVuZXJzL2U0MDAwLmM9NjEyPXN0YXRpYyBpbnQgZTQwMDBfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbi0tXG5kcml2ZXJzL21lZGlhL3R1bmVycy9lNDAwMC5jLTY2Mi1cdFx0XHRWNEwyX0NJRF9SRl9UVU5FUl9CQU5EV0lEVEgsIDQzMDAwMDAsIDExMDAwMDAwLCAxMDAwMDAsIDQzMDAwMDApO1xuZHJpdmVycy9tZWRpYS90dW5lcnMvZTQwMDAuYzo2NjM6XHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDIsIFx1MDAyNmRldi1cdTAwM2ViYW5kd2lkdGhfYXV0bywgMCwgZmFsc2UpO1xuZHJpdmVycy9tZWRpYS90dW5lcnMvZTQwMDAuYy02NjQtXHRkZXYtXHUwMDNlbG5hX2dhaW5fYXV0byA9IHY0bDJfY3RybF9uZXdfc3RkKFx1MDAyNmRldi1cdTAwM2VoZGwsIFx1MDAyNmU0MDAwX2N0cmxfb3BzLFxuLS1cbmRyaXZlcnMvbWVkaWEvdHVuZXJzL2U0MDAwLmMtNjY3LVx0XHRcdFY0TDJfQ0lEX1JGX1RVTkVSX0xOQV9HQUlOLCAwLCAxNSwgMSwgMTApO1xuZHJpdmVycy9tZWRpYS90dW5lcnMvZTQwMDAuYzo2Njg6XHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDIsIFx1MDAyNmRldi1cdTAwM2VsbmFfZ2Fpbl9hdXRvLCAwLCBmYWxzZSk7XG5kcml2ZXJzL21lZGlhL3R1bmVycy9lNDAwMC5jLTY2OS1cdGRldi1cdTAwM2VtaXhlcl9nYWluX2F1dG8gPSB2NGwyX2N0cmxfbmV3X3N0ZChcdTAwMjZkZXYtXHUwMDNlaGRsLCBcdTAwMjZlNDAwMF9jdHJsX29wcyxcbi0tXG5kcml2ZXJzL21lZGlhL3R1bmVycy9lNDAwMC5jLTY3Mi1cdFx0XHRWNEwyX0NJRF9SRl9UVU5FUl9NSVhFUl9HQUlOLCAwLCAxLCAxLCAxKTtcbmRyaXZlcnMvbWVkaWEvdHVuZXJzL2U0MDAwLmM6NjczOlx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigyLCBcdTAwMjZkZXYtXHUwMDNlbWl4ZXJfZ2Fpbl9hdXRvLCAwLCBmYWxzZSk7XG5kcml2ZXJzL21lZGlhL3R1bmVycy9lNDAwMC5jLTY3NC1cdGRldi1cdTAwM2VpZl9nYWluX2F1dG8gPSB2NGwyX2N0cmxfbmV3X3N0ZChcdTAwMjZkZXYtXHUwMDNlaGRsLCBcdTAwMjZlNDAwMF9jdHJsX29wcyxcbi0tXG5kcml2ZXJzL21lZGlhL3R1bmVycy9lNDAwMC5jLTY3Ny1cdFx0XHRWNEwyX0NJRF9SRl9UVU5FUl9JRl9HQUlOLCAwLCA1NCwgMSwgMCk7XG5kcml2ZXJzL21lZGlhL3R1bmVycy9lNDAwMC5jOjY3ODpcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXHUwMDI2ZGV2LVx1MDAzZWlmX2dhaW5fYXV0bywgMCwgZmFsc2UpO1xuZHJpdmVycy9tZWRpYS90dW5lcnMvZTQwMDAuYy02NzktXHRkZXYtXHUwMDNlcGxsX2xvY2sgPSB2NGwyX2N0cmxfbmV3X3N0ZChcdTAwMjZkZXYtXHUwMDNlaGRsLCBcdTAwMjZlNDAwMF9jdHJsX29wcyxcbi0tXG5kcml2ZXJzL21lZGlhL3R1bmVycy9mYzI1ODAuYz01MDk9c3RhdGljIGludCBmYzI1ODBfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbi0tXG5kcml2ZXJzL21lZGlhL3R1bmVycy9mYzI1ODAuYy01NjItXHRcdFx0XHRcdCAgIDMwMDAsIDEwMDAwMDAwLCAxLCAzMDAwKTtcbmRyaXZlcnMvbWVkaWEvdHVuZXJzL2ZjMjU4MC5jOjU2MzpcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXHUwMDI2ZGV2LVx1MDAzZWJhbmR3aWR0aF9hdXRvLCAwLCBmYWxzZSk7XG5kcml2ZXJzL21lZGlhL3R1bmVycy9mYzI1ODAuYy01NjQtXHRpZiAoZGV2LVx1MDAzZWhkbC5lcnJvcikge1xuLS1cbmRyaXZlcnMvbWVkaWEvdHVuZXJzL21zaTAwMS5jPTQyMj1zdGF0aWMgaW50IG1zaTAwMV9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxuLS1cbmRyaXZlcnMvbWVkaWEvdHVuZXJzL21zaTAwMS5jLTQ1MS1cbmRyaXZlcnMvbWVkaWEvdHVuZXJzL21zaTAwMS5jOjQ1MjpcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXHUwMDI2ZGV2LVx1MDAzZWJhbmR3aWR0aF9hdXRvLCAwLCBmYWxzZSk7XG5kcml2ZXJzL21lZGlhL3R1bmVycy9tc2kwMDEuYy00NTMtXHRkZXYtXHUwMDNlbG5hX2dhaW4gPSB2NGwyX2N0cmxfbmV3X3N0ZChcdTAwMjZkZXYtXHUwMDNlaGRsLCBcdTAwMjZtc2kwMDFfY3RybF9vcHMsXG4tLVxuZHJpdmVycy9tZWRpYS91c2IvYWlyc3B5L2FpcnNweS5jPTk3MD1zdGF0aWMgaW50IGFpcnNweV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zixcbi0tXG5kcml2ZXJzL21lZGlhL3VzYi9haXJzcHkvYWlyc3B5LmMtMTA1Mi1cdFx0XHRWNEwyX0NJRF9SRl9UVU5FUl9MTkFfR0FJTiwgMCwgMTQsIDEsIDgpO1xuZHJpdmVycy9tZWRpYS91c2IvYWlyc3B5L2FpcnNweS5jOjEwNTM6XHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDIsIFx1MDAyNnMtXHUwMDNlbG5hX2dhaW5fYXV0bywgMCwgZmFsc2UpO1xuZHJpdmVycy9tZWRpYS91c2IvYWlyc3B5L2FpcnNweS5jLTEwNTQtXHRzLVx1MDAzZW1peGVyX2dhaW5fYXV0byA9IHY0bDJfY3RybF9uZXdfc3RkKFx1MDAyNnMtXHUwMDNlaGRsLCBcdTAwMjZhaXJzcHlfY3RybF9vcHMsXG4tLVxuZHJpdmVycy9tZWRpYS91c2IvYWlyc3B5L2FpcnNweS5jLTEwNTctXHRcdFx0VjRMMl9DSURfUkZfVFVORVJfTUlYRVJfR0FJTiwgMCwgMTUsIDEsIDgpO1xuZHJpdmVycy9tZWRpYS91c2IvYWlyc3B5L2FpcnNweS5jOjEwNTg6XHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDIsIFx1MDAyNnMtXHUwMDNlbWl4ZXJfZ2Fpbl9hdXRvLCAwLCBmYWxzZSk7XG5kcml2ZXJzL21lZGlhL3VzYi9haXJzcHkvYWlyc3B5LmMtMTA1OS1cdHMtXHUwMDNlaWZfZ2FpbiA9IHY0bDJfY3RybF9uZXdfc3RkKFx1MDAyNnMtXHUwMDNlaGRsLCBcdTAwMjZhaXJzcHlfY3RybF9vcHMsXG4tLVxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvbTU2MDIvbTU2MDJfbXQ5bTExMS5jPTI3Mj1pbnQgbXQ5bTExMV9pbml0X2NvbnRyb2xzKHN0cnVjdCBzZCAqc2QpXG4tLVxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvbTU2MDIvbTU2MDJfbXQ5bTExMS5jLTMwMy1cbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL201NjAyL201NjAyX210OW0xMTEuYzozMDQ6XHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDQsIFx1MDAyNnNkLVx1MDAzZWF1dG9fd2hpdGVfYmFsLCAwLCBmYWxzZSk7XG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9tNTYwMi9tNTYwMl9tdDltMTExLmMtMzA1LVx0djRsMl9jdHJsX2NsdXN0ZXIoMiwgXHUwMDI2c2QtXHUwMDNlaGZsaXApO1xuLS1cbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL201NjAyL201NjAyX292NzY2MC5jPTI3Mz1pbnQgb3Y3NjYwX2luaXRfY29udHJvbHMoc3RydWN0IHNkICpzZClcbi0tXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9tNTYwMi9tNTYwMl9vdjc2NjAuYy0yOTktXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9tNTYwMi9tNTYwMl9vdjc2NjAuYzozMDA6XHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDIsIFx1MDAyNnNkLVx1MDAzZWF1dG9nYWluLCAwLCBmYWxzZSk7XG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9tNTYwMi9tNTYwMl9vdjc2NjAuYy0zMDEtXHR2NGwyX2N0cmxfY2x1c3RlcigyLCBcdTAwMjZzZC1cdTAwM2VoZmxpcCk7XG4tLVxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvbTU2MDIvbTU2MDJfb3Y5NjUwLmM9MzY1PWludCBvdjk2NTBfaW5pdF9jb250cm9scyhzdHJ1Y3Qgc2QgKnNkKVxuLS1cbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL201NjAyL201NjAyX292OTY1MC5jLTQwMS1cbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL201NjAyL201NjAyX292OTY1MC5jOjQwMjpcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMywgXHUwMDI2c2QtXHUwMDNlYXV0b193aGl0ZV9iYWwsIDAsIGZhbHNlKTtcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL201NjAyL201NjAyX292OTY1MC5jOjQwMzpcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXHUwMDI2c2QtXHUwMDNlYXV0b2V4cG8sIDAsIGZhbHNlKTtcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL201NjAyL201NjAyX292OTY1MC5jOjQwNDpcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXHUwMDI2c2QtXHUwMDNlYXV0b2dhaW4sIDAsIGZhbHNlKTtcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL201NjAyL201NjAyX292OTY1MC5jLTQwNS1cdHY0bDJfY3RybF9jbHVzdGVyKDIsIFx1MDAyNnNkLVx1MDAzZWhmbGlwKTtcbi0tXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9tNTYwMi9tNTYwMl9wbzEwMzAuYz0yMzc9aW50IHBvMTAzMF9pbml0X2NvbnRyb2xzKHN0cnVjdCBzZCAqc2QpXG4tLVxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvbTU2MDIvbTU2MDJfcG8xMDMwLmMtMjcyLVxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvbTU2MDIvbTU2MDJfcG8xMDMwLmM6MjczOlx0djRsMl9jdHJsX2F1dG9fY2x1c3Rlcig0LCBcdTAwMjZzZC1cdTAwM2VhdXRvX3doaXRlX2JhbCwgMCwgZmFsc2UpO1xuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvbTU2MDIvbTU2MDJfcG8xMDMwLmM6Mjc0Olx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigyLCBcdTAwMjZzZC1cdTAwM2VhdXRvZXhwbywgMCwgZmFsc2UpO1xuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvbTU2MDIvbTU2MDJfcG8xMDMwLmMtMjc1LVx0djRsMl9jdHJsX2NsdXN0ZXIoMiwgXHUwMDI2c2QtXHUwMDNlaGZsaXApO1xuLS1cbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL253ODB4LmM9MTk5OT1zdGF0aWMgaW50IHNkX2luaXRfY29udHJvbHMoc3RydWN0IGdzcGNhX2RldiAqZ3NwY2FfZGV2KVxuLS1cbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL253ODB4LmMtMjAzNy1cdGlmIChnc3BjYV9kZXYtXHUwMDNlYXV0b2dhaW4pXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9udzgweC5jOjIwMzg6XHRcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMywgXHUwMDI2Z3NwY2FfZGV2LVx1MDAzZWF1dG9nYWluLCAwLCBmYWxzZSk7XG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9udzgweC5jLTIwMzktXHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9vdjUxOS5jPTQ4ODE9c3RhdGljIGludCBzZF9pbml0X2NvbnRyb2xzKHN0cnVjdCBnc3BjYV9kZXYgKmdzcGNhX2Rldilcbi0tXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9vdjUxOS5jLTQ5NDMtXHRpZiAoZ3NwY2FfZGV2LVx1MDAzZWF1dG9nYWluKVxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2Evb3Y1MTkuYzo0OTQ0Olx0XHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDMsIFx1MDAyNmdzcGNhX2Rldi1cdTAwM2VhdXRvZ2FpbiwgMCwgdHJ1ZSk7XG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9vdjUxOS5jLTQ5NDUtXHRpZiAoc2QtXHUwMDNlYXV0b2JyaWdodClcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL292NTE5LmM6NDk0NjpcdFx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigyLCBcdTAwMjZzZC1cdTAwM2VhdXRvYnJpZ2h0LCAwLCBmYWxzZSk7XG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9vdjUxOS5jLTQ5NDctXHRpZiAoc2QtXHUwMDNlaGZsaXApXG4tLVxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2Evb3Y1MzQuYz0xMjA0PXN0YXRpYyBpbnQgc2RfaW5pdF9jb250cm9scyhzdHJ1Y3QgZ3NwY2FfZGV2ICpnc3BjYV9kZXYpXG4tLVxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2Evb3Y1MzQuYy0xMzAzLVx0aWYgKHNkLVx1MDAzZXNlbnNvciA9PSBTRU5TT1JfT1Y3NzJ4KVxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2Evb3Y1MzQuYzoxMzA0Olx0XHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDIsIFx1MDAyNnNkLVx1MDAzZWF1dG9nYWluLCAwLCB0cnVlKTtcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL292NTM0LmMtMTMwNS1cbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL292NTM0LmM6MTMwNjpcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXHUwMDI2c2QtXHUwMDNlYXV0b2V4cG9zdXJlLCBWNEwyX0VYUE9TVVJFX01BTlVBTCxcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL292NTM0LmMtMTMwNy1cdFx0XHQgICAgICAgdHJ1ZSk7XG4tLVxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2Evb3Y1MzRfOS5jPTE3NDA9c3RhdGljIGludCBzZF9pbml0X2NvbnRyb2xzKHN0cnVjdCBnc3BjYV9kZXYgKmdzcGNhX2Rldilcbi0tXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9vdjUzNF85LmMtMTc3MC1cdFx0XHRWNEwyX0NJRF9QT1dFUl9MSU5FX0ZSRVFVRU5DWV82MEhaLCAwLCAwKTtcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL292NTM0XzkuYzoxNzcxOlx0XHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDMsIFx1MDAyNmdzcGNhX2Rldi1cdTAwM2VhdXRvZ2FpbiwgMCwgZmFsc2UpO1xuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2Evb3Y1MzRfOS5jLTE3NzItXHR9XG4tLVxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvcGFjMjA3LmM9MjQ1PXN0YXRpYyBpbnQgc2RfaW5pdF9jb250cm9scyhzdHJ1Y3QgZ3NwY2FfZGV2ICpnc3BjYV9kZXYpXG4tLVxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvcGFjMjA3LmMtMjcwLVx0fVxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvcGFjMjA3LmM6MjcxOlx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigzLCBcdTAwMjZnc3BjYV9kZXYtXHUwMDNlYXV0b2dhaW4sIDAsIGZhbHNlKTtcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3BhYzIwNy5jLTI3Mi1cdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3BhYzczMDIuYz02MzE9c3RhdGljIGludCBzZF9pbml0X2NvbnRyb2xzKHN0cnVjdCBnc3BjYV9kZXYgKmdzcGNhX2Rldilcbi0tXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9wYWM3MzAyLmMtNjgyLVx0djRsMl9jdHJsX2NsdXN0ZXIoMiwgXHUwMDI2c2QtXHUwMDNlYnJpZ2h0bmVzcyk7XG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9wYWM3MzAyLmM6NjgzOlx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigzLCBcdTAwMjZnc3BjYV9kZXYtXHUwMDNlYXV0b2dhaW4sIDAsIGZhbHNlKTtcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3BhYzczMDIuYy02ODQtXHR2NGwyX2N0cmxfY2x1c3RlcigyLCBcdTAwMjZzZC1cdTAwM2VoZmxpcCk7XG4tLVxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvcGFjNzMxMS5jPTQwMT1zdGF0aWMgaW50IHNkX2luaXRfY29udHJvbHMoc3RydWN0IGdzcGNhX2RldiAqZ3NwY2FfZGV2KVxuLS1cbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3BhYzczMTEuYy00MjYtXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9wYWM3MzExLmM6NDI3Olx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigzLCBcdTAwMjZnc3BjYV9kZXYtXHUwMDNlYXV0b2dhaW4sIDAsIGZhbHNlKTtcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3BhYzczMTEuYy00MjgtXHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9zbjljMjB4LmM9MTcyMj1zdGF0aWMgaW50IHNkX2luaXRfY29udHJvbHMoc3RydWN0IGdzcGNhX2RldiAqZ3NwY2FfZGV2KVxuLS1cbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3NuOWMyMHguYy0xNzkxLVx0XHRcdCAgIGJlY2F1c2Ugc2QtXHUwMDNlZXhwb3N1cmUgPT0gTlVMTC4gKi9cbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3NuOWMyMHguYzoxNzkyOlx0XHRcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMywgXHUwMDI2c2QtXHUwMDNlYXV0b2dhaW4sIDAsIGZhbHNlKTtcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3NuOWMyMHguYy0xNzkzLVx0XHRlbHNlXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9zbjljMjB4LmMtMTc5NC1cdFx0XHQvKiBPdGhlcndpc2UgYXV0b2dhaW4gaXMgY2x1c3RlcmVkIHdpdGggZXhwb3N1cmUuICovXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9zbjljMjB4LmM6MTc5NTpcdFx0XHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDIsIFx1MDAyNnNkLVx1MDAzZWF1dG9nYWluLCAwLCBmYWxzZSk7XG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9zbjljMjB4LmMtMTc5Ni1cdH1cbi0tXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9zb25peGIuYz05OTg9c3RhdGljIGludCBzZF9pbml0X2NvbnRyb2xzKHN0cnVjdCBnc3BjYV9kZXYgKmdzcGNhX2Rldilcbi0tXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9zb25peGIuYy0xMDgxLVx0aWYgKGdzcGNhX2Rldi1cdTAwM2VhdXRvZ2FpbilcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3Nvbml4Yi5jOjEwODI6XHRcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMywgXHUwMDI2Z3NwY2FfZGV2LVx1MDAzZWF1dG9nYWluLCAwLCBmYWxzZSk7XG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9zb25peGIuYy0xMDgzLVxuLS1cbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3Nvbml4ai5jPTE2MTc9c3RhdGljIGludCBzZF9pbml0X2NvbnRyb2xzKHN0cnVjdCBnc3BjYV9kZXYgKmdzcGNhX2Rldilcbi0tXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9zb25peGouYy0xNjg2LVx0XHR2NGwyX2N0cmxfY2x1c3RlcigyLCBcdTAwMjZzZC1cdTAwM2V2ZmxpcCk7XG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9zb25peGouYzoxNjg3Olx0XHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDMsIFx1MDAyNmdzcGNhX2Rldi1cdTAwM2VhdXRvZ2FpbiwgMCwgZmFsc2UpO1xuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2Evc29uaXhqLmMtMTY4OC1cdH1cbi0tXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9zdHYwNnh4L3N0djA2eHhfcGIwMTAwLmM9MTA2PXN0YXRpYyBpbnQgcGIwMTAwX2luaXRfY29udHJvbHMoc3RydWN0IHNkICpzZClcbi0tXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9zdHYwNnh4L3N0djA2eHhfcGIwMTAwLmMtMTUwLVx0c2QtXHUwMDNlc2Vuc29yX3ByaXYgPSBjdHJscztcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3N0djA2eHgvc3R2MDZ4eF9wYjAxMDAuYzoxNTE6XHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDUsIFx1MDAyNmN0cmxzLVx1MDAzZWF1dG9nYWluLCAwLCBmYWxzZSk7XG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9zdHYwNnh4L3N0djA2eHhfcGIwMTAwLmMtMTUyLVx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvdDYxMy5jPTk0NT1zdGF0aWMgaW50IHNkX2luaXRfY29udHJvbHMoc3RydWN0IGdzcGNhX2RldiAqZ3NwY2FfZGV2KVxuLS1cbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3Q2MTMuYy05OTQtXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS90NjEzLmM6OTk1Olx0djRsMl9jdHJsX2F1dG9fY2x1c3Rlcig0LCBcdTAwMjZzZC1cdTAwM2Vhd2IsIDAsIHRydWUpO1xuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvdDYxMy5jLTk5Ni1cbi0tXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS90b3Byby5jPTQ4Nzk9c3RhdGljIGludCBzZF9pbml0X2NvbnRyb2xzKHN0cnVjdCBnc3BjYV9kZXYgKmdzcGNhX2Rldilcbi0tXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS90b3Byby5jLTQ5MTgtXHRpZiAoZ3NwY2FfZGV2LVx1MDAzZWF1dG9nYWluKVxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvdG9wcm8uYzo0OTE5Olx0XHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDMsIFx1MDAyNmdzcGNhX2Rldi1cdTAwM2VhdXRvZ2FpbiwgMCwgZmFsc2UpO1xuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvdG9wcm8uYy00OTIwLVx0ZWxzZVxuLS1cbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3pjM3h4LmM9NjQxNT1zdGF0aWMgaW50IHNkX2luaXRfY29udHJvbHMoc3RydWN0IGdzcGNhX2RldiAqZ3NwY2FfZGV2KVxuLS1cbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3pjM3h4LmMtNjQ3NC1cdGlmIChzZC1cdTAwM2VzZW5zb3IgPT0gU0VOU09SX0hWNzEzMVIgfHwgc2QtXHUwMDNlc2Vuc29yID09IFNFTlNPUl9PVjc2MjApXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS96YzN4eC5jOjY0NzU6XHRcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXHUwMDI2c2QtXHUwMDNlYXV0b2dhaW4sIDAsIHRydWUpO1xuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvemMzeHguYy02NDc2LVx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9tZWRpYS91c2IvaGFja3JmL2hhY2tyZi5jPTEzNDQ9c3RhdGljIGludCBoYWNrcmZfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXG4tLVxuZHJpdmVycy9tZWRpYS91c2IvaGFja3JmL2hhY2tyZi5jLTE0MjktXHRcdDE3NTAwMDAsIDI4MDAwMDAwLCA1MDAwMCwgMTc1MDAwMCk7XG5kcml2ZXJzL21lZGlhL3VzYi9oYWNrcmYvaGFja3JmLmM6MTQzMDpcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXHUwMDI2ZGV2LVx1MDAzZXJ4X2JhbmR3aWR0aF9hdXRvLCAwLCBmYWxzZSk7XG5kcml2ZXJzL21lZGlhL3VzYi9oYWNrcmYvaGFja3JmLmMtMTQzMS1cdGRldi1cdTAwM2VyeF9yZl9nYWluID0gdjRsMl9jdHJsX25ld19zdGQoXHUwMDI2ZGV2LVx1MDAzZXJ4X2N0cmxfaGFuZGxlcixcbi0tXG5kcml2ZXJzL21lZGlhL3VzYi9oYWNrcmYvaGFja3JmLmMtMTQ1Mi1cdFx0MTc1MDAwMCwgMjgwMDAwMDAsIDUwMDAwLCAxNzUwMDAwKTtcbmRyaXZlcnMvbWVkaWEvdXNiL2hhY2tyZi9oYWNrcmYuYzoxNDUzOlx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigyLCBcdTAwMjZkZXYtXHUwMDNldHhfYmFuZHdpZHRoX2F1dG8sIDAsIGZhbHNlKTtcbmRyaXZlcnMvbWVkaWEvdXNiL2hhY2tyZi9oYWNrcmYuYy0xNDU0LVx0ZGV2LVx1MDAzZXR4X2xuYV9nYWluID0gdjRsMl9jdHJsX25ld19zdGQoXHUwMDI2ZGV2LVx1MDAzZXR4X2N0cmxfaGFuZGxlcixcbi0tXG5kcml2ZXJzL21lZGlhL3VzYi9wd2MvcHdjLXY0bC5jPTE1MD1pbnQgcHdjX2luaXRfY29udHJvbHMoc3RydWN0IHB3Y19kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9tZWRpYS91c2IvcHdjL3B3Yy12NGwuYy0yMDAtXHRwZGV2LVx1MDAzZWF1dG9fd2hpdGVfYmFsYW5jZSA9IHY0bDJfY3RybF9uZXdfY3VzdG9tKGhkbCwgXHUwMDI2Y2ZnLCBOVUxMKTtcbmRyaXZlcnMvbWVkaWEvdXNiL3B3Yy9wd2MtdjRsLmM6MjAxOlx0LyogY2hlY2sgYXV0byBjb250cm9scyB0byBhdm9pZCBOVUxMIGRlcmVmIGluIHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIgKi9cbmRyaXZlcnMvbWVkaWEvdXNiL3B3Yy9wd2MtdjRsLmMtMjAyLVx0aWYgKCFwZGV2LVx1MDAzZWF1dG9fd2hpdGVfYmFsYW5jZSlcbi0tXG5kcml2ZXJzL21lZGlhL3VzYi9wd2MvcHdjLXY0bC5jLTIxOC1cbmRyaXZlcnMvbWVkaWEvdXNiL3B3Yy9wd2MtdjRsLmM6MjE5Olx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigzLCBcdTAwMjZwZGV2LVx1MDAzZWF1dG9fd2hpdGVfYmFsYW5jZSwgYXdiX21hbnVhbCwgdHJ1ZSk7XG5kcml2ZXJzL21lZGlhL3VzYi9wd2MvcHdjLXY0bC5jLTIyMC1cbi0tXG5kcml2ZXJzL21lZGlhL3VzYi9wd2MvcHdjLXY0bC5jLTI2MS1cdFx0LyogQ09ERUMyOiBzZXBhcmF0ZSBhdXRvIGdhaW4gXHUwMDI2IGF1dG8gZXhwb3N1cmUgKi9cbmRyaXZlcnMvbWVkaWEvdXNiL3B3Yy9wd2MtdjRsLmM6MjYyOlx0XHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDIsIFx1MDAyNnBkZXYtXHUwMDNlYXV0b2dhaW4sIDAsIHRydWUpO1xuZHJpdmVycy9tZWRpYS91c2IvcHdjL3B3Yy12NGwuYzoyNjM6XHRcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXHUwMDI2cGRldi1cdTAwM2VleHBvc3VyZV9hdXRvLFxuZHJpdmVycy9tZWRpYS91c2IvcHdjL3B3Yy12NGwuYy0yNjQtXHRcdFx0XHQgICAgICAgVjRMMl9FWFBPU1VSRV9NQU5VQUwsIHRydWUpO1xuLS1cbmRyaXZlcnMvbWVkaWEvdXNiL3B3Yy9wd2MtdjRsLmMtMjc2LVx0XHRwZGV2LVx1MDAzZWF1dG9nYWluX2V4cG9fY2x1c3RlclsyXSA9IHBkZXYtXHUwMDNlZXhwb3N1cmU7XG5kcml2ZXJzL21lZGlhL3VzYi9wd2MvcHdjLXY0bC5jOjI3NzpcdFx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigzLCBwZGV2LVx1MDAzZWF1dG9nYWluX2V4cG9fY2x1c3RlcixcbmRyaXZlcnMvbWVkaWEvdXNiL3B3Yy9wd2MtdjRsLmMtMjc4LVx0XHRcdFx0ICAgICAgIDAsIHRydWUpO1xuLS1cbmRyaXZlcnMvbWVkaWEvdXNiL3B3Yy9wd2MtdjRsLmMtMzA2LVxuZHJpdmVycy9tZWRpYS91c2IvcHdjL3B3Yy12NGwuYzozMDc6XHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDIsIFx1MDAyNnBkZXYtXHUwMDNlYXV0b2NvbnRvdXIsIDAsIGZhbHNlKTtcbmRyaXZlcnMvbWVkaWEvdXNiL3B3Yy9wd2MtdjRsLmMtMzA4LVxuLS1cbmRyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL3Y0bDItY3RybHMtY29yZS5jPTI1NDQ9RVhQT1JUX1NZTUJPTCh2NGwyX2N0cmxfY2x1c3Rlcik7XG5kcml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwyLWN0cmxzLWNvcmUuYy0yNTQ1LVxuZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1jdHJscy1jb3JlLmM6MjU0Njp2b2lkIHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIodW5zaWduZWQgbmNvbnRyb2xzLCBzdHJ1Y3QgdjRsMl9jdHJsICoqY29udHJvbHMsXG5kcml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwyLWN0cmxzLWNvcmUuYy0yNTQ3LVx0XHRcdCAgICB1OCBtYW51YWxfdmFsLCBib29sIHNldF92b2xhdGlsZSlcbi0tXG5kcml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwyLWN0cmxzLWNvcmUuYy0yNTcxLX1cbmRyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL3Y0bDItY3RybHMtY29yZS5jOjI1NzI6RVhQT1JUX1NZTUJPTCh2NGwyX2N0cmxfYXV0b19jbHVzdGVyKTtcbmRyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL3Y0bDItY3RybHMtY29yZS5jLTI1NzMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMjE6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTUwMzYKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAxNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIENvbnRyb2wgQ2x1c3RlciBWdWxuZXJhYmlsaXRpZXMqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhlc2UgYHY0bDJfY3RybF9jbHVzdGVyYCBhbmQgYHY0bDJfY3RybF9hdXRvX2NsdXN0ZXJgIGNhbGxzLiBUaGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhhdCB0aGV5JiMzOTtyZSBiZWluZyB1c2VkIGluIGBkcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC92aXZpZC1jdHJscy5jYC4gVGhhdCYjMzk7cyB0aGUgc29mdHdhcmUtZW11bGF0ZWQsIHN1cGVyLWZ1enplZCBgdml2aWRgIGRyaXZlciwgd2hpY2ggaW5zdGFudGx5IHBpcXVlcyBteSBpbnRlcmVzdCBnaXZlbiBob3cgYWdncmVzc2l2ZSBTeXprYWxsZXIgaXMgd2l0aCBpdC4gVGhhdCYjMzk7cyBhIHByaW1lIHRhcmdldCBmb3IgcG90ZW50aWFsIGV4cGxvaXRzLgoKVGhlbiwgdGhlcmUmIzM5O3MgdGhlIHByZXNlbmNlIGluIGEgYnVuY2ggb2YgVVNCIGRyaXZlcnMg4oCTIHRoaW5ncyBsaWtlIGFpcnNweSwgaGFja3JmLCBnc3BjYSwgYW5kIHB3Yy4gVGhlIGZhY3QgdGhhdCB0aGVzZSBhcmUgcmVhY2hhYmxlIHZpYSBVU0IgZW11bGF0aW9uLCBhbmQgcG90ZW50aWFsbHkgdGhyb3VnaCByYXctZ2FkZ2V0IG9yIFN5emthbGxlciYjMzk7cyBVU0IgZnV6emluZyBjYXBhYmlsaXRpZXMsIGp1c3Qgc29saWRpZmllcyB0aGUgaW1wb3J0YW5jZSBvZiBjaGVja2luZyB0aGVtIG91dC4gVVNCIGlzIGFsd2F5cyBhIGdyZWF0IGF2ZW51ZSBmb3IgYXR0YWNraW5nIGRyaXZlcnMuCgpTbywgd2hlcmUgdG8gc3RhcnQ/IEkgdGhpbmsgSSYjMzk7bGwgemVybyBpbiBvbiBgdml2aWRgIGZpcnN0LiBJdCYjMzk7cyB0aGUgbW9zdCBleHBsaWNpdGx5IG1lbnRpb25lZCBhbmQgd2VsbC1mdXp6ZWQgZXhhbXBsZSwgc28gaXQgc2hvdWxkIGJlIGEgZ29vZCBzdGFydGluZyBwb2ludC4gSSBzaG91bGQgcHJvYmFibHkgYWxzbyBkbyBhIHF1aWNrIGF1ZGl0IG9mIHRoZSBLY29uZmlnIG9wdGlvbnMgZm9yIGB2aXZpZGAgYW5kIGZvciBhbnl0aGluZyByZWxhdGVkIHRvIGB2NGwyLWN0cmxzLWNvcmUuY2AgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3VidGxlIGNvbmZpZ3VyYXRpb24gdnVsbmVyYWJpbGl0aWVzIHRoYXQgbWF5IGV4cG9zZSBhdHRhY2sgc3VyZmFjZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMjE6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7djRsMi1jdHJscy1jb3JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL3Y0bDItY29yZS9NYWtlZmlsZT0xMT12aWRlb2Rldi1vYmpzXHQ6PVx0djRsMi1kZXYubyB2NGwyLWlvY3RsLm8gdjRsMi1kZXZpY2UubyB2NGwyLWZoLm8gXFxcbmRyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL01ha2VmaWxlLTEyLVx0XHRcdHY0bDItZXZlbnQubyB2NGwyLXN1YmRldi5vIHY0bDItY29tbW9uLm8gXFxcbmRyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL01ha2VmaWxlOjEzOlx0XHRcdHY0bDItY3RybHMtY29yZS5vIHY0bDItY3RybHMtYXBpLm8gXFxcbmRyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL01ha2VmaWxlLTE0LVx0XHRcdHY0bDItY3RybHMtcmVxdWVzdC5vIHY0bDItY3RybHMtZGVmcy5vXG4tLVxuZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1jdHJscy1wcml2Lmg9NDU9c3RhdGljIGlubGluZSB1MzIgdXNlcl9mbGFncyhjb25zdCBzdHJ1Y3QgdjRsMl9jdHJsICpjdHJsKVxuLS1cbmRyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL3Y0bDItY3RybHMtcHJpdi5oLTU0LVxuZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1jdHJscy1wcml2Lmg6NTU6LyogdjRsMi1jdHJscy1jb3JlLmMgKi9cbmRyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL3Y0bDItY3RybHMtcHJpdi5oLTU2LXZvaWQgY3VyX3RvX25ldyhzdHJ1Y3QgdjRsMl9jdHJsICpjdHJsKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAyMTo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTg3NQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDUxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHdoYXQgeW91JiMzOTtyZSBhc2tpbmcsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgdGhlIEJ1aWxkIENvbmZpZ3VyYXRpb24gZm9yIGB2aWRlb2RldmAqKgoKT2theSwgc28gd2UgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgYHZpZGVvZGV2YCBtb2R1bGUsIHNwZWNpZmljYWxseSwgaXMgYmVpbmcgYnVpbHQuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIHRoZSBvYnZpb3VzIHBsYWNlczogdGhlIGBNYWtlZmlsZWAgYW5kIGBLY29uZmlnYCBmaWxlcyB0aGF0IGFyZSBkaXJlY3RseSBpbnZvbHZlZCB3aXRoIHRoZSBWNEwyIGNvcmUuIE1vcmUgc3BlY2lmaWNhbGx5LCBJJiMzOTtsbCBiZSBsb29raW5nIGF0OgoKKiAgIFRoZSBgTWFrZWZpbGVgIGxvY2F0ZWQgaW4gYGRyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL01ha2VmaWxlYC4gVGhpcyBpcyB3aGVyZSBJIHdvdWxkIGV4cGVjdCB0byBmaW5kIHRoZSBydWxlcyB0aGF0IGRlZmluZSB0aGUgY29tcGlsYXRpb24gYW5kIGxpbmtpbmcgcHJvY2Vzcywgc3BlY2lmeWluZyBzb3VyY2UgZmlsZXMsIG9iamVjdCBmaWxlcywgYW5kIGRlcGVuZGVuY2llcyBpbnZvbHZlZCBpbiBjcmVhdGluZyBgdmlkZW9kZXZgLgoqICAgVGhlIGBLY29uZmlnYCBmaWxlcywgZXNwZWNpYWxseSBgZHJpdmVycy9tZWRpYS9LY29uZmlnYCBhbmQgYGRyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL0tjb25maWdgLiBUaGVzZSBhcmUgY3J1Y2lhbCwgYXMgdGhleSBkZXNjcmliZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgY29udHJvbCB3aGV0aGVyIGB2aWRlb2RldmAgaXMgYnVpbHQgYXMgYSBtb2R1bGUsIGJ1aWx0LWluLCBvciBjb21wbGV0ZWx5IG9taXR0ZWQgYmFzZWQgb24ga2VybmVsIGNvbmZpZ3VyYXRpb24uIEkmIzM5O2xsIG5lZWQgdG8gdHJhY2UgdGhlIGRlcGVuZGVuY2llcyB0aHJvdWdoIHRoZXNlIEtjb25maWcgZmlsZXMgdG8gc2VlIGV4YWN0bHkgd2hhdCBvdGhlciBvcHRpb25zIGluZmx1ZW5jZSB0aGUgZmluYWwgb3V0Y29tZS4gSSYjMzk7bGwgcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgc3ltYm9scyB0aGF0IHJlbGF0ZSB0byBgdmlkZW9kZXZgIGFuZCBpdHMgZGVwZW5kZW5jaWVzIG9uIG90aGVyIG1vZHVsZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDIxOjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvTWFrZWZpbGUmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0I1xuICAgMzpcdCMgTWFrZWZpbGUgZm9yIHRoZSBWNEwyIGNvcmVcbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0Y2NmbGFncy15ICYjNDM7PSAtSSQoc3JjdHJlZSkvZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzXG4gICA3Olx0Y2NmbGFncy15ICYjNDM7PSAtSSQoc3JjdHJlZSkvZHJpdmVycy9tZWRpYS90dW5lcnNcbiAgIDg6XHRcbiAgIDk6XHR0dW5lci1vYmpzXHQ6PVx0dHVuZXItY29yZS5vXG4gIDEwOlx0XG4gIDExOlx0dmlkZW9kZXYtb2Jqc1x0Oj1cdHY0bDItZGV2Lm8gdjRsMi1pb2N0bC5vIHY0bDItZGV2aWNlLm8gdjRsMi1maC5vIFxcXG4gIDEyOlx0XHRcdFx0djRsMi1ldmVudC5vIHY0bDItc3ViZGV2Lm8gdjRsMi1jb21tb24ubyBcXFxuICAxMzpcdFx0XHRcdHY0bDItY3RybHMtY29yZS5vIHY0bDItY3RybHMtYXBpLm8gXFxcbiAgMTQ6XHRcdFx0XHR2NGwyLWN0cmxzLXJlcXVlc3QubyB2NGwyLWN0cmxzLWRlZnMub1xuICAxNTpcdFxuICAxNjpcdCMgUGxlYXNlIGtlZXAgaXQgYWxwaGFiZXRpY2FsbHkgc29ydGVkIGJ5IEtjb25maWcgbmFtZVxuICAxNzpcdCMgKGUuIGcuIExDX0FMTD1DIHNvcnQgTWFrZWZpbGUpXG4gIDE4Olx0dmlkZW9kZXYtJChDT05GSUdfQ09NUEFUKSAmIzQzOz0gdjRsMi1jb21wYXQtaW9jdGwzMi5vXG4gIDE5Olx0dmlkZW9kZXYtJChDT05GSUdfTUVESUFfQ09OVFJPTExFUikgJiM0Mzs9IHY0bDItbWMub1xuICAyMDpcdHZpZGVvZGV2LSQoQ09ORklHX1NQSSkgJiM0Mzs9IHY0bDItc3BpLm9cbiAgMjE6XHR2aWRlb2Rldi0kKENPTkZJR19UUkFDRVBPSU5UUykgJiM0Mzs9IHY0bDItdHJhY2Uub1xuICAyMjpcdHZpZGVvZGV2LSQoQ09ORklHX1ZJREVPX1Y0TDJfSTJDKSAmIzQzOz0gdjRsMi1pMmMub1xuICAyMzpcdFxuICAyNDpcdCMgUGxlYXNlIGtlZXAgaXQgYWxwaGFiZXRpY2FsbHkgc29ydGVkIGJ5IEtjb25maWcgbmFtZVxuICAyNTpcdCMgKGUuIGcuIExDX0FMTD1DIHNvcnQgTWFrZWZpbGUpXG4gIDI2Olx0XG4gIDI3Olx0b2JqLSQoQ09ORklHX1Y0TDJfQVNZTkMpICYjNDM7PSB2NGwyLWFzeW5jLm9cbiAgMjg6XHRvYmotJChDT05GSUdfVjRMMl9DQ0kpICYjNDM7PSB2NGwyLWNjaS5vXG4gIDI5Olx0b2JqLSQoQ09ORklHX1Y0TDJfRkxBU0hfTEVEX0NMQVNTKSAmIzQzOz0gdjRsMi1mbGFzaC1sZWQtY2xhc3Mub1xuICAzMDpcdG9iai0kKENPTkZJR19WNEwyX0ZXTk9ERSkgJiM0Mzs9IHY0bDItZndub2RlLm9cbiAgMzE6XHRvYmotJChDT05GSUdfVjRMMl9IMjY0KSAmIzQzOz0gdjRsMi1oMjY0Lm9cbiAgMzI6XHRvYmotJChDT05GSUdfVjRMMl9JU1ApICYjNDM7PSB2NGwyLWlzcC5vXG4gIDMzOlx0b2JqLSQoQ09ORklHX1Y0TDJfSlBFR19IRUxQRVIpICYjNDM7PSB2NGwyLWpwZWcub1xuICAzNDpcdG9iai0kKENPTkZJR19WNEwyX01FTTJNRU1fREVWKSAmIzQzOz0gdjRsMi1tZW0ybWVtLm9cbiAgMzU6XHRvYmotJChDT05GSUdfVjRMMl9WUDkpICYjNDM7PSB2NGwyLXZwOS5vXG4gIDM2Olx0XG4gIDM3Olx0b2JqLSQoQ09ORklHX1ZJREVPX1RVTkVSKSAmIzQzOz0gdHVuZXIub1xuICAzODpcdG9iai0kKENPTkZJR19WSURFT19ERVYpICYjNDM7PSB2NGwyLWR2LXRpbWluZ3MubyB2aWRlb2Rldi5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDIxOjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3MDc0CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIHRoZSBWaWRlbyBEZXZpY2UgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBidWlsZCBydWxlOiBgb2JqLSQoQ09ORklHX1ZJREVPX0RFVikgJiM0Mzs9IHY0bDItZHYtdGltaW5ncy5vIHZpZGVvZGV2Lm9gLiBUaGlzIHRlbGxzIG1lIHRoYXQgdGhlIG9iamVjdCBmaWxlcyBgdjRsMi1kdi10aW1pbmdzLm9gIGFuZCBgdmlkZW9kZXYub2Agd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgYnVpbGQsIGJ1dCBvbmx5IGlmIGEgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb24sIGBDT05GSUdfVklERU9fREVWYCwgaXMgZW5hYmxlZC4gTmF0dXJhbGx5LCBteSBuZXh0IHN0ZXAgaXMgdG8gZmlndXJlIG91dCB3aGF0IGBWSURFT19ERVZgIGFjdHVhbGx5ICptZWFucyouIFRvIHVuZGVyc3RhbmQgaXRzIGltcGxpY2F0aW9ucywgSSBuZWVkIHRvIHRyYWNlIGJhY2sgYW5kIGZpbmQgaXRzIGRlZmluaXRpb24gd2l0aGluIHRoZSBLY29uZmlnIGZpbGVzLiBUaGlzIHdpbGwgc2hlZCBsaWdodCBvbiB0aGUgcHVycG9zZSBvZiB0aGVzZSB2aWRlby1yZWxhdGVkIG1vZHVsZXMsIHdoaWNoIGhhcmR3YXJlIG9yIGZlYXR1cmVzIHRoZXkgc3VwcG9ydCwgYW5kIHVuZGVyIHdoYXQgY29uZGl0aW9ucyB0aGV5JiMzOTtyZSBpbmNsdWRlZCBpbiB0aGUga2VybmVsIGltYWdlLiBVbHRpbWF0ZWx5LCBJIG5lZWQgYSBjbGVhcmVyIHBpY3R1cmUgb2Ygd2hlbiBhbmQgd2h5IHRoZXNlIHNwZWNpZmljIG9iamVjdCBmaWxlcyBhcmUgYmVpbmcgYnVpbHQuIExldCYjMzk7cyBzZWUgd2hhdCBLY29uZmlnIGhhcyB0byBzYXkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDIxOjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBWSURFT19ERVZcXGImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvS2NvbmZpZz0xNTc9bWVudSBcJiMzNDtNZWRpYSBjb3JlIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL21lZGlhL0tjb25maWctMTU5LVxuZHJpdmVycy9tZWRpYS9LY29uZmlnOjE2MDpjb25maWcgVklERU9fREVWXG5kcml2ZXJzL21lZGlhL0tjb25maWctMTYxLVx0dHJpc3RhdGUgXCYjMzQ7VmlkZW80TGludXggY29yZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAyMTo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzQzNgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIHRoZSBzdW1tYXJ5LCByZW5kZXJlZCBhcyBhIGZpcnN0LXBlcnNvbiBhY2NvdW50IGZyb20gbXkgcGVyc3BlY3RpdmU6CgoqKkRpdmluZyBpbnRvIHRoZSBNZWRpYSBTdWJzeXN0ZW0gQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eSB3aXRoIHRoaXMgbWVkaWEtcmVsYXRlZCBpc3N1ZS4gTGV0JiMzOTtzIHN0YXJ0IGJ5IG5hdmlnYXRpbmcgdG8gYGRyaXZlcnMvbWVkaWEvS2NvbmZpZ2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgYXJvdW5kIGxpbmUgMTYwLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBjb25maWd1cmF0aW9uIG9wdGlvbnMgSSBuZWVkIHRvIGJlIGF3YXJlIG9mLiBJJiMzOTttIGVzcGVjaWFsbHkga2VlbiB0byBzZWUgaWYgc29tZXRoaW5nIGxpa2UgYE1FRElBX1NVUFBPUlRgIG9yIHNvbWV0aGluZyBzaW1pbGFyIGlzIGFsc28gcmVxdWlyZWQsIGFuZCBob3cgaXRzIHN0YXRlIGFmZmVjdHMgdGhlIG9wdGlvbnMgaW4gdGhpcyBibG9jay4gR2V0dGluZyBhIGhhbmRsZSBvbiB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHRoZXNlIGNvbmZpZ3Mgd2lsbCBiZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgcHJvYmxlbS4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBLY29uZmlnIGZpbGUgcmV2ZWFscy4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAyMTo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE0NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTQ1Olx0XHQgIGNhbiBiZSB1c2VmdWwgb24gZGVidWcgb25lcy4gVGhpcyBvcHRpb24gZW5hYmxlcyBzZXZlcmFsIGR1bW15IGRyaXZlcnNcbiAxNDY6XHRcdCAgdGhhdCBzaW11bGF0ZSByZWFsIGhhcmR3YXJlLiBWZXJ5IHVzZWZ1bCB0byB0ZXN0IHVzZXJzcGFjZVxuIDE0NzpcdFx0ICBhcHBsaWNhdGlvbnMgYW5kIHRvIHZhbGlkYXRlIGlmIHRoZSBzdWJzeXN0ZW0gY29yZSBkb2VzbiYjMzk7dFxuIDE0ODpcdFx0ICBoYXZlIHJlZ3Jlc3Npb25zLlxuIDE0OTpcdFxuIDE1MDpcdFx0ICBTYXkgWSBpZiB5b3Ugd2FudCB0byB1c2Ugc29tZSB2aXJ0dWFsIHRlc3QgZHJpdmVyLlxuIDE1MTpcdFxuIDE1MjpcdFx0ICBJbiBjYXNlIG9mIGRvdWJ0cywgc2F5IE4uXG4gMTUzOlx0XHQgIFNheSBZIHdoZW4geW91IGhhdmUgYSBzb2Z0d2FyZSBkZWZpbmVkIHJhZGlvIGRldmljZS5cbiAxNTQ6XHRlbmRtZW51ICMgbWVkaWEgZGV2aWNlIHR5cGVzXG4gMTU1Olx0XG4gMTU2Olx0XG4gMTU3Olx0bWVudSBcJiMzNDtNZWRpYSBjb3JlIHN1cHBvcnRcJiMzNDtcbiAxNTg6XHRcdHZpc2libGUgaWYgIU1FRElBX1NVUFBPUlRfRklMVEVSXG4gMTU5Olx0XG4gMTYwOlx0Y29uZmlnIFZJREVPX0RFVlxuIDE2MTpcdFx0dHJpc3RhdGUgXCYjMzQ7VmlkZW80TGludXggY29yZVwmIzM0O1xuIDE2MjpcdFx0ZGVmYXVsdCBNRURJQV9DQU1FUkFfU1VQUE9SVCB8fCBNRURJQV9BTkFMT0dfVFZfU1VQUE9SVCB8fCBNRURJQV9SQURJT19TVVBQT1JUIHx8IE1FRElBX1NEUl9TVVBQT1JUIHx8IE1FRElBX1BMQVRGT1JNX1NVUFBPUlQgfHwgTUVESUFfVEVTVF9TVVBQT1JUXG4gMTYzOlx0XHRkZXBlbmRzIG9uIChJMkMgfHwgSTJDPW4pXG4gMTY0Olx0XHRzZWxlY3QgUkFUSU9OQUxcbiAxNjU6XHRcdHNlbGVjdCBWSURFT0JVRjJfVjRMMiBpZiBWSURFT0JVRjJfQ09SRVxuIDE2NjpcdFx0aGVscFxuIDE2NzpcdFx0ICBFbmFibGVzIHRoZSBWNEwyIEFQSSwgdXNlZCBieSBjYW1lcmFzLCBhbmFsb2cgVFYsIHZpZGVvIGdyYWJiZXJzLFxuIDE2ODpcdFx0ICByYWRpbyBkZXZpY2VzIGFuZCBieSBzb21lIGlucHV0IGRldmljZXMuXG4gMTY5Olx0XG4gMTcwOlx0Y29uZmlnIE1FRElBX0NPTlRST0xMRVJcbiAxNzE6XHRcdGJvb2wgXCYjMzQ7TWVkaWEgQ29udHJvbGxlciBBUElcJiMzNDtcbiAxNzI6XHRcdGRlZmF1bHQgTUVESUFfQ0FNRVJBX1NVUFBPUlQgfHwgTUVESUFfQU5BTE9HX1RWX1NVUFBPUlQgfHwgTUVESUFfRElHSVRBTF9UVl9TVVBQT1JUIHx8IE1FRElBX1BMQVRGT1JNX1NVUFBPUlRcbiAxNzM6XHRcdGhlbHBcbiAxNzQ6XHRcdCAgRW5hYmxlIHRoZSBtZWRpYSBjb250cm9sbGVyIEFQSSB1c2VkIHRvIHF1ZXJ5IG1lZGlhIGRldmljZXMgaW50ZXJuYWxcbiAxNzU6XHRcdCAgdG9wb2xvZ3kgYW5kIGNvbmZpZ3VyZSBpdCBkeW5hbWljYWxseS5cbiAxNzY6XHRcbiAxNzc6XHRcdCAgVGhpcyBBUEkgaXMgbW9zdGx5IHVzZWQgYnkgY2FtZXJhIGludGVyZmFjZXMgaW4gZW1iZWRkZWQgcGxhdGZvcm1zLlxuIDE3ODpcdFxuIDE3OTpcdCNcbiAxODA6XHQjIERWQiBDb3JlXG4gMTgxOlx0I1x0T25seSBlbmFibGVzIGlmIG9uZSBvZiBEVFYgaXMgc2VsZWN0ZWRcbiAxODI6XHQjXG4gMTgzOlx0XG4gMTg0Olx0Y29uZmlnIERWQl9DT1JFXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDIxOjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4MjY3CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMTE2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipQYXRjaCBBbmFseXNpczogVjRMMiBDb250cm9sIENsdXN0ZXIgYW5kIEF1dG8tQ2x1c3RlciBDaGFuZ2VzIC0gV29ydGggRnV6emluZyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgZG93biB0aGlzIHBhdGNoLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZXhhbWluZSB0aGUgY29kZSBjaGFuZ2VzLCBzcGVjaWZpY2FsbHkgd2l0aGluIGB2NGwyX2N0cmxfY2x1c3RlcmAgYW5kIGB2NGwyX2N0cmxfYXV0b19jbHVzdGVyYC4KCkkgc2VlIHRoYXQgdGhlIG9yaWdpbmFsIGltcGxlbWVudGF0aW9uIG9mIGB2NGwyX2N0cmxfY2x1c3RlcmAgaGFkIGEgYFdBUk5fT05gIGNoZWNrIGZvciBgbmNvbnRyb2xzID09IDAgfHwgY29udHJvbHNbMF0gPT0gTlVMTGAuIFRoZSB1cGRhdGVkIHZlcnNpb24gaGFzIHNpbXBsaWZpZWQgdGhpcyB0byBqdXN0IGBXQVJOX09OKG5jb250cm9scyA9PSAwKWAgYW5kIHN1YnNlcXVlbnRseSBhZGRlZCBhIGNoZWNrIGZvciB0aGUgbWFzdGVyIGNvbnRyb2wgYmVpbmcgTlVMTC4gU2ltaWxhcmx5LCBpbiBgdjRsMl9jdHJsX2F1dG9fY2x1c3RlcmAsIHRoZXJlJiMzOTtzIGEgcmVmaW5lbWVudCB0byBob3cgYG1hc3RlcmAgaXMgYXNzaWduZWQsIGhhbmRsaW5nIHRoZSBjYXNlIHdoZXJlIGBuY29udHJvbHNgIG1pZ2h0IGJlIHplcm8sIG9yIGBjb250cm9sc1swXWAgaXMgTlVMTC4gVGhlcmUmIzM5O3Mgbm93IGFuIGV4cGxpY2l0IGNoZWNrOiBgaWYgKCFtYXN0ZXIpIHJldHVybjtgIHdoaWNoIGF2b2lkcyBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcy4gVGhlIG9yaWdpbmFsIGNvZGUgd2FzIHBvdGVudGlhbGx5IHZ1bG5lcmFibGUgdG8gTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyBpZiBgbmNvbnRyb2xzYCB3YXMgemVyby4KClNvLCB0aGUga2V5IHRha2Vhd2F5IGlzIHRoYXQgdGhlIHBhdGNoIHByaW1hcmlseSBpbXByb3ZlcyBlcnJvciBoYW5kbGluZyBieSBwcmV2ZW50aW5nIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIGFuZCBzaW1wbGlmeWluZyB0aGUgYFdBUk5fT05gIGNvbmRpdGlvbnMuCgpOb3csIGNvbnNpZGVyaW5nIHRoZSBwYXRjaCYjMzk7cyByZWFjaGFiaWxpdHkgYW5kIGZ1enppbmcgcG90ZW50aWFsLCBsZXQmIzM5O3MgY29uc3VsdCB0aGUgZ3VpZGVsaW5lcy4gVGhlIGdvYWwgaXMgdG8gaWRlbnRpZnkgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGFuZCBsYXRlbnQgYnVncy4gVGhlIHBhdGNoIHRvdWNoZXMgYGRyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL3Y0bDItY3RybHMtY29yZS5jYCwgd2hpY2ggaXMgY2xlYXJseSBwYXJ0IG9mIHRoZSBWNEwyIGNvcmUuIFRoaXMgaXMgc2lnbmlmaWNhbnQgYmVjYXVzZSBWNEwyIGlzIGV4cG9zZWQgdGhyb3VnaCB2YXJpb3VzIG1lY2hhbmlzbXMsIG5vdGFibHkgVVNCIGdhZGdldHMgKHJhdy1nYWRnZXQgZnV6emluZyksIGFuZCB2aXJ0dWFsIG1lZGlhIGRyaXZlcnMgc3VjaCBhcyBgdml2aWRgLiBUaGlzIG1lYW5zIHRoZSBjb2RlICppcyogcmVhY2hhYmxlIGFuZCBleGVjdXRhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhlIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYW5kIGFyZSBjYWxsZWQgZHVyaW5nIGRyaXZlciBpbml0aWFsaXphdGlvbiBhbmQgY29udHJvbCBzZXR1cCBpbiBudW1lcm91cyBWNEwyIGRyaXZlcnMsIGluY2x1ZGluZyBVU0IgdmlkZW8gY2FwdHVyZSBkZXZpY2VzLiBUaGVzZSBmdW5jdGlvbnMgYXJlIGFsc28gcGFydCBvZiB0aGUgY29yZSwgYW5kIHNvIGFueSBjaGFuZ2UgaGVyZSBpcyB2YWx1YWJsZS4gR2l2ZW4gdGhlIGNoYW5nZXMgdG8gcnVudGltZSBkZWZlbnNpdmUgY2hlY2tzIGFuZCBmbG93IGNvbnRyb2wsIGl0IHNlZW1zIGNsZWFyIHRoaXMgaXMgd29ydGggZnV6emluZy4gVGhlIHVwZGF0ZWQgZXJyb3IgaGFuZGxpbmcgdG91Y2hlcyBvbiB0aGUgJiMzNDtydW50aW1lIGFzc2VydGlvbnMgYW5kIGRlZmVuc2l2ZSBjaGVja3MmIzM0OyBjYXRlZ29yeSwgd2hpY2ggaXMgYSBiaWcgZ3JlZW4gbGlnaHQuIFRoZXJlZm9yZSwgdGhlIGFuc3dlciBpcyBgV29ydGhGdXp6aW5nID0gdHJ1ZWAuCgpOZXh0LCBsZXQmIzM5O3MgbmFpbCBkb3duIHRoZSBmb2N1cyBzeW1ib2xzLiBUaGUgcGF0Y2ggbW9kaWZpZXMgYHY0bDJfY3RybF9jbHVzdGVyYCBhbmQgYHY0bDJfY3RybF9hdXRvX2NsdXN0ZXJgIGRpcmVjdGx5LCBub3RoaW5nIGVsc2UuIFRoZXJlZm9yZSwgdGhvc2UgYXJlIG15IGZvY3VzIHN5bWJvbHMuIFRoZXNlIGFyZSBzcGVjaWZpYyBmdW5jdGlvbnMsIG5vdCB1YmlxdWl0b3VzLCBzbyB3ZSBjYW4gZGVmaW5lIHRoZW0gcHJlY2lzZWx5LgoKRmluYWxseSwgcmVnYXJkaW5nIGBFbmFibGVDb25maWdzYCwgdGhlIGNvcmUgbW9kdWxlcyB0b3VjaGVkIGJ5IHRoaXMgcGF0Y2ggYXJlIGVuYWJsZWQgYnkgYE1FRElBX1NVUFBPUlRgIGFuZCBgVklERU9fREVWYC4gTGV0JiMzOTtzIGNvbmZpcm0gYW55IHNwZWNpZmljcyByZWdhcmRpbmcgdGhlIFZpdmlkIGRyaXZlci4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayBgZHJpdmVycy9tZWRpYS9LY29uZmlnYCB0byBwaW5wb2ludCB3aGV0aGVyIGB2aXZpZGAgb3Igb3RoZXIgcmVsZXZhbnQgZHJpdmVycyByZXF1aXJlIGFkZGl0aW9uYWwgY29uZmlncy4gSSYjMzk7bSByZWFzb25hYmx5IHN1cmUgYE1FRElBX1NVUFBPUlRgIGFuZCBgVklERU9fREVWYCB3aWxsIGJlIHN1ZmZpY2llbnQsIGJ1dCBJIHdpbGwgZG91YmxlLWNoZWNrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAyMTo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZW51Y29uZmlnIE1FRElBX1NVUFBPUlQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvS2NvbmZpZz0xMD1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9tZWRpYS9jZWMvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9tZWRpYS9LY29uZmlnLTExLVxuZHJpdmVycy9tZWRpYS9LY29uZmlnOjEyOm1lbnVjb25maWcgTUVESUFfU1VQUE9SVFxuZHJpdmVycy9tZWRpYS9LY29uZmlnLTEzLVx0dHJpc3RhdGUgXCYjMzQ7TXVsdGltZWRpYSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDIxOjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMTg4CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkNoZWNraW5nIEtlcm5lbCBDb25maWd1cmF0aW9uIE9wdGlvbnMqKgoKQWxyaWdodCwgdGltZSB0byBkaXZlIGluLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGN1cnJlbnQgc3RhdGUgb2YgbWVkaWEgc3VwcG9ydCBpbiB0aGUga2VybmVsLiBMZXQmIzM5O3Mgc3RhcnQgYnkgemVyb2luZyBpbiBvbiB0aG9zZSBjb3JlIGNvbmZpZ3VyYXRpb25zLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgYE1FRElBX1NVUFBPUlRgIGFuZCBgVklERU9fREVWYCB3aXRoaW4gdGhlIGBkcml2ZXJzL21lZGlhL0tjb25maWdgIGZpbGUuIFRoYXQmIzM5O3MgdXN1YWxseSB0aGUgYmVzdCBwbGFjZSB0byBmaW5kIHRoZSBoaWdoLWxldmVsIGZsYWdzIHRoYXQgZ292ZXJuIGEgbG90IG9mIHRoZSBzdWJzeXN0ZW0mIzM5O3MgYmVoYXZpb3VyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGVzZSBhcmUgZW5hYmxlZCwgZGlzYWJsZWQsIG9yIGlmIHRoZWlyIGRlcGVuZGVuY2llcyBoYXZlIGNoYW5nZWQgc2luY2UgdGhlIGxhc3QgdGltZSBJIGxvb2tlZC4gQSBxdWljayBzY2FuIHRoZXJlIHNob3VsZCBnaXZlIG1lIHRoZSBsYXkgb2YgdGhlIGxhbmQsIHdoaWNoIHdpbGwgdGhlbiBpbmZvcm0gbXkgbmV4dCBzdGVwcy4gVGhpcyBpcyBhIHNvbGlkIHN0YXJ0aW5nIHBvaW50IGZvciBhbnkgbWVkaWEtcmVsYXRlZCBpbnZlc3RpZ2F0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAyMTo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMTA6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9tZWRpYS9jZWMvS2NvbmZpZ1wmIzM0O1xuICAxMTpcdFxuICAxMjpcdG1lbnVjb25maWcgTUVESUFfU1VQUE9SVFxuICAxMzpcdFx0dHJpc3RhdGUgXCYjMzQ7TXVsdGltZWRpYSBzdXBwb3J0XCYjMzQ7XG4gIDE0Olx0XHRkZXBlbmRzIG9uIEhBU19JT01FTVxuICAxNTpcdFx0aGVscFxuICAxNjpcdFx0ICBJZiB5b3Ugd2FudCB0byB1c2UgbWVkaWEgZGV2aWNlcywgaW5jbHVkaW5nIFdlYmNhbXMsIFZpZGVvIGdyYWJiZXJcbiAgMTc6XHRcdCAgZGV2aWNlcyBhbmQvb3IgVFYgZGV2aWNlcywgVjRMMiBjb2RlY3MsIGV0YywgZW5hYmxlIHRoaXMgb3B0aW9uXG4gIDE4Olx0XHQgIGFuZCBvdGhlciBvcHRpb25zIGJlbG93LlxuICAxOTpcdFxuICAyMDpcdFx0ICBBZGRpdGlvbmFsIGluZm8gYW5kIGRvY3MgYXJlIGF2YWlsYWJsZSBvbiB0aGUgd2ViIGF0XG4gIDIxOlx0XHQgIFx1MDAzY2h0dHBzOi8vbGludXh0di5vcmdcdTAwM2VcbiAgMjI6XHRcbiAgMjM6XHRpZiBNRURJQV9TVVBQT1JUXG4gIDI0Olx0XG4gIDI1Olx0Y29uZmlnIE1FRElBX1NVUFBPUlRfRklMVEVSXG4gIDI2Olx0XHRib29sIFwmIzM0O0ZpbHRlciBtZWRpYSBkcml2ZXJzXCYjMzQ7XG4gIDI3Olx0XHRkZWZhdWx0IHkgaWYgIUVYUEVSVFxuICAyODpcdFx0aGVscFxuICAyOTpcdFx0ICAgQ29uZmlndXJpbmcgdGhlIG1lZGlhIHN1YnN5c3RlbSBjYW4gYmUgY29tcGxleCwgYXMgdGhlcmUgYXJlXG4gIDMwOlx0XHQgICBodW5kcmVkcyBvZiBkcml2ZXJzIGFuZCBvdGhlciBjb25maWcgb3B0aW9ucy5cbiAgMzE6XHRcbiAgMzI6XHRcdCAgIFRoaXMgbWVudSBvZmZlcnMgb3B0aW9uIHRoYXQgd2lsbCBoZWxwIHRoZSBLZXJuZWwmIzM5O3MgY29uZmlnXG4gIDMzOlx0XHQgICBzeXN0ZW0gdG8gaGlkZSBkcml2ZXJzIHRoYXQgYXJlIG91dCBvZiB0aGUgc2NvcGUgb2YgdGhlXG4gIDM0Olx0XHQgICB1c2VyIG5lZWRzLCBhbmQgZGlzYWJsaW5nIGNvcmUgc3VwcG9ydCBmb3IgdW51c2VkIEFQSXMuXG4gIDM1Olx0XG4gIDM2Olx0XHQgICBJZiBub3Qgc2VsZWN0ZWQsIGFsbCBub24tb3B0aW9uYWwgbWVkaWEgY29yZSBmdW5jdGlvbmFsaXR5XG4gIDM3Olx0XHQgICBuZWVkZWQgdG8gc3VwcG9ydCBtZWRpYSBkcml2ZXJzIHdpbGwgYmUgZW5hYmxlZC4gQWxzbywgYWxsXG4gIDM4Olx0XHQgICBtZWRpYSBkZXZpY2UgZHJpdmVycyBzaG91bGQgYmUgc2hvd24uXG4gIDM5Olx0XG4gIDQwOlx0Y29uZmlnIE1FRElBX1NVQkRSVl9BVVRPU0VMRUNUXG4gIDQxOlx0XHRib29sIFwmIzM0O0F1dG9zZWxlY3QgYW5jaWxsYXJ5IGRyaXZlcnMgKHR1bmVycywgc2Vuc29ycywgaTJjLCBzcGksIGZyb250ZW5kcylcJiMzNDtcbiAgNDI6XHRcdGRlcGVuZHMgb24gSEFTX0lPTUVNXG4gIDQzOlx0XHRzZWxlY3QgSTJDXG4gIDQ0Olx0XHRzZWxlY3QgSTJDX01VWFxuICA0NTpcdFx0ZGVmYXVsdCB5IGlmIE1FRElBX1NVUFBPUlRfRklMVEVSXG4gIDQ2Olx0XHRoZWxwXG4gIDQ3Olx0XHQgIEJ5IGRlZmF1bHQsIGEgbWVkaWEgZHJpdmVyIGF1dG8tc2VsZWN0cyBhbGwgcG9zc2libGUgYW5jaWxsYXJ5XG4gIDQ4Olx0XHQgIGRldmljZXMgc3VjaCBhcyB0dW5lcnMsIHNlbnNvcnMsIHZpZGVvIGVuY29kZXJzL2RlY29kZXJzIGFuZFxuICA0OTpcdFx0ICBmcm9udGVuZHMsIHRoYXQgYXJlIHVzZWQgYnkgYW55IG9mIHRoZSBzdXBwb3J0ZWQgZGV2aWNlcy5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMjE6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA5ODgKCQkJCQkJCW91dHB1dDogMTM2CgkJCQkJCQl0aG91Z2h0czogMzU3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFY0TDIgQ29udHJvbCBDb21waWxhdGlvbioqCgpPa2F5LCBzbyBiYXNlZCBvbiB0aGUgaW5pdGlhbCBpbmZvcm1hdGlvbiwgaXQgbG9va3MgbGlrZSBgTUVESUFfU1VQUE9SVGAgYW5kIGBWSURFT19ERVZgIGFyZSB0aGUga2V5IGNvbmZpZ3VyYXRpb25zIHJlcXVpcmVkIHRvIGNvbXBpbGUgYHY0bDItY3RybHMtY29yZS5jYC4gV2UgKmNvdWxkKiBwb3RlbnRpYWxseSBjb25zaWRlciBgVklERU9fVEVTVF9EUklWRVJTYCwgYFZJREVPX1ZJVklEYCwgb3IgYFVTQl9HU1BDQWAgaWYgd2Ugd2FudGVkIHRvIGdldCBtb3JlIHNwZWNpZmljIGRyaXZlcnMgaW52b2x2ZWQsIGJ1dCB0aGUgY29yZSBmb3VuZGF0aW9uIHNlZW1zIHRvIGJlIGBNRURJQV9TVVBQT1JUYCBhbmQgYFZJREVPX0RFVmAuCgpMZXQmIzM5O3MgcXVpY2tseSB2ZXJpZnkgdGhhdCBgVklERU9fREVWYCBhY3R1YWxseSBpbmNsdWRlcyBgdjRsMi1jdHJscy1jb3JlLmNgLiBJIG5lZWQgdG8gY29uZmlybSB0aGUgYnVpbGQgcHJvY2Vzcy4gTG9va2luZyBpbiBgZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvTWFrZWZpbGVgLCBJIHNlZToKCmBvYmotJChDT05GSUdfVklERU9fREVWKSAmIzQzOz0gdjRsMi1kdi10aW1pbmdzLm8gdmlkZW9kZXYub2AKYW5kCmB2aWRlb2Rldi1vYmpzIDo9IC4uLiB2NGwyLWN0cmxzLWNvcmUubyAuLi5gCgpBbHJpZ2h0LCB0aGF0IGNvbmZpcm1zIGl0OiBlbmFibGluZyBib3RoIGBNRURJQV9TVVBQT1JUYCBhbmQgYFZJREVPX0RFVmAgd2lsbCBpbmRlZWQgY29tcGlsZSBgdmlkZW9kZXYub2AsIHdoaWNoIGluIHR1cm4gaW5jbHVkZXMgYHY0bDItY3RybHMtY29yZS5jYC4KCk5vdywgbGV0JiMzOTtzIGp1c3QgbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgbGluZXMgdXAgZnJvbSB0aGUgdHJpYWdlIHBlcnNwZWN0aXZlLiBJIG5lZWQgdG8gZG8gYSBmaW5hbCBxdWljayBjaGVjayB0byBlbnN1cmUgdGhlIGFuYWx5c2lzIGlzIHNvdW5kOgoKMS4gICoqV29ydGhGdXp6aW5nOiBUcnVlKiogLSBTb3VuZHMgZ29vZCwgdGhlIHBhdGNoIHNlZW1zIHByb21pc2luZyBmb3IgZnV6emluZy4KMi4gICoqUmVhc29uaW5nOioqIENvcnJlY3QsIGl0JiMzOTtzIG1vZGlmeWluZyB2YWxpZGF0aW9uIGFuZCBlcnJvciBoYW5kbGluZyBpbiBgdjRsMl9jdHJsX2NsdXN0ZXJgIGFuZCBgdjRsMl9jdHJsX2F1dG9fY2x1c3RlcmAsIHVzZWQgaW4gVjRMMiBkZXZpY2UgZHJpdmVycywgaW5jbHVkaW5nIHRob3NlIGFjY2Vzc2libGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgYHZpdmlkYC4KMy4gICoqRm9jdXNTeW1ib2xzOiBbJiMzNDt2NGwyX2N0cmxfY2x1c3RlciYjMzQ7LCAmIzM0O3Y0bDJfY3RybF9hdXRvX2NsdXN0ZXImIzM0O10qKiAtIFl1cCwgdGhlIGZ1bmN0aW9ucyBpZGVudGlmaWVkIGFzIHRoZSBhcmVhIG9mIGludGVyZXN0IGluIHRoZSBwYXRjaCBhcmUgdGhlIGNvcnJlY3Qgb25lcy4KNC4gICoqRW5hYmxlQ29uZmlnczogWyYjMzQ7TUVESUFfU1VQUE9SVCYjMzQ7LCAmIzM0O1ZJREVPX0RFViYjMzQ7XSoqIC0gV2UmIzM5O3ZlIHZlcmlmaWVkIHRoaXMsIHRoaXMgaXMgd2hhdCB0aGUgYW5hbHlzaXMgbGFuZGVkIG9uLgoKT2theSwgZXZlcnl0aGluZyBjaGVja3Mgb3V0LCBsZXQmIzM5O3MgY2FsbCBgc2V0LXJlc3VsdHNgLiBJJiMzOTttIGNvbmZpZGVudCBpbiB0aGVzZSBmaW5kaW5ncy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMjE6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01FRElBX1NVUFBPUlQmIzM0OywKICAgICYjMzQ7VklERU9fREVWJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7djRsMl9jdHJsX2NsdXN0ZXImIzM0OywKICAgICYjMzQ7djRsMl9jdHJsX2F1dG9fY2x1c3RlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb250cm9sIGZsb3cgYW5kIE5VTEwgY2hlY2tzIGluIHRoZSBjb3JlIFY0TDIgY29udHJvbCBjbHVzdGVyaW5nIGZ1bmN0aW9ucyAodjRsMl9jdHJsX2NsdXN0ZXIgYW5kIHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIpLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSBhbmQgZXhlcmNpc2VkIGR1cmluZyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdmFyaW91cyBWNEwyIGRyaXZlcnMsIGluY2x1ZGluZyB2aXJ0dWFsIGRyaXZlcnMgKHN1Y2ggYXMgdml2aWQpIGFuZCBlbXVsYXRlZCBVU0IgbWVkaWEgZGV2aWNlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUVESUFfU1VQUE9SVCYjMzQ7LAogICAgJiMzNDtWSURFT19ERVYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2NGwyX2N0cmxfY2x1c3RlciYjMzQ7LAogICAgJiMzNDt2NGwyX2N0cmxfYXV0b19jbHVzdGVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGNvbnRyb2wgZmxvdyBhbmQgTlVMTCBjaGVja3MgaW4gdGhlIGNvcmUgVjRMMiBjb250cm9sIGNsdXN0ZXJpbmcgZnVuY3Rpb25zICh2NGwyX2N0cmxfY2x1c3RlciBhbmQgdjRsMl9jdHJsX2F1dG9fY2x1c3RlcikuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIGFuZCBleGVyY2lzZWQgZHVyaW5nIHRoZSBpbml0aWFsaXphdGlvbiBvZiB2YXJpb3VzIFY0TDIgZHJpdmVycywgaW5jbHVkaW5nIHZpcnR1YWwgZHJpdmVycyAoc3VjaCBhcyB2aXZpZCkgYW5kIGVtdWxhdGVkIFVTQiBtZWRpYSBkZXZpY2VzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAyMTo0NjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDIxOjQ2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYHY0bDJfY3RybF9jbHVzdGVyYCBhbmQgYHY0bDJfY3RybF9hdXRvX2NsdXN0ZXJgIHRvIGdyYWNlZnVsbHkgaGFuZGxlIGNhc2VzIHdoZXJlIGBjb250cm9sc1swXWAgaXMgTlVMTCBvciBgbmNvbnRyb2xzID09IDBgLCBwcmV2ZW50aW5nIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgYW5kIHJlbW92aW5nIGFuIHVubmVjZXNzYXJ5IFdBUk5fT04uIEl0IGRvZXMgbm90IGludHJvZHVjZSwgcmVhZCwgb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIHN0YWNrIG9yIGhlYXAgbWVtb3J5LCBub3IgZG9lcyBpdCBwYXNzIHVuaW5pdGlhbGl6ZWQgZGF0YSB0byB1c2VyIHNwYWNlLiBTdGFuZGFyZCBzYW5pdGl6ZXJzIGFuZCBLQVNBTiBhcmUgc3VmZmljaWVudCB0byBkZXRlY3QgbWVtb3J5IHNhZmV0eSBpc3N1ZXMgaW4gdGhlc2UgY29udHJvbCBwYXRocy4gVGhlcmVmb3JlLCBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAwM2M1MTIwODhkZmFlMTY5ODMzMzIzMTIyZjk3MjI0MDE2YzM4Yjc5CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBTZXAgOSAyMTo0NTozNCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL3Y0bDItY3RybHMtY29yZS5jIGIvZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1jdHJscy1jb3JlLmMKaW5kZXggNWI4YTU5NGZiOWUyNC4uZTc3Y2U3YjU2ZmNhNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1jdHJscy1jb3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1jdHJscy1jb3JlLmMKQEAgLTI1MjEsOCAmIzQzOzI1MjEsMTQgQEAgdm9pZCB2NGwyX2N0cmxfY2x1c3Rlcih1bnNpZ25lZCBuY29udHJvbHMsIHN0cnVjdCB2NGwyX2N0cmwgKipjb250cm9scykKIAlib29sIGhhc192b2xhdGlsZXMgPSBmYWxzZTsKIAlpbnQgaTsKIAotCS8qIFRoZSBmaXJzdCBjb250cm9sIGlzIHRoZSBtYXN0ZXIgY29udHJvbCBhbmQgaXQgbXVzdCBub3QgYmUgTlVMTCAqLwotCWlmIChXQVJOX09OKG5jb250cm9scyA9PSAwIHx8IGNvbnRyb2xzWzBdID09IE5VTEwpKQomIzQzOwlpZiAoV0FSTl9PTihuY29udHJvbHMgPT0gMCkpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiYjNDM7CS8qCiYjNDM7CSAqIFRoZSBmaXJzdCBjb250cm9sIGlzIHRoZSBtYXN0ZXIgY29udHJvbC4gSWYgdGhpcyBpcyBOVUxMIHRoZW4KJiM0MzsJICogdGhlcmUgaXMgbm90aGluZyB0byBkby4KJiM0MzsJICovCiYjNDM7CWlmIChjb250cm9sc1swXSA9PSBOVUxMKQogCQlyZXR1cm47CiAKIAlmb3IgKGkgPSAwOyBpICZsdDsgbmNvbnRyb2xzOyBpJiM0MzsmIzQzOykgewpAQCAtMjU0MCwxMiAmIzQzOzI1NDYsMTQgQEAgRVhQT1JUX1NZTUJPTCh2NGwyX2N0cmxfY2x1c3Rlcik7CiB2b2lkIHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIodW5zaWduZWQgbmNvbnRyb2xzLCBzdHJ1Y3QgdjRsMl9jdHJsICoqY29udHJvbHMsCiAJCQkgICAgdTggbWFudWFsX3ZhbCwgYm9vbCBzZXRfdm9sYXRpbGUpCiB7Ci0Jc3RydWN0IHY0bDJfY3RybCAqbWFzdGVyID0gY29udHJvbHNbMF07CiYjNDM7CXN0cnVjdCB2NGwyX2N0cmwgKm1hc3RlciA9IG5jb250cm9scyA/IGNvbnRyb2xzWzBdIDogTlVMTDsKIAl1MzIgZmxhZyA9IDA7CiAJaW50IGk7CiAKIAl2NGwyX2N0cmxfY2x1c3RlcihuY29udHJvbHMsIGNvbnRyb2xzKTsKIAlXQVJOX09OKG5jb250cm9scyAmbHQ7PSAxKTsKJiM0MzsJaWYgKCFtYXN0ZXIpCiYjNDM7CQlyZXR1cm47CiAJV0FSTl9PTihtYW51YWxfdmFsICZsdDsgbWFzdGVyLSZndDttaW5pbXVtIHx8IG1hbnVhbF92YWwgJmd0OyBtYXN0ZXItJmd0O21heGltdW0pOwogCVdBUk5fT04oc2V0X3ZvbGF0aWxlICZhbXA7JmFtcDsgIWhhc19vcChtYXN0ZXIsIGdfdm9sYXRpbGVfY3RybCkpOwogCW1hc3Rlci0mZ3Q7aXNfYXV0byA9IHRydWU7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAyMTo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDQ1CgkJCQkJCQlvdXRwdXQ6IDUxCgkJCQkJCQl0aG91Z2h0czogNDAyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVmlkZW80TGludXggQ29udHJvbCBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGV4YW1pbmUgdGhlIG1vZGlmaWNhdGlvbnMgd2l0aGluIHRoZSBgZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1jdHJscy1jb3JlLmNgIGZpbGUuIEkgc2VlIGNoYW5nZXMgaW4gYm90aCBgdjRsMl9jdHJsX2NsdXN0ZXJgIGFuZCBgdjRsMl9jdHJsX2F1dG9fY2x1c3RlcmAsIGFuZCBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGVzZSBhbHRlcmF0aW9ucy4KCkxvb2tpbmcgYXQgYHY0bDJfY3RybF9jbHVzdGVyYCwgaXQgYXBwZWFycyB0aGUgb3JpZ2luYWwgY29kZSBoYWQgYW4gYXNzZXJ0aW9uIHJlZ2FyZGluZyB0aGUgZmlyc3QgY29udHJvbCBub3QgYmVpbmcgTlVMTC4gVGhlIG5ldyB2ZXJzaW9uIGFja25vd2xlZGdlcyB0aGF0IHRoZSBmaXJzdCBjb250cm9sIG1pZ2h0LCBpbiBmYWN0LCBiZSBOVUxMLCBhbmQgYWRqdXN0cyB0aGUgY29uZGl0aW9uYWwgZmxvdyBhY2NvcmRpbmdseS4gVGhlIG9yaWdpbmFsIGhhZDoKYGBgYwovKiBUaGUgZmlyc3QgY29udHJvbCBpcyB0aGUgbWFzdGVyIGNvbnRyb2wgYW5kIGl0IG11c3Qgbm90IGJlIE5VTEwgKi8KaWYgKFdBUk5fT04obmNvbnRyb2xzID09IDAgfHwgY29udHJvbHNbMF0gPT0gTlVMTCkpCiAgICByZXR1cm47CmBgYAoKQW5kIGl0JiMzOTtzIGJlZW4gY2hhbmdlZCB0bzoKCmBgYGMKaWYgKFdBUk5fT04obmNvbnRyb2xzID09IDApKQogICAgcmV0dXJuOwoKLyoKICogVGhlIGZpcnN0IGNvbnRyb2wgaXMgdGhlIG1hc3RlciBjb250cm9sLiBJZiB0aGlzIGlzIE5VTEwgdGhlbgogKiB0aGVyZSBpcyBub3RoaW5nIHRvIGRvLgogKi8KaWYgKGNvbnRyb2xzWzBdID09IE5VTEwpCiAgICByZXR1cm47CmBgYAoKVGhpcyBzdWdnZXN0cyBhIHJlZmluZW1lbnQgaW4gaGFuZGxpbmcgcG90ZW50aWFsbHkgZW1wdHkgY29udHJvbCBjbHVzdGVycy4gSSYjMzk7bGwgbmVlZCB0byBjb25zaWRlciBzY2VuYXJpb3Mgd2hlcmUgYSBjbHVzdGVyIG1pZ2h0IGxlZ2l0aW1hdGVseSBzdGFydCB3aXRob3V0IGEgbWFzdGVyIGNvbnRyb2wuIFRoZSBvbGRlciBhc3NlcnRpb24gd291bGQgaGF2ZSBmYWlsZWQgaWYgYGNvbnRyb2xzWzBdYCB3YXMgYE5VTExgIGV2ZW4gaWYgYG5jb250cm9sc2Agd2FzIGdyZWF0ZXIgdGhhbiAwLCB3aGlsZSB0aGUgbmV3IHZlcnNpb24gbW9yZSBleHBsaWNpdGx5IHN0YXRlcyB3aGF0IGhhcHBlbnMgaW4gdGhlIGNhc2Ugb2YgYSBgTlVMTGAgbWFzdGVyLgoKTW92aW5nIG9udG8gYHY0bDJfY3RybF9hdXRvX2NsdXN0ZXJgLCB0aGUgbW9zdCBzaWduaWZpY2FudCBjaGFuZ2UgY29uY2VybnMgdGhlIGhhbmRsaW5nIG9mIHRoZSBtYXN0ZXIgY29udHJvbCB3aXRoaW4gdGhlIGF1dG9tYXRpYyBjbHVzdGVyLiBJbiB0aGUgb2xkIGNvZGU6CmBgYGMKc3RydWN0IHY0bDJfY3RybCAqbWFzdGVyID0gY29udHJvbHNbMF07Ci4uLgp2NGwyX2N0cmxfY2x1c3RlcihuY29udHJvbHMsIGNvbnRyb2xzKTsKV0FSTl9PTihuY29udHJvbHMgJmx0Oz0gMSk7CldBUk5fT04obWFudWFsX3ZhbCAmbHQ7IG1hc3Rlci0mZ3Q7bWluaW11bSB8fCBtYW51YWxfdmFsICZndDsgbWFzdGVyLSZndDttYXhpbXVtKTsKYGBgCgpUaGUgbWFzdGVyIGNvbnRyb2wgd2FzIGFsd2F5cyBhc3N1bWVkIHRvIGV4aXN0LiBUaGUgcmV2aXNlZCBjb2RlOgoKYGBgYwpzdHJ1Y3QgdjRsMl9jdHJsICptYXN0ZXIgPSBuY29udHJvbHMgPyBjb250cm9sc1swXSA6IE5VTEw7CnUzMiBmbGFnID0gMDsKaW50IGk7Cgp2NGwyX2N0cmxfY2x1c3RlcihuY29udHJvbHMsIGNvbnRyb2xzKTsKV0FSTl9PTihuY29udHJvbHMgJmx0Oz0gMSk7CmlmICghbWFzdGVyKQogICAgcmV0dXJuOwpgYGAKCk5vdywgaXQgZXhwbGljaXRseSBjaGVja3MgaWYgYG5jb250cm9sc2AgaXMgZ3JlYXRlciB0aGFuIDAgYmVmb3JlIGFzc2lnbmluZyBgbWFzdGVyYC4gVGhpcyBpcyBhIGNydWNpYWwgaW1wcm92ZW1lbnQgYmVjYXVzZSBpdCBwcmV2ZW50cyBhIE5VTEwgZGVyZWZlcmVuY2UgaWYgdGhlIGNsdXN0ZXIgaXMgZW1wdHkgb3Igb25seSBoYXMgb25lIGNvbnRyb2wuIEl0IGFsc28gcHJvdmlkZXMgZm9yIGEgYmV0dGVyIGVhcmx5IGV4aXQuIFRoZSBzdWJzZXF1ZW50IGNoZWNrcyByZWxhdGVkIHRvIGBtYXN0ZXItJmd0O21pbmltdW1gIGFuZCBgbWFzdGVyLSZndDttYXhpbXVtYCBhcmUgbm93IGRlcGVuZGVudCBvbiBhIHZhbGlkIGBtYXN0ZXJgLgoKVG8gZnVsbHkgZ3Jhc3AgdGhlIGludGVudCBhbmQgcG90ZW50aWFsIHJhbWlmaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2UsIEkmIzM5O2xsIG5lZWQgdG8gZGVsdmUgZGVlcGVyIGludG8gdGhlIHN1cnJvdW5kaW5nIGNvZGUuIEkmIzM5O2xsIHVzZSBgcmVhZC1maWxlYCBvciBgZ3JlcHBlcmAgdG8gZXhhbWluZSB0aGUgY29udGV4dCBvZiB0aGVzZSBmdW5jdGlvbnMgd2l0aGluIGB2NGwyLWN0cmxzLWNvcmUuY2AsIGFuZCBwb3RlbnRpYWxseSB0cmFjZSB0aGUgY2FsbCBjaGFpbnMgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgY2x1c3RlcnMgYXJlIGNyZWF0ZWQgYW5kIHVzZWQuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGNhc2VzIHdoZXJlIHRoaXMgY291bGQgaW1wcm92ZSBvciBicmVhayB0aGluZ3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoeSB0aGUgb3JpZ2luYWwgYXNzdW1wdGlvbiBhYm91dCBhIG1hc3RlciBjb250cm9sIHdhcyBjaGFuZ2VkOyB3YXMgaXQgYSBidWcgZml4LCBhbiBvcHRpbWl6YXRpb24sIG9yIGEgZmVhdHVyZSBlbmhhbmNlbWVudD8gSSYjMzk7bGwgYWxzbyB3YW50IHRvIGxvb2sgYXQgd2hldGhlciB0aGlzIGhhcyBhbnkgaW1wYWN0IG9uIG90aGVyIHBhcnRzIG9mIHRoZSBkcml2ZXIsIGFuZCBlc3BlY2lhbGx5IGFueSBkZXBlbmRlbmNpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDIxOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1jdHJscy1jb3JlLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNTE1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDU1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzI1MTU6XHR9XG4yNTE2Olx0RVhQT1JUX1NZTUJPTCh2NGwyX2N0cmxfcmFkaW9fZmlsdGVyKTtcbjI1MTc6XHRcbjI1MTg6XHQvKiBDbHVzdGVyIGNvbnRyb2xzICovXG4yNTE5Olx0dm9pZCB2NGwyX2N0cmxfY2x1c3Rlcih1bnNpZ25lZCBuY29udHJvbHMsIHN0cnVjdCB2NGwyX2N0cmwgKipjb250cm9scylcbjI1MjA6XHR7XG4yNTIxOlx0XHRib29sIGhhc192b2xhdGlsZXMgPSBmYWxzZTtcbjI1MjI6XHRcdGludCBpO1xuMjUyMzpcdFxuMjUyNDpcdFx0aWYgKFdBUk5fT04obmNvbnRyb2xzID09IDApKVxuMjUyNTpcdFx0XHRyZXR1cm47XG4yNTI2Olx0XG4yNTI3Olx0XHQvKlxuMjUyODpcdFx0ICogVGhlIGZpcnN0IGNvbnRyb2wgaXMgdGhlIG1hc3RlciBjb250cm9sLiBJZiB0aGlzIGlzIE5VTEwgdGhlblxuMjUyOTpcdFx0ICogdGhlcmUgaXMgbm90aGluZyB0byBkby5cbjI1MzA6XHRcdCAqL1xuMjUzMTpcdFx0aWYgKGNvbnRyb2xzWzBdID09IE5VTEwpXG4yNTMyOlx0XHRcdHJldHVybjtcbjI1MzM6XHRcbjI1MzQ6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5jb250cm9sczsgaSYjNDM7JiM0MzspIHtcbjI1MzU6XHRcdFx0aWYgKGNvbnRyb2xzW2ldKSB7XG4yNTM2Olx0XHRcdFx0Y29udHJvbHNbaV0tXHUwMDNlY2x1c3RlciA9IGNvbnRyb2xzO1xuMjUzNzpcdFx0XHRcdGNvbnRyb2xzW2ldLVx1MDAzZW5jb250cm9scyA9IG5jb250cm9scztcbjI1Mzg6XHRcdFx0XHRpZiAoY29udHJvbHNbaV0tXHUwMDNlZmxhZ3MgXHUwMDI2IFY0TDJfQ1RSTF9GTEFHX1ZPTEFUSUxFKVxuMjUzOTpcdFx0XHRcdFx0aGFzX3ZvbGF0aWxlcyA9IHRydWU7XG4yNTQwOlx0XHRcdH1cbjI1NDE6XHRcdH1cbjI1NDI6XHRcdGNvbnRyb2xzWzBdLVx1MDAzZWhhc192b2xhdGlsZXMgPSBoYXNfdm9sYXRpbGVzO1xuMjU0MzpcdH1cbjI1NDQ6XHRFWFBPUlRfU1lNQk9MKHY0bDJfY3RybF9jbHVzdGVyKTtcbjI1NDU6XHRcbjI1NDY6XHR2b2lkIHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIodW5zaWduZWQgbmNvbnRyb2xzLCBzdHJ1Y3QgdjRsMl9jdHJsICoqY29udHJvbHMsXG4yNTQ3Olx0XHRcdFx0ICAgIHU4IG1hbnVhbF92YWwsIGJvb2wgc2V0X3ZvbGF0aWxlKVxuMjU0ODpcdHtcbjI1NDk6XHRcdHN0cnVjdCB2NGwyX2N0cmwgKm1hc3RlciA9IG5jb250cm9scyA/IGNvbnRyb2xzWzBdIDogTlVMTDtcbjI1NTA6XHRcdHUzMiBmbGFnID0gMDtcbjI1NTE6XHRcdGludCBpO1xuMjU1MjpcdFxuMjU1MzpcdFx0djRsMl9jdHJsX2NsdXN0ZXIobmNvbnRyb2xzLCBjb250cm9scyk7XG4yNTU0Olx0XHRXQVJOX09OKG5jb250cm9scyBcdTAwM2M9IDEpO1xuMjU1NTpcdFx0aWYgKCFtYXN0ZXIpXG4yNTU2Olx0XHRcdHJldHVybjtcbjI1NTc6XHRcdFdBUk5fT04obWFudWFsX3ZhbCBcdTAwM2MgbWFzdGVyLVx1MDAzZW1pbmltdW0gfHwgbWFudWFsX3ZhbCBcdTAwM2UgbWFzdGVyLVx1MDAzZW1heGltdW0pO1xuMjU1ODpcdFx0V0FSTl9PTihzZXRfdm9sYXRpbGUgXHUwMDI2XHUwMDI2ICFoYXNfb3AobWFzdGVyLCBnX3ZvbGF0aWxlX2N0cmwpKTtcbjI1NTk6XHRcdG1hc3Rlci1cdTAwM2Vpc19hdXRvID0gdHJ1ZTtcbjI1NjA6XHRcdG1hc3Rlci1cdTAwM2VoYXNfdm9sYXRpbGVzID0gc2V0X3ZvbGF0aWxlO1xuMjU2MTpcdFx0bWFzdGVyLVx1MDAzZW1hbnVhbF9tb2RlX3ZhbHVlID0gbWFudWFsX3ZhbDtcbjI1NjI6XHRcdG1hc3Rlci1cdTAwM2VmbGFncyB8PSBWNEwyX0NUUkxfRkxBR19VUERBVEU7XG4yNTYzOlx0XG4yNTY0Olx0XHRpZiAoIWlzX2N1cl9tYW51YWwobWFzdGVyKSlcbjI1NjU6XHRcdFx0ZmxhZyA9IFY0TDJfQ1RSTF9GTEFHX0lOQUNUSVZFIHxcbjI1NjY6XHRcdFx0XHQoc2V0X3ZvbGF0aWxlID8gVjRMMl9DVFJMX0ZMQUdfVk9MQVRJTEUgOiAwKTtcbjI1Njc6XHRcbjI1Njg6XHRcdGZvciAoaSA9IDE7IGkgXHUwMDNjIG5jb250cm9sczsgaSYjNDM7JiM0MzspXG4yNTY5Olx0XHRcdGlmIChjb250cm9sc1tpXSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMjE6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDUxOQoJCQkJCQkJb3V0cHV0OiAxNDQKCQkJCQkJCXRob3VnaHRzOiAzNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgVjRMMiBDb250cm9sIEZyYW1ld29yayBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBJdCBzZWVtcyB3ZSYjMzk7cmUgbG9va2luZyBhdCBhIHBhdGNoIGZvciB0aGUgVjRMMiBjb250cm9sIGZyYW1ld29yaywgc3BlY2lmaWNhbGx5IGRlYWxpbmcgd2l0aCB0aGUgYHY0bDJfY3RybF9jbHVzdGVyYCBhbmQgYHY0bDJfY3RybF9hdXRvX2NsdXN0ZXJgIGZ1bmN0aW9ucy4gVGhlc2UgYXJlIGhlbHBlciBmdW5jdGlvbnMsIHRoZSBidWlsZGluZyBibG9ja3MgZm9yIGdyb3VwaW5nIGNvbnRyb2xzIHRvZ2V0aGVyLiBUaGUgY29yZSBvZiB0aGlzIHBhdGNoIGFkZHJlc3NlcyBhIHNjZW5hcmlvIHdoZXJlIHRoZSBgY29udHJvbHNgIGFycmF5IHBhc3NlZCB0byB0aGVzZSBmdW5jdGlvbnMgaXMgZWl0aGVyIGVtcHR5IChgbmNvbnRyb2xzID09IDBgKSBvciwgY3J1Y2lhbGx5LCB0aGUgZmlyc3QgZWxlbWVudCBvZiB0aGF0IGFycmF5IGlzIGEgbnVsbCBwb2ludGVyIChgY29udHJvbHNbMF0gPT0gTlVMTGApLgoKVGhlIGNvbmNlcm4sIGFuZCB0aGUgbW90aXZhdGlvbiBmb3IgdGhpcyBwYXRjaCwgaXMgcHJldmVudGluZyBjcmFzaGVzIG9yIHVuZGVzaXJhYmxlIGJlaGF2aW9yIGluIHRoZXNlIHNpdHVhdGlvbnMuIFdoYXQgdGhlIHBhdGNoIGRvZXMgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDoKCiogICBJbiBgdjRsMl9jdHJsX2NsdXN0ZXJgLCB0aGUgZXhpc3RpbmcgYFdBUk5fT05gIGNoZWNrIGZvciBhIGBOVUxMYCBgY29udHJvbHNbMF1gIGlzIHJlbW92ZWQsIGFuZCB0aGUgZnVuY3Rpb24gbm93IHNpbXBseSByZXR1cm5zIGVhcmx5LCBncmFjZWZ1bGx5IGhhbmRsaW5nIHRoZSBjYXNlLgoqICAgSW4gYHY0bDJfY3RybF9hdXRvX2NsdXN0ZXJgLCB3aGljaCBpcyB0cmlja2llciwgaXQgZXhwbGljaXRseSBwcm90ZWN0cyBhZ2FpbnN0IHBvdGVudGlhbCBudWxsIHBvaW50ZXIgZGVyZWZlcmVuY2VzIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzLiBJdCYjMzk7cyBub3cgY2hlY2tpbmcgaWYgYG5jb250cm9scyA9PSAwYCBvciBgY29udHJvbHNbMF0gPT0gTlVMTGAgYmVmb3JlIGFjY2Vzc2luZyBtZW1iZXJzIG9mIHRoZSBgbWFzdGVyYCBjb250cm9sLgoKTm93LCB0aGUgaW1wb3J0YW50IHBhcnQ6IGRvZXMgdGhpcyBwYXRjaCBpbnRyb2R1Y2UgYW55IG5ldyByaXNrcz8gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIG5vLCBidXQgd2UgbmVlZCB0byBiZSB0aG9yb3VnaC4KCiogICBObyB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZXM6IHRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIHN0YWNrIG9yIGhlYXAgYWxsb2NhdGlvbnMgaW4gdGhpcyBwYXRjaC4KKiAgIE5vIGluZm9ybWF0aW9uIGxlYWtzOiB0aGVyZSBpcyBubyBgY29weV90b191c2VyYCBvciBhbnkgb3RoZXIgbWVhbnMgZm9yIGtlcm5lbC10by11c2VyIGluZm9ybWF0aW9uIGxlYWtzLgoqICAgTm8gcmVsaWFuY2Ugb24gdW5pbml0aWFsaXplZCBkYXRhOiB0aGVyZSBhcmUgbm8gY29uZGl0aW9uYWwgYnJhbmNoZXMgYmFzZWQgb24gdW5pbml0aWFsaXplZCBkYXRhLCBzbyB3ZSYjMzk7cmUgc2FmZSB0aGVyZS4KKiAgIEluIGZhY3QsIHRoZSBwYXRjaCYjMzk7cyBtYWluIGdvYWwgaXMgKnByZXZlbnRpbmcqIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgd2hpY2ggaXMgYSBwb3NpdGl2ZSEgVGhlc2UgdHlwZXMgb2YgZXJyb3JzIGFyZSBjb3ZlcmVkIGJ5IHN0YW5kYXJkIGtlcm5lbCBydW50aW1lIGNoZWNrcyBhbmQgS0FTQU4uCgpMZXQmIzM5O3MgZG91YmxlLWNoZWNrIGFueSBLTVNBTiBjb25jZXJucywgdGhvdWdoLiBTaW5jZSBLTVNBTiBpcyBkZXNpZ25lZCB0byBjYXRjaCB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBhbmQgbGVha3MgdG8gdXNlciBzcGFjZSwgdGhlIHBhdGNoIHNlZW1zIHNhZmUuIEtBU0FOIGFuZCBzdGFuZGFyZCBzYW5pdGl6ZXJzIGhhbmRsZSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzLCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCBhbmQgdXNlLWFmdGVyLWZyZWUgc2l0dWF0aW9ucyBhbnl3YXkuCgpJbiBjb25jbHVzaW9uLCBJIHRoaW5rIHRoaXMgcGF0Y2ggaXMgYSBzYWZlIGFuZCBjb3JyZWN0IGZpeC4gSSYjMzk7bGwgZ2V0IHJlYWR5IHRvIHByZXBhcmUgdGhlIHRvb2wgY2FsbCB0byBzZXQgdGhlIHJlc3VsdHMgdG8gJiMzOTtQQVNTJiMzOTsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDIxOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGB2NGwyX2N0cmxfY2x1c3RlcmAgYW5kIGB2NGwyX2N0cmxfYXV0b19jbHVzdGVyYCB0byBncmFjZWZ1bGx5IGhhbmRsZSBjYXNlcyB3aGVyZSBgY29udHJvbHNbMF1gIGlzIE5VTEwgb3IgYG5jb250cm9scyA9PSAwYCwgcHJldmVudGluZyBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIGFuZCByZW1vdmluZyBhbiB1bm5lY2Vzc2FyeSBXQVJOX09OLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UsIHJlYWQsIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBzdGFjayBvciBoZWFwIG1lbW9yeSwgbm9yIGRvZXMgaXQgcGFzcyB1bmluaXRpYWxpemVkIGRhdGEgdG8gdXNlciBzcGFjZS4gU3RhbmRhcmQgc2FuaXRpemVycyBhbmQgS0FTQU4gYXJlIHN1ZmZpY2llbnQgdG8gZGV0ZWN0IG1lbW9yeSBzYWZldHkgaXNzdWVzIGluIHRoZXNlIGNvbnRyb2wgcGF0aHMuIFRoZXJlZm9yZSwgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYHY0bDJfY3RybF9jbHVzdGVyYCBhbmQgYHY0bDJfY3RybF9hdXRvX2NsdXN0ZXJgIHRvIGdyYWNlZnVsbHkgaGFuZGxlIGNhc2VzIHdoZXJlIGBjb250cm9sc1swXWAgaXMgTlVMTCBvciBgbmNvbnRyb2xzID09IDBgLCBwcmV2ZW50aW5nIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgYW5kIHJlbW92aW5nIGFuIHVubmVjZXNzYXJ5IFdBUk5fT04uIEl0IGRvZXMgbm90IGludHJvZHVjZSwgcmVhZCwgb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIHN0YWNrIG9yIGhlYXAgbWVtb3J5LCBub3IgZG9lcyBpdCBwYXNzIHVuaW5pdGlhbGl6ZWQgZGF0YSB0byB1c2VyIHNwYWNlLiBTdGFuZGFyZCBzYW5pdGl6ZXJzIGFuZCBLQVNBTiBhcmUgc3VmZmljaWVudCB0byBkZXRlY3QgbWVtb3J5IHNhZmV0eSBpc3N1ZXMgaW4gdGhlc2UgY29udHJvbCBwYXRocy4gVGhlcmVmb3JlLCBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDIxOjQ1OjM1LjcwNDUzNjY1NloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwMjg4NDYyODkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1FRElBX1NVUFBPUlRcIixcbiAgICBcIlZJREVPX0RFVlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInY0bDJfY3RybF9jbHVzdGVyXCIsXG4gICAgXCJ2NGwyX2N0cmxfYXV0b19jbHVzdGVyXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgdjRsMl9jdHJsX2NsdXN0ZXJgIGFuZCBgdjRsMl9jdHJsX2F1dG9fY2x1c3RlcmAgdG8gZ3JhY2VmdWxseSBoYW5kbGUgY2FzZXMgd2hlcmUgYGNvbnRyb2xzWzBdYCBpcyBOVUxMIG9yIGBuY29udHJvbHMgPT0gMGAsIHByZXZlbnRpbmcgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyBhbmQgcmVtb3ZpbmcgYW4gdW5uZWNlc3NhcnkgV0FSTl9PTi4gSXQgZG9lcyBub3QgaW50cm9kdWNlLCByZWFkLCBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgc3RhY2sgb3IgaGVhcCBtZW1vcnksIG5vciBkb2VzIGl0IHBhc3MgdW5pbml0aWFsaXplZCBkYXRhIHRvIHVzZXIgc3BhY2UuIFN0YW5kYXJkIHNhbml0aXplcnMgYW5kIEtBU0FOIGFyZSBzdWZmaWNpZW50IHRvIGRldGVjdCBtZW1vcnkgc2FmZXR5IGlzc3VlcyBpbiB0aGVzZSBjb250cm9sIHBhdGhzLiBUaGVyZWZvcmUsIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBjb250cm9sIGZsb3cgYW5kIE5VTEwgY2hlY2tzIGluIHRoZSBjb3JlIFY0TDIgY29udHJvbCBjbHVzdGVyaW5nIGZ1bmN0aW9ucyAodjRsMl9jdHJsX2NsdXN0ZXIgYW5kIHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIpLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSBhbmQgZXhlcmNpc2VkIGR1cmluZyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdmFyaW91cyBWNEwyIGRyaXZlcnMsIGluY2x1ZGluZyB2aXJ0dWFsIGRyaXZlcnMgKHN1Y2ggYXMgdml2aWQpIGFuZCBlbXVsYXRlZCBVU0IgbWVkaWEgZGV2aWNlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMjE6NDU6MzUuNzA0NTQxMzk2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjMwMjMxMDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAwM2M1MTIwODhkZmFlMTY5ODMzMzIzMTIyZjk3MjI0MDE2YzM4Yjc5XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgU2VwIDkgMjE6NDU6MzQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1jdHJscy1jb3JlLmMgYi9kcml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwyLWN0cmxzLWNvcmUuY1xcbmluZGV4IDViOGE1OTRmYjllMjQuLmU3N2NlN2I1NmZjYTYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1jdHJscy1jb3JlLmNcXG4rKysgYi9kcml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwyLWN0cmxzLWNvcmUuY1xcbkBAIC0yNTIxLDggKzI1MjEsMTQgQEAgdm9pZCB2NGwyX2N0cmxfY2x1c3Rlcih1bnNpZ25lZCBuY29udHJvbHMsIHN0cnVjdCB2NGwyX2N0cmwgKipjb250cm9scylcXG4gXFx0Ym9vbCBoYXNfdm9sYXRpbGVzID0gZmFsc2U7XFxuIFxcdGludCBpO1xcbiBcXG4tXFx0LyogVGhlIGZpcnN0IGNvbnRyb2wgaXMgdGhlIG1hc3RlciBjb250cm9sIGFuZCBpdCBtdXN0IG5vdCBiZSBOVUxMICovXFxuLVxcdGlmIChXQVJOX09OKG5jb250cm9scyA9PSAwIHx8IGNvbnRyb2xzWzBdID09IE5VTEwpKVxcbitcXHRpZiAoV0FSTl9PTihuY29udHJvbHMgPT0gMCkpXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuK1xcdC8qXFxuK1xcdCAqIFRoZSBmaXJzdCBjb250cm9sIGlzIHRoZSBtYXN0ZXIgY29udHJvbC4gSWYgdGhpcyBpcyBOVUxMIHRoZW5cXG4rXFx0ICogdGhlcmUgaXMgbm90aGluZyB0byBkby5cXG4rXFx0ICovXFxuK1xcdGlmIChjb250cm9sc1swXSA9PSBOVUxMKVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbmNvbnRyb2xzOyBpKyspIHtcXG5AQCAtMjU0MCwxMiArMjU0NiwxNCBAQCBFWFBPUlRfU1lNQk9MKHY0bDJfY3RybF9jbHVzdGVyKTtcXG4gdm9pZCB2NGwyX2N0cmxfYXV0b19jbHVzdGVyKHVuc2lnbmVkIG5jb250cm9scywgc3RydWN0IHY0bDJfY3RybCAqKmNvbnRyb2xzLFxcbiBcXHRcXHRcXHQgICAgdTggbWFudWFsX3ZhbCwgYm9vbCBzZXRfdm9sYXRpbGUpXFxuIHtcXG4tXFx0c3RydWN0IHY0bDJfY3RybCAqbWFzdGVyID0gY29udHJvbHNbMF07XFxuK1xcdHN0cnVjdCB2NGwyX2N0cmwgKm1hc3RlciA9IG5jb250cm9scyA/IGNvbnRyb2xzWzBdIDogTlVMTDtcXG4gXFx0dTMyIGZsYWcgPSAwO1xcbiBcXHRpbnQgaTtcXG4gXFxuIFxcdHY0bDJfY3RybF9jbHVzdGVyKG5jb250cm9scywgY29udHJvbHMpO1xcbiBcXHRXQVJOX09OKG5jb250cm9scyBcXHUwMDNjPSAxKTtcXG4rXFx0aWYgKCFtYXN0ZXIpXFxuK1xcdFxcdHJldHVybjtcXG4gXFx0V0FSTl9PTihtYW51YWxfdmFsIFxcdTAwM2MgbWFzdGVyLVxcdTAwM2VtaW5pbXVtIHx8IG1hbnVhbF92YWwgXFx1MDAzZSBtYXN0ZXItXFx1MDAzZW1heGltdW0pO1xcbiBcXHRXQVJOX09OKHNldF92b2xhdGlsZSBcXHUwMDI2XFx1MDAyNiAhaGFzX29wKG1hc3RlciwgZ192b2xhdGlsZV9jdHJsKSk7XFxuIFxcdG1hc3Rlci1cXHUwMDNlaXNfYXV0byA9IHRydWU7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDIxOjQ1OjM2LjE2ODMzODM1OFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6Mzg5ODM4OTcyNTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUVESUFfU1VQUE9SVFwiLFxuICAgIFwiVklERU9fREVWXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidjRsMl9jdHJsX2NsdXN0ZXJcIixcbiAgICBcInY0bDJfY3RybF9hdXRvX2NsdXN0ZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBjb250cm9sIGZsb3cgYW5kIE5VTEwgY2hlY2tzIGluIHRoZSBjb3JlIFY0TDIgY29udHJvbCBjbHVzdGVyaW5nIGZ1bmN0aW9ucyAodjRsMl9jdHJsX2NsdXN0ZXIgYW5kIHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIpLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSBhbmQgZXhlcmNpc2VkIGR1cmluZyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdmFyaW91cyBWNEwyIGRyaXZlcnMsIGluY2x1ZGluZyB2aXJ0dWFsIGRyaXZlcnMgKHN1Y2ggYXMgdml2aWQpIGFuZCBlbXVsYXRlZCBVU0IgbWVkaWEgZGV2aWNlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAwM2M1MTIwODhkZmFlMTY5ODMzMzIzMTIyZjk3MjI0MDE2YzM4Yjc5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBTZXAgOSAyMTo0NTozNCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL3Y0bDItY3RybHMtY29yZS5jIGIvZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1jdHJscy1jb3JlLmNcbmluZGV4IDViOGE1OTRmYjllMjQuLmU3N2NlN2I1NmZjYTYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwyLWN0cmxzLWNvcmUuY1xuKysrIGIvZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1jdHJscy1jb3JlLmNcbkBAIC0yNTIxLDggKzI1MjEsMTQgQEAgdm9pZCB2NGwyX2N0cmxfY2x1c3Rlcih1bnNpZ25lZCBuY29udHJvbHMsIHN0cnVjdCB2NGwyX2N0cmwgKipjb250cm9scylcbiBcdGJvb2wgaGFzX3ZvbGF0aWxlcyA9IGZhbHNlO1xuIFx0aW50IGk7XG4gXG4tXHQvKiBUaGUgZmlyc3QgY29udHJvbCBpcyB0aGUgbWFzdGVyIGNvbnRyb2wgYW5kIGl0IG11c3Qgbm90IGJlIE5VTEwgKi9cbi1cdGlmIChXQVJOX09OKG5jb250cm9scyA9PSAwIHx8IGNvbnRyb2xzWzBdID09IE5VTEwpKVxuK1x0aWYgKFdBUk5fT04obmNvbnRyb2xzID09IDApKVxuK1x0XHRyZXR1cm47XG4rXG4rXHQvKlxuK1x0ICogVGhlIGZpcnN0IGNvbnRyb2wgaXMgdGhlIG1hc3RlciBjb250cm9sLiBJZiB0aGlzIGlzIE5VTEwgdGhlblxuK1x0ICogdGhlcmUgaXMgbm90aGluZyB0byBkby5cbitcdCAqL1xuK1x0aWYgKGNvbnRyb2xzWzBdID09IE5VTEwpXG4gXHRcdHJldHVybjtcbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5jb250cm9sczsgaSsrKSB7XG5AQCAtMjU0MCwxMiArMjU0NiwxNCBAQCBFWFBPUlRfU1lNQk9MKHY0bDJfY3RybF9jbHVzdGVyKTtcbiB2b2lkIHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIodW5zaWduZWQgbmNvbnRyb2xzLCBzdHJ1Y3QgdjRsMl9jdHJsICoqY29udHJvbHMsXG4gXHRcdFx0ICAgIHU4IG1hbnVhbF92YWwsIGJvb2wgc2V0X3ZvbGF0aWxlKVxuIHtcbi1cdHN0cnVjdCB2NGwyX2N0cmwgKm1hc3RlciA9IGNvbnRyb2xzWzBdO1xuK1x0c3RydWN0IHY0bDJfY3RybCAqbWFzdGVyID0gbmNvbnRyb2xzID8gY29udHJvbHNbMF0gOiBOVUxMO1xuIFx0dTMyIGZsYWcgPSAwO1xuIFx0aW50IGk7XG4gXG4gXHR2NGwyX2N0cmxfY2x1c3RlcihuY29udHJvbHMsIGNvbnRyb2xzKTtcbiBcdFdBUk5fT04obmNvbnRyb2xzIFx1MDAzYz0gMSk7XG4rXHRpZiAoIW1hc3RlcilcbitcdFx0cmV0dXJuO1xuIFx0V0FSTl9PTihtYW51YWxfdmFsIFx1MDAzYyBtYXN0ZXItXHUwMDNlbWluaW11bSB8fCBtYW51YWxfdmFsIFx1MDAzZSBtYXN0ZXItXHUwMDNlbWF4aW11bSk7XG4gXHRXQVJOX09OKHNldF92b2xhdGlsZSBcdTAwMjZcdTAwMjYgIWhhc19vcChtYXN0ZXIsIGdfdm9sYXRpbGVfY3RybCkpO1xuIFx0bWFzdGVyLVx1MDAzZWlzX2F1dG8gPSB0cnVlO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMjE6NDU6MzYuMTY4MzM5NjE4WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjY1NzQzNTk0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoOiBWaWRlbzRMaW51eCBDb250cm9sIENsdXN0ZXIqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBwYXRjaCBhbmQgdGhlIGFzc29jaWF0ZWQgaW5zdHJ1Y3Rpb25zLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGJyZWFrIGl0IGRvd24gc3lzdGVtYXRpY2FsbHkuIFxuXG5GaXJzdCwgdGhlIHBhdGNoIGl0c2VsZi4gSXQgbG9va3MgbGlrZSB3ZSdyZSBkZWFsaW5nIHdpdGggdGhlIHZpZGVvNGxpbnV4IChWNEwyKSBjb3JlLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gdGhlIGNvbnRyb2wgY2x1c3RlciBmdW5jdGlvbmFsaXR5LiBUaGUgZGlmZiB0b3VjaGVzIGBkcml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwyLWN0cmxzLWNvcmUuY2AsIHdoaWNoIGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaXMgcmVsYXRlZCB0byBob3cgY29udHJvbHMgYXJlIG9yZ2FuaXplZCBhbmQgbWFuYWdlZCB3aXRoaW4gVjRMMi5cblxuVGhlIHNpZ25pZmljYW50IG1vZGlmaWNhdGlvbnMgYXJlIHdpdGhpbiB0aGUgZnVuY3Rpb25zIGB2NGwyX2N0cmxfY2x1c3RlcmAgYW5kIGB2NGwyX2N0cmxfYXV0b19jbHVzdGVyYC4gVGhpcyBzdWdnZXN0cyB0aGV5IGFyZSBlaXRoZXIgZW5oYW5jaW5nIG9yIGNoYW5naW5nIHRoZSBiZWhhdmlvdXIgb2YgdGhlc2UgZnVuY3Rpb25zLiBOb3csIEkgc2hvdWxkIGV4YW1pbmUgdGhlIGNvcmUgZmlsZSAoYHY0bDItY3RybHMtY29yZS5jYCkgYXJvdW5kIGxpbmUgMjUyMSB0byBmdWxseSBjb21wcmVoZW5kIHRoZSBjaGFuZ2VzLiBJbiBteSB2aWV3LCB0aGlzIHdpbGwgcHJvdmlkZSB0aGUgbmVjZXNzYXJ5IGNvbnRleHQgdG8gZGV0ZXJtaW5lIGhvdyB0aGUgdXBkYXRlIGhhcyBjaGFuZ2VkIHRoZXNlIGNyaXRpY2FsIGZ1bmN0aW9ucy4gSSB3aWxsIGFsc28gaGF2ZSBhIHF1aWNrIGxvb2sgYXQgdGhlIEtjb25maWcgZmlsZSBmb3IgdGhlIFY0TDIgY29yZSwgYXMgaXQgc2hvdWxkIHByb3ZpZGUgdmFsdWFibGUgaW5mb3JtYXRpb24gb24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRoaXMgZnVuY3Rpb25hbGl0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzIzMywiT3V0cHV0VG9rZW5zIjo1MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyNSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDIxOjQ1OjQyLjgyNTc3NzkwNloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MDc4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwyLWN0cmxzLWNvcmUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyNTE1LFxuICBcIkxpbmVDb3VudFwiOiA1NVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyNTE1OlxcdH1cXG4yNTE2OlxcdEVYUE9SVF9TWU1CT0wodjRsMl9jdHJsX3JhZGlvX2ZpbHRlcik7XFxuMjUxNzpcXHRcXG4yNTE4OlxcdC8qIENsdXN0ZXIgY29udHJvbHMgKi9cXG4yNTE5OlxcdHZvaWQgdjRsMl9jdHJsX2NsdXN0ZXIodW5zaWduZWQgbmNvbnRyb2xzLCBzdHJ1Y3QgdjRsMl9jdHJsICoqY29udHJvbHMpXFxuMjUyMDpcXHR7XFxuMjUyMTpcXHRcXHRib29sIGhhc192b2xhdGlsZXMgPSBmYWxzZTtcXG4yNTIyOlxcdFxcdGludCBpO1xcbjI1MjM6XFx0XFxuMjUyNDpcXHRcXHRpZiAoV0FSTl9PTihuY29udHJvbHMgPT0gMCkpXFxuMjUyNTpcXHRcXHRcXHRyZXR1cm47XFxuMjUyNjpcXHRcXG4yNTI3OlxcdFxcdC8qXFxuMjUyODpcXHRcXHQgKiBUaGUgZmlyc3QgY29udHJvbCBpcyB0aGUgbWFzdGVyIGNvbnRyb2wuIElmIHRoaXMgaXMgTlVMTCB0aGVuXFxuMjUyOTpcXHRcXHQgKiB0aGVyZSBpcyBub3RoaW5nIHRvIGRvLlxcbjI1MzA6XFx0XFx0ICovXFxuMjUzMTpcXHRcXHRpZiAoY29udHJvbHNbMF0gPT0gTlVMTClcXG4yNTMyOlxcdFxcdFxcdHJldHVybjtcXG4yNTMzOlxcdFxcbjI1MzQ6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG5jb250cm9sczsgaSsrKSB7XFxuMjUzNTpcXHRcXHRcXHRpZiAoY29udHJvbHNbaV0pIHtcXG4yNTM2OlxcdFxcdFxcdFxcdGNvbnRyb2xzW2ldLVxcdTAwM2VjbHVzdGVyID0gY29udHJvbHM7XFxuMjUzNzpcXHRcXHRcXHRcXHRjb250cm9sc1tpXS1cXHUwMDNlbmNvbnRyb2xzID0gbmNvbnRyb2xzO1xcbjI1Mzg6XFx0XFx0XFx0XFx0aWYgKGNvbnRyb2xzW2ldLVxcdTAwM2VmbGFncyBcXHUwMDI2IFY0TDJfQ1RSTF9GTEFHX1ZPTEFUSUxFKVxcbjI1Mzk6XFx0XFx0XFx0XFx0XFx0aGFzX3ZvbGF0aWxlcyA9IHRydWU7XFxuMjU0MDpcXHRcXHRcXHR9XFxuMjU0MTpcXHRcXHR9XFxuMjU0MjpcXHRcXHRjb250cm9sc1swXS1cXHUwMDNlaGFzX3ZvbGF0aWxlcyA9IGhhc192b2xhdGlsZXM7XFxuMjU0MzpcXHR9XFxuMjU0NDpcXHRFWFBPUlRfU1lNQk9MKHY0bDJfY3RybF9jbHVzdGVyKTtcXG4yNTQ1OlxcdFxcbjI1NDY6XFx0dm9pZCB2NGwyX2N0cmxfYXV0b19jbHVzdGVyKHVuc2lnbmVkIG5jb250cm9scywgc3RydWN0IHY0bDJfY3RybCAqKmNvbnRyb2xzLFxcbjI1NDc6XFx0XFx0XFx0XFx0ICAgIHU4IG1hbnVhbF92YWwsIGJvb2wgc2V0X3ZvbGF0aWxlKVxcbjI1NDg6XFx0e1xcbjI1NDk6XFx0XFx0c3RydWN0IHY0bDJfY3RybCAqbWFzdGVyID0gbmNvbnRyb2xzID8gY29udHJvbHNbMF0gOiBOVUxMO1xcbjI1NTA6XFx0XFx0dTMyIGZsYWcgPSAwO1xcbjI1NTE6XFx0XFx0aW50IGk7XFxuMjU1MjpcXHRcXG4yNTUzOlxcdFxcdHY0bDJfY3RybF9jbHVzdGVyKG5jb250cm9scywgY29udHJvbHMpO1xcbjI1NTQ6XFx0XFx0V0FSTl9PTihuY29udHJvbHMgXFx1MDAzYz0gMSk7XFxuMjU1NTpcXHRcXHRpZiAoIW1hc3RlcilcXG4yNTU2OlxcdFxcdFxcdHJldHVybjtcXG4yNTU3OlxcdFxcdFdBUk5fT04obWFudWFsX3ZhbCBcXHUwMDNjIG1hc3Rlci1cXHUwMDNlbWluaW11bSB8fCBtYW51YWxfdmFsIFxcdTAwM2UgbWFzdGVyLVxcdTAwM2VtYXhpbXVtKTtcXG4yNTU4OlxcdFxcdFdBUk5fT04oc2V0X3ZvbGF0aWxlIFxcdTAwMjZcXHUwMDI2ICFoYXNfb3AobWFzdGVyLCBnX3ZvbGF0aWxlX2N0cmwpKTtcXG4yNTU5OlxcdFxcdG1hc3Rlci1cXHUwMDNlaXNfYXV0byA9IHRydWU7XFxuMjU2MDpcXHRcXHRtYXN0ZXItXFx1MDAzZWhhc192b2xhdGlsZXMgPSBzZXRfdm9sYXRpbGU7XFxuMjU2MTpcXHRcXHRtYXN0ZXItXFx1MDAzZW1hbnVhbF9tb2RlX3ZhbHVlID0gbWFudWFsX3ZhbDtcXG4yNTYyOlxcdFxcdG1hc3Rlci1cXHUwMDNlZmxhZ3MgfD0gVjRMMl9DVFJMX0ZMQUdfVVBEQVRFO1xcbjI1NjM6XFx0XFxuMjU2NDpcXHRcXHRpZiAoIWlzX2N1cl9tYW51YWwobWFzdGVyKSlcXG4yNTY1OlxcdFxcdFxcdGZsYWcgPSBWNEwyX0NUUkxfRkxBR19JTkFDVElWRSB8XFxuMjU2NjpcXHRcXHRcXHRcXHQoc2V0X3ZvbGF0aWxlID8gVjRMMl9DVFJMX0ZMQUdfVk9MQVRJTEUgOiAwKTtcXG4yNTY3OlxcdFxcbjI1Njg6XFx0XFx0Zm9yIChpID0gMTsgaSBcXHUwMDNjIG5jb250cm9sczsgaSsrKVxcbjI1Njk6XFx0XFx0XFx0aWYgKGNvbnRyb2xzW2ldKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQyMTo0NTo0Mi44MjU5NzExNjZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMDMwNDMxOTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipJbnZlc3RpZ2F0aW5nIENvbnRyb2wgQ2x1c3RlcnMgaW4gdGhlIFY0TDIgRnJhbWV3b3JrKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIGB2NGwyX2N0cmxfY2x1c3RlcmAgYW5kIGB2NGwyX2N0cmxfYXV0b19jbHVzdGVyYC4gTXkgaW1tZWRpYXRlIGdvYWwgaXMgdG8gbWFwIG91dCB0aGVpciB1c2FnZSDigJMgcGlucG9pbnRpbmcgd2hlcmUgdGhleSdyZSBiZWluZyBjYWxsZWQgd2l0aGluIHRoZSBrZXJuZWwgY29kZSBhbmQsIGNydWNpYWxseSwgd2hpY2ggc3BlY2lmaWMgZHJpdmVycyBhcmUgbGV2ZXJhZ2luZyB0aGVtLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbGFuZHNjYXBlIG9mIHRoZXNlIGNvbnRyb2wgbWVjaGFuaXNtcy5cblxuQmV5b25kIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHksIEknbSB0aGlua2luZyBhYm91dCB0aGUgYmlnZ2VyIHBpY3R1cmUsIGFuZCB0aGF0IG1lYW5zIGNvbnNpZGVyaW5nIGhvdyB0aGVzZSBjbHVzdGVycyBiZWhhdmUgaW4gYSB2aXJ0dWFsaXplZCBjb250ZXh0LiBJJ20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gaG93IHRoZXkgZnVuY3Rpb24gd2l0aGluIGVudmlyb25tZW50cyBsaWtlIFFFTVUuIFNwZWNpZmljYWxseSwgaG93IGRvIHRoZXkgaGFuZGxlIHNldHVwcyB1c2luZywgZm9yIGV4YW1wbGUsIHRoZSBgdXZjdmlkZW9gIGRyaXZlciBvdmVyIGEgVVNCIGdhZGdldCwgb3IsIGFsdGVybmF0aXZlbHksIGVtdWxhdGVkIFY0TDIgZHJpdmVycyBzdWNoIGFzIGB2aXZpZGAgb3IgYHZpbWNgPyBUaGUgdmlydHVhbGl6ZWQgc3BhY2Ugb2Z0ZW4gcHJlc2VudHMgaXRzIG93biBzZXQgb2YgY2hhbGxlbmdlcywgYW5kIHVuZGVyc3RhbmRpbmcgaWYgYW5kIGhvdyB0aGVzZSBjb250cm9sIGNsdXN0ZXJzIGZ1bmN0aW9uIGluIHRob3NlIHNldHRpbmdzIGlzIGNyaXRpY2FsIGZvciBhIGNvbXBsZXRlIHBpY3R1cmUuIFRoaXMgY291bGQgaGF2ZSBodWdlIGltcGxpY2F0aW9ucyBvbiB0aGUgdGVzdGluZywgZGVidWdnaW5nLCBhbmQgZGVwbG95bWVudCBvZiBkcml2ZXJzIGluIHNpbXVsYXRlZCBzY2VuYXJpb3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1MjEsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3OSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDIxOjQ1OjQ1Ljg1NjQwNDg5NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NDUyOTAxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2NGwyX2N0cmxfYXV0b19jbHVzdGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbWVkaWFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL3J0bDI4MzJfc2RyLmM9MTMxOT1zdGF0aWMgaW50IHJ0bDI4MzJfc2RyX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvcnRsMjgzMl9zZHIuYy0xNDAxLVxcdFxcdFxcdFxcdFxcdFxcdCAgIDAsIDgwMDAwMDAsIDEwMDAwMCwgMCk7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL3J0bDI4MzJfc2RyLmM6MTQwMjpcXHRcXHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDIsIFxcdTAwMjZkZXYtXFx1MDAzZWJhbmR3aWR0aF9hdXRvLCAwLCBmYWxzZSk7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL3J0bDI4MzJfc2RyLmMtMTQwMy1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9ydGwyODMyX3Nkci5jLTE0MTMtXFx0XFx0XFx0XFx0XFx0XFx0ICAgNjAwMDAwMCk7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL3J0bDI4MzJfc2RyLmM6MTQxNDpcXHRcXHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDIsIFxcdTAwMjZkZXYtXFx1MDAzZWJhbmR3aWR0aF9hdXRvLCAwLCBmYWxzZSk7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL3J0bDI4MzJfc2RyLmMtMTQxNS1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbWVkaWEvaTJjL2Fsdml1bS1jc2kyLmM9MjA4OD1zdGF0aWMgaW50IGFsdml1bV9jdHJsX2luaXQoc3RydWN0IGFsdml1bV9kZXYgKmFsdml1bSlcXG4tLVxcbmRyaXZlcnMvbWVkaWEvaTJjL2Fsdml1bS1jc2kyLmMtMjExNi1cXHRcXHRpZiAoY3RybHMtXFx1MDAzZWF1dG9fd2IpXFxuZHJpdmVycy9tZWRpYS9pMmMvYWx2aXVtLWNzaTIuYzoyMTE3OlxcdFxcdFxcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMywgXFx1MDAyNmN0cmxzLVxcdTAwM2VhdXRvX3diLCAwLCBmYWxzZSk7XFxuZHJpdmVycy9tZWRpYS9pMmMvYWx2aXVtLWNzaTIuYy0yMTE4LVxcdH1cXG4tLVxcbmRyaXZlcnMvbWVkaWEvaTJjL2Fsdml1bS1jc2kyLmMtMjE0MS1cXHRcXHRpZiAoY3RybHMtXFx1MDAzZWF1dG9fZXhwKVxcbmRyaXZlcnMvbWVkaWEvaTJjL2Fsdml1bS1jc2kyLmM6MjE0MjpcXHRcXHRcXHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDIsIFxcdTAwMjZjdHJscy1cXHUwMDNlYXV0b19leHAsXFxuZHJpdmVycy9tZWRpYS9pMmMvYWx2aXVtLWNzaTIuYy0yMTQzLVxcdFxcdFxcdFxcdFxcdCAgICAgICBWNEwyX0VYUE9TVVJFX01BTlVBTCwgdHJ1ZSk7XFxuLS1cXG5kcml2ZXJzL21lZGlhL2kyYy9hbHZpdW0tY3NpMi5jLTIxNjAtXFx0XFx0aWYgKGN0cmxzLVxcdTAwM2VhdXRvX2dhaW4pXFxuZHJpdmVycy9tZWRpYS9pMmMvYWx2aXVtLWNzaTIuYzoyMTYxOlxcdFxcdFxcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXFx1MDAyNmN0cmxzLVxcdTAwM2VhdXRvX2dhaW4sIDAsIHRydWUpO1xcbmRyaXZlcnMvbWVkaWEvaTJjL2Fsdml1bS1jc2kyLmMtMjE2Mi1cXHR9XFxuLS1cXG5kcml2ZXJzL21lZGlhL2kyYy9tdDltMDAxLmM9NzMwPXN0YXRpYyBpbnQgbXQ5bTAwMV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9tZWRpYS9pMmMvbXQ5bTAwMS5jLTc4Mi1cXG5kcml2ZXJzL21lZGlhL2kyYy9tdDltMDAxLmM6NzgzOlxcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXFx1MDAyNm10OW0wMDEtXFx1MDAzZWF1dG9leHBvc3VyZSxcXG5kcml2ZXJzL21lZGlhL2kyYy9tdDltMDAxLmMtNzg0LVxcdFxcdFxcdFxcdFxcdFY0TDJfRVhQT1NVUkVfTUFOVUFMLCB0cnVlKTtcXG4tLVxcbmRyaXZlcnMvbWVkaWEvaTJjL292NTY0MC5jPTM0Mjg9c3RhdGljIGludCBvdjU2NDBfaW5pdF9jb250cm9scyhzdHJ1Y3Qgb3Y1NjQwX2RldiAqc2Vuc29yKVxcbi0tXFxuZHJpdmVycy9tZWRpYS9pMmMvb3Y1NjQwLmMtMzUzMC1cXG5kcml2ZXJzL21lZGlhL2kyYy9vdjU2NDAuYzozNTMxOlxcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMywgXFx1MDAyNmN0cmxzLVxcdTAwM2VhdXRvX3diLCAwLCBmYWxzZSk7XFxuZHJpdmVycy9tZWRpYS9pMmMvb3Y1NjQwLmM6MzUzMjpcXHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDIsIFxcdTAwMjZjdHJscy1cXHUwMDNlYXV0b19nYWluLCAwLCB0cnVlKTtcXG5kcml2ZXJzL21lZGlhL2kyYy9vdjU2NDAuYzozNTMzOlxcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXFx1MDAyNmN0cmxzLVxcdTAwM2VhdXRvX2V4cCwgMSwgdHJ1ZSk7XFxuZHJpdmVycy9tZWRpYS9pMmMvb3Y1NjQwLmMtMzUzNC1cXG4tLVxcbmRyaXZlcnMvbWVkaWEvaTJjL292NTY0OC5jPTIwMzk9c3RhdGljIGludCBvdjU2NDhfY3RybHNfaW5pdChzdHJ1Y3Qgb3Y1NjQ4X3NlbnNvciAqc2Vuc29yKVxcbi0tXFxuZHJpdmVycy9tZWRpYS9pMmMvb3Y1NjQ4LmMtMjA2MC1cXG5kcml2ZXJzL21lZGlhL2kyYy9vdjU2NDguYzoyMDYxOlxcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXFx1MDAyNmN0cmxzLVxcdTAwM2VleHBvc3VyZV9hdXRvLCAxLCB0cnVlKTtcXG5kcml2ZXJzL21lZGlhL2kyYy9vdjU2NDguYy0yMDYyLVxcbi0tXFxuZHJpdmVycy9tZWRpYS9pMmMvb3Y1NjQ4LmMtMjA3MC1cXG5kcml2ZXJzL21lZGlhL2kyYy9vdjU2NDguYzoyMDcxOlxcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXFx1MDAyNmN0cmxzLVxcdTAwM2VnYWluX2F1dG8sIDAsIHRydWUpO1xcbmRyaXZlcnMvbWVkaWEvaTJjL292NTY0OC5jLTIwNzItXFxuLS1cXG5kcml2ZXJzL21lZGlhL2kyYy9vdjU2NDguYy0yMDg2LVxcbmRyaXZlcnMvbWVkaWEvaTJjL292NTY0OC5jOjIwODc6XFx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigzLCBcXHUwMDI2Y3RybHMtXFx1MDAzZXdoaXRlX2JhbGFuY2VfYXV0bywgMCwgZmFsc2UpO1xcbmRyaXZlcnMvbWVkaWEvaTJjL292NTY0OC5jLTIwODgtXFxuLS1cXG5kcml2ZXJzL21lZGlhL2kyYy9vdjc2NzAuYz0xODIzPXN0YXRpYyBpbnQgb3Y3NjcwX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuLS1cXG5kcml2ZXJzL21lZGlhL2kyYy9vdjc2NzAuYy0xOTQ0LVxcdCAqL1xcbmRyaXZlcnMvbWVkaWEvaTJjL292NzY3MC5jOjE5NDU6XFx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigyLCBcXHUwMDI2aW5mby1cXHUwMDNlYXV0b19nYWluLCAwLCB0cnVlKTtcXG5kcml2ZXJzL21lZGlhL2kyYy9vdjc2NzAuYzoxOTQ2OlxcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXFx1MDAyNmluZm8tXFx1MDAzZWF1dG9fZXhwb3N1cmUsXFxuZHJpdmVycy9tZWRpYS9pMmMvb3Y3NjcwLmMtMTk0Ny1cXHRcXHRcXHQgICAgICAgVjRMMl9FWFBPU1VSRV9NQU5VQUwsIGZhbHNlKTtcXG4tLVxcbmRyaXZlcnMvbWVkaWEvaTJjL292Nzc0MC5jPTkzOT1zdGF0aWMgaW50IG92Nzc0MF9pbml0X2NvbnRyb2xzKHN0cnVjdCBvdjc3NDAgKm92Nzc0MClcXG4tLVxcbmRyaXZlcnMvbWVkaWEvaTJjL292Nzc0MC5jLTk4Ny1cXG5kcml2ZXJzL21lZGlhL2kyYy9vdjc3NDAuYzo5ODg6XFx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigzLCBcXHUwMDI2b3Y3NzQwLVxcdTAwM2VhdXRvX3diLCAwLCBmYWxzZSk7XFxuZHJpdmVycy9tZWRpYS9pMmMvb3Y3NzQwLmM6OTg5OlxcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXFx1MDAyNm92Nzc0MC1cXHUwMDNlYXV0b19nYWluLCAwLCB0cnVlKTtcXG5kcml2ZXJzL21lZGlhL2kyYy9vdjc3NDAuYzo5OTA6XFx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigyLCBcXHUwMDI2b3Y3NzQwLVxcdTAwM2VhdXRvX2V4cG9zdXJlLFxcbmRyaXZlcnMvbWVkaWEvaTJjL292Nzc0MC5jLTk5MS1cXHRcXHRcXHQgICAgICAgVjRMMl9FWFBPU1VSRV9NQU5VQUwsIHRydWUpO1xcbi0tXFxuZHJpdmVycy9tZWRpYS9pMmMvb3Y5NjUwLmM9OTg2PXN0YXRpYyBpbnQgb3Y5NjV4X2luaXRpYWxpemVfY29udHJvbHMoc3RydWN0IG92OTY1eCAqb3Y5NjV4KVxcbi0tXFxuZHJpdmVycy9tZWRpYS9pMmMvb3Y5NjUwLmMtMTA0OC1cXG5kcml2ZXJzL21lZGlhL2kyYy9vdjk2NTAuYzoxMDQ5OlxcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMywgXFx1MDAyNmN0cmxzLVxcdTAwM2VhdXRvX3diLCAwLCBmYWxzZSk7XFxuZHJpdmVycy9tZWRpYS9pMmMvb3Y5NjUwLmM6MTA1MDpcXHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDIsIFxcdTAwMjZjdHJscy1cXHUwMDNlYXV0b19nYWluLCAwLCB0cnVlKTtcXG5kcml2ZXJzL21lZGlhL2kyYy9vdjk2NTAuYzoxMDUxOlxcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXFx1MDAyNmN0cmxzLVxcdTAwM2VhdXRvX2V4cCwgMSwgdHJ1ZSk7XFxuZHJpdmVycy9tZWRpYS9pMmMvb3Y5NjUwLmMtMTA1Mi1cXHR2NGwyX2N0cmxfY2x1c3RlcigyLCBcXHUwMDI2Y3RybHMtXFx1MDAzZWhmbGlwKTtcXG4tLVxcbmRyaXZlcnMvbWVkaWEvaTJjL3M1YzczbTMvczVjNzNtMy1jdHJscy5jPTQ0MT1pbnQgczVjNzNtM19pbml0X2NvbnRyb2xzKHN0cnVjdCBzNWM3M20zICpzdGF0ZSlcXG4tLVxcbmRyaXZlcnMvbWVkaWEvaTJjL3M1YzczbTMvczVjNzNtMy1jdHJscy5jLTU0Mi1cXG5kcml2ZXJzL21lZGlhL2kyYy9zNWM3M20zL3M1YzczbTMtY3RybHMuYzo1NDM6XFx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigzLCBcXHUwMDI2Y3RybHMtXFx1MDAzZWF1dG9fZXhwb3N1cmUsIDAsIGZhbHNlKTtcXG5kcml2ZXJzL21lZGlhL2kyYy9zNWM3M20zL3M1YzczbTMtY3RybHMuYy01NDQtXFx0Y3RybHMtXFx1MDAzZWF1dG9faXNvLVxcdTAwM2VmbGFncyB8PSBWNEwyX0NUUkxfRkxBR19WT0xBVElMRSB8XFxuZHJpdmVycy9tZWRpYS9pMmMvczVjNzNtMy9zNWM3M20zLWN0cmxzLmMtNTQ1LVxcdFxcdFxcdFxcdFY0TDJfQ1RSTF9GTEFHX1VQREFURTtcXG5kcml2ZXJzL21lZGlhL2kyYy9zNWM3M20zL3M1YzczbTMtY3RybHMuYzo1NDY6XFx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigyLCBcXHUwMDI2Y3RybHMtXFx1MDAzZWF1dG9faXNvLCAwLCBmYWxzZSk7XFxuZHJpdmVycy9tZWRpYS9pMmMvczVjNzNtMy9zNWM3M20zLWN0cmxzLmMtNTQ3LVxcdGN0cmxzLVxcdTAwM2VhZl9zdGF0dXMtXFx1MDAzZWZsYWdzIHw9IFY0TDJfQ1RSTF9GTEFHX1ZPTEFUSUxFO1xcbi0tXFxuZHJpdmVycy9tZWRpYS9pMmMvczVrNWJhZi5jPTE2MzI9c3RhdGljIGludCBzNWs1YmFmX2luaXRpYWxpemVfY3RybHMoc3RydWN0IHM1azViYWYgKnN0YXRlKVxcbi0tXFxuZHJpdmVycy9tZWRpYS9pMmMvczVrNWJhZi5jLTE2NTEtXFx0XFx0XFx0XFx0XFx0ICAgICAwLCAyNTUsIDEsIFM1SzVCQUZfR0FJTl9CTFVFX0RFRik7XFxuZHJpdmVycy9tZWRpYS9pMmMvczVrNWJhZi5jOjE2NTI6XFx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigzLCBcXHUwMDI2Y3RybHMtXFx1MDAzZWF3YiwgMCwgZmFsc2UpO1xcbmRyaXZlcnMvbWVkaWEvaTJjL3M1azViYWYuYy0xNjUzLVxcbi0tXFxuZHJpdmVycy9tZWRpYS9pMmMvczVrNWJhZi5jLTE2NjYtXFx0XFx0XFx0XFx0XFx0MCwgMjU2LCAxLCAyNTYpO1xcbmRyaXZlcnMvbWVkaWEvaTJjL3M1azViYWYuYzoxNjY3OlxcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMywgXFx1MDAyNmN0cmxzLVxcdTAwM2VhdXRvX2V4cCwgMCwgZmFsc2UpO1xcbmRyaXZlcnMvbWVkaWEvaTJjL3M1azViYWYuYy0xNjY4LVxcbi0tXFxuZHJpdmVycy9tZWRpYS9pMmMvc2FhNzExNS5jPTE3OTk9c3RhdGljIGludCBzYWE3MTF4X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuLS1cXG5kcml2ZXJzL21lZGlhL2kyYy9zYWE3MTE1LmMtMTg3Mi1cXHR9XFxuZHJpdmVycy9tZWRpYS9pMmMvc2FhNzExNS5jOjE4NzM6XFx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigyLCBcXHUwMDI2c3RhdGUtXFx1MDAzZWFnYywgMCwgdHJ1ZSk7XFxuZHJpdmVycy9tZWRpYS9pMmMvc2FhNzExNS5jLTE4NzQtXFxuLS1cXG5kcml2ZXJzL21lZGlhL2kyYy92ZDU1ZzEuYz0xNTc1PXN0YXRpYyBpbnQgdmQ1NWcxX2luaXRfY3RybHMoc3RydWN0IHZkNTVnMSAqc2Vuc29yKVxcbi0tXFxuZHJpdmVycy9tZWRpYS9pMmMvdmQ1NWcxLmMtMTYxNi1cXHRcXHRcXHRcXHRcXHQgICAgICAxLCBWRDU1RzFfRVhQT19ERUYpO1xcbmRyaXZlcnMvbWVkaWEvaTJjL3ZkNTVnMS5jOjE2MTc6XFx0djRsMl9jdHJsX2F1dG9fY2x1c3Rlcig0LCBcXHUwMDI2c2Vuc29yLVxcdTAwM2VhZV9jdHJsLCBWNEwyX0VYUE9TVVJFX01BTlVBTCwgdHJ1ZSk7XFxuZHJpdmVycy9tZWRpYS9pMmMvdmQ1NWcxLmMtMTYxOC1cXG4tLVxcbmRyaXZlcnMvbWVkaWEvaTJjL3ZkNTZnMy5jPTYzMT1zdGF0aWMgaW50IHZkNTZnM19pbml0X2NvbnRyb2xzKHN0cnVjdCB2ZDU2ZzMgKnNlbnNvcilcXG4tLVxcbmRyaXZlcnMvbWVkaWEvaTJjL3ZkNTZnMy5jLTcyNC1cXHR2NGwyX2N0cmxfY2x1c3RlcigyLCBcXHUwMDI2c2Vuc29yLVxcdTAwM2VoZmxpcF9jdHJsKTtcXG5kcml2ZXJzL21lZGlhL2kyYy92ZDU2ZzMuYzo3MjU6XFx0djRsMl9jdHJsX2F1dG9fY2x1c3Rlcig0LCBcXHUwMDI2c2Vuc29yLVxcdTAwM2VhZV9jdHJsLCBWNEwyX0VYUE9TVVJFX01BTlVBTCwgdHJ1ZSk7XFxuZHJpdmVycy9tZWRpYS9pMmMvdmQ1NmczLmMtNzI2LVxcbi0tXFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9taWNyb2NoaXAvbWljcm9jaGlwLWlzYy1iYXNlLmM9MTYxMj1zdGF0aWMgaW50IGlzY19jdHJsX2luaXQoc3RydWN0IGlzY19kZXZpY2UgKmlzYylcXG4tLVxcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbWljcm9jaGlwL21pY3JvY2hpcC1pc2MtYmFzZS5jLTE2NjMtXFx0ICovXFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9taWNyb2NoaXAvbWljcm9jaGlwLWlzYy1iYXNlLmM6MTY2NDpcXHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDEwLCBcXHUwMDI2aXNjLVxcdTAwM2Vhd2JfY3RybCwgMCwgdHJ1ZSk7XFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9taWNyb2NoaXAvbWljcm9jaGlwLWlzYy1iYXNlLmMtMTY2NS1cXG4tLVxcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vc2Ftc3VuZy9leHlub3M0LWlzL2ZpbWMtaXNwLmM9NjkxPWludCBmaW1jX2lzcF9zdWJkZXZfY3JlYXRlKHN0cnVjdCBmaW1jX2lzcCAqaXNwKVxcbi0tXFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zYW1zdW5nL2V4eW5vczQtaXMvZmltYy1pc3AuYy03NjUtXFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zYW1zdW5nL2V4eW5vczQtaXMvZmltYy1pc3AuYzo3NjY6XFx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigyLCBcXHUwMDI2Y3RybHMtXFx1MDAzZWF1dG9faXNvLFxcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vc2Ftc3VuZy9leHlub3M0LWlzL2ZpbWMtaXNwLmMtNzY3LVxcdFxcdFxcdFY0TDJfSVNPX1NFTlNJVElWSVRZX01BTlVBTCwgZmFsc2UpO1xcbi0tXFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zYW1zdW5nL3MzYy1jYW1pZi9jYW1pZi1jYXB0dXJlLmM9MTUzOD1pbnQgczNjX2NhbWlmX2NyZWF0ZV9zdWJkZXYoc3RydWN0IGNhbWlmX2RldiAqY2FtaWYpXFxuLS1cXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3NhbXN1bmcvczNjLWNhbWlmL2NhbWlmLWNhcHR1cmUuYy0xNTgwLVxcdGlmIChjYW1pZi1cXHUwMDNldmFyaWFudC1cXHUwMDNlaGFzX2ltZ19lZmZlY3QpXFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zYW1zdW5nL3MzYy1jYW1pZi9jYW1pZi1jYXB0dXJlLmM6MTU4MTpcXHRcXHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDIsIFxcdTAwMjZjYW1pZi1cXHUwMDNlY3RybF9jb2xvcmZ4LFxcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vc2Ftc3VuZy9zM2MtY2FtaWYvY2FtaWYtY2FwdHVyZS5jLTE1ODItXFx0XFx0XFx0ICAgICAgIFY0TDJfQ09MT1JGWF9TRVRfQ0JDUiwgZmFsc2UpO1xcbi0tXFxuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtY3RybHMuYz0xNjMxPWludCB2aXZpZF9jcmVhdGVfY29udHJvbHMoc3RydWN0IHZpdmlkX2RldiAqZGV2LCBib29sIHNob3dfY2NzX2NhcCxcXG4tLVxcbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL3ZpdmlkLWN0cmxzLmMtMjAxNi1cXHRpZiAoZGV2LVxcdTAwM2VhdXRvZ2FpbilcXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC92aXZpZC1jdHJscy5jOjIwMTc6XFx0XFx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigyLCBcXHUwMDI2ZGV2LVxcdTAwM2VhdXRvZ2FpbiwgMCwgdHJ1ZSk7XFxuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtY3RybHMuYy0yMDE4LVxcbi0tXFxuZHJpdmVycy9tZWRpYS90dW5lcnMvZTQwMDAuYz02MTI9c3RhdGljIGludCBlNDAwMF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9tZWRpYS90dW5lcnMvZTQwMDAuYy02NjItXFx0XFx0XFx0VjRMMl9DSURfUkZfVFVORVJfQkFORFdJRFRILCA0MzAwMDAwLCAxMTAwMDAwMCwgMTAwMDAwLCA0MzAwMDAwKTtcXG5kcml2ZXJzL21lZGlhL3R1bmVycy9lNDAwMC5jOjY2MzpcXHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDIsIFxcdTAwMjZkZXYtXFx1MDAzZWJhbmR3aWR0aF9hdXRvLCAwLCBmYWxzZSk7XFxuZHJpdmVycy9tZWRpYS90dW5lcnMvZTQwMDAuYy02NjQtXFx0ZGV2LVxcdTAwM2VsbmFfZ2Fpbl9hdXRvID0gdjRsMl9jdHJsX25ld19zdGQoXFx1MDAyNmRldi1cXHUwMDNlaGRsLCBcXHUwMDI2ZTQwMDBfY3RybF9vcHMsXFxuLS1cXG5kcml2ZXJzL21lZGlhL3R1bmVycy9lNDAwMC5jLTY2Ny1cXHRcXHRcXHRWNEwyX0NJRF9SRl9UVU5FUl9MTkFfR0FJTiwgMCwgMTUsIDEsIDEwKTtcXG5kcml2ZXJzL21lZGlhL3R1bmVycy9lNDAwMC5jOjY2ODpcXHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDIsIFxcdTAwMjZkZXYtXFx1MDAzZWxuYV9nYWluX2F1dG8sIDAsIGZhbHNlKTtcXG5kcml2ZXJzL21lZGlhL3R1bmVycy9lNDAwMC5jLTY2OS1cXHRkZXYtXFx1MDAzZW1peGVyX2dhaW5fYXV0byA9IHY0bDJfY3RybF9uZXdfc3RkKFxcdTAwMjZkZXYtXFx1MDAzZWhkbCwgXFx1MDAyNmU0MDAwX2N0cmxfb3BzLFxcbi0tXFxuZHJpdmVycy9tZWRpYS90dW5lcnMvZTQwMDAuYy02NzItXFx0XFx0XFx0VjRMMl9DSURfUkZfVFVORVJfTUlYRVJfR0FJTiwgMCwgMSwgMSwgMSk7XFxuZHJpdmVycy9tZWRpYS90dW5lcnMvZTQwMDAuYzo2NzM6XFx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigyLCBcXHUwMDI2ZGV2LVxcdTAwM2VtaXhlcl9nYWluX2F1dG8sIDAsIGZhbHNlKTtcXG5kcml2ZXJzL21lZGlhL3R1bmVycy9lNDAwMC5jLTY3NC1cXHRkZXYtXFx1MDAzZWlmX2dhaW5fYXV0byA9IHY0bDJfY3RybF9uZXdfc3RkKFxcdTAwMjZkZXYtXFx1MDAzZWhkbCwgXFx1MDAyNmU0MDAwX2N0cmxfb3BzLFxcbi0tXFxuZHJpdmVycy9tZWRpYS90dW5lcnMvZTQwMDAuYy02NzctXFx0XFx0XFx0VjRMMl9DSURfUkZfVFVORVJfSUZfR0FJTiwgMCwgNTQsIDEsIDApO1xcbmRyaXZlcnMvbWVkaWEvdHVuZXJzL2U0MDAwLmM6Njc4OlxcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXFx1MDAyNmRldi1cXHUwMDNlaWZfZ2Fpbl9hdXRvLCAwLCBmYWxzZSk7XFxuZHJpdmVycy9tZWRpYS90dW5lcnMvZTQwMDAuYy02NzktXFx0ZGV2LVxcdTAwM2VwbGxfbG9jayA9IHY0bDJfY3RybF9uZXdfc3RkKFxcdTAwMjZkZXYtXFx1MDAzZWhkbCwgXFx1MDAyNmU0MDAwX2N0cmxfb3BzLFxcbi0tXFxuZHJpdmVycy9tZWRpYS90dW5lcnMvZmMyNTgwLmM9NTA5PXN0YXRpYyBpbnQgZmMyNTgwX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuLS1cXG5kcml2ZXJzL21lZGlhL3R1bmVycy9mYzI1ODAuYy01NjItXFx0XFx0XFx0XFx0XFx0ICAgMzAwMCwgMTAwMDAwMDAsIDEsIDMwMDApO1xcbmRyaXZlcnMvbWVkaWEvdHVuZXJzL2ZjMjU4MC5jOjU2MzpcXHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDIsIFxcdTAwMjZkZXYtXFx1MDAzZWJhbmR3aWR0aF9hdXRvLCAwLCBmYWxzZSk7XFxuZHJpdmVycy9tZWRpYS90dW5lcnMvZmMyNTgwLmMtNTY0LVxcdGlmIChkZXYtXFx1MDAzZWhkbC5lcnJvcikge1xcbi0tXFxuZHJpdmVycy9tZWRpYS90dW5lcnMvbXNpMDAxLmM9NDIyPXN0YXRpYyBpbnQgbXNpMDAxX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXFxuLS1cXG5kcml2ZXJzL21lZGlhL3R1bmVycy9tc2kwMDEuYy00NTEtXFxuZHJpdmVycy9tZWRpYS90dW5lcnMvbXNpMDAxLmM6NDUyOlxcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXFx1MDAyNmRldi1cXHUwMDNlYmFuZHdpZHRoX2F1dG8sIDAsIGZhbHNlKTtcXG5kcml2ZXJzL21lZGlhL3R1bmVycy9tc2kwMDEuYy00NTMtXFx0ZGV2LVxcdTAwM2VsbmFfZ2FpbiA9IHY0bDJfY3RybF9uZXdfc3RkKFxcdTAwMjZkZXYtXFx1MDAzZWhkbCwgXFx1MDAyNm1zaTAwMV9jdHJsX29wcyxcXG4tLVxcbmRyaXZlcnMvbWVkaWEvdXNiL2FpcnNweS9haXJzcHkuYz05NzA9c3RhdGljIGludCBhaXJzcHlfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXFxuLS1cXG5kcml2ZXJzL21lZGlhL3VzYi9haXJzcHkvYWlyc3B5LmMtMTA1Mi1cXHRcXHRcXHRWNEwyX0NJRF9SRl9UVU5FUl9MTkFfR0FJTiwgMCwgMTQsIDEsIDgpO1xcbmRyaXZlcnMvbWVkaWEvdXNiL2FpcnNweS9haXJzcHkuYzoxMDUzOlxcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXFx1MDAyNnMtXFx1MDAzZWxuYV9nYWluX2F1dG8sIDAsIGZhbHNlKTtcXG5kcml2ZXJzL21lZGlhL3VzYi9haXJzcHkvYWlyc3B5LmMtMTA1NC1cXHRzLVxcdTAwM2VtaXhlcl9nYWluX2F1dG8gPSB2NGwyX2N0cmxfbmV3X3N0ZChcXHUwMDI2cy1cXHUwMDNlaGRsLCBcXHUwMDI2YWlyc3B5X2N0cmxfb3BzLFxcbi0tXFxuZHJpdmVycy9tZWRpYS91c2IvYWlyc3B5L2FpcnNweS5jLTEwNTctXFx0XFx0XFx0VjRMMl9DSURfUkZfVFVORVJfTUlYRVJfR0FJTiwgMCwgMTUsIDEsIDgpO1xcbmRyaXZlcnMvbWVkaWEvdXNiL2FpcnNweS9haXJzcHkuYzoxMDU4OlxcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXFx1MDAyNnMtXFx1MDAzZW1peGVyX2dhaW5fYXV0bywgMCwgZmFsc2UpO1xcbmRyaXZlcnMvbWVkaWEvdXNiL2FpcnNweS9haXJzcHkuYy0xMDU5LVxcdHMtXFx1MDAzZWlmX2dhaW4gPSB2NGwyX2N0cmxfbmV3X3N0ZChcXHUwMDI2cy1cXHUwMDNlaGRsLCBcXHUwMDI2YWlyc3B5X2N0cmxfb3BzLFxcbi0tXFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvbTU2MDIvbTU2MDJfbXQ5bTExMS5jPTI3Mj1pbnQgbXQ5bTExMV9pbml0X2NvbnRyb2xzKHN0cnVjdCBzZCAqc2QpXFxuLS1cXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9tNTYwMi9tNTYwMl9tdDltMTExLmMtMzAzLVxcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL201NjAyL201NjAyX210OW0xMTEuYzozMDQ6XFx0djRsMl9jdHJsX2F1dG9fY2x1c3Rlcig0LCBcXHUwMDI2c2QtXFx1MDAzZWF1dG9fd2hpdGVfYmFsLCAwLCBmYWxzZSk7XFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvbTU2MDIvbTU2MDJfbXQ5bTExMS5jLTMwNS1cXHR2NGwyX2N0cmxfY2x1c3RlcigyLCBcXHUwMDI2c2QtXFx1MDAzZWhmbGlwKTtcXG4tLVxcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL201NjAyL201NjAyX292NzY2MC5jPTI3Mz1pbnQgb3Y3NjYwX2luaXRfY29udHJvbHMoc3RydWN0IHNkICpzZClcXG4tLVxcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL201NjAyL201NjAyX292NzY2MC5jLTI5OS1cXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9tNTYwMi9tNTYwMl9vdjc2NjAuYzozMDA6XFx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigyLCBcXHUwMDI2c2QtXFx1MDAzZWF1dG9nYWluLCAwLCBmYWxzZSk7XFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvbTU2MDIvbTU2MDJfb3Y3NjYwLmMtMzAxLVxcdHY0bDJfY3RybF9jbHVzdGVyKDIsIFxcdTAwMjZzZC1cXHUwMDNlaGZsaXApO1xcbi0tXFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvbTU2MDIvbTU2MDJfb3Y5NjUwLmM9MzY1PWludCBvdjk2NTBfaW5pdF9jb250cm9scyhzdHJ1Y3Qgc2QgKnNkKVxcbi0tXFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvbTU2MDIvbTU2MDJfb3Y5NjUwLmMtNDAxLVxcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL201NjAyL201NjAyX292OTY1MC5jOjQwMjpcXHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDMsIFxcdTAwMjZzZC1cXHUwMDNlYXV0b193aGl0ZV9iYWwsIDAsIGZhbHNlKTtcXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9tNTYwMi9tNTYwMl9vdjk2NTAuYzo0MDM6XFx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigyLCBcXHUwMDI2c2QtXFx1MDAzZWF1dG9leHBvLCAwLCBmYWxzZSk7XFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvbTU2MDIvbTU2MDJfb3Y5NjUwLmM6NDA0OlxcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXFx1MDAyNnNkLVxcdTAwM2VhdXRvZ2FpbiwgMCwgZmFsc2UpO1xcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL201NjAyL201NjAyX292OTY1MC5jLTQwNS1cXHR2NGwyX2N0cmxfY2x1c3RlcigyLCBcXHUwMDI2c2QtXFx1MDAzZWhmbGlwKTtcXG4tLVxcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL201NjAyL201NjAyX3BvMTAzMC5jPTIzNz1pbnQgcG8xMDMwX2luaXRfY29udHJvbHMoc3RydWN0IHNkICpzZClcXG4tLVxcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL201NjAyL201NjAyX3BvMTAzMC5jLTI3Mi1cXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9tNTYwMi9tNTYwMl9wbzEwMzAuYzoyNzM6XFx0djRsMl9jdHJsX2F1dG9fY2x1c3Rlcig0LCBcXHUwMDI2c2QtXFx1MDAzZWF1dG9fd2hpdGVfYmFsLCAwLCBmYWxzZSk7XFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvbTU2MDIvbTU2MDJfcG8xMDMwLmM6Mjc0OlxcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXFx1MDAyNnNkLVxcdTAwM2VhdXRvZXhwbywgMCwgZmFsc2UpO1xcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL201NjAyL201NjAyX3BvMTAzMC5jLTI3NS1cXHR2NGwyX2N0cmxfY2x1c3RlcigyLCBcXHUwMDI2c2QtXFx1MDAzZWhmbGlwKTtcXG4tLVxcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL253ODB4LmM9MTk5OT1zdGF0aWMgaW50IHNkX2luaXRfY29udHJvbHMoc3RydWN0IGdzcGNhX2RldiAqZ3NwY2FfZGV2KVxcbi0tXFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2Evbnc4MHguYy0yMDM3LVxcdGlmIChnc3BjYV9kZXYtXFx1MDAzZWF1dG9nYWluKVxcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL253ODB4LmM6MjAzODpcXHRcXHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDMsIFxcdTAwMjZnc3BjYV9kZXYtXFx1MDAzZWF1dG9nYWluLCAwLCBmYWxzZSk7XFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2Evbnc4MHguYy0yMDM5LVxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2Evb3Y1MTkuYz00ODgxPXN0YXRpYyBpbnQgc2RfaW5pdF9jb250cm9scyhzdHJ1Y3QgZ3NwY2FfZGV2ICpnc3BjYV9kZXYpXFxuLS1cXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9vdjUxOS5jLTQ5NDMtXFx0aWYgKGdzcGNhX2Rldi1cXHUwMDNlYXV0b2dhaW4pXFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2Evb3Y1MTkuYzo0OTQ0OlxcdFxcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMywgXFx1MDAyNmdzcGNhX2Rldi1cXHUwMDNlYXV0b2dhaW4sIDAsIHRydWUpO1xcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL292NTE5LmMtNDk0NS1cXHRpZiAoc2QtXFx1MDAzZWF1dG9icmlnaHQpXFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2Evb3Y1MTkuYzo0OTQ2OlxcdFxcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXFx1MDAyNnNkLVxcdTAwM2VhdXRvYnJpZ2h0LCAwLCBmYWxzZSk7XFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2Evb3Y1MTkuYy00OTQ3LVxcdGlmIChzZC1cXHUwMDNlaGZsaXApXFxuLS1cXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9vdjUzNC5jPTEyMDQ9c3RhdGljIGludCBzZF9pbml0X2NvbnRyb2xzKHN0cnVjdCBnc3BjYV9kZXYgKmdzcGNhX2RldilcXG4tLVxcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL292NTM0LmMtMTMwMy1cXHRpZiAoc2QtXFx1MDAzZXNlbnNvciA9PSBTRU5TT1JfT1Y3NzJ4KVxcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL292NTM0LmM6MTMwNDpcXHRcXHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDIsIFxcdTAwMjZzZC1cXHUwMDNlYXV0b2dhaW4sIDAsIHRydWUpO1xcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL292NTM0LmMtMTMwNS1cXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9vdjUzNC5jOjEzMDY6XFx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigyLCBcXHUwMDI2c2QtXFx1MDAzZWF1dG9leHBvc3VyZSwgVjRMMl9FWFBPU1VSRV9NQU5VQUwsXFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2Evb3Y1MzQuYy0xMzA3LVxcdFxcdFxcdCAgICAgICB0cnVlKTtcXG4tLVxcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL292NTM0XzkuYz0xNzQwPXN0YXRpYyBpbnQgc2RfaW5pdF9jb250cm9scyhzdHJ1Y3QgZ3NwY2FfZGV2ICpnc3BjYV9kZXYpXFxuLS1cXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9vdjUzNF85LmMtMTc3MC1cXHRcXHRcXHRWNEwyX0NJRF9QT1dFUl9MSU5FX0ZSRVFVRU5DWV82MEhaLCAwLCAwKTtcXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9vdjUzNF85LmM6MTc3MTpcXHRcXHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDMsIFxcdTAwMjZnc3BjYV9kZXYtXFx1MDAzZWF1dG9nYWluLCAwLCBmYWxzZSk7XFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2Evb3Y1MzRfOS5jLTE3NzItXFx0fVxcbi0tXFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvcGFjMjA3LmM9MjQ1PXN0YXRpYyBpbnQgc2RfaW5pdF9jb250cm9scyhzdHJ1Y3QgZ3NwY2FfZGV2ICpnc3BjYV9kZXYpXFxuLS1cXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9wYWMyMDcuYy0yNzAtXFx0fVxcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3BhYzIwNy5jOjI3MTpcXHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDMsIFxcdTAwMjZnc3BjYV9kZXYtXFx1MDAzZWF1dG9nYWluLCAwLCBmYWxzZSk7XFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvcGFjMjA3LmMtMjcyLVxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvcGFjNzMwMi5jPTYzMT1zdGF0aWMgaW50IHNkX2luaXRfY29udHJvbHMoc3RydWN0IGdzcGNhX2RldiAqZ3NwY2FfZGV2KVxcbi0tXFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvcGFjNzMwMi5jLTY4Mi1cXHR2NGwyX2N0cmxfY2x1c3RlcigyLCBcXHUwMDI2c2QtXFx1MDAzZWJyaWdodG5lc3MpO1xcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3BhYzczMDIuYzo2ODM6XFx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigzLCBcXHUwMDI2Z3NwY2FfZGV2LVxcdTAwM2VhdXRvZ2FpbiwgMCwgZmFsc2UpO1xcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3BhYzczMDIuYy02ODQtXFx0djRsMl9jdHJsX2NsdXN0ZXIoMiwgXFx1MDAyNnNkLVxcdTAwM2VoZmxpcCk7XFxuLS1cXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9wYWM3MzExLmM9NDAxPXN0YXRpYyBpbnQgc2RfaW5pdF9jb250cm9scyhzdHJ1Y3QgZ3NwY2FfZGV2ICpnc3BjYV9kZXYpXFxuLS1cXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9wYWM3MzExLmMtNDI2LVxcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3BhYzczMTEuYzo0Mjc6XFx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigzLCBcXHUwMDI2Z3NwY2FfZGV2LVxcdTAwM2VhdXRvZ2FpbiwgMCwgZmFsc2UpO1xcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3BhYzczMTEuYy00MjgtXFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9zbjljMjB4LmM9MTcyMj1zdGF0aWMgaW50IHNkX2luaXRfY29udHJvbHMoc3RydWN0IGdzcGNhX2RldiAqZ3NwY2FfZGV2KVxcbi0tXFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2Evc245YzIweC5jLTE3OTEtXFx0XFx0XFx0ICAgYmVjYXVzZSBzZC1cXHUwMDNlZXhwb3N1cmUgPT0gTlVMTC4gKi9cXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9zbjljMjB4LmM6MTc5MjpcXHRcXHRcXHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDMsIFxcdTAwMjZzZC1cXHUwMDNlYXV0b2dhaW4sIDAsIGZhbHNlKTtcXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9zbjljMjB4LmMtMTc5My1cXHRcXHRlbHNlXFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2Evc245YzIweC5jLTE3OTQtXFx0XFx0XFx0LyogT3RoZXJ3aXNlIGF1dG9nYWluIGlzIGNsdXN0ZXJlZCB3aXRoIGV4cG9zdXJlLiAqL1xcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3NuOWMyMHguYzoxNzk1OlxcdFxcdFxcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXFx1MDAyNnNkLVxcdTAwM2VhdXRvZ2FpbiwgMCwgZmFsc2UpO1xcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3NuOWMyMHguYy0xNzk2LVxcdH1cXG4tLVxcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3Nvbml4Yi5jPTk5OD1zdGF0aWMgaW50IHNkX2luaXRfY29udHJvbHMoc3RydWN0IGdzcGNhX2RldiAqZ3NwY2FfZGV2KVxcbi0tXFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2Evc29uaXhiLmMtMTA4MS1cXHRpZiAoZ3NwY2FfZGV2LVxcdTAwM2VhdXRvZ2FpbilcXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9zb25peGIuYzoxMDgyOlxcdFxcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMywgXFx1MDAyNmdzcGNhX2Rldi1cXHUwMDNlYXV0b2dhaW4sIDAsIGZhbHNlKTtcXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9zb25peGIuYy0xMDgzLVxcbi0tXFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2Evc29uaXhqLmM9MTYxNz1zdGF0aWMgaW50IHNkX2luaXRfY29udHJvbHMoc3RydWN0IGdzcGNhX2RldiAqZ3NwY2FfZGV2KVxcbi0tXFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2Evc29uaXhqLmMtMTY4Ni1cXHRcXHR2NGwyX2N0cmxfY2x1c3RlcigyLCBcXHUwMDI2c2QtXFx1MDAzZXZmbGlwKTtcXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9zb25peGouYzoxNjg3OlxcdFxcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMywgXFx1MDAyNmdzcGNhX2Rldi1cXHUwMDNlYXV0b2dhaW4sIDAsIGZhbHNlKTtcXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9zb25peGouYy0xNjg4LVxcdH1cXG4tLVxcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3N0djA2eHgvc3R2MDZ4eF9wYjAxMDAuYz0xMDY9c3RhdGljIGludCBwYjAxMDBfaW5pdF9jb250cm9scyhzdHJ1Y3Qgc2QgKnNkKVxcbi0tXFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2Evc3R2MDZ4eC9zdHYwNnh4X3BiMDEwMC5jLTE1MC1cXHRzZC1cXHUwMDNlc2Vuc29yX3ByaXYgPSBjdHJscztcXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9zdHYwNnh4L3N0djA2eHhfcGIwMTAwLmM6MTUxOlxcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoNSwgXFx1MDAyNmN0cmxzLVxcdTAwM2VhdXRvZ2FpbiwgMCwgZmFsc2UpO1xcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3N0djA2eHgvc3R2MDZ4eF9wYjAxMDAuYy0xNTItXFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS90NjEzLmM9OTQ1PXN0YXRpYyBpbnQgc2RfaW5pdF9jb250cm9scyhzdHJ1Y3QgZ3NwY2FfZGV2ICpnc3BjYV9kZXYpXFxuLS1cXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS90NjEzLmMtOTk0LVxcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3Q2MTMuYzo5OTU6XFx0djRsMl9jdHJsX2F1dG9fY2x1c3Rlcig0LCBcXHUwMDI2c2QtXFx1MDAzZWF3YiwgMCwgdHJ1ZSk7XFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvdDYxMy5jLTk5Ni1cXG4tLVxcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3RvcHJvLmM9NDg3OT1zdGF0aWMgaW50IHNkX2luaXRfY29udHJvbHMoc3RydWN0IGdzcGNhX2RldiAqZ3NwY2FfZGV2KVxcbi0tXFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvdG9wcm8uYy00OTE4LVxcdGlmIChnc3BjYV9kZXYtXFx1MDAzZWF1dG9nYWluKVxcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3RvcHJvLmM6NDkxOTpcXHRcXHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDMsIFxcdTAwMjZnc3BjYV9kZXYtXFx1MDAzZWF1dG9nYWluLCAwLCBmYWxzZSk7XFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvdG9wcm8uYy00OTIwLVxcdGVsc2VcXG4tLVxcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3pjM3h4LmM9NjQxNT1zdGF0aWMgaW50IHNkX2luaXRfY29udHJvbHMoc3RydWN0IGdzcGNhX2RldiAqZ3NwY2FfZGV2KVxcbi0tXFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvemMzeHguYy02NDc0LVxcdGlmIChzZC1cXHUwMDNlc2Vuc29yID09IFNFTlNPUl9IVjcxMzFSIHx8IHNkLVxcdTAwM2VzZW5zb3IgPT0gU0VOU09SX09WNzYyMClcXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS96YzN4eC5jOjY0NzU6XFx0XFx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigyLCBcXHUwMDI2c2QtXFx1MDAzZWF1dG9nYWluLCAwLCB0cnVlKTtcXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS96YzN4eC5jLTY0NzYtXFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL21lZGlhL3VzYi9oYWNrcmYvaGFja3JmLmM9MTM0ND1zdGF0aWMgaW50IGhhY2tyZl9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZixcXG4tLVxcbmRyaXZlcnMvbWVkaWEvdXNiL2hhY2tyZi9oYWNrcmYuYy0xNDI5LVxcdFxcdDE3NTAwMDAsIDI4MDAwMDAwLCA1MDAwMCwgMTc1MDAwMCk7XFxuZHJpdmVycy9tZWRpYS91c2IvaGFja3JmL2hhY2tyZi5jOjE0MzA6XFx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigyLCBcXHUwMDI2ZGV2LVxcdTAwM2VyeF9iYW5kd2lkdGhfYXV0bywgMCwgZmFsc2UpO1xcbmRyaXZlcnMvbWVkaWEvdXNiL2hhY2tyZi9oYWNrcmYuYy0xNDMxLVxcdGRldi1cXHUwMDNlcnhfcmZfZ2FpbiA9IHY0bDJfY3RybF9uZXdfc3RkKFxcdTAwMjZkZXYtXFx1MDAzZXJ4X2N0cmxfaGFuZGxlcixcXG4tLVxcbmRyaXZlcnMvbWVkaWEvdXNiL2hhY2tyZi9oYWNrcmYuYy0xNDUyLVxcdFxcdDE3NTAwMDAsIDI4MDAwMDAwLCA1MDAwMCwgMTc1MDAwMCk7XFxuZHJpdmVycy9tZWRpYS91c2IvaGFja3JmL2hhY2tyZi5jOjE0NTM6XFx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigyLCBcXHUwMDI2ZGV2LVxcdTAwM2V0eF9iYW5kd2lkdGhfYXV0bywgMCwgZmFsc2UpO1xcbmRyaXZlcnMvbWVkaWEvdXNiL2hhY2tyZi9oYWNrcmYuYy0xNDU0LVxcdGRldi1cXHUwMDNldHhfbG5hX2dhaW4gPSB2NGwyX2N0cmxfbmV3X3N0ZChcXHUwMDI2ZGV2LVxcdTAwM2V0eF9jdHJsX2hhbmRsZXIsXFxuLS1cXG5kcml2ZXJzL21lZGlhL3VzYi9wd2MvcHdjLXY0bC5jPTE1MD1pbnQgcHdjX2luaXRfY29udHJvbHMoc3RydWN0IHB3Y19kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL21lZGlhL3VzYi9wd2MvcHdjLXY0bC5jLTIwMC1cXHRwZGV2LVxcdTAwM2VhdXRvX3doaXRlX2JhbGFuY2UgPSB2NGwyX2N0cmxfbmV3X2N1c3RvbShoZGwsIFxcdTAwMjZjZmcsIE5VTEwpO1xcbmRyaXZlcnMvbWVkaWEvdXNiL3B3Yy9wd2MtdjRsLmM6MjAxOlxcdC8qIGNoZWNrIGF1dG8gY29udHJvbHMgdG8gYXZvaWQgTlVMTCBkZXJlZiBpbiB2NGwyX2N0cmxfYXV0b19jbHVzdGVyICovXFxuZHJpdmVycy9tZWRpYS91c2IvcHdjL3B3Yy12NGwuYy0yMDItXFx0aWYgKCFwZGV2LVxcdTAwM2VhdXRvX3doaXRlX2JhbGFuY2UpXFxuLS1cXG5kcml2ZXJzL21lZGlhL3VzYi9wd2MvcHdjLXY0bC5jLTIxOC1cXG5kcml2ZXJzL21lZGlhL3VzYi9wd2MvcHdjLXY0bC5jOjIxOTpcXHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDMsIFxcdTAwMjZwZGV2LVxcdTAwM2VhdXRvX3doaXRlX2JhbGFuY2UsIGF3Yl9tYW51YWwsIHRydWUpO1xcbmRyaXZlcnMvbWVkaWEvdXNiL3B3Yy9wd2MtdjRsLmMtMjIwLVxcbi0tXFxuZHJpdmVycy9tZWRpYS91c2IvcHdjL3B3Yy12NGwuYy0yNjEtXFx0XFx0LyogQ09ERUMyOiBzZXBhcmF0ZSBhdXRvIGdhaW4gXFx1MDAyNiBhdXRvIGV4cG9zdXJlICovXFxuZHJpdmVycy9tZWRpYS91c2IvcHdjL3B3Yy12NGwuYzoyNjI6XFx0XFx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigyLCBcXHUwMDI2cGRldi1cXHUwMDNlYXV0b2dhaW4sIDAsIHRydWUpO1xcbmRyaXZlcnMvbWVkaWEvdXNiL3B3Yy9wd2MtdjRsLmM6MjYzOlxcdFxcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXFx1MDAyNnBkZXYtXFx1MDAzZWV4cG9zdXJlX2F1dG8sXFxuZHJpdmVycy9tZWRpYS91c2IvcHdjL3B3Yy12NGwuYy0yNjQtXFx0XFx0XFx0XFx0ICAgICAgIFY0TDJfRVhQT1NVUkVfTUFOVUFMLCB0cnVlKTtcXG4tLVxcbmRyaXZlcnMvbWVkaWEvdXNiL3B3Yy9wd2MtdjRsLmMtMjc2LVxcdFxcdHBkZXYtXFx1MDAzZWF1dG9nYWluX2V4cG9fY2x1c3RlclsyXSA9IHBkZXYtXFx1MDAzZWV4cG9zdXJlO1xcbmRyaXZlcnMvbWVkaWEvdXNiL3B3Yy9wd2MtdjRsLmM6Mjc3OlxcdFxcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMywgcGRldi1cXHUwMDNlYXV0b2dhaW5fZXhwb19jbHVzdGVyLFxcbmRyaXZlcnMvbWVkaWEvdXNiL3B3Yy9wd2MtdjRsLmMtMjc4LVxcdFxcdFxcdFxcdCAgICAgICAwLCB0cnVlKTtcXG4tLVxcbmRyaXZlcnMvbWVkaWEvdXNiL3B3Yy9wd2MtdjRsLmMtMzA2LVxcbmRyaXZlcnMvbWVkaWEvdXNiL3B3Yy9wd2MtdjRsLmM6MzA3OlxcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXFx1MDAyNnBkZXYtXFx1MDAzZWF1dG9jb250b3VyLCAwLCBmYWxzZSk7XFxuZHJpdmVycy9tZWRpYS91c2IvcHdjL3B3Yy12NGwuYy0zMDgtXFxuLS1cXG5kcml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwyLWN0cmxzLWNvcmUuYz0yNTQ0PUVYUE9SVF9TWU1CT0wodjRsMl9jdHJsX2NsdXN0ZXIpO1xcbmRyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL3Y0bDItY3RybHMtY29yZS5jLTI1NDUtXFxuZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1jdHJscy1jb3JlLmM6MjU0Njp2b2lkIHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIodW5zaWduZWQgbmNvbnRyb2xzLCBzdHJ1Y3QgdjRsMl9jdHJsICoqY29udHJvbHMsXFxuZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1jdHJscy1jb3JlLmMtMjU0Ny1cXHRcXHRcXHQgICAgdTggbWFudWFsX3ZhbCwgYm9vbCBzZXRfdm9sYXRpbGUpXFxuLS1cXG5kcml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwyLWN0cmxzLWNvcmUuYy0yNTcxLX1cXG5kcml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwyLWN0cmxzLWNvcmUuYzoyNTcyOkVYUE9SVF9TWU1CT0wodjRsMl9jdHJsX2F1dG9fY2x1c3Rlcik7XFxuZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1jdHJscy1jb3JlLmMtMjU3My1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMjE6NDU6NDUuOTQwOTM5NjE3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjgzNTAzNTM2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgQ29udHJvbCBDbHVzdGVyIFZ1bG5lcmFiaWxpdGllcyoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhlc2UgYHY0bDJfY3RybF9jbHVzdGVyYCBhbmQgYHY0bDJfY3RybF9hdXRvX2NsdXN0ZXJgIGNhbGxzLiBUaGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhhdCB0aGV5J3JlIGJlaW5nIHVzZWQgaW4gYGRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL3ZpdmlkLWN0cmxzLmNgLiBUaGF0J3MgdGhlIHNvZnR3YXJlLWVtdWxhdGVkLCBzdXBlci1mdXp6ZWQgYHZpdmlkYCBkcml2ZXIsIHdoaWNoIGluc3RhbnRseSBwaXF1ZXMgbXkgaW50ZXJlc3QgZ2l2ZW4gaG93IGFnZ3Jlc3NpdmUgU3l6a2FsbGVyIGlzIHdpdGggaXQuIFRoYXQncyBhIHByaW1lIHRhcmdldCBmb3IgcG90ZW50aWFsIGV4cGxvaXRzLlxuXG5UaGVuLCB0aGVyZSdzIHRoZSBwcmVzZW5jZSBpbiBhIGJ1bmNoIG9mIFVTQiBkcml2ZXJzIOKAkyB0aGluZ3MgbGlrZSBhaXJzcHksIGhhY2tyZiwgZ3NwY2EsIGFuZCBwd2MuIFRoZSBmYWN0IHRoYXQgdGhlc2UgYXJlIHJlYWNoYWJsZSB2aWEgVVNCIGVtdWxhdGlvbiwgYW5kIHBvdGVudGlhbGx5IHRocm91Z2ggcmF3LWdhZGdldCBvciBTeXprYWxsZXIncyBVU0IgZnV6emluZyBjYXBhYmlsaXRpZXMsIGp1c3Qgc29saWRpZmllcyB0aGUgaW1wb3J0YW5jZSBvZiBjaGVja2luZyB0aGVtIG91dC4gVVNCIGlzIGFsd2F5cyBhIGdyZWF0IGF2ZW51ZSBmb3IgYXR0YWNraW5nIGRyaXZlcnMuXG5cblNvLCB3aGVyZSB0byBzdGFydD8gSSB0aGluayBJJ2xsIHplcm8gaW4gb24gYHZpdmlkYCBmaXJzdC4gSXQncyB0aGUgbW9zdCBleHBsaWNpdGx5IG1lbnRpb25lZCBhbmQgd2VsbC1mdXp6ZWQgZXhhbXBsZSwgc28gaXQgc2hvdWxkIGJlIGEgZ29vZCBzdGFydGluZyBwb2ludC4gSSBzaG91bGQgcHJvYmFibHkgYWxzbyBkbyBhIHF1aWNrIGF1ZGl0IG9mIHRoZSBLY29uZmlnIG9wdGlvbnMgZm9yIGB2aXZpZGAgYW5kIGZvciBhbnl0aGluZyByZWxhdGVkIHRvIGB2NGwyLWN0cmxzLWNvcmUuY2AgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3VidGxlIGNvbmZpZ3VyYXRpb24gdnVsbmVyYWJpbGl0aWVzIHRoYXQgbWF5IGV4cG9zZSBhdHRhY2sgc3VyZmFjZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1MDM2LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDIxOjQ1OjQ4Ljc3NTk3NzVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTAwMDcyNzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidjRsMi1jdHJscy1jb3JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbWVkaWFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvTWFrZWZpbGU9MTE9dmlkZW9kZXYtb2Jqc1xcdDo9XFx0djRsMi1kZXYubyB2NGwyLWlvY3RsLm8gdjRsMi1kZXZpY2UubyB2NGwyLWZoLm8gXFxcXFxcbmRyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL01ha2VmaWxlLTEyLVxcdFxcdFxcdHY0bDItZXZlbnQubyB2NGwyLXN1YmRldi5vIHY0bDItY29tbW9uLm8gXFxcXFxcbmRyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL01ha2VmaWxlOjEzOlxcdFxcdFxcdHY0bDItY3RybHMtY29yZS5vIHY0bDItY3RybHMtYXBpLm8gXFxcXFxcbmRyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL01ha2VmaWxlLTE0LVxcdFxcdFxcdHY0bDItY3RybHMtcmVxdWVzdC5vIHY0bDItY3RybHMtZGVmcy5vXFxuLS1cXG5kcml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwyLWN0cmxzLXByaXYuaD00NT1zdGF0aWMgaW5saW5lIHUzMiB1c2VyX2ZsYWdzKGNvbnN0IHN0cnVjdCB2NGwyX2N0cmwgKmN0cmwpXFxuLS1cXG5kcml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwyLWN0cmxzLXByaXYuaC01NC1cXG5kcml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwyLWN0cmxzLXByaXYuaDo1NTovKiB2NGwyLWN0cmxzLWNvcmUuYyAqL1xcbmRyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL3Y0bDItY3RybHMtcHJpdi5oLTU2LXZvaWQgY3VyX3RvX25ldyhzdHJ1Y3QgdjRsMl9jdHJsICpjdHJsKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMjE6NDU6NDguODY1OTkzMTQ2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDYzMzY3OTE2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHdoYXQgeW91J3JlIGFza2luZywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBCdWlsZCBDb25maWd1cmF0aW9uIGZvciBgdmlkZW9kZXZgKipcblxuT2theSwgc28gd2UgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgYHZpZGVvZGV2YCBtb2R1bGUsIHNwZWNpZmljYWxseSwgaXMgYmVpbmcgYnVpbHQuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIHRoZSBvYnZpb3VzIHBsYWNlczogdGhlIGBNYWtlZmlsZWAgYW5kIGBLY29uZmlnYCBmaWxlcyB0aGF0IGFyZSBkaXJlY3RseSBpbnZvbHZlZCB3aXRoIHRoZSBWNEwyIGNvcmUuIE1vcmUgc3BlY2lmaWNhbGx5LCBJJ2xsIGJlIGxvb2tpbmcgYXQ6XG5cbiogICBUaGUgYE1ha2VmaWxlYCBsb2NhdGVkIGluIGBkcml2ZXJzL21lZGlhL3Y0bDItY29yZS9NYWtlZmlsZWAuIFRoaXMgaXMgd2hlcmUgSSB3b3VsZCBleHBlY3QgdG8gZmluZCB0aGUgcnVsZXMgdGhhdCBkZWZpbmUgdGhlIGNvbXBpbGF0aW9uIGFuZCBsaW5raW5nIHByb2Nlc3MsIHNwZWNpZnlpbmcgc291cmNlIGZpbGVzLCBvYmplY3QgZmlsZXMsIGFuZCBkZXBlbmRlbmNpZXMgaW52b2x2ZWQgaW4gY3JlYXRpbmcgYHZpZGVvZGV2YC5cbiogICBUaGUgYEtjb25maWdgIGZpbGVzLCBlc3BlY2lhbGx5IGBkcml2ZXJzL21lZGlhL0tjb25maWdgIGFuZCBgZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvS2NvbmZpZ2AuIFRoZXNlIGFyZSBjcnVjaWFsLCBhcyB0aGV5IGRlc2NyaWJlIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBjb250cm9sIHdoZXRoZXIgYHZpZGVvZGV2YCBpcyBidWlsdCBhcyBhIG1vZHVsZSwgYnVpbHQtaW4sIG9yIGNvbXBsZXRlbHkgb21pdHRlZCBiYXNlZCBvbiBrZXJuZWwgY29uZmlndXJhdGlvbi4gSSdsbCBuZWVkIHRvIHRyYWNlIHRoZSBkZXBlbmRlbmNpZXMgdGhyb3VnaCB0aGVzZSBLY29uZmlnIGZpbGVzIHRvIHNlZSBleGFjdGx5IHdoYXQgb3RoZXIgb3B0aW9ucyBpbmZsdWVuY2UgdGhlIGZpbmFsIG91dGNvbWUuIEknbGwgcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgc3ltYm9scyB0aGF0IHJlbGF0ZSB0byBgdmlkZW9kZXZgIGFuZCBpdHMgZGVwZW5kZW5jaWVzIG9uIG90aGVyIG1vZHVsZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1ODc1LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMjE6NDU6NTMuNDk5Njc1ODk0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5OTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL01ha2VmaWxlXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBNYWtlZmlsZSBmb3IgdGhlIFY0TDIgY29yZVxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRjY2ZsYWdzLXkgKz0gLUkkKHNyY3RyZWUpL2RyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kc1xcbiAgIDc6XFx0Y2NmbGFncy15ICs9IC1JJChzcmN0cmVlKS9kcml2ZXJzL21lZGlhL3R1bmVyc1xcbiAgIDg6XFx0XFxuICAgOTpcXHR0dW5lci1vYmpzXFx0Oj1cXHR0dW5lci1jb3JlLm9cXG4gIDEwOlxcdFxcbiAgMTE6XFx0dmlkZW9kZXYtb2Jqc1xcdDo9XFx0djRsMi1kZXYubyB2NGwyLWlvY3RsLm8gdjRsMi1kZXZpY2UubyB2NGwyLWZoLm8gXFxcXFxcbiAgMTI6XFx0XFx0XFx0XFx0djRsMi1ldmVudC5vIHY0bDItc3ViZGV2Lm8gdjRsMi1jb21tb24ubyBcXFxcXFxuICAxMzpcXHRcXHRcXHRcXHR2NGwyLWN0cmxzLWNvcmUubyB2NGwyLWN0cmxzLWFwaS5vIFxcXFxcXG4gIDE0OlxcdFxcdFxcdFxcdHY0bDItY3RybHMtcmVxdWVzdC5vIHY0bDItY3RybHMtZGVmcy5vXFxuICAxNTpcXHRcXG4gIDE2OlxcdCMgUGxlYXNlIGtlZXAgaXQgYWxwaGFiZXRpY2FsbHkgc29ydGVkIGJ5IEtjb25maWcgbmFtZVxcbiAgMTc6XFx0IyAoZS4gZy4gTENfQUxMPUMgc29ydCBNYWtlZmlsZSlcXG4gIDE4OlxcdHZpZGVvZGV2LSQoQ09ORklHX0NPTVBBVCkgKz0gdjRsMi1jb21wYXQtaW9jdGwzMi5vXFxuICAxOTpcXHR2aWRlb2Rldi0kKENPTkZJR19NRURJQV9DT05UUk9MTEVSKSArPSB2NGwyLW1jLm9cXG4gIDIwOlxcdHZpZGVvZGV2LSQoQ09ORklHX1NQSSkgKz0gdjRsMi1zcGkub1xcbiAgMjE6XFx0dmlkZW9kZXYtJChDT05GSUdfVFJBQ0VQT0lOVFMpICs9IHY0bDItdHJhY2Uub1xcbiAgMjI6XFx0dmlkZW9kZXYtJChDT05GSUdfVklERU9fVjRMMl9JMkMpICs9IHY0bDItaTJjLm9cXG4gIDIzOlxcdFxcbiAgMjQ6XFx0IyBQbGVhc2Uga2VlcCBpdCBhbHBoYWJldGljYWxseSBzb3J0ZWQgYnkgS2NvbmZpZyBuYW1lXFxuICAyNTpcXHQjIChlLiBnLiBMQ19BTEw9QyBzb3J0IE1ha2VmaWxlKVxcbiAgMjY6XFx0XFxuICAyNzpcXHRvYmotJChDT05GSUdfVjRMMl9BU1lOQykgKz0gdjRsMi1hc3luYy5vXFxuICAyODpcXHRvYmotJChDT05GSUdfVjRMMl9DQ0kpICs9IHY0bDItY2NpLm9cXG4gIDI5OlxcdG9iai0kKENPTkZJR19WNEwyX0ZMQVNIX0xFRF9DTEFTUykgKz0gdjRsMi1mbGFzaC1sZWQtY2xhc3Mub1xcbiAgMzA6XFx0b2JqLSQoQ09ORklHX1Y0TDJfRldOT0RFKSArPSB2NGwyLWZ3bm9kZS5vXFxuICAzMTpcXHRvYmotJChDT05GSUdfVjRMMl9IMjY0KSArPSB2NGwyLWgyNjQub1xcbiAgMzI6XFx0b2JqLSQoQ09ORklHX1Y0TDJfSVNQKSArPSB2NGwyLWlzcC5vXFxuICAzMzpcXHRvYmotJChDT05GSUdfVjRMMl9KUEVHX0hFTFBFUikgKz0gdjRsMi1qcGVnLm9cXG4gIDM0OlxcdG9iai0kKENPTkZJR19WNEwyX01FTTJNRU1fREVWKSArPSB2NGwyLW1lbTJtZW0ub1xcbiAgMzU6XFx0b2JqLSQoQ09ORklHX1Y0TDJfVlA5KSArPSB2NGwyLXZwOS5vXFxuICAzNjpcXHRcXG4gIDM3OlxcdG9iai0kKENPTkZJR19WSURFT19UVU5FUikgKz0gdHVuZXIub1xcbiAgMzg6XFx0b2JqLSQoQ09ORklHX1ZJREVPX0RFVikgKz0gdjRsMi1kdi10aW1pbmdzLm8gdmlkZW9kZXYub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQyMTo0NTo1My40OTk3Mzg5NjRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTk2NjEyOTk1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeGFtaW5pbmcgdGhlIFZpZGVvIERldmljZSBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBidWlsZCBydWxlOiBgb2JqLSQoQ09ORklHX1ZJREVPX0RFVikgKz0gdjRsMi1kdi10aW1pbmdzLm8gdmlkZW9kZXYub2AuIFRoaXMgdGVsbHMgbWUgdGhhdCB0aGUgb2JqZWN0IGZpbGVzIGB2NGwyLWR2LXRpbWluZ3Mub2AgYW5kIGB2aWRlb2Rldi5vYCB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZSBidWlsZCwgYnV0IG9ubHkgaWYgYSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbiwgYENPTkZJR19WSURFT19ERVZgLCBpcyBlbmFibGVkLiBOYXR1cmFsbHksIG15IG5leHQgc3RlcCBpcyB0byBmaWd1cmUgb3V0IHdoYXQgYFZJREVPX0RFVmAgYWN0dWFsbHkgKm1lYW5zKi4gVG8gdW5kZXJzdGFuZCBpdHMgaW1wbGljYXRpb25zLCBJIG5lZWQgdG8gdHJhY2UgYmFjayBhbmQgZmluZCBpdHMgZGVmaW5pdGlvbiB3aXRoaW4gdGhlIEtjb25maWcgZmlsZXMuIFRoaXMgd2lsbCBzaGVkIGxpZ2h0IG9uIHRoZSBwdXJwb3NlIG9mIHRoZXNlIHZpZGVvLXJlbGF0ZWQgbW9kdWxlcywgd2hpY2ggaGFyZHdhcmUgb3IgZmVhdHVyZXMgdGhleSBzdXBwb3J0LCBhbmQgdW5kZXIgd2hhdCBjb25kaXRpb25zIHRoZXkncmUgaW5jbHVkZWQgaW4gdGhlIGtlcm5lbCBpbWFnZS4gVWx0aW1hdGVseSwgSSBuZWVkIGEgY2xlYXJlciBwaWN0dXJlIG9mIHdoZW4gYW5kIHdoeSB0aGVzZSBzcGVjaWZpYyBvYmplY3QgZmlsZXMgYXJlIGJlaW5nIGJ1aWx0LiBMZXQncyBzZWUgd2hhdCBLY29uZmlnIGhhcyB0byBzYXkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3MDc0LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQyMTo0NTo1NS40NjU4NzE5NTlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg2MTkxMjAyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBWSURFT19ERVZcXFxcYlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL21lZGlhXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbWVkaWEvS2NvbmZpZz0xNTc9bWVudSBcXFwiTWVkaWEgY29yZSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9tZWRpYS9LY29uZmlnLTE1OS1cXG5kcml2ZXJzL21lZGlhL0tjb25maWc6MTYwOmNvbmZpZyBWSURFT19ERVZcXG5kcml2ZXJzL21lZGlhL0tjb25maWctMTYxLVxcdHRyaXN0YXRlIFxcXCJWaWRlbzRMaW51eCBjb3JlXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQyMTo0NTo1NS41NTIwNjg1ODFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTg1MDMyMjIxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIHRoZSBzdW1tYXJ5LCByZW5kZXJlZCBhcyBhIGZpcnN0LXBlcnNvbiBhY2NvdW50IGZyb20gbXkgcGVyc3BlY3RpdmU6XG5cbioqRGl2aW5nIGludG8gdGhlIE1lZGlhIFN1YnN5c3RlbSBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkgd2l0aCB0aGlzIG1lZGlhLXJlbGF0ZWQgaXNzdWUuIExldCdzIHN0YXJ0IGJ5IG5hdmlnYXRpbmcgdG8gYGRyaXZlcnMvbWVkaWEvS2NvbmZpZ2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgYXJvdW5kIGxpbmUgMTYwLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBjb25maWd1cmF0aW9uIG9wdGlvbnMgSSBuZWVkIHRvIGJlIGF3YXJlIG9mLiBJJ20gZXNwZWNpYWxseSBrZWVuIHRvIHNlZSBpZiBzb21ldGhpbmcgbGlrZSBgTUVESUFfU1VQUE9SVGAgb3Igc29tZXRoaW5nIHNpbWlsYXIgaXMgYWxzbyByZXF1aXJlZCwgYW5kIGhvdyBpdHMgc3RhdGUgYWZmZWN0cyB0aGUgb3B0aW9ucyBpbiB0aGlzIGJsb2NrLiBHZXR0aW5nIGEgaGFuZGxlIG9uIHRoZSByZWxhdGlvbnNoaXBzIGJldHdlZW4gdGhlc2UgY29uZmlncyB3aWxsIGJlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBwcm9ibGVtLiBMZXQncyBzZWUgd2hhdCB0aGUgS2NvbmZpZyBmaWxlIHJldmVhbHMuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc0MzYsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQyMTo0NTo1Ny40MDIzOTI5NzVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODIzOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9tZWRpYS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE0NSxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE0NTpcXHRcXHQgIGNhbiBiZSB1c2VmdWwgb24gZGVidWcgb25lcy4gVGhpcyBvcHRpb24gZW5hYmxlcyBzZXZlcmFsIGR1bW15IGRyaXZlcnNcXG4gMTQ2OlxcdFxcdCAgdGhhdCBzaW11bGF0ZSByZWFsIGhhcmR3YXJlLiBWZXJ5IHVzZWZ1bCB0byB0ZXN0IHVzZXJzcGFjZVxcbiAxNDc6XFx0XFx0ICBhcHBsaWNhdGlvbnMgYW5kIHRvIHZhbGlkYXRlIGlmIHRoZSBzdWJzeXN0ZW0gY29yZSBkb2Vzbid0XFxuIDE0ODpcXHRcXHQgIGhhdmUgcmVncmVzc2lvbnMuXFxuIDE0OTpcXHRcXG4gMTUwOlxcdFxcdCAgU2F5IFkgaWYgeW91IHdhbnQgdG8gdXNlIHNvbWUgdmlydHVhbCB0ZXN0IGRyaXZlci5cXG4gMTUxOlxcdFxcbiAxNTI6XFx0XFx0ICBJbiBjYXNlIG9mIGRvdWJ0cywgc2F5IE4uXFxuIDE1MzpcXHRcXHQgIFNheSBZIHdoZW4geW91IGhhdmUgYSBzb2Z0d2FyZSBkZWZpbmVkIHJhZGlvIGRldmljZS5cXG4gMTU0OlxcdGVuZG1lbnUgIyBtZWRpYSBkZXZpY2UgdHlwZXNcXG4gMTU1OlxcdFxcbiAxNTY6XFx0XFxuIDE1NzpcXHRtZW51IFxcXCJNZWRpYSBjb3JlIHN1cHBvcnRcXFwiXFxuIDE1ODpcXHRcXHR2aXNpYmxlIGlmICFNRURJQV9TVVBQT1JUX0ZJTFRFUlxcbiAxNTk6XFx0XFxuIDE2MDpcXHRjb25maWcgVklERU9fREVWXFxuIDE2MTpcXHRcXHR0cmlzdGF0ZSBcXFwiVmlkZW80TGludXggY29yZVxcXCJcXG4gMTYyOlxcdFxcdGRlZmF1bHQgTUVESUFfQ0FNRVJBX1NVUFBPUlQgfHwgTUVESUFfQU5BTE9HX1RWX1NVUFBPUlQgfHwgTUVESUFfUkFESU9fU1VQUE9SVCB8fCBNRURJQV9TRFJfU1VQUE9SVCB8fCBNRURJQV9QTEFURk9STV9TVVBQT1JUIHx8IE1FRElBX1RFU1RfU1VQUE9SVFxcbiAxNjM6XFx0XFx0ZGVwZW5kcyBvbiAoSTJDIHx8IEkyQz1uKVxcbiAxNjQ6XFx0XFx0c2VsZWN0IFJBVElPTkFMXFxuIDE2NTpcXHRcXHRzZWxlY3QgVklERU9CVUYyX1Y0TDIgaWYgVklERU9CVUYyX0NPUkVcXG4gMTY2OlxcdFxcdGhlbHBcXG4gMTY3OlxcdFxcdCAgRW5hYmxlcyB0aGUgVjRMMiBBUEksIHVzZWQgYnkgY2FtZXJhcywgYW5hbG9nIFRWLCB2aWRlbyBncmFiYmVycyxcXG4gMTY4OlxcdFxcdCAgcmFkaW8gZGV2aWNlcyBhbmQgYnkgc29tZSBpbnB1dCBkZXZpY2VzLlxcbiAxNjk6XFx0XFxuIDE3MDpcXHRjb25maWcgTUVESUFfQ09OVFJPTExFUlxcbiAxNzE6XFx0XFx0Ym9vbCBcXFwiTWVkaWEgQ29udHJvbGxlciBBUElcXFwiXFxuIDE3MjpcXHRcXHRkZWZhdWx0IE1FRElBX0NBTUVSQV9TVVBQT1JUIHx8IE1FRElBX0FOQUxPR19UVl9TVVBQT1JUIHx8IE1FRElBX0RJR0lUQUxfVFZfU1VQUE9SVCB8fCBNRURJQV9QTEFURk9STV9TVVBQT1JUXFxuIDE3MzpcXHRcXHRoZWxwXFxuIDE3NDpcXHRcXHQgIEVuYWJsZSB0aGUgbWVkaWEgY29udHJvbGxlciBBUEkgdXNlZCB0byBxdWVyeSBtZWRpYSBkZXZpY2VzIGludGVybmFsXFxuIDE3NTpcXHRcXHQgIHRvcG9sb2d5IGFuZCBjb25maWd1cmUgaXQgZHluYW1pY2FsbHkuXFxuIDE3NjpcXHRcXG4gMTc3OlxcdFxcdCAgVGhpcyBBUEkgaXMgbW9zdGx5IHVzZWQgYnkgY2FtZXJhIGludGVyZmFjZXMgaW4gZW1iZWRkZWQgcGxhdGZvcm1zLlxcbiAxNzg6XFx0XFxuIDE3OTpcXHQjXFxuIDE4MDpcXHQjIERWQiBDb3JlXFxuIDE4MTpcXHQjXFx0T25seSBlbmFibGVzIGlmIG9uZSBvZiBEVFYgaXMgc2VsZWN0ZWRcXG4gMTgyOlxcdCNcXG4gMTgzOlxcdFxcbiAxODQ6XFx0Y29uZmlnIERWQl9DT1JFXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDIxOjQ1OjU3LjQwMjQ3Njg5NVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo5MzE2MjIxMTkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlBhdGNoIEFuYWx5c2lzOiBWNEwyIENvbnRyb2wgQ2x1c3RlciBhbmQgQXV0by1DbHVzdGVyIENoYW5nZXMgLSBXb3J0aCBGdXp6aW5nKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgZG93biB0aGlzIHBhdGNoLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZXhhbWluZSB0aGUgY29kZSBjaGFuZ2VzLCBzcGVjaWZpY2FsbHkgd2l0aGluIGB2NGwyX2N0cmxfY2x1c3RlcmAgYW5kIGB2NGwyX2N0cmxfYXV0b19jbHVzdGVyYC5cblxuSSBzZWUgdGhhdCB0aGUgb3JpZ2luYWwgaW1wbGVtZW50YXRpb24gb2YgYHY0bDJfY3RybF9jbHVzdGVyYCBoYWQgYSBgV0FSTl9PTmAgY2hlY2sgZm9yIGBuY29udHJvbHMgPT0gMCB8fCBjb250cm9sc1swXSA9PSBOVUxMYC4gVGhlIHVwZGF0ZWQgdmVyc2lvbiBoYXMgc2ltcGxpZmllZCB0aGlzIHRvIGp1c3QgYFdBUk5fT04obmNvbnRyb2xzID09IDApYCBhbmQgc3Vic2VxdWVudGx5IGFkZGVkIGEgY2hlY2sgZm9yIHRoZSBtYXN0ZXIgY29udHJvbCBiZWluZyBOVUxMLiBTaW1pbGFybHksIGluIGB2NGwyX2N0cmxfYXV0b19jbHVzdGVyYCwgdGhlcmUncyBhIHJlZmluZW1lbnQgdG8gaG93IGBtYXN0ZXJgIGlzIGFzc2lnbmVkLCBoYW5kbGluZyB0aGUgY2FzZSB3aGVyZSBgbmNvbnRyb2xzYCBtaWdodCBiZSB6ZXJvLCBvciBgY29udHJvbHNbMF1gIGlzIE5VTEwuIFRoZXJlJ3Mgbm93IGFuIGV4cGxpY2l0IGNoZWNrOiBgaWYgKCFtYXN0ZXIpIHJldHVybjtgIHdoaWNoIGF2b2lkcyBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcy4gVGhlIG9yaWdpbmFsIGNvZGUgd2FzIHBvdGVudGlhbGx5IHZ1bG5lcmFibGUgdG8gTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyBpZiBgbmNvbnRyb2xzYCB3YXMgemVyby5cblxuU28sIHRoZSBrZXkgdGFrZWF3YXkgaXMgdGhhdCB0aGUgcGF0Y2ggcHJpbWFyaWx5IGltcHJvdmVzIGVycm9yIGhhbmRsaW5nIGJ5IHByZXZlbnRpbmcgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgYW5kIHNpbXBsaWZ5aW5nIHRoZSBgV0FSTl9PTmAgY29uZGl0aW9ucy5cblxuTm93LCBjb25zaWRlcmluZyB0aGUgcGF0Y2gncyByZWFjaGFiaWxpdHkgYW5kIGZ1enppbmcgcG90ZW50aWFsLCBsZXQncyBjb25zdWx0IHRoZSBndWlkZWxpbmVzLiBUaGUgZ29hbCBpcyB0byBpZGVudGlmeSBjcmFzaGVzLCByZWdyZXNzaW9ucywgYW5kIGxhdGVudCBidWdzLiBUaGUgcGF0Y2ggdG91Y2hlcyBgZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1jdHJscy1jb3JlLmNgLCB3aGljaCBpcyBjbGVhcmx5IHBhcnQgb2YgdGhlIFY0TDIgY29yZS4gVGhpcyBpcyBzaWduaWZpY2FudCBiZWNhdXNlIFY0TDIgaXMgZXhwb3NlZCB0aHJvdWdoIHZhcmlvdXMgbWVjaGFuaXNtcywgbm90YWJseSBVU0IgZ2FkZ2V0cyAocmF3LWdhZGdldCBmdXp6aW5nKSwgYW5kIHZpcnR1YWwgbWVkaWEgZHJpdmVycyBzdWNoIGFzIGB2aXZpZGAuIFRoaXMgbWVhbnMgdGhlIGNvZGUgKmlzKiByZWFjaGFibGUgYW5kIGV4ZWN1dGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGUgZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBhbmQgYXJlIGNhbGxlZCBkdXJpbmcgZHJpdmVyIGluaXRpYWxpemF0aW9uIGFuZCBjb250cm9sIHNldHVwIGluIG51bWVyb3VzIFY0TDIgZHJpdmVycywgaW5jbHVkaW5nIFVTQiB2aWRlbyBjYXB0dXJlIGRldmljZXMuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgYWxzbyBwYXJ0IG9mIHRoZSBjb3JlLCBhbmQgc28gYW55IGNoYW5nZSBoZXJlIGlzIHZhbHVhYmxlLiBHaXZlbiB0aGUgY2hhbmdlcyB0byBydW50aW1lIGRlZmVuc2l2ZSBjaGVja3MgYW5kIGZsb3cgY29udHJvbCwgaXQgc2VlbXMgY2xlYXIgdGhpcyBpcyB3b3J0aCBmdXp6aW5nLiBUaGUgdXBkYXRlZCBlcnJvciBoYW5kbGluZyB0b3VjaGVzIG9uIHRoZSBcInJ1bnRpbWUgYXNzZXJ0aW9ucyBhbmQgZGVmZW5zaXZlIGNoZWNrc1wiIGNhdGVnb3J5LCB3aGljaCBpcyBhIGJpZyBncmVlbiBsaWdodC4gVGhlcmVmb3JlLCB0aGUgYW5zd2VyIGlzIGBXb3J0aEZ1enppbmcgPSB0cnVlYC5cblxuTmV4dCwgbGV0J3MgbmFpbCBkb3duIHRoZSBmb2N1cyBzeW1ib2xzLiBUaGUgcGF0Y2ggbW9kaWZpZXMgYHY0bDJfY3RybF9jbHVzdGVyYCBhbmQgYHY0bDJfY3RybF9hdXRvX2NsdXN0ZXJgIGRpcmVjdGx5LCBub3RoaW5nIGVsc2UuIFRoZXJlZm9yZSwgdGhvc2UgYXJlIG15IGZvY3VzIHN5bWJvbHMuIFRoZXNlIGFyZSBzcGVjaWZpYyBmdW5jdGlvbnMsIG5vdCB1YmlxdWl0b3VzLCBzbyB3ZSBjYW4gZGVmaW5lIHRoZW0gcHJlY2lzZWx5LlxuXG5GaW5hbGx5LCByZWdhcmRpbmcgYEVuYWJsZUNvbmZpZ3NgLCB0aGUgY29yZSBtb2R1bGVzIHRvdWNoZWQgYnkgdGhpcyBwYXRjaCBhcmUgZW5hYmxlZCBieSBgTUVESUFfU1VQUE9SVGAgYW5kIGBWSURFT19ERVZgLiBMZXQncyBjb25maXJtIGFueSBzcGVjaWZpY3MgcmVnYXJkaW5nIHRoZSBWaXZpZCBkcml2ZXIuIEknbGwgbmVlZCB0byBjaGVjayBgZHJpdmVycy9tZWRpYS9LY29uZmlnYCB0byBwaW5wb2ludCB3aGV0aGVyIGB2aXZpZGAgb3Igb3RoZXIgcmVsZXZhbnQgZHJpdmVycyByZXF1aXJlIGFkZGl0aW9uYWwgY29uZmlncy4gSSdtIHJlYXNvbmFibHkgc3VyZSBgTUVESUFfU1VQUE9SVGAgYW5kIGBWSURFT19ERVZgIHdpbGwgYmUgc3VmZmljaWVudCwgYnV0IEkgd2lsbCBkb3VibGUtY2hlY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4MjY3LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE2MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDIxOjQ2OjA2LjcxODcwMDIyOVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODM4MDY5NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWVudWNvbmZpZyBNRURJQV9TVVBQT1JUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbWVkaWFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9tZWRpYS9LY29uZmlnPTEwPXNvdXJjZSBcXFwiZHJpdmVycy9tZWRpYS9jZWMvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL21lZGlhL0tjb25maWctMTEtXFxuZHJpdmVycy9tZWRpYS9LY29uZmlnOjEyOm1lbnVjb25maWcgTUVESUFfU1VQUE9SVFxcbmRyaXZlcnMvbWVkaWEvS2NvbmZpZy0xMy1cXHR0cmlzdGF0ZSBcXFwiTXVsdGltZWRpYSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQyMTo0NjowNi44MDI1MTU0NzhaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjYyMDU0NDk1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqQ2hlY2tpbmcgS2VybmVsIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBpbi4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBjdXJyZW50IHN0YXRlIG9mIG1lZGlhIHN1cHBvcnQgaW4gdGhlIGtlcm5lbC4gTGV0J3Mgc3RhcnQgYnkgemVyb2luZyBpbiBvbiB0aG9zZSBjb3JlIGNvbmZpZ3VyYXRpb25zLiBJJ20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayBgTUVESUFfU1VQUE9SVGAgYW5kIGBWSURFT19ERVZgIHdpdGhpbiB0aGUgYGRyaXZlcnMvbWVkaWEvS2NvbmZpZ2AgZmlsZS4gVGhhdCdzIHVzdWFsbHkgdGhlIGJlc3QgcGxhY2UgdG8gZmluZCB0aGUgaGlnaC1sZXZlbCBmbGFncyB0aGF0IGdvdmVybiBhIGxvdCBvZiB0aGUgc3Vic3lzdGVtJ3MgYmVoYXZpb3VyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGVzZSBhcmUgZW5hYmxlZCwgZGlzYWJsZWQsIG9yIGlmIHRoZWlyIGRlcGVuZGVuY2llcyBoYXZlIGNoYW5nZWQgc2luY2UgdGhlIGxhc3QgdGltZSBJIGxvb2tlZC4gQSBxdWljayBzY2FuIHRoZXJlIHNob3VsZCBnaXZlIG1lIHRoZSBsYXkgb2YgdGhlIGxhbmQsIHdoaWNoIHdpbGwgdGhlbiBpbmZvcm0gbXkgbmV4dCBzdGVwcy4gVGhpcyBpcyBhIHNvbGlkIHN0YXJ0aW5nIHBvaW50IGZvciBhbnkgbWVkaWEtcmVsYXRlZCBpbnZlc3RpZ2F0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDE4OCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDIxOjQ2OjA5LjQyMzA2Mjk5N1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDIwMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9tZWRpYS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEwLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDEwOlxcdHNvdXJjZSBcXFwiZHJpdmVycy9tZWRpYS9jZWMvS2NvbmZpZ1xcXCJcXG4gIDExOlxcdFxcbiAgMTI6XFx0bWVudWNvbmZpZyBNRURJQV9TVVBQT1JUXFxuICAxMzpcXHRcXHR0cmlzdGF0ZSBcXFwiTXVsdGltZWRpYSBzdXBwb3J0XFxcIlxcbiAgMTQ6XFx0XFx0ZGVwZW5kcyBvbiBIQVNfSU9NRU1cXG4gIDE1OlxcdFxcdGhlbHBcXG4gIDE2OlxcdFxcdCAgSWYgeW91IHdhbnQgdG8gdXNlIG1lZGlhIGRldmljZXMsIGluY2x1ZGluZyBXZWJjYW1zLCBWaWRlbyBncmFiYmVyXFxuICAxNzpcXHRcXHQgIGRldmljZXMgYW5kL29yIFRWIGRldmljZXMsIFY0TDIgY29kZWNzLCBldGMsIGVuYWJsZSB0aGlzIG9wdGlvblxcbiAgMTg6XFx0XFx0ICBhbmQgb3RoZXIgb3B0aW9ucyBiZWxvdy5cXG4gIDE5OlxcdFxcbiAgMjA6XFx0XFx0ICBBZGRpdGlvbmFsIGluZm8gYW5kIGRvY3MgYXJlIGF2YWlsYWJsZSBvbiB0aGUgd2ViIGF0XFxuICAyMTpcXHRcXHQgIFxcdTAwM2NodHRwczovL2xpbnV4dHYub3JnXFx1MDAzZVxcbiAgMjI6XFx0XFxuICAyMzpcXHRpZiBNRURJQV9TVVBQT1JUXFxuICAyNDpcXHRcXG4gIDI1OlxcdGNvbmZpZyBNRURJQV9TVVBQT1JUX0ZJTFRFUlxcbiAgMjY6XFx0XFx0Ym9vbCBcXFwiRmlsdGVyIG1lZGlhIGRyaXZlcnNcXFwiXFxuICAyNzpcXHRcXHRkZWZhdWx0IHkgaWYgIUVYUEVSVFxcbiAgMjg6XFx0XFx0aGVscFxcbiAgMjk6XFx0XFx0ICAgQ29uZmlndXJpbmcgdGhlIG1lZGlhIHN1YnN5c3RlbSBjYW4gYmUgY29tcGxleCwgYXMgdGhlcmUgYXJlXFxuICAzMDpcXHRcXHQgICBodW5kcmVkcyBvZiBkcml2ZXJzIGFuZCBvdGhlciBjb25maWcgb3B0aW9ucy5cXG4gIDMxOlxcdFxcbiAgMzI6XFx0XFx0ICAgVGhpcyBtZW51IG9mZmVycyBvcHRpb24gdGhhdCB3aWxsIGhlbHAgdGhlIEtlcm5lbCdzIGNvbmZpZ1xcbiAgMzM6XFx0XFx0ICAgc3lzdGVtIHRvIGhpZGUgZHJpdmVycyB0aGF0IGFyZSBvdXQgb2YgdGhlIHNjb3BlIG9mIHRoZVxcbiAgMzQ6XFx0XFx0ICAgdXNlciBuZWVkcywgYW5kIGRpc2FibGluZyBjb3JlIHN1cHBvcnQgZm9yIHVudXNlZCBBUElzLlxcbiAgMzU6XFx0XFxuICAzNjpcXHRcXHQgICBJZiBub3Qgc2VsZWN0ZWQsIGFsbCBub24tb3B0aW9uYWwgbWVkaWEgY29yZSBmdW5jdGlvbmFsaXR5XFxuICAzNzpcXHRcXHQgICBuZWVkZWQgdG8gc3VwcG9ydCBtZWRpYSBkcml2ZXJzIHdpbGwgYmUgZW5hYmxlZC4gQWxzbywgYWxsXFxuICAzODpcXHRcXHQgICBtZWRpYSBkZXZpY2UgZHJpdmVycyBzaG91bGQgYmUgc2hvd24uXFxuICAzOTpcXHRcXG4gIDQwOlxcdGNvbmZpZyBNRURJQV9TVUJEUlZfQVVUT1NFTEVDVFxcbiAgNDE6XFx0XFx0Ym9vbCBcXFwiQXV0b3NlbGVjdCBhbmNpbGxhcnkgZHJpdmVycyAodHVuZXJzLCBzZW5zb3JzLCBpMmMsIHNwaSwgZnJvbnRlbmRzKVxcXCJcXG4gIDQyOlxcdFxcdGRlcGVuZHMgb24gSEFTX0lPTUVNXFxuICA0MzpcXHRcXHRzZWxlY3QgSTJDXFxuICA0NDpcXHRcXHRzZWxlY3QgSTJDX01VWFxcbiAgNDU6XFx0XFx0ZGVmYXVsdCB5IGlmIE1FRElBX1NVUFBPUlRfRklMVEVSXFxuICA0NjpcXHRcXHRoZWxwXFxuICA0NzpcXHRcXHQgIEJ5IGRlZmF1bHQsIGEgbWVkaWEgZHJpdmVyIGF1dG8tc2VsZWN0cyBhbGwgcG9zc2libGUgYW5jaWxsYXJ5XFxuICA0ODpcXHRcXHQgIGRldmljZXMgc3VjaCBhcyB0dW5lcnMsIHNlbnNvcnMsIHZpZGVvIGVuY29kZXJzL2RlY29kZXJzIGFuZFxcbiAgNDk6XFx0XFx0ICBmcm9udGVuZHMsIHRoYXQgYXJlIHVzZWQgYnkgYW55IG9mIHRoZSBzdXBwb3J0ZWQgZGV2aWNlcy5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMjE6NDY6MDkuNDIzMjA5NDk3WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU2NDIxNjEzNjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgVjRMMiBDb250cm9sIENvbXBpbGF0aW9uKipcblxuT2theSwgc28gYmFzZWQgb24gdGhlIGluaXRpYWwgaW5mb3JtYXRpb24sIGl0IGxvb2tzIGxpa2UgYE1FRElBX1NVUFBPUlRgIGFuZCBgVklERU9fREVWYCBhcmUgdGhlIGtleSBjb25maWd1cmF0aW9ucyByZXF1aXJlZCB0byBjb21waWxlIGB2NGwyLWN0cmxzLWNvcmUuY2AuIFdlICpjb3VsZCogcG90ZW50aWFsbHkgY29uc2lkZXIgYFZJREVPX1RFU1RfRFJJVkVSU2AsIGBWSURFT19WSVZJRGAsIG9yIGBVU0JfR1NQQ0FgIGlmIHdlIHdhbnRlZCB0byBnZXQgbW9yZSBzcGVjaWZpYyBkcml2ZXJzIGludm9sdmVkLCBidXQgdGhlIGNvcmUgZm91bmRhdGlvbiBzZWVtcyB0byBiZSBgTUVESUFfU1VQUE9SVGAgYW5kIGBWSURFT19ERVZgLlxuXG5MZXQncyBxdWlja2x5IHZlcmlmeSB0aGF0IGBWSURFT19ERVZgIGFjdHVhbGx5IGluY2x1ZGVzIGB2NGwyLWN0cmxzLWNvcmUuY2AuIEkgbmVlZCB0byBjb25maXJtIHRoZSBidWlsZCBwcm9jZXNzLiBMb29raW5nIGluIGBkcml2ZXJzL21lZGlhL3Y0bDItY29yZS9NYWtlZmlsZWAsIEkgc2VlOlxuXG5gb2JqLSQoQ09ORklHX1ZJREVPX0RFVikgKz0gdjRsMi1kdi10aW1pbmdzLm8gdmlkZW9kZXYub2BcbmFuZFxuYHZpZGVvZGV2LW9ianMgOj0gLi4uIHY0bDItY3RybHMtY29yZS5vIC4uLmBcblxuQWxyaWdodCwgdGhhdCBjb25maXJtcyBpdDogZW5hYmxpbmcgYm90aCBgTUVESUFfU1VQUE9SVGAgYW5kIGBWSURFT19ERVZgIHdpbGwgaW5kZWVkIGNvbXBpbGUgYHZpZGVvZGV2Lm9gLCB3aGljaCBpbiB0dXJuIGluY2x1ZGVzIGB2NGwyLWN0cmxzLWNvcmUuY2AuXG5cbk5vdywgbGV0J3MganVzdCBtYWtlIHN1cmUgZXZlcnl0aGluZyBsaW5lcyB1cCBmcm9tIHRoZSB0cmlhZ2UgcGVyc3BlY3RpdmUuIEkgbmVlZCB0byBkbyBhIGZpbmFsIHF1aWNrIGNoZWNrIHRvIGVuc3VyZSB0aGUgYW5hbHlzaXMgaXMgc291bmQ6XG5cbjEuICAqKldvcnRoRnV6emluZzogVHJ1ZSoqIC0gU291bmRzIGdvb2QsIHRoZSBwYXRjaCBzZWVtcyBwcm9taXNpbmcgZm9yIGZ1enppbmcuXG4yLiAgKipSZWFzb25pbmc6KiogQ29ycmVjdCwgaXQncyBtb2RpZnlpbmcgdmFsaWRhdGlvbiBhbmQgZXJyb3IgaGFuZGxpbmcgaW4gYHY0bDJfY3RybF9jbHVzdGVyYCBhbmQgYHY0bDJfY3RybF9hdXRvX2NsdXN0ZXJgLCB1c2VkIGluIFY0TDIgZGV2aWNlIGRyaXZlcnMsIGluY2x1ZGluZyB0aG9zZSBhY2Nlc3NpYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIGB2aXZpZGAuXG4zLiAgKipGb2N1c1N5bWJvbHM6IFtcInY0bDJfY3RybF9jbHVzdGVyXCIsIFwidjRsMl9jdHJsX2F1dG9fY2x1c3RlclwiXSoqIC0gWXVwLCB0aGUgZnVuY3Rpb25zIGlkZW50aWZpZWQgYXMgdGhlIGFyZWEgb2YgaW50ZXJlc3QgaW4gdGhlIHBhdGNoIGFyZSB0aGUgY29ycmVjdCBvbmVzLlxuNC4gICoqRW5hYmxlQ29uZmlnczogW1wiTUVESUFfU1VQUE9SVFwiLCBcIlZJREVPX0RFVlwiXSoqIC0gV2UndmUgdmVyaWZpZWQgdGhpcywgdGhpcyBpcyB3aGF0IHRoZSBhbmFseXNpcyBsYW5kZWQgb24uXG5cbk9rYXksIGV2ZXJ5dGhpbmcgY2hlY2tzIG91dCwgbGV0J3MgY2FsbCBgc2V0LXJlc3VsdHNgLiBJJ20gY29uZmlkZW50IGluIHRoZXNlIGZpbmRpbmdzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDk4OCwiT3V0cHV0VG9rZW5zIjoxMzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNTcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQyMTo0NjoxNS4wNjUzNzQzOTdaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4Njg1NzQ4MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUVESUFfU1VQUE9SVFwiLFxuICAgIFwiVklERU9fREVWXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidjRsMl9jdHJsX2NsdXN0ZXJcIixcbiAgICBcInY0bDJfY3RybF9hdXRvX2NsdXN0ZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBjb250cm9sIGZsb3cgYW5kIE5VTEwgY2hlY2tzIGluIHRoZSBjb3JlIFY0TDIgY29udHJvbCBjbHVzdGVyaW5nIGZ1bmN0aW9ucyAodjRsMl9jdHJsX2NsdXN0ZXIgYW5kIHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIpLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSBhbmQgZXhlcmNpc2VkIGR1cmluZyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdmFyaW91cyBWNEwyIGRyaXZlcnMsIGluY2x1ZGluZyB2aXJ0dWFsIGRyaXZlcnMgKHN1Y2ggYXMgdml2aWQpIGFuZCBlbXVsYXRlZCBVU0IgbWVkaWEgZGV2aWNlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNRURJQV9TVVBQT1JUXCIsXG4gICAgXCJWSURFT19ERVZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2NGwyX2N0cmxfY2x1c3RlclwiLFxuICAgIFwidjRsMl9jdHJsX2F1dG9fY2x1c3RlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNvbnRyb2wgZmxvdyBhbmQgTlVMTCBjaGVja3MgaW4gdGhlIGNvcmUgVjRMMiBjb250cm9sIGNsdXN0ZXJpbmcgZnVuY3Rpb25zICh2NGwyX2N0cmxfY2x1c3RlciBhbmQgdjRsMl9jdHJsX2F1dG9fY2x1c3RlcikuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIGFuZCBleGVyY2lzZWQgZHVyaW5nIHRoZSBpbml0aWFsaXphdGlvbiBvZiB2YXJpb3VzIFY0TDIgZHJpdmVycywgaW5jbHVkaW5nIHZpcnR1YWwgZHJpdmVycyAoc3VjaCBhcyB2aXZpZCkgYW5kIGVtdWxhdGVkIFVTQiBtZWRpYSBkZXZpY2VzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQyMTo0NjoxNS4xNTIyMzk5NFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA4NDA3NDk3MDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQyMTo0NjoxNS4xNTI4MzA2MloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjEwODQwMTU0MTI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgdjRsMl9jdHJsX2NsdXN0ZXJgIGFuZCBgdjRsMl9jdHJsX2F1dG9fY2x1c3RlcmAgdG8gZ3JhY2VmdWxseSBoYW5kbGUgY2FzZXMgd2hlcmUgYGNvbnRyb2xzWzBdYCBpcyBOVUxMIG9yIGBuY29udHJvbHMgPT0gMGAsIHByZXZlbnRpbmcgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyBhbmQgcmVtb3ZpbmcgYW4gdW5uZWNlc3NhcnkgV0FSTl9PTi4gSXQgZG9lcyBub3QgaW50cm9kdWNlLCByZWFkLCBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgc3RhY2sgb3IgaGVhcCBtZW1vcnksIG5vciBkb2VzIGl0IHBhc3MgdW5pbml0aWFsaXplZCBkYXRhIHRvIHVzZXIgc3BhY2UuIFN0YW5kYXJkIHNhbml0aXplcnMgYW5kIEtBU0FOIGFyZSBzdWZmaWNpZW50IHRvIGRldGVjdCBtZW1vcnkgc2FmZXR5IGlzc3VlcyBpbiB0aGVzZSBjb250cm9sIHBhdGhzLiBUaGVyZWZvcmUsIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAwM2M1MTIwODhkZmFlMTY5ODMzMzIzMTIyZjk3MjI0MDE2YzM4Yjc5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBTZXAgOSAyMTo0NTozNCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL3Y0bDItY3RybHMtY29yZS5jIGIvZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1jdHJscy1jb3JlLmNcbmluZGV4IDViOGE1OTRmYjllMjQuLmU3N2NlN2I1NmZjYTYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwyLWN0cmxzLWNvcmUuY1xuKysrIGIvZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1jdHJscy1jb3JlLmNcbkBAIC0yNTIxLDggKzI1MjEsMTQgQEAgdm9pZCB2NGwyX2N0cmxfY2x1c3Rlcih1bnNpZ25lZCBuY29udHJvbHMsIHN0cnVjdCB2NGwyX2N0cmwgKipjb250cm9scylcbiBcdGJvb2wgaGFzX3ZvbGF0aWxlcyA9IGZhbHNlO1xuIFx0aW50IGk7XG4gXG4tXHQvKiBUaGUgZmlyc3QgY29udHJvbCBpcyB0aGUgbWFzdGVyIGNvbnRyb2wgYW5kIGl0IG11c3Qgbm90IGJlIE5VTEwgKi9cbi1cdGlmIChXQVJOX09OKG5jb250cm9scyA9PSAwIHx8IGNvbnRyb2xzWzBdID09IE5VTEwpKVxuK1x0aWYgKFdBUk5fT04obmNvbnRyb2xzID09IDApKVxuK1x0XHRyZXR1cm47XG4rXG4rXHQvKlxuK1x0ICogVGhlIGZpcnN0IGNvbnRyb2wgaXMgdGhlIG1hc3RlciBjb250cm9sLiBJZiB0aGlzIGlzIE5VTEwgdGhlblxuK1x0ICogdGhlcmUgaXMgbm90aGluZyB0byBkby5cbitcdCAqL1xuK1x0aWYgKGNvbnRyb2xzWzBdID09IE5VTEwpXG4gXHRcdHJldHVybjtcbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5jb250cm9sczsgaSsrKSB7XG5AQCAtMjU0MCwxMiArMjU0NiwxNCBAQCBFWFBPUlRfU1lNQk9MKHY0bDJfY3RybF9jbHVzdGVyKTtcbiB2b2lkIHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIodW5zaWduZWQgbmNvbnRyb2xzLCBzdHJ1Y3QgdjRsMl9jdHJsICoqY29udHJvbHMsXG4gXHRcdFx0ICAgIHU4IG1hbnVhbF92YWwsIGJvb2wgc2V0X3ZvbGF0aWxlKVxuIHtcbi1cdHN0cnVjdCB2NGwyX2N0cmwgKm1hc3RlciA9IGNvbnRyb2xzWzBdO1xuK1x0c3RydWN0IHY0bDJfY3RybCAqbWFzdGVyID0gbmNvbnRyb2xzID8gY29udHJvbHNbMF0gOiBOVUxMO1xuIFx0dTMyIGZsYWcgPSAwO1xuIFx0aW50IGk7XG4gXG4gXHR2NGwyX2N0cmxfY2x1c3RlcihuY29udHJvbHMsIGNvbnRyb2xzKTtcbiBcdFdBUk5fT04obmNvbnRyb2xzIFx1MDAzYz0gMSk7XG4rXHRpZiAoIW1hc3RlcilcbitcdFx0cmV0dXJuO1xuIFx0V0FSTl9PTihtYW51YWxfdmFsIFx1MDAzYyBtYXN0ZXItXHUwMDNlbWluaW11bSB8fCBtYW51YWxfdmFsIFx1MDAzZSBtYXN0ZXItXHUwMDNlbWF4aW11bSk7XG4gXHRXQVJOX09OKHNldF92b2xhdGlsZSBcdTAwMjZcdTAwMjYgIWhhc19vcChtYXN0ZXIsIGdfdm9sYXRpbGVfY3RybCkpO1xuIFx0bWFzdGVyLVx1MDAzZWlzX2F1dG8gPSB0cnVlO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMjE6NDY6MTUuMTUyODMxNTMxWiIsIlNlcSI6MjMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU1NTU3NDIwMDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBWaWRlbzRMaW51eCBDb250cm9sIFBhdGNoKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGV4YW1pbmUgdGhlIG1vZGlmaWNhdGlvbnMgd2l0aGluIHRoZSBgZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1jdHJscy1jb3JlLmNgIGZpbGUuIEkgc2VlIGNoYW5nZXMgaW4gYm90aCBgdjRsMl9jdHJsX2NsdXN0ZXJgIGFuZCBgdjRsMl9jdHJsX2F1dG9fY2x1c3RlcmAsIGFuZCBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoZXNlIGFsdGVyYXRpb25zLlxuXG5Mb29raW5nIGF0IGB2NGwyX2N0cmxfY2x1c3RlcmAsIGl0IGFwcGVhcnMgdGhlIG9yaWdpbmFsIGNvZGUgaGFkIGFuIGFzc2VydGlvbiByZWdhcmRpbmcgdGhlIGZpcnN0IGNvbnRyb2wgbm90IGJlaW5nIE5VTEwuIFRoZSBuZXcgdmVyc2lvbiBhY2tub3dsZWRnZXMgdGhhdCB0aGUgZmlyc3QgY29udHJvbCBtaWdodCwgaW4gZmFjdCwgYmUgTlVMTCwgYW5kIGFkanVzdHMgdGhlIGNvbmRpdGlvbmFsIGZsb3cgYWNjb3JkaW5nbHkuIFRoZSBvcmlnaW5hbCBoYWQ6XG5gYGBjXG4vKiBUaGUgZmlyc3QgY29udHJvbCBpcyB0aGUgbWFzdGVyIGNvbnRyb2wgYW5kIGl0IG11c3Qgbm90IGJlIE5VTEwgKi9cbmlmIChXQVJOX09OKG5jb250cm9scyA9PSAwIHx8IGNvbnRyb2xzWzBdID09IE5VTEwpKVxuICAgIHJldHVybjtcbmBgYFxuXG5BbmQgaXQncyBiZWVuIGNoYW5nZWQgdG86XG5cbmBgYGNcbmlmIChXQVJOX09OKG5jb250cm9scyA9PSAwKSlcbiAgICByZXR1cm47XG5cbi8qXG4gKiBUaGUgZmlyc3QgY29udHJvbCBpcyB0aGUgbWFzdGVyIGNvbnRyb2wuIElmIHRoaXMgaXMgTlVMTCB0aGVuXG4gKiB0aGVyZSBpcyBub3RoaW5nIHRvIGRvLlxuICovXG5pZiAoY29udHJvbHNbMF0gPT0gTlVMTClcbiAgICByZXR1cm47XG5gYGBcblxuVGhpcyBzdWdnZXN0cyBhIHJlZmluZW1lbnQgaW4gaGFuZGxpbmcgcG90ZW50aWFsbHkgZW1wdHkgY29udHJvbCBjbHVzdGVycy4gSSdsbCBuZWVkIHRvIGNvbnNpZGVyIHNjZW5hcmlvcyB3aGVyZSBhIGNsdXN0ZXIgbWlnaHQgbGVnaXRpbWF0ZWx5IHN0YXJ0IHdpdGhvdXQgYSBtYXN0ZXIgY29udHJvbC4gVGhlIG9sZGVyIGFzc2VydGlvbiB3b3VsZCBoYXZlIGZhaWxlZCBpZiBgY29udHJvbHNbMF1gIHdhcyBgTlVMTGAgZXZlbiBpZiBgbmNvbnRyb2xzYCB3YXMgZ3JlYXRlciB0aGFuIDAsIHdoaWxlIHRoZSBuZXcgdmVyc2lvbiBtb3JlIGV4cGxpY2l0bHkgc3RhdGVzIHdoYXQgaGFwcGVucyBpbiB0aGUgY2FzZSBvZiBhIGBOVUxMYCBtYXN0ZXIuXG5cbk1vdmluZyBvbnRvIGB2NGwyX2N0cmxfYXV0b19jbHVzdGVyYCwgdGhlIG1vc3Qgc2lnbmlmaWNhbnQgY2hhbmdlIGNvbmNlcm5zIHRoZSBoYW5kbGluZyBvZiB0aGUgbWFzdGVyIGNvbnRyb2wgd2l0aGluIHRoZSBhdXRvbWF0aWMgY2x1c3Rlci4gSW4gdGhlIG9sZCBjb2RlOlxuYGBgY1xuc3RydWN0IHY0bDJfY3RybCAqbWFzdGVyID0gY29udHJvbHNbMF07XG4uLi5cbnY0bDJfY3RybF9jbHVzdGVyKG5jb250cm9scywgY29udHJvbHMpO1xuV0FSTl9PTihuY29udHJvbHMgXHUwMDNjPSAxKTtcbldBUk5fT04obWFudWFsX3ZhbCBcdTAwM2MgbWFzdGVyLVx1MDAzZW1pbmltdW0gfHwgbWFudWFsX3ZhbCBcdTAwM2UgbWFzdGVyLVx1MDAzZW1heGltdW0pO1xuYGBgXG5cblRoZSBtYXN0ZXIgY29udHJvbCB3YXMgYWx3YXlzIGFzc3VtZWQgdG8gZXhpc3QuIFRoZSByZXZpc2VkIGNvZGU6XG5cbmBgYGNcbnN0cnVjdCB2NGwyX2N0cmwgKm1hc3RlciA9IG5jb250cm9scyA/IGNvbnRyb2xzWzBdIDogTlVMTDtcbnUzMiBmbGFnID0gMDtcbmludCBpO1xuXG52NGwyX2N0cmxfY2x1c3RlcihuY29udHJvbHMsIGNvbnRyb2xzKTtcbldBUk5fT04obmNvbnRyb2xzIFx1MDAzYz0gMSk7XG5pZiAoIW1hc3RlcilcbiAgICByZXR1cm47XG5gYGBcblxuTm93LCBpdCBleHBsaWNpdGx5IGNoZWNrcyBpZiBgbmNvbnRyb2xzYCBpcyBncmVhdGVyIHRoYW4gMCBiZWZvcmUgYXNzaWduaW5nIGBtYXN0ZXJgLiBUaGlzIGlzIGEgY3J1Y2lhbCBpbXByb3ZlbWVudCBiZWNhdXNlIGl0IHByZXZlbnRzIGEgTlVMTCBkZXJlZmVyZW5jZSBpZiB0aGUgY2x1c3RlciBpcyBlbXB0eSBvciBvbmx5IGhhcyBvbmUgY29udHJvbC4gSXQgYWxzbyBwcm92aWRlcyBmb3IgYSBiZXR0ZXIgZWFybHkgZXhpdC4gVGhlIHN1YnNlcXVlbnQgY2hlY2tzIHJlbGF0ZWQgdG8gYG1hc3Rlci1cdTAwM2VtaW5pbXVtYCBhbmQgYG1hc3Rlci1cdTAwM2VtYXhpbXVtYCBhcmUgbm93IGRlcGVuZGVudCBvbiBhIHZhbGlkIGBtYXN0ZXJgLlxuXG5UbyBmdWxseSBncmFzcCB0aGUgaW50ZW50IGFuZCBwb3RlbnRpYWwgcmFtaWZpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZSwgSSdsbCBuZWVkIHRvIGRlbHZlIGRlZXBlciBpbnRvIHRoZSBzdXJyb3VuZGluZyBjb2RlLiBJJ2xsIHVzZSBgcmVhZC1maWxlYCBvciBgZ3JlcHBlcmAgdG8gZXhhbWluZSB0aGUgY29udGV4dCBvZiB0aGVzZSBmdW5jdGlvbnMgd2l0aGluIGB2NGwyLWN0cmxzLWNvcmUuY2AsIGFuZCBwb3RlbnRpYWxseSB0cmFjZSB0aGUgY2FsbCBjaGFpbnMgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgY2x1c3RlcnMgYXJlIGNyZWF0ZWQgYW5kIHVzZWQuIEknbGwgYmUgbG9va2luZyBmb3IgY2FzZXMgd2hlcmUgdGhpcyBjb3VsZCBpbXByb3ZlIG9yIGJyZWFrIHRoaW5ncy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5IHRoZSBvcmlnaW5hbCBhc3N1bXB0aW9uIGFib3V0IGEgbWFzdGVyIGNvbnRyb2wgd2FzIGNoYW5nZWQ7IHdhcyBpdCBhIGJ1ZyBmaXgsIGFuIG9wdGltaXphdGlvbiwgb3IgYSBmZWF0dXJlIGVuaGFuY2VtZW50PyBJJ2xsIGFsc28gd2FudCB0byBsb29rIGF0IHdoZXRoZXIgdGhpcyBoYXMgYW55IGltcGFjdCBvbiBvdGhlciBwYXJ0cyBvZiB0aGUgZHJpdmVyLCBhbmQgZXNwZWNpYWxseSBhbnkgZGVwZW5kZW5jaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDQ1LCJPdXRwdXRUb2tlbnMiOjUxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDAyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMjE6NDY6MjAuNzA4NTc3Mzg4WiIsIlNlcSI6MjQsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMjk2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwyLWN0cmxzLWNvcmUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyNTE1LFxuICBcIkxpbmVDb3VudFwiOiA1NVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyNTE1OlxcdH1cXG4yNTE2OlxcdEVYUE9SVF9TWU1CT0wodjRsMl9jdHJsX3JhZGlvX2ZpbHRlcik7XFxuMjUxNzpcXHRcXG4yNTE4OlxcdC8qIENsdXN0ZXIgY29udHJvbHMgKi9cXG4yNTE5OlxcdHZvaWQgdjRsMl9jdHJsX2NsdXN0ZXIodW5zaWduZWQgbmNvbnRyb2xzLCBzdHJ1Y3QgdjRsMl9jdHJsICoqY29udHJvbHMpXFxuMjUyMDpcXHR7XFxuMjUyMTpcXHRcXHRib29sIGhhc192b2xhdGlsZXMgPSBmYWxzZTtcXG4yNTIyOlxcdFxcdGludCBpO1xcbjI1MjM6XFx0XFxuMjUyNDpcXHRcXHRpZiAoV0FSTl9PTihuY29udHJvbHMgPT0gMCkpXFxuMjUyNTpcXHRcXHRcXHRyZXR1cm47XFxuMjUyNjpcXHRcXG4yNTI3OlxcdFxcdC8qXFxuMjUyODpcXHRcXHQgKiBUaGUgZmlyc3QgY29udHJvbCBpcyB0aGUgbWFzdGVyIGNvbnRyb2wuIElmIHRoaXMgaXMgTlVMTCB0aGVuXFxuMjUyOTpcXHRcXHQgKiB0aGVyZSBpcyBub3RoaW5nIHRvIGRvLlxcbjI1MzA6XFx0XFx0ICovXFxuMjUzMTpcXHRcXHRpZiAoY29udHJvbHNbMF0gPT0gTlVMTClcXG4yNTMyOlxcdFxcdFxcdHJldHVybjtcXG4yNTMzOlxcdFxcbjI1MzQ6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG5jb250cm9sczsgaSsrKSB7XFxuMjUzNTpcXHRcXHRcXHRpZiAoY29udHJvbHNbaV0pIHtcXG4yNTM2OlxcdFxcdFxcdFxcdGNvbnRyb2xzW2ldLVxcdTAwM2VjbHVzdGVyID0gY29udHJvbHM7XFxuMjUzNzpcXHRcXHRcXHRcXHRjb250cm9sc1tpXS1cXHUwMDNlbmNvbnRyb2xzID0gbmNvbnRyb2xzO1xcbjI1Mzg6XFx0XFx0XFx0XFx0aWYgKGNvbnRyb2xzW2ldLVxcdTAwM2VmbGFncyBcXHUwMDI2IFY0TDJfQ1RSTF9GTEFHX1ZPTEFUSUxFKVxcbjI1Mzk6XFx0XFx0XFx0XFx0XFx0aGFzX3ZvbGF0aWxlcyA9IHRydWU7XFxuMjU0MDpcXHRcXHRcXHR9XFxuMjU0MTpcXHRcXHR9XFxuMjU0MjpcXHRcXHRjb250cm9sc1swXS1cXHUwMDNlaGFzX3ZvbGF0aWxlcyA9IGhhc192b2xhdGlsZXM7XFxuMjU0MzpcXHR9XFxuMjU0NDpcXHRFWFBPUlRfU1lNQk9MKHY0bDJfY3RybF9jbHVzdGVyKTtcXG4yNTQ1OlxcdFxcbjI1NDY6XFx0dm9pZCB2NGwyX2N0cmxfYXV0b19jbHVzdGVyKHVuc2lnbmVkIG5jb250cm9scywgc3RydWN0IHY0bDJfY3RybCAqKmNvbnRyb2xzLFxcbjI1NDc6XFx0XFx0XFx0XFx0ICAgIHU4IG1hbnVhbF92YWwsIGJvb2wgc2V0X3ZvbGF0aWxlKVxcbjI1NDg6XFx0e1xcbjI1NDk6XFx0XFx0c3RydWN0IHY0bDJfY3RybCAqbWFzdGVyID0gbmNvbnRyb2xzID8gY29udHJvbHNbMF0gOiBOVUxMO1xcbjI1NTA6XFx0XFx0dTMyIGZsYWcgPSAwO1xcbjI1NTE6XFx0XFx0aW50IGk7XFxuMjU1MjpcXHRcXG4yNTUzOlxcdFxcdHY0bDJfY3RybF9jbHVzdGVyKG5jb250cm9scywgY29udHJvbHMpO1xcbjI1NTQ6XFx0XFx0V0FSTl9PTihuY29udHJvbHMgXFx1MDAzYz0gMSk7XFxuMjU1NTpcXHRcXHRpZiAoIW1hc3RlcilcXG4yNTU2OlxcdFxcdFxcdHJldHVybjtcXG4yNTU3OlxcdFxcdFdBUk5fT04obWFudWFsX3ZhbCBcXHUwMDNjIG1hc3Rlci1cXHUwMDNlbWluaW11bSB8fCBtYW51YWxfdmFsIFxcdTAwM2UgbWFzdGVyLVxcdTAwM2VtYXhpbXVtKTtcXG4yNTU4OlxcdFxcdFdBUk5fT04oc2V0X3ZvbGF0aWxlIFxcdTAwMjZcXHUwMDI2ICFoYXNfb3AobWFzdGVyLCBnX3ZvbGF0aWxlX2N0cmwpKTtcXG4yNTU5OlxcdFxcdG1hc3Rlci1cXHUwMDNlaXNfYXV0byA9IHRydWU7XFxuMjU2MDpcXHRcXHRtYXN0ZXItXFx1MDAzZWhhc192b2xhdGlsZXMgPSBzZXRfdm9sYXRpbGU7XFxuMjU2MTpcXHRcXHRtYXN0ZXItXFx1MDAzZW1hbnVhbF9tb2RlX3ZhbHVlID0gbWFudWFsX3ZhbDtcXG4yNTYyOlxcdFxcdG1hc3Rlci1cXHUwMDNlZmxhZ3MgfD0gVjRMMl9DVFJMX0ZMQUdfVVBEQVRFO1xcbjI1NjM6XFx0XFxuMjU2NDpcXHRcXHRpZiAoIWlzX2N1cl9tYW51YWwobWFzdGVyKSlcXG4yNTY1OlxcdFxcdFxcdGZsYWcgPSBWNEwyX0NUUkxfRkxBR19JTkFDVElWRSB8XFxuMjU2NjpcXHRcXHRcXHRcXHQoc2V0X3ZvbGF0aWxlID8gVjRMMl9DVFJMX0ZMQUdfVk9MQVRJTEUgOiAwKTtcXG4yNTY3OlxcdFxcbjI1Njg6XFx0XFx0Zm9yIChpID0gMTsgaSBcXHUwMDNjIG5jb250cm9sczsgaSsrKVxcbjI1Njk6XFx0XFx0XFx0aWYgKGNvbnRyb2xzW2ldKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQyMTo0NjoyMC43MDg3ODI0NThaIiwiU2VxIjoyNSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTI4NDE4MjQ5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBWNEwyIENvbnRyb2wgRnJhbWV3b3JrIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJdCBzZWVtcyB3ZSdyZSBsb29raW5nIGF0IGEgcGF0Y2ggZm9yIHRoZSBWNEwyIGNvbnRyb2wgZnJhbWV3b3JrLCBzcGVjaWZpY2FsbHkgZGVhbGluZyB3aXRoIHRoZSBgdjRsMl9jdHJsX2NsdXN0ZXJgIGFuZCBgdjRsMl9jdHJsX2F1dG9fY2x1c3RlcmAgZnVuY3Rpb25zLiBUaGVzZSBhcmUgaGVscGVyIGZ1bmN0aW9ucywgdGhlIGJ1aWxkaW5nIGJsb2NrcyBmb3IgZ3JvdXBpbmcgY29udHJvbHMgdG9nZXRoZXIuIFRoZSBjb3JlIG9mIHRoaXMgcGF0Y2ggYWRkcmVzc2VzIGEgc2NlbmFyaW8gd2hlcmUgdGhlIGBjb250cm9sc2AgYXJyYXkgcGFzc2VkIHRvIHRoZXNlIGZ1bmN0aW9ucyBpcyBlaXRoZXIgZW1wdHkgKGBuY29udHJvbHMgPT0gMGApIG9yLCBjcnVjaWFsbHksIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoYXQgYXJyYXkgaXMgYSBudWxsIHBvaW50ZXIgKGBjb250cm9sc1swXSA9PSBOVUxMYCkuXG5cblRoZSBjb25jZXJuLCBhbmQgdGhlIG1vdGl2YXRpb24gZm9yIHRoaXMgcGF0Y2gsIGlzIHByZXZlbnRpbmcgY3Jhc2hlcyBvciB1bmRlc2lyYWJsZSBiZWhhdmlvciBpbiB0aGVzZSBzaXR1YXRpb25zLiBXaGF0IHRoZSBwYXRjaCBkb2VzIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6XG5cbiogICBJbiBgdjRsMl9jdHJsX2NsdXN0ZXJgLCB0aGUgZXhpc3RpbmcgYFdBUk5fT05gIGNoZWNrIGZvciBhIGBOVUxMYCBgY29udHJvbHNbMF1gIGlzIHJlbW92ZWQsIGFuZCB0aGUgZnVuY3Rpb24gbm93IHNpbXBseSByZXR1cm5zIGVhcmx5LCBncmFjZWZ1bGx5IGhhbmRsaW5nIHRoZSBjYXNlLlxuKiAgIEluIGB2NGwyX2N0cmxfYXV0b19jbHVzdGVyYCwgd2hpY2ggaXMgdHJpY2tpZXIsIGl0IGV4cGxpY2l0bHkgcHJvdGVjdHMgYWdhaW5zdCBwb3RlbnRpYWwgbnVsbCBwb2ludGVyIGRlcmVmZXJlbmNlcyBvciBvdXQtb2YtYm91bmRzIGFjY2Vzcy4gSXQncyBub3cgY2hlY2tpbmcgaWYgYG5jb250cm9scyA9PSAwYCBvciBgY29udHJvbHNbMF0gPT0gTlVMTGAgYmVmb3JlIGFjY2Vzc2luZyBtZW1iZXJzIG9mIHRoZSBgbWFzdGVyYCBjb250cm9sLlxuXG5Ob3csIHRoZSBpbXBvcnRhbnQgcGFydDogZG9lcyB0aGlzIHBhdGNoIGludHJvZHVjZSBhbnkgbmV3IHJpc2tzPyBNeSBpbml0aWFsIHRob3VnaHQgaXMgbm8sIGJ1dCB3ZSBuZWVkIHRvIGJlIHRob3JvdWdoLlxuXG4qICAgTm8gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWVzOiB0aGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBzdGFjayBvciBoZWFwIGFsbG9jYXRpb25zIGluIHRoaXMgcGF0Y2guXG4qICAgTm8gaW5mb3JtYXRpb24gbGVha3M6IHRoZXJlIGlzIG5vIGBjb3B5X3RvX3VzZXJgIG9yIGFueSBvdGhlciBtZWFucyBmb3Iga2VybmVsLXRvLXVzZXIgaW5mb3JtYXRpb24gbGVha3MuXG4qICAgTm8gcmVsaWFuY2Ugb24gdW5pbml0aWFsaXplZCBkYXRhOiB0aGVyZSBhcmUgbm8gY29uZGl0aW9uYWwgYnJhbmNoZXMgYmFzZWQgb24gdW5pbml0aWFsaXplZCBkYXRhLCBzbyB3ZSdyZSBzYWZlIHRoZXJlLlxuKiAgIEluIGZhY3QsIHRoZSBwYXRjaCdzIG1haW4gZ29hbCBpcyAqcHJldmVudGluZyogTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyB3aGljaCBpcyBhIHBvc2l0aXZlISBUaGVzZSB0eXBlcyBvZiBlcnJvcnMgYXJlIGNvdmVyZWQgYnkgc3RhbmRhcmQga2VybmVsIHJ1bnRpbWUgY2hlY2tzIGFuZCBLQVNBTi5cblxuTGV0J3MgZG91YmxlLWNoZWNrIGFueSBLTVNBTiBjb25jZXJucywgdGhvdWdoLiBTaW5jZSBLTVNBTiBpcyBkZXNpZ25lZCB0byBjYXRjaCB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBhbmQgbGVha3MgdG8gdXNlciBzcGFjZSwgdGhlIHBhdGNoIHNlZW1zIHNhZmUuIEtBU0FOIGFuZCBzdGFuZGFyZCBzYW5pdGl6ZXJzIGhhbmRsZSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzLCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCBhbmQgdXNlLWFmdGVyLWZyZWUgc2l0dWF0aW9ucyBhbnl3YXkuXG5cbkluIGNvbmNsdXNpb24sIEkgdGhpbmsgdGhpcyBwYXRjaCBpcyBhIHNhZmUgYW5kIGNvcnJlY3QgZml4LiBJJ2xsIGdldCByZWFkeSB0byBwcmVwYXJlIHRoZSB0b29sIGNhbGwgdG8gc2V0IHRoZSByZXN1bHRzIHRvICdQQVNTJy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDUxOSwiT3V0cHV0VG9rZW5zIjoxNDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNDcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQyMTo0NjoyNS45OTI5NjgzNTdaIiwiU2VxIjoyNiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDQwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGB2NGwyX2N0cmxfY2x1c3RlcmAgYW5kIGB2NGwyX2N0cmxfYXV0b19jbHVzdGVyYCB0byBncmFjZWZ1bGx5IGhhbmRsZSBjYXNlcyB3aGVyZSBgY29udHJvbHNbMF1gIGlzIE5VTEwgb3IgYG5jb250cm9scyA9PSAwYCwgcHJldmVudGluZyBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIGFuZCByZW1vdmluZyBhbiB1bm5lY2Vzc2FyeSBXQVJOX09OLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UsIHJlYWQsIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBzdGFjayBvciBoZWFwIG1lbW9yeSwgbm9yIGRvZXMgaXQgcGFzcyB1bmluaXRpYWxpemVkIGRhdGEgdG8gdXNlciBzcGFjZS4gU3RhbmRhcmQgc2FuaXRpemVycyBhbmQgS0FTQU4gYXJlIHN1ZmZpY2llbnQgdG8gZGV0ZWN0IG1lbW9yeSBzYWZldHkgaXNzdWVzIGluIHRoZXNlIGNvbnRyb2wgcGF0aHMuIFRoZXJlZm9yZSwgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGB2NGwyX2N0cmxfY2x1c3RlcmAgYW5kIGB2NGwyX2N0cmxfYXV0b19jbHVzdGVyYCB0byBncmFjZWZ1bGx5IGhhbmRsZSBjYXNlcyB3aGVyZSBgY29udHJvbHNbMF1gIGlzIE5VTEwgb3IgYG5jb250cm9scyA9PSAwYCwgcHJldmVudGluZyBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIGFuZCByZW1vdmluZyBhbiB1bm5lY2Vzc2FyeSBXQVJOX09OLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UsIHJlYWQsIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBzdGFjayBvciBoZWFwIG1lbW9yeSwgbm9yIGRvZXMgaXQgcGFzcyB1bmluaXRpYWxpemVkIGRhdGEgdG8gdXNlciBzcGFjZS4gU3RhbmRhcmQgc2FuaXRpemVycyBhbmQgS0FTQU4gYXJlIHN1ZmZpY2llbnQgdG8gZGV0ZWN0IG1lbW9yeSBzYWZldHkgaXNzdWVzIGluIHRoZXNlIGNvbnRyb2wgcGF0aHMuIFRoZXJlZm9yZSwgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowjd46p[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-09 21:43:58 +0000 UTC FinishedAt: 2026-09-09 21:46:27 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "df2908090cda368b01ff43709f51890076c56157", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MEDIA_SUPPORT", "VIDEO_DEV" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "df2908090cda368b01ff43709f51890076c56157", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MEDIA_SUPPORT", "VIDEO_DEV" ], "series_id": "e40cd1e7-13e0-4bca-b362-dfd662d1c328" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "v4l2_ctrl_cluster", "v4l2_ctrl_auto_cluster" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDIxOjQ1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01FRElBX1NVUFBPUlQmIzM0OywKICAgICYjMzQ7VklERU9fREVWJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7djRsMl9jdHJsX2NsdXN0ZXImIzM0OywKICAgICYjMzQ7djRsMl9jdHJsX2F1dG9fY2x1c3RlciYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGB2NGwyX2N0cmxfY2x1c3RlcmAgYW5kIGB2NGwyX2N0cmxfYXV0b19jbHVzdGVyYCB0byBncmFjZWZ1bGx5IGhhbmRsZSBjYXNlcyB3aGVyZSBgY29udHJvbHNbMF1gIGlzIE5VTEwgb3IgYG5jb250cm9scyA9PSAwYCwgcHJldmVudGluZyBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIGFuZCByZW1vdmluZyBhbiB1bm5lY2Vzc2FyeSBXQVJOX09OLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UsIHJlYWQsIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBzdGFjayBvciBoZWFwIG1lbW9yeSwgbm9yIGRvZXMgaXQgcGFzcyB1bmluaXRpYWxpemVkIGRhdGEgdG8gdXNlciBzcGFjZS4gU3RhbmRhcmQgc2FuaXRpemVycyBhbmQgS0FTQU4gYXJlIHN1ZmZpY2llbnQgdG8gZGV0ZWN0IG1lbW9yeSBzYWZldHkgaXNzdWVzIGluIHRoZXNlIGNvbnRyb2wgcGF0aHMuIFRoZXJlZm9yZSwgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb250cm9sIGZsb3cgYW5kIE5VTEwgY2hlY2tzIGluIHRoZSBjb3JlIFY0TDIgY29udHJvbCBjbHVzdGVyaW5nIGZ1bmN0aW9ucyAodjRsMl9jdHJsX2NsdXN0ZXIgYW5kIHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIpLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSBhbmQgZXhlcmNpc2VkIGR1cmluZyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdmFyaW91cyBWNEwyIGRyaXZlcnMsIGluY2x1ZGluZyB2aXJ0dWFsIGRyaXZlcnMgKHN1Y2ggYXMgdml2aWQpIGFuZCBlbXVsYXRlZCBVU0IgbWVkaWEgZGV2aWNlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAyMTo0NTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDAzYzUxMjA4OGRmYWUxNjk4MzMzMjMxMjJmOTcyMjQwMTZjMzhiNzlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIFNlcCA5IDIxOjQ1OjM0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL3Y0bDItY3RybHMtY29yZS5jIGIvZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1jdHJscy1jb3JlLmNcbmluZGV4IDViOGE1OTRmYjllMjQuLmU3N2NlN2I1NmZjYTYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwyLWN0cmxzLWNvcmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1jdHJscy1jb3JlLmNcbkBAIC0yNTIxLDggJiM0MzsyNTIxLDE0IEBAIHZvaWQgdjRsMl9jdHJsX2NsdXN0ZXIodW5zaWduZWQgbmNvbnRyb2xzLCBzdHJ1Y3QgdjRsMl9jdHJsICoqY29udHJvbHMpXG4gXHRib29sIGhhc192b2xhdGlsZXMgPSBmYWxzZTtcbiBcdGludCBpO1xuIFxuLVx0LyogVGhlIGZpcnN0IGNvbnRyb2wgaXMgdGhlIG1hc3RlciBjb250cm9sIGFuZCBpdCBtdXN0IG5vdCBiZSBOVUxMICovXG4tXHRpZiAoV0FSTl9PTihuY29udHJvbHMgPT0gMCB8fCBjb250cm9sc1swXSA9PSBOVUxMKSlcbiYjNDM7XHRpZiAoV0FSTl9PTihuY29udHJvbHMgPT0gMCkpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogVGhlIGZpcnN0IGNvbnRyb2wgaXMgdGhlIG1hc3RlciBjb250cm9sLiBJZiB0aGlzIGlzIE5VTEwgdGhlblxuJiM0MztcdCAqIHRoZXJlIGlzIG5vdGhpbmcgdG8gZG8uXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKGNvbnRyb2xzWzBdID09IE5VTEwpXG4gXHRcdHJldHVybjtcbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5jb250cm9sczsgaSYjNDM7JiM0MzspIHtcbkBAIC0yNTQwLDEyICYjNDM7MjU0NiwxNCBAQCBFWFBPUlRfU1lNQk9MKHY0bDJfY3RybF9jbHVzdGVyKTtcbiB2b2lkIHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIodW5zaWduZWQgbmNvbnRyb2xzLCBzdHJ1Y3QgdjRsMl9jdHJsICoqY29udHJvbHMsXG4gXHRcdFx0ICAgIHU4IG1hbnVhbF92YWwsIGJvb2wgc2V0X3ZvbGF0aWxlKVxuIHtcbi1cdHN0cnVjdCB2NGwyX2N0cmwgKm1hc3RlciA9IGNvbnRyb2xzWzBdO1xuJiM0MztcdHN0cnVjdCB2NGwyX2N0cmwgKm1hc3RlciA9IG5jb250cm9scyA/IGNvbnRyb2xzWzBdIDogTlVMTDtcbiBcdHUzMiBmbGFnID0gMDtcbiBcdGludCBpO1xuIFxuIFx0djRsMl9jdHJsX2NsdXN0ZXIobmNvbnRyb2xzLCBjb250cm9scyk7XG4gXHRXQVJOX09OKG5jb250cm9scyBcdTAwM2M9IDEpO1xuJiM0MztcdGlmICghbWFzdGVyKVxuJiM0MztcdFx0cmV0dXJuO1xuIFx0V0FSTl9PTihtYW51YWxfdmFsIFx1MDAzYyBtYXN0ZXItXHUwMDNlbWluaW11bSB8fCBtYW51YWxfdmFsIFx1MDAzZSBtYXN0ZXItXHUwMDNlbWF4aW11bSk7XG4gXHRXQVJOX09OKHNldF92b2xhdGlsZSBcdTAwMjZcdTAwMjYgIWhhc19vcChtYXN0ZXIsIGdfdm9sYXRpbGVfY3RybCkpO1xuIFx0bWFzdGVyLVx1MDAzZWlzX2F1dG8gPSB0cnVlO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDIxOjQ1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01FRElBX1NVUFBPUlQmIzM0OywKICAgICYjMzQ7VklERU9fREVWJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7djRsMl9jdHJsX2NsdXN0ZXImIzM0OywKICAgICYjMzQ7djRsMl9jdHJsX2F1dG9fY2x1c3RlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb250cm9sIGZsb3cgYW5kIE5VTEwgY2hlY2tzIGluIHRoZSBjb3JlIFY0TDIgY29udHJvbCBjbHVzdGVyaW5nIGZ1bmN0aW9ucyAodjRsMl9jdHJsX2NsdXN0ZXIgYW5kIHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIpLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSBhbmQgZXhlcmNpc2VkIGR1cmluZyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdmFyaW91cyBWNEwyIGRyaXZlcnMsIGluY2x1ZGluZyB2aXJ0dWFsIGRyaXZlcnMgKHN1Y2ggYXMgdml2aWQpIGFuZCBlbXVsYXRlZCBVU0IgbWVkaWEgZGV2aWNlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDAzYzUxMjA4OGRmYWUxNjk4MzMzMjMxMjJmOTcyMjQwMTZjMzhiNzkKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIFNlcCA5IDIxOjQ1OjM0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1jdHJscy1jb3JlLmMgYi9kcml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwyLWN0cmxzLWNvcmUuYwppbmRleCA1YjhhNTk0ZmI5ZTI0Li5lNzdjZTdiNTZmY2E2IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwyLWN0cmxzLWNvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwyLWN0cmxzLWNvcmUuYwpAQCAtMjUyMSw4ICYjNDM7MjUyMSwxNCBAQCB2b2lkIHY0bDJfY3RybF9jbHVzdGVyKHVuc2lnbmVkIG5jb250cm9scywgc3RydWN0IHY0bDJfY3RybCAqKmNvbnRyb2xzKQogCWJvb2wgaGFzX3ZvbGF0aWxlcyA9IGZhbHNlOwogCWludCBpOwogCi0JLyogVGhlIGZpcnN0IGNvbnRyb2wgaXMgdGhlIG1hc3RlciBjb250cm9sIGFuZCBpdCBtdXN0IG5vdCBiZSBOVUxMICovCi0JaWYgKFdBUk5fT04obmNvbnRyb2xzID09IDAgfHwgY29udHJvbHNbMF0gPT0gTlVMTCkpCiYjNDM7CWlmIChXQVJOX09OKG5jb250cm9scyA9PSAwKSkKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJLyoKJiM0MzsJICogVGhlIGZpcnN0IGNvbnRyb2wgaXMgdGhlIG1hc3RlciBjb250cm9sLiBJZiB0aGlzIGlzIE5VTEwgdGhlbgomIzQzOwkgKiB0aGVyZSBpcyBub3RoaW5nIHRvIGRvLgomIzQzOwkgKi8KJiM0MzsJaWYgKGNvbnRyb2xzWzBdID09IE5VTEwpCiAJCXJldHVybjsKIAogCWZvciAoaSA9IDA7IGkgJmx0OyBuY29udHJvbHM7IGkmIzQzOyYjNDM7KSB7CkBAIC0yNTQwLDEyICYjNDM7MjU0NiwxNCBAQCBFWFBPUlRfU1lNQk9MKHY0bDJfY3RybF9jbHVzdGVyKTsKIHZvaWQgdjRsMl9jdHJsX2F1dG9fY2x1c3Rlcih1bnNpZ25lZCBuY29udHJvbHMsIHN0cnVjdCB2NGwyX2N0cmwgKipjb250cm9scywKIAkJCSAgICB1OCBtYW51YWxfdmFsLCBib29sIHNldF92b2xhdGlsZSkKIHsKLQlzdHJ1Y3QgdjRsMl9jdHJsICptYXN0ZXIgPSBjb250cm9sc1swXTsKJiM0MzsJc3RydWN0IHY0bDJfY3RybCAqbWFzdGVyID0gbmNvbnRyb2xzID8gY29udHJvbHNbMF0gOiBOVUxMOwogCXUzMiBmbGFnID0gMDsKIAlpbnQgaTsKIAogCXY0bDJfY3RybF9jbHVzdGVyKG5jb250cm9scywgY29udHJvbHMpOwogCVdBUk5fT04obmNvbnRyb2xzICZsdDs9IDEpOwomIzQzOwlpZiAoIW1hc3RlcikKJiM0MzsJCXJldHVybjsKIAlXQVJOX09OKG1hbnVhbF92YWwgJmx0OyBtYXN0ZXItJmd0O21pbmltdW0gfHwgbWFudWFsX3ZhbCAmZ3Q7IG1hc3Rlci0mZ3Q7bWF4aW11bSk7CiAJV0FSTl9PTihzZXRfdm9sYXRpbGUgJmFtcDsmYW1wOyAhaGFzX29wKG1hc3RlciwgZ192b2xhdGlsZV9jdHJsKSk7CiAJbWFzdGVyLSZndDtpc19hdXRvID0gdHJ1ZTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMjE6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzIzMwoJCQkJCQkJb3V0cHV0OiA1MQoJCQkJCQkJdGhvdWdodHM6IDEyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoOiBWaWRlbzRMaW51eCBDb250cm9sIENsdXN0ZXIqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIHBhdGNoIGFuZCB0aGUgYXNzb2NpYXRlZCBpbnN0cnVjdGlvbnMuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gYnJlYWsgaXQgZG93biBzeXN0ZW1hdGljYWxseS4gCgpGaXJzdCwgdGhlIHBhdGNoIGl0c2VsZi4gSXQgbG9va3MgbGlrZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIHRoZSB2aWRlbzRsaW51eCAoVjRMMikgY29yZSwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIHRoZSBjb250cm9sIGNsdXN0ZXIgZnVuY3Rpb25hbGl0eS4gVGhlIGRpZmYgdG91Y2hlcyBgZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1jdHJscy1jb3JlLmNgLCB3aGljaCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGlzIHJlbGF0ZWQgdG8gaG93IGNvbnRyb2xzIGFyZSBvcmdhbml6ZWQgYW5kIG1hbmFnZWQgd2l0aGluIFY0TDIuCgpUaGUgc2lnbmlmaWNhbnQgbW9kaWZpY2F0aW9ucyBhcmUgd2l0aGluIHRoZSBmdW5jdGlvbnMgYHY0bDJfY3RybF9jbHVzdGVyYCBhbmQgYHY0bDJfY3RybF9hdXRvX2NsdXN0ZXJgLiBUaGlzIHN1Z2dlc3RzIHRoZXkgYXJlIGVpdGhlciBlbmhhbmNpbmcgb3IgY2hhbmdpbmcgdGhlIGJlaGF2aW91ciBvZiB0aGVzZSBmdW5jdGlvbnMuIE5vdywgSSBzaG91bGQgZXhhbWluZSB0aGUgY29yZSBmaWxlIChgdjRsMi1jdHJscy1jb3JlLmNgKSBhcm91bmQgbGluZSAyNTIxIHRvIGZ1bGx5IGNvbXByZWhlbmQgdGhlIGNoYW5nZXMuIEluIG15IHZpZXcsIHRoaXMgd2lsbCBwcm92aWRlIHRoZSBuZWNlc3NhcnkgY29udGV4dCB0byBkZXRlcm1pbmUgaG93IHRoZSB1cGRhdGUgaGFzIGNoYW5nZWQgdGhlc2UgY3JpdGljYWwgZnVuY3Rpb25zLiBJIHdpbGwgYWxzbyBoYXZlIGEgcXVpY2sgbG9vayBhdCB0aGUgS2NvbmZpZyBmaWxlIGZvciB0aGUgVjRMMiBjb3JlLCBhcyBpdCBzaG91bGQgcHJvdmlkZSB2YWx1YWJsZSBpbmZvcm1hdGlvbiBvbiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gdGhpcyBmdW5jdGlvbmFsaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDIxOjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1jdHJscy1jb3JlLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNTE1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDU1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzI1MTU6XHR9XG4yNTE2Olx0RVhQT1JUX1NZTUJPTCh2NGwyX2N0cmxfcmFkaW9fZmlsdGVyKTtcbjI1MTc6XHRcbjI1MTg6XHQvKiBDbHVzdGVyIGNvbnRyb2xzICovXG4yNTE5Olx0dm9pZCB2NGwyX2N0cmxfY2x1c3Rlcih1bnNpZ25lZCBuY29udHJvbHMsIHN0cnVjdCB2NGwyX2N0cmwgKipjb250cm9scylcbjI1MjA6XHR7XG4yNTIxOlx0XHRib29sIGhhc192b2xhdGlsZXMgPSBmYWxzZTtcbjI1MjI6XHRcdGludCBpO1xuMjUyMzpcdFxuMjUyNDpcdFx0aWYgKFdBUk5fT04obmNvbnRyb2xzID09IDApKVxuMjUyNTpcdFx0XHRyZXR1cm47XG4yNTI2Olx0XG4yNTI3Olx0XHQvKlxuMjUyODpcdFx0ICogVGhlIGZpcnN0IGNvbnRyb2wgaXMgdGhlIG1hc3RlciBjb250cm9sLiBJZiB0aGlzIGlzIE5VTEwgdGhlblxuMjUyOTpcdFx0ICogdGhlcmUgaXMgbm90aGluZyB0byBkby5cbjI1MzA6XHRcdCAqL1xuMjUzMTpcdFx0aWYgKGNvbnRyb2xzWzBdID09IE5VTEwpXG4yNTMyOlx0XHRcdHJldHVybjtcbjI1MzM6XHRcbjI1MzQ6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5jb250cm9sczsgaSYjNDM7JiM0MzspIHtcbjI1MzU6XHRcdFx0aWYgKGNvbnRyb2xzW2ldKSB7XG4yNTM2Olx0XHRcdFx0Y29udHJvbHNbaV0tXHUwMDNlY2x1c3RlciA9IGNvbnRyb2xzO1xuMjUzNzpcdFx0XHRcdGNvbnRyb2xzW2ldLVx1MDAzZW5jb250cm9scyA9IG5jb250cm9scztcbjI1Mzg6XHRcdFx0XHRpZiAoY29udHJvbHNbaV0tXHUwMDNlZmxhZ3MgXHUwMDI2IFY0TDJfQ1RSTF9GTEFHX1ZPTEFUSUxFKVxuMjUzOTpcdFx0XHRcdFx0aGFzX3ZvbGF0aWxlcyA9IHRydWU7XG4yNTQwOlx0XHRcdH1cbjI1NDE6XHRcdH1cbjI1NDI6XHRcdGNvbnRyb2xzWzBdLVx1MDAzZWhhc192b2xhdGlsZXMgPSBoYXNfdm9sYXRpbGVzO1xuMjU0MzpcdH1cbjI1NDQ6XHRFWFBPUlRfU1lNQk9MKHY0bDJfY3RybF9jbHVzdGVyKTtcbjI1NDU6XHRcbjI1NDY6XHR2b2lkIHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIodW5zaWduZWQgbmNvbnRyb2xzLCBzdHJ1Y3QgdjRsMl9jdHJsICoqY29udHJvbHMsXG4yNTQ3Olx0XHRcdFx0ICAgIHU4IG1hbnVhbF92YWwsIGJvb2wgc2V0X3ZvbGF0aWxlKVxuMjU0ODpcdHtcbjI1NDk6XHRcdHN0cnVjdCB2NGwyX2N0cmwgKm1hc3RlciA9IG5jb250cm9scyA/IGNvbnRyb2xzWzBdIDogTlVMTDtcbjI1NTA6XHRcdHUzMiBmbGFnID0gMDtcbjI1NTE6XHRcdGludCBpO1xuMjU1MjpcdFxuMjU1MzpcdFx0djRsMl9jdHJsX2NsdXN0ZXIobmNvbnRyb2xzLCBjb250cm9scyk7XG4yNTU0Olx0XHRXQVJOX09OKG5jb250cm9scyBcdTAwM2M9IDEpO1xuMjU1NTpcdFx0aWYgKCFtYXN0ZXIpXG4yNTU2Olx0XHRcdHJldHVybjtcbjI1NTc6XHRcdFdBUk5fT04obWFudWFsX3ZhbCBcdTAwM2MgbWFzdGVyLVx1MDAzZW1pbmltdW0gfHwgbWFudWFsX3ZhbCBcdTAwM2UgbWFzdGVyLVx1MDAzZW1heGltdW0pO1xuMjU1ODpcdFx0V0FSTl9PTihzZXRfdm9sYXRpbGUgXHUwMDI2XHUwMDI2ICFoYXNfb3AobWFzdGVyLCBnX3ZvbGF0aWxlX2N0cmwpKTtcbjI1NTk6XHRcdG1hc3Rlci1cdTAwM2Vpc19hdXRvID0gdHJ1ZTtcbjI1NjA6XHRcdG1hc3Rlci1cdTAwM2VoYXNfdm9sYXRpbGVzID0gc2V0X3ZvbGF0aWxlO1xuMjU2MTpcdFx0bWFzdGVyLVx1MDAzZW1hbnVhbF9tb2RlX3ZhbHVlID0gbWFudWFsX3ZhbDtcbjI1NjI6XHRcdG1hc3Rlci1cdTAwM2VmbGFncyB8PSBWNEwyX0NUUkxfRkxBR19VUERBVEU7XG4yNTYzOlx0XG4yNTY0Olx0XHRpZiAoIWlzX2N1cl9tYW51YWwobWFzdGVyKSlcbjI1NjU6XHRcdFx0ZmxhZyA9IFY0TDJfQ1RSTF9GTEFHX0lOQUNUSVZFIHxcbjI1NjY6XHRcdFx0XHQoc2V0X3ZvbGF0aWxlID8gVjRMMl9DVFJMX0ZMQUdfVk9MQVRJTEUgOiAwKTtcbjI1Njc6XHRcbjI1Njg6XHRcdGZvciAoaSA9IDE7IGkgXHUwMDNjIG5jb250cm9sczsgaSYjNDM7JiM0MzspXG4yNTY5Olx0XHRcdGlmIChjb250cm9sc1tpXSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAyMTo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NTIxCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqSW52ZXN0aWdhdGluZyBDb250cm9sIENsdXN0ZXJzIGluIHRoZSBWNEwyIEZyYW1ld29yayoqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIGB2NGwyX2N0cmxfY2x1c3RlcmAgYW5kIGB2NGwyX2N0cmxfYXV0b19jbHVzdGVyYC4gTXkgaW1tZWRpYXRlIGdvYWwgaXMgdG8gbWFwIG91dCB0aGVpciB1c2FnZSDigJMgcGlucG9pbnRpbmcgd2hlcmUgdGhleSYjMzk7cmUgYmVpbmcgY2FsbGVkIHdpdGhpbiB0aGUga2VybmVsIGNvZGUgYW5kLCBjcnVjaWFsbHksIHdoaWNoIHNwZWNpZmljIGRyaXZlcnMgYXJlIGxldmVyYWdpbmcgdGhlbS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGxhbmRzY2FwZSBvZiB0aGVzZSBjb250cm9sIG1lY2hhbmlzbXMuCgpCZXlvbmQgdGhlIGNvcmUgZnVuY3Rpb25hbGl0eSwgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgYmlnZ2VyIHBpY3R1cmUsIGFuZCB0aGF0IG1lYW5zIGNvbnNpZGVyaW5nIGhvdyB0aGVzZSBjbHVzdGVycyBiZWhhdmUgaW4gYSB2aXJ0dWFsaXplZCBjb250ZXh0LiBJJiMzOTttIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIGhvdyB0aGV5IGZ1bmN0aW9uIHdpdGhpbiBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLiBTcGVjaWZpY2FsbHksIGhvdyBkbyB0aGV5IGhhbmRsZSBzZXR1cHMgdXNpbmcsIGZvciBleGFtcGxlLCB0aGUgYHV2Y3ZpZGVvYCBkcml2ZXIgb3ZlciBhIFVTQiBnYWRnZXQsIG9yLCBhbHRlcm5hdGl2ZWx5LCBlbXVsYXRlZCBWNEwyIGRyaXZlcnMgc3VjaCBhcyBgdml2aWRgIG9yIGB2aW1jYD8gVGhlIHZpcnR1YWxpemVkIHNwYWNlIG9mdGVuIHByZXNlbnRzIGl0cyBvd24gc2V0IG9mIGNoYWxsZW5nZXMsIGFuZCB1bmRlcnN0YW5kaW5nIGlmIGFuZCBob3cgdGhlc2UgY29udHJvbCBjbHVzdGVycyBmdW5jdGlvbiBpbiB0aG9zZSBzZXR0aW5ncyBpcyBjcml0aWNhbCBmb3IgYSBjb21wbGV0ZSBwaWN0dXJlLiBUaGlzIGNvdWxkIGhhdmUgaHVnZSBpbXBsaWNhdGlvbnMgb24gdGhlIHRlc3RpbmcsIGRlYnVnZ2luZywgYW5kIGRlcGxveW1lbnQgb2YgZHJpdmVycyBpbiBzaW11bGF0ZWQgc2NlbmFyaW9zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDIxOjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Y0bDJfY3RybF9hdXRvX2NsdXN0ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9ydGwyODMyX3Nkci5jPTEzMTk9c3RhdGljIGludCBydGwyODMyX3Nkcl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9ydGwyODMyX3Nkci5jLTE0MDEtXHRcdFx0XHRcdFx0ICAgMCwgODAwMDAwMCwgMTAwMDAwLCAwKTtcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9ydGwyODMyX3Nkci5jOjE0MDI6XHRcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXHUwMDI2ZGV2LVx1MDAzZWJhbmR3aWR0aF9hdXRvLCAwLCBmYWxzZSk7XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvcnRsMjgzMl9zZHIuYy0xNDAzLVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvcnRsMjgzMl9zZHIuYy0xNDEzLVx0XHRcdFx0XHRcdCAgIDYwMDAwMDApO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL3J0bDI4MzJfc2RyLmM6MTQxNDpcdFx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigyLCBcdTAwMjZkZXYtXHUwMDNlYmFuZHdpZHRoX2F1dG8sIDAsIGZhbHNlKTtcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9ydGwyODMyX3Nkci5jLTE0MTUtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbWVkaWEvaTJjL2Fsdml1bS1jc2kyLmM9MjA4OD1zdGF0aWMgaW50IGFsdml1bV9jdHJsX2luaXQoc3RydWN0IGFsdml1bV9kZXYgKmFsdml1bSlcbi0tXG5kcml2ZXJzL21lZGlhL2kyYy9hbHZpdW0tY3NpMi5jLTIxMTYtXHRcdGlmIChjdHJscy1cdTAwM2VhdXRvX3diKVxuZHJpdmVycy9tZWRpYS9pMmMvYWx2aXVtLWNzaTIuYzoyMTE3Olx0XHRcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMywgXHUwMDI2Y3RybHMtXHUwMDNlYXV0b193YiwgMCwgZmFsc2UpO1xuZHJpdmVycy9tZWRpYS9pMmMvYWx2aXVtLWNzaTIuYy0yMTE4LVx0fVxuLS1cbmRyaXZlcnMvbWVkaWEvaTJjL2Fsdml1bS1jc2kyLmMtMjE0MS1cdFx0aWYgKGN0cmxzLVx1MDAzZWF1dG9fZXhwKVxuZHJpdmVycy9tZWRpYS9pMmMvYWx2aXVtLWNzaTIuYzoyMTQyOlx0XHRcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXHUwMDI2Y3RybHMtXHUwMDNlYXV0b19leHAsXG5kcml2ZXJzL21lZGlhL2kyYy9hbHZpdW0tY3NpMi5jLTIxNDMtXHRcdFx0XHRcdCAgICAgICBWNEwyX0VYUE9TVVJFX01BTlVBTCwgdHJ1ZSk7XG4tLVxuZHJpdmVycy9tZWRpYS9pMmMvYWx2aXVtLWNzaTIuYy0yMTYwLVx0XHRpZiAoY3RybHMtXHUwMDNlYXV0b19nYWluKVxuZHJpdmVycy9tZWRpYS9pMmMvYWx2aXVtLWNzaTIuYzoyMTYxOlx0XHRcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXHUwMDI2Y3RybHMtXHUwMDNlYXV0b19nYWluLCAwLCB0cnVlKTtcbmRyaXZlcnMvbWVkaWEvaTJjL2Fsdml1bS1jc2kyLmMtMjE2Mi1cdH1cbi0tXG5kcml2ZXJzL21lZGlhL2kyYy9tdDltMDAxLmM9NzMwPXN0YXRpYyBpbnQgbXQ5bTAwMV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuLS1cbmRyaXZlcnMvbWVkaWEvaTJjL210OW0wMDEuYy03ODItXG5kcml2ZXJzL21lZGlhL2kyYy9tdDltMDAxLmM6NzgzOlx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigyLCBcdTAwMjZtdDltMDAxLVx1MDAzZWF1dG9leHBvc3VyZSxcbmRyaXZlcnMvbWVkaWEvaTJjL210OW0wMDEuYy03ODQtXHRcdFx0XHRcdFY0TDJfRVhQT1NVUkVfTUFOVUFMLCB0cnVlKTtcbi0tXG5kcml2ZXJzL21lZGlhL2kyYy9vdjU2NDAuYz0zNDI4PXN0YXRpYyBpbnQgb3Y1NjQwX2luaXRfY29udHJvbHMoc3RydWN0IG92NTY0MF9kZXYgKnNlbnNvcilcbi0tXG5kcml2ZXJzL21lZGlhL2kyYy9vdjU2NDAuYy0zNTMwLVxuZHJpdmVycy9tZWRpYS9pMmMvb3Y1NjQwLmM6MzUzMTpcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMywgXHUwMDI2Y3RybHMtXHUwMDNlYXV0b193YiwgMCwgZmFsc2UpO1xuZHJpdmVycy9tZWRpYS9pMmMvb3Y1NjQwLmM6MzUzMjpcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXHUwMDI2Y3RybHMtXHUwMDNlYXV0b19nYWluLCAwLCB0cnVlKTtcbmRyaXZlcnMvbWVkaWEvaTJjL292NTY0MC5jOjM1MzM6XHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDIsIFx1MDAyNmN0cmxzLVx1MDAzZWF1dG9fZXhwLCAxLCB0cnVlKTtcbmRyaXZlcnMvbWVkaWEvaTJjL292NTY0MC5jLTM1MzQtXG4tLVxuZHJpdmVycy9tZWRpYS9pMmMvb3Y1NjQ4LmM9MjAzOT1zdGF0aWMgaW50IG92NTY0OF9jdHJsc19pbml0KHN0cnVjdCBvdjU2NDhfc2Vuc29yICpzZW5zb3IpXG4tLVxuZHJpdmVycy9tZWRpYS9pMmMvb3Y1NjQ4LmMtMjA2MC1cbmRyaXZlcnMvbWVkaWEvaTJjL292NTY0OC5jOjIwNjE6XHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDIsIFx1MDAyNmN0cmxzLVx1MDAzZWV4cG9zdXJlX2F1dG8sIDEsIHRydWUpO1xuZHJpdmVycy9tZWRpYS9pMmMvb3Y1NjQ4LmMtMjA2Mi1cbi0tXG5kcml2ZXJzL21lZGlhL2kyYy9vdjU2NDguYy0yMDcwLVxuZHJpdmVycy9tZWRpYS9pMmMvb3Y1NjQ4LmM6MjA3MTpcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXHUwMDI2Y3RybHMtXHUwMDNlZ2Fpbl9hdXRvLCAwLCB0cnVlKTtcbmRyaXZlcnMvbWVkaWEvaTJjL292NTY0OC5jLTIwNzItXG4tLVxuZHJpdmVycy9tZWRpYS9pMmMvb3Y1NjQ4LmMtMjA4Ni1cbmRyaXZlcnMvbWVkaWEvaTJjL292NTY0OC5jOjIwODc6XHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDMsIFx1MDAyNmN0cmxzLVx1MDAzZXdoaXRlX2JhbGFuY2VfYXV0bywgMCwgZmFsc2UpO1xuZHJpdmVycy9tZWRpYS9pMmMvb3Y1NjQ4LmMtMjA4OC1cbi0tXG5kcml2ZXJzL21lZGlhL2kyYy9vdjc2NzAuYz0xODIzPXN0YXRpYyBpbnQgb3Y3NjcwX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9tZWRpYS9pMmMvb3Y3NjcwLmMtMTk0NC1cdCAqL1xuZHJpdmVycy9tZWRpYS9pMmMvb3Y3NjcwLmM6MTk0NTpcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXHUwMDI2aW5mby1cdTAwM2VhdXRvX2dhaW4sIDAsIHRydWUpO1xuZHJpdmVycy9tZWRpYS9pMmMvb3Y3NjcwLmM6MTk0NjpcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXHUwMDI2aW5mby1cdTAwM2VhdXRvX2V4cG9zdXJlLFxuZHJpdmVycy9tZWRpYS9pMmMvb3Y3NjcwLmMtMTk0Ny1cdFx0XHQgICAgICAgVjRMMl9FWFBPU1VSRV9NQU5VQUwsIGZhbHNlKTtcbi0tXG5kcml2ZXJzL21lZGlhL2kyYy9vdjc3NDAuYz05Mzk9c3RhdGljIGludCBvdjc3NDBfaW5pdF9jb250cm9scyhzdHJ1Y3Qgb3Y3NzQwICpvdjc3NDApXG4tLVxuZHJpdmVycy9tZWRpYS9pMmMvb3Y3NzQwLmMtOTg3LVxuZHJpdmVycy9tZWRpYS9pMmMvb3Y3NzQwLmM6OTg4Olx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigzLCBcdTAwMjZvdjc3NDAtXHUwMDNlYXV0b193YiwgMCwgZmFsc2UpO1xuZHJpdmVycy9tZWRpYS9pMmMvb3Y3NzQwLmM6OTg5Olx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigyLCBcdTAwMjZvdjc3NDAtXHUwMDNlYXV0b19nYWluLCAwLCB0cnVlKTtcbmRyaXZlcnMvbWVkaWEvaTJjL292Nzc0MC5jOjk5MDpcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXHUwMDI2b3Y3NzQwLVx1MDAzZWF1dG9fZXhwb3N1cmUsXG5kcml2ZXJzL21lZGlhL2kyYy9vdjc3NDAuYy05OTEtXHRcdFx0ICAgICAgIFY0TDJfRVhQT1NVUkVfTUFOVUFMLCB0cnVlKTtcbi0tXG5kcml2ZXJzL21lZGlhL2kyYy9vdjk2NTAuYz05ODY9c3RhdGljIGludCBvdjk2NXhfaW5pdGlhbGl6ZV9jb250cm9scyhzdHJ1Y3Qgb3Y5NjV4ICpvdjk2NXgpXG4tLVxuZHJpdmVycy9tZWRpYS9pMmMvb3Y5NjUwLmMtMTA0OC1cbmRyaXZlcnMvbWVkaWEvaTJjL292OTY1MC5jOjEwNDk6XHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDMsIFx1MDAyNmN0cmxzLVx1MDAzZWF1dG9fd2IsIDAsIGZhbHNlKTtcbmRyaXZlcnMvbWVkaWEvaTJjL292OTY1MC5jOjEwNTA6XHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDIsIFx1MDAyNmN0cmxzLVx1MDAzZWF1dG9fZ2FpbiwgMCwgdHJ1ZSk7XG5kcml2ZXJzL21lZGlhL2kyYy9vdjk2NTAuYzoxMDUxOlx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigyLCBcdTAwMjZjdHJscy1cdTAwM2VhdXRvX2V4cCwgMSwgdHJ1ZSk7XG5kcml2ZXJzL21lZGlhL2kyYy9vdjk2NTAuYy0xMDUyLVx0djRsMl9jdHJsX2NsdXN0ZXIoMiwgXHUwMDI2Y3RybHMtXHUwMDNlaGZsaXApO1xuLS1cbmRyaXZlcnMvbWVkaWEvaTJjL3M1YzczbTMvczVjNzNtMy1jdHJscy5jPTQ0MT1pbnQgczVjNzNtM19pbml0X2NvbnRyb2xzKHN0cnVjdCBzNWM3M20zICpzdGF0ZSlcbi0tXG5kcml2ZXJzL21lZGlhL2kyYy9zNWM3M20zL3M1YzczbTMtY3RybHMuYy01NDItXG5kcml2ZXJzL21lZGlhL2kyYy9zNWM3M20zL3M1YzczbTMtY3RybHMuYzo1NDM6XHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDMsIFx1MDAyNmN0cmxzLVx1MDAzZWF1dG9fZXhwb3N1cmUsIDAsIGZhbHNlKTtcbmRyaXZlcnMvbWVkaWEvaTJjL3M1YzczbTMvczVjNzNtMy1jdHJscy5jLTU0NC1cdGN0cmxzLVx1MDAzZWF1dG9faXNvLVx1MDAzZWZsYWdzIHw9IFY0TDJfQ1RSTF9GTEFHX1ZPTEFUSUxFIHxcbmRyaXZlcnMvbWVkaWEvaTJjL3M1YzczbTMvczVjNzNtMy1jdHJscy5jLTU0NS1cdFx0XHRcdFY0TDJfQ1RSTF9GTEFHX1VQREFURTtcbmRyaXZlcnMvbWVkaWEvaTJjL3M1YzczbTMvczVjNzNtMy1jdHJscy5jOjU0NjpcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXHUwMDI2Y3RybHMtXHUwMDNlYXV0b19pc28sIDAsIGZhbHNlKTtcbmRyaXZlcnMvbWVkaWEvaTJjL3M1YzczbTMvczVjNzNtMy1jdHJscy5jLTU0Ny1cdGN0cmxzLVx1MDAzZWFmX3N0YXR1cy1cdTAwM2VmbGFncyB8PSBWNEwyX0NUUkxfRkxBR19WT0xBVElMRTtcbi0tXG5kcml2ZXJzL21lZGlhL2kyYy9zNWs1YmFmLmM9MTYzMj1zdGF0aWMgaW50IHM1azViYWZfaW5pdGlhbGl6ZV9jdHJscyhzdHJ1Y3QgczVrNWJhZiAqc3RhdGUpXG4tLVxuZHJpdmVycy9tZWRpYS9pMmMvczVrNWJhZi5jLTE2NTEtXHRcdFx0XHRcdCAgICAgMCwgMjU1LCAxLCBTNUs1QkFGX0dBSU5fQkxVRV9ERUYpO1xuZHJpdmVycy9tZWRpYS9pMmMvczVrNWJhZi5jOjE2NTI6XHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDMsIFx1MDAyNmN0cmxzLVx1MDAzZWF3YiwgMCwgZmFsc2UpO1xuZHJpdmVycy9tZWRpYS9pMmMvczVrNWJhZi5jLTE2NTMtXG4tLVxuZHJpdmVycy9tZWRpYS9pMmMvczVrNWJhZi5jLTE2NjYtXHRcdFx0XHRcdDAsIDI1NiwgMSwgMjU2KTtcbmRyaXZlcnMvbWVkaWEvaTJjL3M1azViYWYuYzoxNjY3Olx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigzLCBcdTAwMjZjdHJscy1cdTAwM2VhdXRvX2V4cCwgMCwgZmFsc2UpO1xuZHJpdmVycy9tZWRpYS9pMmMvczVrNWJhZi5jLTE2NjgtXG4tLVxuZHJpdmVycy9tZWRpYS9pMmMvc2FhNzExNS5jPTE3OTk9c3RhdGljIGludCBzYWE3MTF4X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9tZWRpYS9pMmMvc2FhNzExNS5jLTE4NzItXHR9XG5kcml2ZXJzL21lZGlhL2kyYy9zYWE3MTE1LmM6MTg3MzpcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXHUwMDI2c3RhdGUtXHUwMDNlYWdjLCAwLCB0cnVlKTtcbmRyaXZlcnMvbWVkaWEvaTJjL3NhYTcxMTUuYy0xODc0LVxuLS1cbmRyaXZlcnMvbWVkaWEvaTJjL3ZkNTVnMS5jPTE1NzU9c3RhdGljIGludCB2ZDU1ZzFfaW5pdF9jdHJscyhzdHJ1Y3QgdmQ1NWcxICpzZW5zb3IpXG4tLVxuZHJpdmVycy9tZWRpYS9pMmMvdmQ1NWcxLmMtMTYxNi1cdFx0XHRcdFx0ICAgICAgMSwgVkQ1NUcxX0VYUE9fREVGKTtcbmRyaXZlcnMvbWVkaWEvaTJjL3ZkNTVnMS5jOjE2MTc6XHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDQsIFx1MDAyNnNlbnNvci1cdTAwM2VhZV9jdHJsLCBWNEwyX0VYUE9TVVJFX01BTlVBTCwgdHJ1ZSk7XG5kcml2ZXJzL21lZGlhL2kyYy92ZDU1ZzEuYy0xNjE4LVxuLS1cbmRyaXZlcnMvbWVkaWEvaTJjL3ZkNTZnMy5jPTYzMT1zdGF0aWMgaW50IHZkNTZnM19pbml0X2NvbnRyb2xzKHN0cnVjdCB2ZDU2ZzMgKnNlbnNvcilcbi0tXG5kcml2ZXJzL21lZGlhL2kyYy92ZDU2ZzMuYy03MjQtXHR2NGwyX2N0cmxfY2x1c3RlcigyLCBcdTAwMjZzZW5zb3ItXHUwMDNlaGZsaXBfY3RybCk7XG5kcml2ZXJzL21lZGlhL2kyYy92ZDU2ZzMuYzo3MjU6XHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDQsIFx1MDAyNnNlbnNvci1cdTAwM2VhZV9jdHJsLCBWNEwyX0VYUE9TVVJFX01BTlVBTCwgdHJ1ZSk7XG5kcml2ZXJzL21lZGlhL2kyYy92ZDU2ZzMuYy03MjYtXG4tLVxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9taWNyb2NoaXAvbWljcm9jaGlwLWlzYy1iYXNlLmM9MTYxMj1zdGF0aWMgaW50IGlzY19jdHJsX2luaXQoc3RydWN0IGlzY19kZXZpY2UgKmlzYylcbi0tXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL21pY3JvY2hpcC9taWNyb2NoaXAtaXNjLWJhc2UuYy0xNjYzLVx0ICovXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL21pY3JvY2hpcC9taWNyb2NoaXAtaXNjLWJhc2UuYzoxNjY0Olx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigxMCwgXHUwMDI2aXNjLVx1MDAzZWF3Yl9jdHJsLCAwLCB0cnVlKTtcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbWljcm9jaGlwL21pY3JvY2hpcC1pc2MtYmFzZS5jLTE2NjUtXG4tLVxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zYW1zdW5nL2V4eW5vczQtaXMvZmltYy1pc3AuYz02OTE9aW50IGZpbWNfaXNwX3N1YmRldl9jcmVhdGUoc3RydWN0IGZpbWNfaXNwICppc3ApXG4tLVxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zYW1zdW5nL2V4eW5vczQtaXMvZmltYy1pc3AuYy03NjUtXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3NhbXN1bmcvZXh5bm9zNC1pcy9maW1jLWlzcC5jOjc2NjpcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXHUwMDI2Y3RybHMtXHUwMDNlYXV0b19pc28sXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3NhbXN1bmcvZXh5bm9zNC1pcy9maW1jLWlzcC5jLTc2Ny1cdFx0XHRWNEwyX0lTT19TRU5TSVRJVklUWV9NQU5VQUwsIGZhbHNlKTtcbi0tXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3NhbXN1bmcvczNjLWNhbWlmL2NhbWlmLWNhcHR1cmUuYz0xNTM4PWludCBzM2NfY2FtaWZfY3JlYXRlX3N1YmRldihzdHJ1Y3QgY2FtaWZfZGV2ICpjYW1pZilcbi0tXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3NhbXN1bmcvczNjLWNhbWlmL2NhbWlmLWNhcHR1cmUuYy0xNTgwLVx0aWYgKGNhbWlmLVx1MDAzZXZhcmlhbnQtXHUwMDNlaGFzX2ltZ19lZmZlY3QpXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3NhbXN1bmcvczNjLWNhbWlmL2NhbWlmLWNhcHR1cmUuYzoxNTgxOlx0XHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDIsIFx1MDAyNmNhbWlmLVx1MDAzZWN0cmxfY29sb3JmeCxcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vc2Ftc3VuZy9zM2MtY2FtaWYvY2FtaWYtY2FwdHVyZS5jLTE1ODItXHRcdFx0ICAgICAgIFY0TDJfQ09MT1JGWF9TRVRfQ0JDUiwgZmFsc2UpO1xuLS1cbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL3ZpdmlkLWN0cmxzLmM9MTYzMT1pbnQgdml2aWRfY3JlYXRlX2NvbnRyb2xzKHN0cnVjdCB2aXZpZF9kZXYgKmRldiwgYm9vbCBzaG93X2Njc19jYXAsXG4tLVxuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtY3RybHMuYy0yMDE2LVx0aWYgKGRldi1cdTAwM2VhdXRvZ2FpbilcbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL3ZpdmlkLWN0cmxzLmM6MjAxNzpcdFx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigyLCBcdTAwMjZkZXYtXHUwMDNlYXV0b2dhaW4sIDAsIHRydWUpO1xuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtY3RybHMuYy0yMDE4LVxuLS1cbmRyaXZlcnMvbWVkaWEvdHVuZXJzL2U0MDAwLmM9NjEyPXN0YXRpYyBpbnQgZTQwMDBfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbi0tXG5kcml2ZXJzL21lZGlhL3R1bmVycy9lNDAwMC5jLTY2Mi1cdFx0XHRWNEwyX0NJRF9SRl9UVU5FUl9CQU5EV0lEVEgsIDQzMDAwMDAsIDExMDAwMDAwLCAxMDAwMDAsIDQzMDAwMDApO1xuZHJpdmVycy9tZWRpYS90dW5lcnMvZTQwMDAuYzo2NjM6XHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDIsIFx1MDAyNmRldi1cdTAwM2ViYW5kd2lkdGhfYXV0bywgMCwgZmFsc2UpO1xuZHJpdmVycy9tZWRpYS90dW5lcnMvZTQwMDAuYy02NjQtXHRkZXYtXHUwMDNlbG5hX2dhaW5fYXV0byA9IHY0bDJfY3RybF9uZXdfc3RkKFx1MDAyNmRldi1cdTAwM2VoZGwsIFx1MDAyNmU0MDAwX2N0cmxfb3BzLFxuLS1cbmRyaXZlcnMvbWVkaWEvdHVuZXJzL2U0MDAwLmMtNjY3LVx0XHRcdFY0TDJfQ0lEX1JGX1RVTkVSX0xOQV9HQUlOLCAwLCAxNSwgMSwgMTApO1xuZHJpdmVycy9tZWRpYS90dW5lcnMvZTQwMDAuYzo2Njg6XHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDIsIFx1MDAyNmRldi1cdTAwM2VsbmFfZ2Fpbl9hdXRvLCAwLCBmYWxzZSk7XG5kcml2ZXJzL21lZGlhL3R1bmVycy9lNDAwMC5jLTY2OS1cdGRldi1cdTAwM2VtaXhlcl9nYWluX2F1dG8gPSB2NGwyX2N0cmxfbmV3X3N0ZChcdTAwMjZkZXYtXHUwMDNlaGRsLCBcdTAwMjZlNDAwMF9jdHJsX29wcyxcbi0tXG5kcml2ZXJzL21lZGlhL3R1bmVycy9lNDAwMC5jLTY3Mi1cdFx0XHRWNEwyX0NJRF9SRl9UVU5FUl9NSVhFUl9HQUlOLCAwLCAxLCAxLCAxKTtcbmRyaXZlcnMvbWVkaWEvdHVuZXJzL2U0MDAwLmM6NjczOlx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigyLCBcdTAwMjZkZXYtXHUwMDNlbWl4ZXJfZ2Fpbl9hdXRvLCAwLCBmYWxzZSk7XG5kcml2ZXJzL21lZGlhL3R1bmVycy9lNDAwMC5jLTY3NC1cdGRldi1cdTAwM2VpZl9nYWluX2F1dG8gPSB2NGwyX2N0cmxfbmV3X3N0ZChcdTAwMjZkZXYtXHUwMDNlaGRsLCBcdTAwMjZlNDAwMF9jdHJsX29wcyxcbi0tXG5kcml2ZXJzL21lZGlhL3R1bmVycy9lNDAwMC5jLTY3Ny1cdFx0XHRWNEwyX0NJRF9SRl9UVU5FUl9JRl9HQUlOLCAwLCA1NCwgMSwgMCk7XG5kcml2ZXJzL21lZGlhL3R1bmVycy9lNDAwMC5jOjY3ODpcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXHUwMDI2ZGV2LVx1MDAzZWlmX2dhaW5fYXV0bywgMCwgZmFsc2UpO1xuZHJpdmVycy9tZWRpYS90dW5lcnMvZTQwMDAuYy02NzktXHRkZXYtXHUwMDNlcGxsX2xvY2sgPSB2NGwyX2N0cmxfbmV3X3N0ZChcdTAwMjZkZXYtXHUwMDNlaGRsLCBcdTAwMjZlNDAwMF9jdHJsX29wcyxcbi0tXG5kcml2ZXJzL21lZGlhL3R1bmVycy9mYzI1ODAuYz01MDk9c3RhdGljIGludCBmYzI1ODBfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbi0tXG5kcml2ZXJzL21lZGlhL3R1bmVycy9mYzI1ODAuYy01NjItXHRcdFx0XHRcdCAgIDMwMDAsIDEwMDAwMDAwLCAxLCAzMDAwKTtcbmRyaXZlcnMvbWVkaWEvdHVuZXJzL2ZjMjU4MC5jOjU2MzpcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXHUwMDI2ZGV2LVx1MDAzZWJhbmR3aWR0aF9hdXRvLCAwLCBmYWxzZSk7XG5kcml2ZXJzL21lZGlhL3R1bmVycy9mYzI1ODAuYy01NjQtXHRpZiAoZGV2LVx1MDAzZWhkbC5lcnJvcikge1xuLS1cbmRyaXZlcnMvbWVkaWEvdHVuZXJzL21zaTAwMS5jPTQyMj1zdGF0aWMgaW50IG1zaTAwMV9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxuLS1cbmRyaXZlcnMvbWVkaWEvdHVuZXJzL21zaTAwMS5jLTQ1MS1cbmRyaXZlcnMvbWVkaWEvdHVuZXJzL21zaTAwMS5jOjQ1MjpcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXHUwMDI2ZGV2LVx1MDAzZWJhbmR3aWR0aF9hdXRvLCAwLCBmYWxzZSk7XG5kcml2ZXJzL21lZGlhL3R1bmVycy9tc2kwMDEuYy00NTMtXHRkZXYtXHUwMDNlbG5hX2dhaW4gPSB2NGwyX2N0cmxfbmV3X3N0ZChcdTAwMjZkZXYtXHUwMDNlaGRsLCBcdTAwMjZtc2kwMDFfY3RybF9vcHMsXG4tLVxuZHJpdmVycy9tZWRpYS91c2IvYWlyc3B5L2FpcnNweS5jPTk3MD1zdGF0aWMgaW50IGFpcnNweV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zixcbi0tXG5kcml2ZXJzL21lZGlhL3VzYi9haXJzcHkvYWlyc3B5LmMtMTA1Mi1cdFx0XHRWNEwyX0NJRF9SRl9UVU5FUl9MTkFfR0FJTiwgMCwgMTQsIDEsIDgpO1xuZHJpdmVycy9tZWRpYS91c2IvYWlyc3B5L2FpcnNweS5jOjEwNTM6XHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDIsIFx1MDAyNnMtXHUwMDNlbG5hX2dhaW5fYXV0bywgMCwgZmFsc2UpO1xuZHJpdmVycy9tZWRpYS91c2IvYWlyc3B5L2FpcnNweS5jLTEwNTQtXHRzLVx1MDAzZW1peGVyX2dhaW5fYXV0byA9IHY0bDJfY3RybF9uZXdfc3RkKFx1MDAyNnMtXHUwMDNlaGRsLCBcdTAwMjZhaXJzcHlfY3RybF9vcHMsXG4tLVxuZHJpdmVycy9tZWRpYS91c2IvYWlyc3B5L2FpcnNweS5jLTEwNTctXHRcdFx0VjRMMl9DSURfUkZfVFVORVJfTUlYRVJfR0FJTiwgMCwgMTUsIDEsIDgpO1xuZHJpdmVycy9tZWRpYS91c2IvYWlyc3B5L2FpcnNweS5jOjEwNTg6XHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDIsIFx1MDAyNnMtXHUwMDNlbWl4ZXJfZ2Fpbl9hdXRvLCAwLCBmYWxzZSk7XG5kcml2ZXJzL21lZGlhL3VzYi9haXJzcHkvYWlyc3B5LmMtMTA1OS1cdHMtXHUwMDNlaWZfZ2FpbiA9IHY0bDJfY3RybF9uZXdfc3RkKFx1MDAyNnMtXHUwMDNlaGRsLCBcdTAwMjZhaXJzcHlfY3RybF9vcHMsXG4tLVxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvbTU2MDIvbTU2MDJfbXQ5bTExMS5jPTI3Mj1pbnQgbXQ5bTExMV9pbml0X2NvbnRyb2xzKHN0cnVjdCBzZCAqc2QpXG4tLVxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvbTU2MDIvbTU2MDJfbXQ5bTExMS5jLTMwMy1cbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL201NjAyL201NjAyX210OW0xMTEuYzozMDQ6XHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDQsIFx1MDAyNnNkLVx1MDAzZWF1dG9fd2hpdGVfYmFsLCAwLCBmYWxzZSk7XG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9tNTYwMi9tNTYwMl9tdDltMTExLmMtMzA1LVx0djRsMl9jdHJsX2NsdXN0ZXIoMiwgXHUwMDI2c2QtXHUwMDNlaGZsaXApO1xuLS1cbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL201NjAyL201NjAyX292NzY2MC5jPTI3Mz1pbnQgb3Y3NjYwX2luaXRfY29udHJvbHMoc3RydWN0IHNkICpzZClcbi0tXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9tNTYwMi9tNTYwMl9vdjc2NjAuYy0yOTktXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9tNTYwMi9tNTYwMl9vdjc2NjAuYzozMDA6XHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDIsIFx1MDAyNnNkLVx1MDAzZWF1dG9nYWluLCAwLCBmYWxzZSk7XG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9tNTYwMi9tNTYwMl9vdjc2NjAuYy0zMDEtXHR2NGwyX2N0cmxfY2x1c3RlcigyLCBcdTAwMjZzZC1cdTAwM2VoZmxpcCk7XG4tLVxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvbTU2MDIvbTU2MDJfb3Y5NjUwLmM9MzY1PWludCBvdjk2NTBfaW5pdF9jb250cm9scyhzdHJ1Y3Qgc2QgKnNkKVxuLS1cbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL201NjAyL201NjAyX292OTY1MC5jLTQwMS1cbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL201NjAyL201NjAyX292OTY1MC5jOjQwMjpcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMywgXHUwMDI2c2QtXHUwMDNlYXV0b193aGl0ZV9iYWwsIDAsIGZhbHNlKTtcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL201NjAyL201NjAyX292OTY1MC5jOjQwMzpcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXHUwMDI2c2QtXHUwMDNlYXV0b2V4cG8sIDAsIGZhbHNlKTtcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL201NjAyL201NjAyX292OTY1MC5jOjQwNDpcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXHUwMDI2c2QtXHUwMDNlYXV0b2dhaW4sIDAsIGZhbHNlKTtcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL201NjAyL201NjAyX292OTY1MC5jLTQwNS1cdHY0bDJfY3RybF9jbHVzdGVyKDIsIFx1MDAyNnNkLVx1MDAzZWhmbGlwKTtcbi0tXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9tNTYwMi9tNTYwMl9wbzEwMzAuYz0yMzc9aW50IHBvMTAzMF9pbml0X2NvbnRyb2xzKHN0cnVjdCBzZCAqc2QpXG4tLVxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvbTU2MDIvbTU2MDJfcG8xMDMwLmMtMjcyLVxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvbTU2MDIvbTU2MDJfcG8xMDMwLmM6MjczOlx0djRsMl9jdHJsX2F1dG9fY2x1c3Rlcig0LCBcdTAwMjZzZC1cdTAwM2VhdXRvX3doaXRlX2JhbCwgMCwgZmFsc2UpO1xuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvbTU2MDIvbTU2MDJfcG8xMDMwLmM6Mjc0Olx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigyLCBcdTAwMjZzZC1cdTAwM2VhdXRvZXhwbywgMCwgZmFsc2UpO1xuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvbTU2MDIvbTU2MDJfcG8xMDMwLmMtMjc1LVx0djRsMl9jdHJsX2NsdXN0ZXIoMiwgXHUwMDI2c2QtXHUwMDNlaGZsaXApO1xuLS1cbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL253ODB4LmM9MTk5OT1zdGF0aWMgaW50IHNkX2luaXRfY29udHJvbHMoc3RydWN0IGdzcGNhX2RldiAqZ3NwY2FfZGV2KVxuLS1cbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL253ODB4LmMtMjAzNy1cdGlmIChnc3BjYV9kZXYtXHUwMDNlYXV0b2dhaW4pXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9udzgweC5jOjIwMzg6XHRcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMywgXHUwMDI2Z3NwY2FfZGV2LVx1MDAzZWF1dG9nYWluLCAwLCBmYWxzZSk7XG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9udzgweC5jLTIwMzktXHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9vdjUxOS5jPTQ4ODE9c3RhdGljIGludCBzZF9pbml0X2NvbnRyb2xzKHN0cnVjdCBnc3BjYV9kZXYgKmdzcGNhX2Rldilcbi0tXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9vdjUxOS5jLTQ5NDMtXHRpZiAoZ3NwY2FfZGV2LVx1MDAzZWF1dG9nYWluKVxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2Evb3Y1MTkuYzo0OTQ0Olx0XHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDMsIFx1MDAyNmdzcGNhX2Rldi1cdTAwM2VhdXRvZ2FpbiwgMCwgdHJ1ZSk7XG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9vdjUxOS5jLTQ5NDUtXHRpZiAoc2QtXHUwMDNlYXV0b2JyaWdodClcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL292NTE5LmM6NDk0NjpcdFx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigyLCBcdTAwMjZzZC1cdTAwM2VhdXRvYnJpZ2h0LCAwLCBmYWxzZSk7XG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9vdjUxOS5jLTQ5NDctXHRpZiAoc2QtXHUwMDNlaGZsaXApXG4tLVxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2Evb3Y1MzQuYz0xMjA0PXN0YXRpYyBpbnQgc2RfaW5pdF9jb250cm9scyhzdHJ1Y3QgZ3NwY2FfZGV2ICpnc3BjYV9kZXYpXG4tLVxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2Evb3Y1MzQuYy0xMzAzLVx0aWYgKHNkLVx1MDAzZXNlbnNvciA9PSBTRU5TT1JfT1Y3NzJ4KVxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2Evb3Y1MzQuYzoxMzA0Olx0XHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDIsIFx1MDAyNnNkLVx1MDAzZWF1dG9nYWluLCAwLCB0cnVlKTtcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL292NTM0LmMtMTMwNS1cbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL292NTM0LmM6MTMwNjpcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXHUwMDI2c2QtXHUwMDNlYXV0b2V4cG9zdXJlLCBWNEwyX0VYUE9TVVJFX01BTlVBTCxcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL292NTM0LmMtMTMwNy1cdFx0XHQgICAgICAgdHJ1ZSk7XG4tLVxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2Evb3Y1MzRfOS5jPTE3NDA9c3RhdGljIGludCBzZF9pbml0X2NvbnRyb2xzKHN0cnVjdCBnc3BjYV9kZXYgKmdzcGNhX2Rldilcbi0tXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9vdjUzNF85LmMtMTc3MC1cdFx0XHRWNEwyX0NJRF9QT1dFUl9MSU5FX0ZSRVFVRU5DWV82MEhaLCAwLCAwKTtcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL292NTM0XzkuYzoxNzcxOlx0XHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDMsIFx1MDAyNmdzcGNhX2Rldi1cdTAwM2VhdXRvZ2FpbiwgMCwgZmFsc2UpO1xuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2Evb3Y1MzRfOS5jLTE3NzItXHR9XG4tLVxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvcGFjMjA3LmM9MjQ1PXN0YXRpYyBpbnQgc2RfaW5pdF9jb250cm9scyhzdHJ1Y3QgZ3NwY2FfZGV2ICpnc3BjYV9kZXYpXG4tLVxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvcGFjMjA3LmMtMjcwLVx0fVxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvcGFjMjA3LmM6MjcxOlx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigzLCBcdTAwMjZnc3BjYV9kZXYtXHUwMDNlYXV0b2dhaW4sIDAsIGZhbHNlKTtcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3BhYzIwNy5jLTI3Mi1cdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3BhYzczMDIuYz02MzE9c3RhdGljIGludCBzZF9pbml0X2NvbnRyb2xzKHN0cnVjdCBnc3BjYV9kZXYgKmdzcGNhX2Rldilcbi0tXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9wYWM3MzAyLmMtNjgyLVx0djRsMl9jdHJsX2NsdXN0ZXIoMiwgXHUwMDI2c2QtXHUwMDNlYnJpZ2h0bmVzcyk7XG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9wYWM3MzAyLmM6NjgzOlx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigzLCBcdTAwMjZnc3BjYV9kZXYtXHUwMDNlYXV0b2dhaW4sIDAsIGZhbHNlKTtcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3BhYzczMDIuYy02ODQtXHR2NGwyX2N0cmxfY2x1c3RlcigyLCBcdTAwMjZzZC1cdTAwM2VoZmxpcCk7XG4tLVxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvcGFjNzMxMS5jPTQwMT1zdGF0aWMgaW50IHNkX2luaXRfY29udHJvbHMoc3RydWN0IGdzcGNhX2RldiAqZ3NwY2FfZGV2KVxuLS1cbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3BhYzczMTEuYy00MjYtXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9wYWM3MzExLmM6NDI3Olx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigzLCBcdTAwMjZnc3BjYV9kZXYtXHUwMDNlYXV0b2dhaW4sIDAsIGZhbHNlKTtcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3BhYzczMTEuYy00MjgtXHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9zbjljMjB4LmM9MTcyMj1zdGF0aWMgaW50IHNkX2luaXRfY29udHJvbHMoc3RydWN0IGdzcGNhX2RldiAqZ3NwY2FfZGV2KVxuLS1cbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3NuOWMyMHguYy0xNzkxLVx0XHRcdCAgIGJlY2F1c2Ugc2QtXHUwMDNlZXhwb3N1cmUgPT0gTlVMTC4gKi9cbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3NuOWMyMHguYzoxNzkyOlx0XHRcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMywgXHUwMDI2c2QtXHUwMDNlYXV0b2dhaW4sIDAsIGZhbHNlKTtcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3NuOWMyMHguYy0xNzkzLVx0XHRlbHNlXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9zbjljMjB4LmMtMTc5NC1cdFx0XHQvKiBPdGhlcndpc2UgYXV0b2dhaW4gaXMgY2x1c3RlcmVkIHdpdGggZXhwb3N1cmUuICovXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9zbjljMjB4LmM6MTc5NTpcdFx0XHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDIsIFx1MDAyNnNkLVx1MDAzZWF1dG9nYWluLCAwLCBmYWxzZSk7XG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9zbjljMjB4LmMtMTc5Ni1cdH1cbi0tXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9zb25peGIuYz05OTg9c3RhdGljIGludCBzZF9pbml0X2NvbnRyb2xzKHN0cnVjdCBnc3BjYV9kZXYgKmdzcGNhX2Rldilcbi0tXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9zb25peGIuYy0xMDgxLVx0aWYgKGdzcGNhX2Rldi1cdTAwM2VhdXRvZ2FpbilcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3Nvbml4Yi5jOjEwODI6XHRcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMywgXHUwMDI2Z3NwY2FfZGV2LVx1MDAzZWF1dG9nYWluLCAwLCBmYWxzZSk7XG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9zb25peGIuYy0xMDgzLVxuLS1cbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3Nvbml4ai5jPTE2MTc9c3RhdGljIGludCBzZF9pbml0X2NvbnRyb2xzKHN0cnVjdCBnc3BjYV9kZXYgKmdzcGNhX2Rldilcbi0tXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9zb25peGouYy0xNjg2LVx0XHR2NGwyX2N0cmxfY2x1c3RlcigyLCBcdTAwMjZzZC1cdTAwM2V2ZmxpcCk7XG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9zb25peGouYzoxNjg3Olx0XHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDMsIFx1MDAyNmdzcGNhX2Rldi1cdTAwM2VhdXRvZ2FpbiwgMCwgZmFsc2UpO1xuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2Evc29uaXhqLmMtMTY4OC1cdH1cbi0tXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9zdHYwNnh4L3N0djA2eHhfcGIwMTAwLmM9MTA2PXN0YXRpYyBpbnQgcGIwMTAwX2luaXRfY29udHJvbHMoc3RydWN0IHNkICpzZClcbi0tXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9zdHYwNnh4L3N0djA2eHhfcGIwMTAwLmMtMTUwLVx0c2QtXHUwMDNlc2Vuc29yX3ByaXYgPSBjdHJscztcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3N0djA2eHgvc3R2MDZ4eF9wYjAxMDAuYzoxNTE6XHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDUsIFx1MDAyNmN0cmxzLVx1MDAzZWF1dG9nYWluLCAwLCBmYWxzZSk7XG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9zdHYwNnh4L3N0djA2eHhfcGIwMTAwLmMtMTUyLVx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvdDYxMy5jPTk0NT1zdGF0aWMgaW50IHNkX2luaXRfY29udHJvbHMoc3RydWN0IGdzcGNhX2RldiAqZ3NwY2FfZGV2KVxuLS1cbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3Q2MTMuYy05OTQtXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS90NjEzLmM6OTk1Olx0djRsMl9jdHJsX2F1dG9fY2x1c3Rlcig0LCBcdTAwMjZzZC1cdTAwM2Vhd2IsIDAsIHRydWUpO1xuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvdDYxMy5jLTk5Ni1cbi0tXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS90b3Byby5jPTQ4Nzk9c3RhdGljIGludCBzZF9pbml0X2NvbnRyb2xzKHN0cnVjdCBnc3BjYV9kZXYgKmdzcGNhX2Rldilcbi0tXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS90b3Byby5jLTQ5MTgtXHRpZiAoZ3NwY2FfZGV2LVx1MDAzZWF1dG9nYWluKVxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvdG9wcm8uYzo0OTE5Olx0XHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDMsIFx1MDAyNmdzcGNhX2Rldi1cdTAwM2VhdXRvZ2FpbiwgMCwgZmFsc2UpO1xuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvdG9wcm8uYy00OTIwLVx0ZWxzZVxuLS1cbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3pjM3h4LmM9NjQxNT1zdGF0aWMgaW50IHNkX2luaXRfY29udHJvbHMoc3RydWN0IGdzcGNhX2RldiAqZ3NwY2FfZGV2KVxuLS1cbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3pjM3h4LmMtNjQ3NC1cdGlmIChzZC1cdTAwM2VzZW5zb3IgPT0gU0VOU09SX0hWNzEzMVIgfHwgc2QtXHUwMDNlc2Vuc29yID09IFNFTlNPUl9PVjc2MjApXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS96YzN4eC5jOjY0NzU6XHRcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXHUwMDI2c2QtXHUwMDNlYXV0b2dhaW4sIDAsIHRydWUpO1xuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvemMzeHguYy02NDc2LVx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9tZWRpYS91c2IvaGFja3JmL2hhY2tyZi5jPTEzNDQ9c3RhdGljIGludCBoYWNrcmZfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXG4tLVxuZHJpdmVycy9tZWRpYS91c2IvaGFja3JmL2hhY2tyZi5jLTE0MjktXHRcdDE3NTAwMDAsIDI4MDAwMDAwLCA1MDAwMCwgMTc1MDAwMCk7XG5kcml2ZXJzL21lZGlhL3VzYi9oYWNrcmYvaGFja3JmLmM6MTQzMDpcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXHUwMDI2ZGV2LVx1MDAzZXJ4X2JhbmR3aWR0aF9hdXRvLCAwLCBmYWxzZSk7XG5kcml2ZXJzL21lZGlhL3VzYi9oYWNrcmYvaGFja3JmLmMtMTQzMS1cdGRldi1cdTAwM2VyeF9yZl9nYWluID0gdjRsMl9jdHJsX25ld19zdGQoXHUwMDI2ZGV2LVx1MDAzZXJ4X2N0cmxfaGFuZGxlcixcbi0tXG5kcml2ZXJzL21lZGlhL3VzYi9oYWNrcmYvaGFja3JmLmMtMTQ1Mi1cdFx0MTc1MDAwMCwgMjgwMDAwMDAsIDUwMDAwLCAxNzUwMDAwKTtcbmRyaXZlcnMvbWVkaWEvdXNiL2hhY2tyZi9oYWNrcmYuYzoxNDUzOlx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigyLCBcdTAwMjZkZXYtXHUwMDNldHhfYmFuZHdpZHRoX2F1dG8sIDAsIGZhbHNlKTtcbmRyaXZlcnMvbWVkaWEvdXNiL2hhY2tyZi9oYWNrcmYuYy0xNDU0LVx0ZGV2LVx1MDAzZXR4X2xuYV9nYWluID0gdjRsMl9jdHJsX25ld19zdGQoXHUwMDI2ZGV2LVx1MDAzZXR4X2N0cmxfaGFuZGxlcixcbi0tXG5kcml2ZXJzL21lZGlhL3VzYi9wd2MvcHdjLXY0bC5jPTE1MD1pbnQgcHdjX2luaXRfY29udHJvbHMoc3RydWN0IHB3Y19kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9tZWRpYS91c2IvcHdjL3B3Yy12NGwuYy0yMDAtXHRwZGV2LVx1MDAzZWF1dG9fd2hpdGVfYmFsYW5jZSA9IHY0bDJfY3RybF9uZXdfY3VzdG9tKGhkbCwgXHUwMDI2Y2ZnLCBOVUxMKTtcbmRyaXZlcnMvbWVkaWEvdXNiL3B3Yy9wd2MtdjRsLmM6MjAxOlx0LyogY2hlY2sgYXV0byBjb250cm9scyB0byBhdm9pZCBOVUxMIGRlcmVmIGluIHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIgKi9cbmRyaXZlcnMvbWVkaWEvdXNiL3B3Yy9wd2MtdjRsLmMtMjAyLVx0aWYgKCFwZGV2LVx1MDAzZWF1dG9fd2hpdGVfYmFsYW5jZSlcbi0tXG5kcml2ZXJzL21lZGlhL3VzYi9wd2MvcHdjLXY0bC5jLTIxOC1cbmRyaXZlcnMvbWVkaWEvdXNiL3B3Yy9wd2MtdjRsLmM6MjE5Olx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigzLCBcdTAwMjZwZGV2LVx1MDAzZWF1dG9fd2hpdGVfYmFsYW5jZSwgYXdiX21hbnVhbCwgdHJ1ZSk7XG5kcml2ZXJzL21lZGlhL3VzYi9wd2MvcHdjLXY0bC5jLTIyMC1cbi0tXG5kcml2ZXJzL21lZGlhL3VzYi9wd2MvcHdjLXY0bC5jLTI2MS1cdFx0LyogQ09ERUMyOiBzZXBhcmF0ZSBhdXRvIGdhaW4gXHUwMDI2IGF1dG8gZXhwb3N1cmUgKi9cbmRyaXZlcnMvbWVkaWEvdXNiL3B3Yy9wd2MtdjRsLmM6MjYyOlx0XHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDIsIFx1MDAyNnBkZXYtXHUwMDNlYXV0b2dhaW4sIDAsIHRydWUpO1xuZHJpdmVycy9tZWRpYS91c2IvcHdjL3B3Yy12NGwuYzoyNjM6XHRcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXHUwMDI2cGRldi1cdTAwM2VleHBvc3VyZV9hdXRvLFxuZHJpdmVycy9tZWRpYS91c2IvcHdjL3B3Yy12NGwuYy0yNjQtXHRcdFx0XHQgICAgICAgVjRMMl9FWFBPU1VSRV9NQU5VQUwsIHRydWUpO1xuLS1cbmRyaXZlcnMvbWVkaWEvdXNiL3B3Yy9wd2MtdjRsLmMtMjc2LVx0XHRwZGV2LVx1MDAzZWF1dG9nYWluX2V4cG9fY2x1c3RlclsyXSA9IHBkZXYtXHUwMDNlZXhwb3N1cmU7XG5kcml2ZXJzL21lZGlhL3VzYi9wd2MvcHdjLXY0bC5jOjI3NzpcdFx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigzLCBwZGV2LVx1MDAzZWF1dG9nYWluX2V4cG9fY2x1c3RlcixcbmRyaXZlcnMvbWVkaWEvdXNiL3B3Yy9wd2MtdjRsLmMtMjc4LVx0XHRcdFx0ICAgICAgIDAsIHRydWUpO1xuLS1cbmRyaXZlcnMvbWVkaWEvdXNiL3B3Yy9wd2MtdjRsLmMtMzA2LVxuZHJpdmVycy9tZWRpYS91c2IvcHdjL3B3Yy12NGwuYzozMDc6XHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDIsIFx1MDAyNnBkZXYtXHUwMDNlYXV0b2NvbnRvdXIsIDAsIGZhbHNlKTtcbmRyaXZlcnMvbWVkaWEvdXNiL3B3Yy9wd2MtdjRsLmMtMzA4LVxuLS1cbmRyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL3Y0bDItY3RybHMtY29yZS5jPTI1NDQ9RVhQT1JUX1NZTUJPTCh2NGwyX2N0cmxfY2x1c3Rlcik7XG5kcml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwyLWN0cmxzLWNvcmUuYy0yNTQ1LVxuZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1jdHJscy1jb3JlLmM6MjU0Njp2b2lkIHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIodW5zaWduZWQgbmNvbnRyb2xzLCBzdHJ1Y3QgdjRsMl9jdHJsICoqY29udHJvbHMsXG5kcml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwyLWN0cmxzLWNvcmUuYy0yNTQ3LVx0XHRcdCAgICB1OCBtYW51YWxfdmFsLCBib29sIHNldF92b2xhdGlsZSlcbi0tXG5kcml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwyLWN0cmxzLWNvcmUuYy0yNTcxLX1cbmRyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL3Y0bDItY3RybHMtY29yZS5jOjI1NzI6RVhQT1JUX1NZTUJPTCh2NGwyX2N0cmxfYXV0b19jbHVzdGVyKTtcbmRyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL3Y0bDItY3RybHMtY29yZS5jLTI1NzMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMjE6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTUwMzYKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAxNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIENvbnRyb2wgQ2x1c3RlciBWdWxuZXJhYmlsaXRpZXMqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhlc2UgYHY0bDJfY3RybF9jbHVzdGVyYCBhbmQgYHY0bDJfY3RybF9hdXRvX2NsdXN0ZXJgIGNhbGxzLiBUaGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhhdCB0aGV5JiMzOTtyZSBiZWluZyB1c2VkIGluIGBkcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC92aXZpZC1jdHJscy5jYC4gVGhhdCYjMzk7cyB0aGUgc29mdHdhcmUtZW11bGF0ZWQsIHN1cGVyLWZ1enplZCBgdml2aWRgIGRyaXZlciwgd2hpY2ggaW5zdGFudGx5IHBpcXVlcyBteSBpbnRlcmVzdCBnaXZlbiBob3cgYWdncmVzc2l2ZSBTeXprYWxsZXIgaXMgd2l0aCBpdC4gVGhhdCYjMzk7cyBhIHByaW1lIHRhcmdldCBmb3IgcG90ZW50aWFsIGV4cGxvaXRzLgoKVGhlbiwgdGhlcmUmIzM5O3MgdGhlIHByZXNlbmNlIGluIGEgYnVuY2ggb2YgVVNCIGRyaXZlcnMg4oCTIHRoaW5ncyBsaWtlIGFpcnNweSwgaGFja3JmLCBnc3BjYSwgYW5kIHB3Yy4gVGhlIGZhY3QgdGhhdCB0aGVzZSBhcmUgcmVhY2hhYmxlIHZpYSBVU0IgZW11bGF0aW9uLCBhbmQgcG90ZW50aWFsbHkgdGhyb3VnaCByYXctZ2FkZ2V0IG9yIFN5emthbGxlciYjMzk7cyBVU0IgZnV6emluZyBjYXBhYmlsaXRpZXMsIGp1c3Qgc29saWRpZmllcyB0aGUgaW1wb3J0YW5jZSBvZiBjaGVja2luZyB0aGVtIG91dC4gVVNCIGlzIGFsd2F5cyBhIGdyZWF0IGF2ZW51ZSBmb3IgYXR0YWNraW5nIGRyaXZlcnMuCgpTbywgd2hlcmUgdG8gc3RhcnQ/IEkgdGhpbmsgSSYjMzk7bGwgemVybyBpbiBvbiBgdml2aWRgIGZpcnN0LiBJdCYjMzk7cyB0aGUgbW9zdCBleHBsaWNpdGx5IG1lbnRpb25lZCBhbmQgd2VsbC1mdXp6ZWQgZXhhbXBsZSwgc28gaXQgc2hvdWxkIGJlIGEgZ29vZCBzdGFydGluZyBwb2ludC4gSSBzaG91bGQgcHJvYmFibHkgYWxzbyBkbyBhIHF1aWNrIGF1ZGl0IG9mIHRoZSBLY29uZmlnIG9wdGlvbnMgZm9yIGB2aXZpZGAgYW5kIGZvciBhbnl0aGluZyByZWxhdGVkIHRvIGB2NGwyLWN0cmxzLWNvcmUuY2AgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3VidGxlIGNvbmZpZ3VyYXRpb24gdnVsbmVyYWJpbGl0aWVzIHRoYXQgbWF5IGV4cG9zZSBhdHRhY2sgc3VyZmFjZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMjE6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7djRsMi1jdHJscy1jb3JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL3Y0bDItY29yZS9NYWtlZmlsZT0xMT12aWRlb2Rldi1vYmpzXHQ6PVx0djRsMi1kZXYubyB2NGwyLWlvY3RsLm8gdjRsMi1kZXZpY2UubyB2NGwyLWZoLm8gXFxcbmRyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL01ha2VmaWxlLTEyLVx0XHRcdHY0bDItZXZlbnQubyB2NGwyLXN1YmRldi5vIHY0bDItY29tbW9uLm8gXFxcbmRyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL01ha2VmaWxlOjEzOlx0XHRcdHY0bDItY3RybHMtY29yZS5vIHY0bDItY3RybHMtYXBpLm8gXFxcbmRyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL01ha2VmaWxlLTE0LVx0XHRcdHY0bDItY3RybHMtcmVxdWVzdC5vIHY0bDItY3RybHMtZGVmcy5vXG4tLVxuZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1jdHJscy1wcml2Lmg9NDU9c3RhdGljIGlubGluZSB1MzIgdXNlcl9mbGFncyhjb25zdCBzdHJ1Y3QgdjRsMl9jdHJsICpjdHJsKVxuLS1cbmRyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL3Y0bDItY3RybHMtcHJpdi5oLTU0LVxuZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1jdHJscy1wcml2Lmg6NTU6LyogdjRsMi1jdHJscy1jb3JlLmMgKi9cbmRyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL3Y0bDItY3RybHMtcHJpdi5oLTU2LXZvaWQgY3VyX3RvX25ldyhzdHJ1Y3QgdjRsMl9jdHJsICpjdHJsKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAyMTo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTg3NQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDUxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHdoYXQgeW91JiMzOTtyZSBhc2tpbmcsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgdGhlIEJ1aWxkIENvbmZpZ3VyYXRpb24gZm9yIGB2aWRlb2RldmAqKgoKT2theSwgc28gd2UgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgYHZpZGVvZGV2YCBtb2R1bGUsIHNwZWNpZmljYWxseSwgaXMgYmVpbmcgYnVpbHQuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIHRoZSBvYnZpb3VzIHBsYWNlczogdGhlIGBNYWtlZmlsZWAgYW5kIGBLY29uZmlnYCBmaWxlcyB0aGF0IGFyZSBkaXJlY3RseSBpbnZvbHZlZCB3aXRoIHRoZSBWNEwyIGNvcmUuIE1vcmUgc3BlY2lmaWNhbGx5LCBJJiMzOTtsbCBiZSBsb29raW5nIGF0OgoKKiAgIFRoZSBgTWFrZWZpbGVgIGxvY2F0ZWQgaW4gYGRyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL01ha2VmaWxlYC4gVGhpcyBpcyB3aGVyZSBJIHdvdWxkIGV4cGVjdCB0byBmaW5kIHRoZSBydWxlcyB0aGF0IGRlZmluZSB0aGUgY29tcGlsYXRpb24gYW5kIGxpbmtpbmcgcHJvY2Vzcywgc3BlY2lmeWluZyBzb3VyY2UgZmlsZXMsIG9iamVjdCBmaWxlcywgYW5kIGRlcGVuZGVuY2llcyBpbnZvbHZlZCBpbiBjcmVhdGluZyBgdmlkZW9kZXZgLgoqICAgVGhlIGBLY29uZmlnYCBmaWxlcywgZXNwZWNpYWxseSBgZHJpdmVycy9tZWRpYS9LY29uZmlnYCBhbmQgYGRyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL0tjb25maWdgLiBUaGVzZSBhcmUgY3J1Y2lhbCwgYXMgdGhleSBkZXNjcmliZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgY29udHJvbCB3aGV0aGVyIGB2aWRlb2RldmAgaXMgYnVpbHQgYXMgYSBtb2R1bGUsIGJ1aWx0LWluLCBvciBjb21wbGV0ZWx5IG9taXR0ZWQgYmFzZWQgb24ga2VybmVsIGNvbmZpZ3VyYXRpb24uIEkmIzM5O2xsIG5lZWQgdG8gdHJhY2UgdGhlIGRlcGVuZGVuY2llcyB0aHJvdWdoIHRoZXNlIEtjb25maWcgZmlsZXMgdG8gc2VlIGV4YWN0bHkgd2hhdCBvdGhlciBvcHRpb25zIGluZmx1ZW5jZSB0aGUgZmluYWwgb3V0Y29tZS4gSSYjMzk7bGwgcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgc3ltYm9scyB0aGF0IHJlbGF0ZSB0byBgdmlkZW9kZXZgIGFuZCBpdHMgZGVwZW5kZW5jaWVzIG9uIG90aGVyIG1vZHVsZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDIxOjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvTWFrZWZpbGUmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0I1xuICAgMzpcdCMgTWFrZWZpbGUgZm9yIHRoZSBWNEwyIGNvcmVcbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0Y2NmbGFncy15ICYjNDM7PSAtSSQoc3JjdHJlZSkvZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzXG4gICA3Olx0Y2NmbGFncy15ICYjNDM7PSAtSSQoc3JjdHJlZSkvZHJpdmVycy9tZWRpYS90dW5lcnNcbiAgIDg6XHRcbiAgIDk6XHR0dW5lci1vYmpzXHQ6PVx0dHVuZXItY29yZS5vXG4gIDEwOlx0XG4gIDExOlx0dmlkZW9kZXYtb2Jqc1x0Oj1cdHY0bDItZGV2Lm8gdjRsMi1pb2N0bC5vIHY0bDItZGV2aWNlLm8gdjRsMi1maC5vIFxcXG4gIDEyOlx0XHRcdFx0djRsMi1ldmVudC5vIHY0bDItc3ViZGV2Lm8gdjRsMi1jb21tb24ubyBcXFxuICAxMzpcdFx0XHRcdHY0bDItY3RybHMtY29yZS5vIHY0bDItY3RybHMtYXBpLm8gXFxcbiAgMTQ6XHRcdFx0XHR2NGwyLWN0cmxzLXJlcXVlc3QubyB2NGwyLWN0cmxzLWRlZnMub1xuICAxNTpcdFxuICAxNjpcdCMgUGxlYXNlIGtlZXAgaXQgYWxwaGFiZXRpY2FsbHkgc29ydGVkIGJ5IEtjb25maWcgbmFtZVxuICAxNzpcdCMgKGUuIGcuIExDX0FMTD1DIHNvcnQgTWFrZWZpbGUpXG4gIDE4Olx0dmlkZW9kZXYtJChDT05GSUdfQ09NUEFUKSAmIzQzOz0gdjRsMi1jb21wYXQtaW9jdGwzMi5vXG4gIDE5Olx0dmlkZW9kZXYtJChDT05GSUdfTUVESUFfQ09OVFJPTExFUikgJiM0Mzs9IHY0bDItbWMub1xuICAyMDpcdHZpZGVvZGV2LSQoQ09ORklHX1NQSSkgJiM0Mzs9IHY0bDItc3BpLm9cbiAgMjE6XHR2aWRlb2Rldi0kKENPTkZJR19UUkFDRVBPSU5UUykgJiM0Mzs9IHY0bDItdHJhY2Uub1xuICAyMjpcdHZpZGVvZGV2LSQoQ09ORklHX1ZJREVPX1Y0TDJfSTJDKSAmIzQzOz0gdjRsMi1pMmMub1xuICAyMzpcdFxuICAyNDpcdCMgUGxlYXNlIGtlZXAgaXQgYWxwaGFiZXRpY2FsbHkgc29ydGVkIGJ5IEtjb25maWcgbmFtZVxuICAyNTpcdCMgKGUuIGcuIExDX0FMTD1DIHNvcnQgTWFrZWZpbGUpXG4gIDI2Olx0XG4gIDI3Olx0b2JqLSQoQ09ORklHX1Y0TDJfQVNZTkMpICYjNDM7PSB2NGwyLWFzeW5jLm9cbiAgMjg6XHRvYmotJChDT05GSUdfVjRMMl9DQ0kpICYjNDM7PSB2NGwyLWNjaS5vXG4gIDI5Olx0b2JqLSQoQ09ORklHX1Y0TDJfRkxBU0hfTEVEX0NMQVNTKSAmIzQzOz0gdjRsMi1mbGFzaC1sZWQtY2xhc3Mub1xuICAzMDpcdG9iai0kKENPTkZJR19WNEwyX0ZXTk9ERSkgJiM0Mzs9IHY0bDItZndub2RlLm9cbiAgMzE6XHRvYmotJChDT05GSUdfVjRMMl9IMjY0KSAmIzQzOz0gdjRsMi1oMjY0Lm9cbiAgMzI6XHRvYmotJChDT05GSUdfVjRMMl9JU1ApICYjNDM7PSB2NGwyLWlzcC5vXG4gIDMzOlx0b2JqLSQoQ09ORklHX1Y0TDJfSlBFR19IRUxQRVIpICYjNDM7PSB2NGwyLWpwZWcub1xuICAzNDpcdG9iai0kKENPTkZJR19WNEwyX01FTTJNRU1fREVWKSAmIzQzOz0gdjRsMi1tZW0ybWVtLm9cbiAgMzU6XHRvYmotJChDT05GSUdfVjRMMl9WUDkpICYjNDM7PSB2NGwyLXZwOS5vXG4gIDM2Olx0XG4gIDM3Olx0b2JqLSQoQ09ORklHX1ZJREVPX1RVTkVSKSAmIzQzOz0gdHVuZXIub1xuICAzODpcdG9iai0kKENPTkZJR19WSURFT19ERVYpICYjNDM7PSB2NGwyLWR2LXRpbWluZ3MubyB2aWRlb2Rldi5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDIxOjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3MDc0CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIHRoZSBWaWRlbyBEZXZpY2UgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBidWlsZCBydWxlOiBgb2JqLSQoQ09ORklHX1ZJREVPX0RFVikgJiM0Mzs9IHY0bDItZHYtdGltaW5ncy5vIHZpZGVvZGV2Lm9gLiBUaGlzIHRlbGxzIG1lIHRoYXQgdGhlIG9iamVjdCBmaWxlcyBgdjRsMi1kdi10aW1pbmdzLm9gIGFuZCBgdmlkZW9kZXYub2Agd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgYnVpbGQsIGJ1dCBvbmx5IGlmIGEgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb24sIGBDT05GSUdfVklERU9fREVWYCwgaXMgZW5hYmxlZC4gTmF0dXJhbGx5LCBteSBuZXh0IHN0ZXAgaXMgdG8gZmlndXJlIG91dCB3aGF0IGBWSURFT19ERVZgIGFjdHVhbGx5ICptZWFucyouIFRvIHVuZGVyc3RhbmQgaXRzIGltcGxpY2F0aW9ucywgSSBuZWVkIHRvIHRyYWNlIGJhY2sgYW5kIGZpbmQgaXRzIGRlZmluaXRpb24gd2l0aGluIHRoZSBLY29uZmlnIGZpbGVzLiBUaGlzIHdpbGwgc2hlZCBsaWdodCBvbiB0aGUgcHVycG9zZSBvZiB0aGVzZSB2aWRlby1yZWxhdGVkIG1vZHVsZXMsIHdoaWNoIGhhcmR3YXJlIG9yIGZlYXR1cmVzIHRoZXkgc3VwcG9ydCwgYW5kIHVuZGVyIHdoYXQgY29uZGl0aW9ucyB0aGV5JiMzOTtyZSBpbmNsdWRlZCBpbiB0aGUga2VybmVsIGltYWdlLiBVbHRpbWF0ZWx5LCBJIG5lZWQgYSBjbGVhcmVyIHBpY3R1cmUgb2Ygd2hlbiBhbmQgd2h5IHRoZXNlIHNwZWNpZmljIG9iamVjdCBmaWxlcyBhcmUgYmVpbmcgYnVpbHQuIExldCYjMzk7cyBzZWUgd2hhdCBLY29uZmlnIGhhcyB0byBzYXkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDIxOjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBWSURFT19ERVZcXGImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvS2NvbmZpZz0xNTc9bWVudSBcJiMzNDtNZWRpYSBjb3JlIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL21lZGlhL0tjb25maWctMTU5LVxuZHJpdmVycy9tZWRpYS9LY29uZmlnOjE2MDpjb25maWcgVklERU9fREVWXG5kcml2ZXJzL21lZGlhL0tjb25maWctMTYxLVx0dHJpc3RhdGUgXCYjMzQ7VmlkZW80TGludXggY29yZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAyMTo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzQzNgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIHRoZSBzdW1tYXJ5LCByZW5kZXJlZCBhcyBhIGZpcnN0LXBlcnNvbiBhY2NvdW50IGZyb20gbXkgcGVyc3BlY3RpdmU6CgoqKkRpdmluZyBpbnRvIHRoZSBNZWRpYSBTdWJzeXN0ZW0gQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eSB3aXRoIHRoaXMgbWVkaWEtcmVsYXRlZCBpc3N1ZS4gTGV0JiMzOTtzIHN0YXJ0IGJ5IG5hdmlnYXRpbmcgdG8gYGRyaXZlcnMvbWVkaWEvS2NvbmZpZ2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgYXJvdW5kIGxpbmUgMTYwLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBjb25maWd1cmF0aW9uIG9wdGlvbnMgSSBuZWVkIHRvIGJlIGF3YXJlIG9mLiBJJiMzOTttIGVzcGVjaWFsbHkga2VlbiB0byBzZWUgaWYgc29tZXRoaW5nIGxpa2UgYE1FRElBX1NVUFBPUlRgIG9yIHNvbWV0aGluZyBzaW1pbGFyIGlzIGFsc28gcmVxdWlyZWQsIGFuZCBob3cgaXRzIHN0YXRlIGFmZmVjdHMgdGhlIG9wdGlvbnMgaW4gdGhpcyBibG9jay4gR2V0dGluZyBhIGhhbmRsZSBvbiB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHRoZXNlIGNvbmZpZ3Mgd2lsbCBiZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgcHJvYmxlbS4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBLY29uZmlnIGZpbGUgcmV2ZWFscy4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAyMTo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE0NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTQ1Olx0XHQgIGNhbiBiZSB1c2VmdWwgb24gZGVidWcgb25lcy4gVGhpcyBvcHRpb24gZW5hYmxlcyBzZXZlcmFsIGR1bW15IGRyaXZlcnNcbiAxNDY6XHRcdCAgdGhhdCBzaW11bGF0ZSByZWFsIGhhcmR3YXJlLiBWZXJ5IHVzZWZ1bCB0byB0ZXN0IHVzZXJzcGFjZVxuIDE0NzpcdFx0ICBhcHBsaWNhdGlvbnMgYW5kIHRvIHZhbGlkYXRlIGlmIHRoZSBzdWJzeXN0ZW0gY29yZSBkb2VzbiYjMzk7dFxuIDE0ODpcdFx0ICBoYXZlIHJlZ3Jlc3Npb25zLlxuIDE0OTpcdFxuIDE1MDpcdFx0ICBTYXkgWSBpZiB5b3Ugd2FudCB0byB1c2Ugc29tZSB2aXJ0dWFsIHRlc3QgZHJpdmVyLlxuIDE1MTpcdFxuIDE1MjpcdFx0ICBJbiBjYXNlIG9mIGRvdWJ0cywgc2F5IE4uXG4gMTUzOlx0XHQgIFNheSBZIHdoZW4geW91IGhhdmUgYSBzb2Z0d2FyZSBkZWZpbmVkIHJhZGlvIGRldmljZS5cbiAxNTQ6XHRlbmRtZW51ICMgbWVkaWEgZGV2aWNlIHR5cGVzXG4gMTU1Olx0XG4gMTU2Olx0XG4gMTU3Olx0bWVudSBcJiMzNDtNZWRpYSBjb3JlIHN1cHBvcnRcJiMzNDtcbiAxNTg6XHRcdHZpc2libGUgaWYgIU1FRElBX1NVUFBPUlRfRklMVEVSXG4gMTU5Olx0XG4gMTYwOlx0Y29uZmlnIFZJREVPX0RFVlxuIDE2MTpcdFx0dHJpc3RhdGUgXCYjMzQ7VmlkZW80TGludXggY29yZVwmIzM0O1xuIDE2MjpcdFx0ZGVmYXVsdCBNRURJQV9DQU1FUkFfU1VQUE9SVCB8fCBNRURJQV9BTkFMT0dfVFZfU1VQUE9SVCB8fCBNRURJQV9SQURJT19TVVBQT1JUIHx8IE1FRElBX1NEUl9TVVBQT1JUIHx8IE1FRElBX1BMQVRGT1JNX1NVUFBPUlQgfHwgTUVESUFfVEVTVF9TVVBQT1JUXG4gMTYzOlx0XHRkZXBlbmRzIG9uIChJMkMgfHwgSTJDPW4pXG4gMTY0Olx0XHRzZWxlY3QgUkFUSU9OQUxcbiAxNjU6XHRcdHNlbGVjdCBWSURFT0JVRjJfVjRMMiBpZiBWSURFT0JVRjJfQ09SRVxuIDE2NjpcdFx0aGVscFxuIDE2NzpcdFx0ICBFbmFibGVzIHRoZSBWNEwyIEFQSSwgdXNlZCBieSBjYW1lcmFzLCBhbmFsb2cgVFYsIHZpZGVvIGdyYWJiZXJzLFxuIDE2ODpcdFx0ICByYWRpbyBkZXZpY2VzIGFuZCBieSBzb21lIGlucHV0IGRldmljZXMuXG4gMTY5Olx0XG4gMTcwOlx0Y29uZmlnIE1FRElBX0NPTlRST0xMRVJcbiAxNzE6XHRcdGJvb2wgXCYjMzQ7TWVkaWEgQ29udHJvbGxlciBBUElcJiMzNDtcbiAxNzI6XHRcdGRlZmF1bHQgTUVESUFfQ0FNRVJBX1NVUFBPUlQgfHwgTUVESUFfQU5BTE9HX1RWX1NVUFBPUlQgfHwgTUVESUFfRElHSVRBTF9UVl9TVVBQT1JUIHx8IE1FRElBX1BMQVRGT1JNX1NVUFBPUlRcbiAxNzM6XHRcdGhlbHBcbiAxNzQ6XHRcdCAgRW5hYmxlIHRoZSBtZWRpYSBjb250cm9sbGVyIEFQSSB1c2VkIHRvIHF1ZXJ5IG1lZGlhIGRldmljZXMgaW50ZXJuYWxcbiAxNzU6XHRcdCAgdG9wb2xvZ3kgYW5kIGNvbmZpZ3VyZSBpdCBkeW5hbWljYWxseS5cbiAxNzY6XHRcbiAxNzc6XHRcdCAgVGhpcyBBUEkgaXMgbW9zdGx5IHVzZWQgYnkgY2FtZXJhIGludGVyZmFjZXMgaW4gZW1iZWRkZWQgcGxhdGZvcm1zLlxuIDE3ODpcdFxuIDE3OTpcdCNcbiAxODA6XHQjIERWQiBDb3JlXG4gMTgxOlx0I1x0T25seSBlbmFibGVzIGlmIG9uZSBvZiBEVFYgaXMgc2VsZWN0ZWRcbiAxODI6XHQjXG4gMTgzOlx0XG4gMTg0Olx0Y29uZmlnIERWQl9DT1JFXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDIxOjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4MjY3CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMTE2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipQYXRjaCBBbmFseXNpczogVjRMMiBDb250cm9sIENsdXN0ZXIgYW5kIEF1dG8tQ2x1c3RlciBDaGFuZ2VzIC0gV29ydGggRnV6emluZyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgZG93biB0aGlzIHBhdGNoLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZXhhbWluZSB0aGUgY29kZSBjaGFuZ2VzLCBzcGVjaWZpY2FsbHkgd2l0aGluIGB2NGwyX2N0cmxfY2x1c3RlcmAgYW5kIGB2NGwyX2N0cmxfYXV0b19jbHVzdGVyYC4KCkkgc2VlIHRoYXQgdGhlIG9yaWdpbmFsIGltcGxlbWVudGF0aW9uIG9mIGB2NGwyX2N0cmxfY2x1c3RlcmAgaGFkIGEgYFdBUk5fT05gIGNoZWNrIGZvciBgbmNvbnRyb2xzID09IDAgfHwgY29udHJvbHNbMF0gPT0gTlVMTGAuIFRoZSB1cGRhdGVkIHZlcnNpb24gaGFzIHNpbXBsaWZpZWQgdGhpcyB0byBqdXN0IGBXQVJOX09OKG5jb250cm9scyA9PSAwKWAgYW5kIHN1YnNlcXVlbnRseSBhZGRlZCBhIGNoZWNrIGZvciB0aGUgbWFzdGVyIGNvbnRyb2wgYmVpbmcgTlVMTC4gU2ltaWxhcmx5LCBpbiBgdjRsMl9jdHJsX2F1dG9fY2x1c3RlcmAsIHRoZXJlJiMzOTtzIGEgcmVmaW5lbWVudCB0byBob3cgYG1hc3RlcmAgaXMgYXNzaWduZWQsIGhhbmRsaW5nIHRoZSBjYXNlIHdoZXJlIGBuY29udHJvbHNgIG1pZ2h0IGJlIHplcm8sIG9yIGBjb250cm9sc1swXWAgaXMgTlVMTC4gVGhlcmUmIzM5O3Mgbm93IGFuIGV4cGxpY2l0IGNoZWNrOiBgaWYgKCFtYXN0ZXIpIHJldHVybjtgIHdoaWNoIGF2b2lkcyBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcy4gVGhlIG9yaWdpbmFsIGNvZGUgd2FzIHBvdGVudGlhbGx5IHZ1bG5lcmFibGUgdG8gTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyBpZiBgbmNvbnRyb2xzYCB3YXMgemVyby4KClNvLCB0aGUga2V5IHRha2Vhd2F5IGlzIHRoYXQgdGhlIHBhdGNoIHByaW1hcmlseSBpbXByb3ZlcyBlcnJvciBoYW5kbGluZyBieSBwcmV2ZW50aW5nIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIGFuZCBzaW1wbGlmeWluZyB0aGUgYFdBUk5fT05gIGNvbmRpdGlvbnMuCgpOb3csIGNvbnNpZGVyaW5nIHRoZSBwYXRjaCYjMzk7cyByZWFjaGFiaWxpdHkgYW5kIGZ1enppbmcgcG90ZW50aWFsLCBsZXQmIzM5O3MgY29uc3VsdCB0aGUgZ3VpZGVsaW5lcy4gVGhlIGdvYWwgaXMgdG8gaWRlbnRpZnkgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGFuZCBsYXRlbnQgYnVncy4gVGhlIHBhdGNoIHRvdWNoZXMgYGRyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL3Y0bDItY3RybHMtY29yZS5jYCwgd2hpY2ggaXMgY2xlYXJseSBwYXJ0IG9mIHRoZSBWNEwyIGNvcmUuIFRoaXMgaXMgc2lnbmlmaWNhbnQgYmVjYXVzZSBWNEwyIGlzIGV4cG9zZWQgdGhyb3VnaCB2YXJpb3VzIG1lY2hhbmlzbXMsIG5vdGFibHkgVVNCIGdhZGdldHMgKHJhdy1nYWRnZXQgZnV6emluZyksIGFuZCB2aXJ0dWFsIG1lZGlhIGRyaXZlcnMgc3VjaCBhcyBgdml2aWRgLiBUaGlzIG1lYW5zIHRoZSBjb2RlICppcyogcmVhY2hhYmxlIGFuZCBleGVjdXRhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhlIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYW5kIGFyZSBjYWxsZWQgZHVyaW5nIGRyaXZlciBpbml0aWFsaXphdGlvbiBhbmQgY29udHJvbCBzZXR1cCBpbiBudW1lcm91cyBWNEwyIGRyaXZlcnMsIGluY2x1ZGluZyBVU0IgdmlkZW8gY2FwdHVyZSBkZXZpY2VzLiBUaGVzZSBmdW5jdGlvbnMgYXJlIGFsc28gcGFydCBvZiB0aGUgY29yZSwgYW5kIHNvIGFueSBjaGFuZ2UgaGVyZSBpcyB2YWx1YWJsZS4gR2l2ZW4gdGhlIGNoYW5nZXMgdG8gcnVudGltZSBkZWZlbnNpdmUgY2hlY2tzIGFuZCBmbG93IGNvbnRyb2wsIGl0IHNlZW1zIGNsZWFyIHRoaXMgaXMgd29ydGggZnV6emluZy4gVGhlIHVwZGF0ZWQgZXJyb3IgaGFuZGxpbmcgdG91Y2hlcyBvbiB0aGUgJiMzNDtydW50aW1lIGFzc2VydGlvbnMgYW5kIGRlZmVuc2l2ZSBjaGVja3MmIzM0OyBjYXRlZ29yeSwgd2hpY2ggaXMgYSBiaWcgZ3JlZW4gbGlnaHQuIFRoZXJlZm9yZSwgdGhlIGFuc3dlciBpcyBgV29ydGhGdXp6aW5nID0gdHJ1ZWAuCgpOZXh0LCBsZXQmIzM5O3MgbmFpbCBkb3duIHRoZSBmb2N1cyBzeW1ib2xzLiBUaGUgcGF0Y2ggbW9kaWZpZXMgYHY0bDJfY3RybF9jbHVzdGVyYCBhbmQgYHY0bDJfY3RybF9hdXRvX2NsdXN0ZXJgIGRpcmVjdGx5LCBub3RoaW5nIGVsc2UuIFRoZXJlZm9yZSwgdGhvc2UgYXJlIG15IGZvY3VzIHN5bWJvbHMuIFRoZXNlIGFyZSBzcGVjaWZpYyBmdW5jdGlvbnMsIG5vdCB1YmlxdWl0b3VzLCBzbyB3ZSBjYW4gZGVmaW5lIHRoZW0gcHJlY2lzZWx5LgoKRmluYWxseSwgcmVnYXJkaW5nIGBFbmFibGVDb25maWdzYCwgdGhlIGNvcmUgbW9kdWxlcyB0b3VjaGVkIGJ5IHRoaXMgcGF0Y2ggYXJlIGVuYWJsZWQgYnkgYE1FRElBX1NVUFBPUlRgIGFuZCBgVklERU9fREVWYC4gTGV0JiMzOTtzIGNvbmZpcm0gYW55IHNwZWNpZmljcyByZWdhcmRpbmcgdGhlIFZpdmlkIGRyaXZlci4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayBgZHJpdmVycy9tZWRpYS9LY29uZmlnYCB0byBwaW5wb2ludCB3aGV0aGVyIGB2aXZpZGAgb3Igb3RoZXIgcmVsZXZhbnQgZHJpdmVycyByZXF1aXJlIGFkZGl0aW9uYWwgY29uZmlncy4gSSYjMzk7bSByZWFzb25hYmx5IHN1cmUgYE1FRElBX1NVUFBPUlRgIGFuZCBgVklERU9fREVWYCB3aWxsIGJlIHN1ZmZpY2llbnQsIGJ1dCBJIHdpbGwgZG91YmxlLWNoZWNrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAyMTo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZW51Y29uZmlnIE1FRElBX1NVUFBPUlQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvS2NvbmZpZz0xMD1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9tZWRpYS9jZWMvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9tZWRpYS9LY29uZmlnLTExLVxuZHJpdmVycy9tZWRpYS9LY29uZmlnOjEyOm1lbnVjb25maWcgTUVESUFfU1VQUE9SVFxuZHJpdmVycy9tZWRpYS9LY29uZmlnLTEzLVx0dHJpc3RhdGUgXCYjMzQ7TXVsdGltZWRpYSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDIxOjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMTg4CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkNoZWNraW5nIEtlcm5lbCBDb25maWd1cmF0aW9uIE9wdGlvbnMqKgoKQWxyaWdodCwgdGltZSB0byBkaXZlIGluLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGN1cnJlbnQgc3RhdGUgb2YgbWVkaWEgc3VwcG9ydCBpbiB0aGUga2VybmVsLiBMZXQmIzM5O3Mgc3RhcnQgYnkgemVyb2luZyBpbiBvbiB0aG9zZSBjb3JlIGNvbmZpZ3VyYXRpb25zLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgYE1FRElBX1NVUFBPUlRgIGFuZCBgVklERU9fREVWYCB3aXRoaW4gdGhlIGBkcml2ZXJzL21lZGlhL0tjb25maWdgIGZpbGUuIFRoYXQmIzM5O3MgdXN1YWxseSB0aGUgYmVzdCBwbGFjZSB0byBmaW5kIHRoZSBoaWdoLWxldmVsIGZsYWdzIHRoYXQgZ292ZXJuIGEgbG90IG9mIHRoZSBzdWJzeXN0ZW0mIzM5O3MgYmVoYXZpb3VyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGVzZSBhcmUgZW5hYmxlZCwgZGlzYWJsZWQsIG9yIGlmIHRoZWlyIGRlcGVuZGVuY2llcyBoYXZlIGNoYW5nZWQgc2luY2UgdGhlIGxhc3QgdGltZSBJIGxvb2tlZC4gQSBxdWljayBzY2FuIHRoZXJlIHNob3VsZCBnaXZlIG1lIHRoZSBsYXkgb2YgdGhlIGxhbmQsIHdoaWNoIHdpbGwgdGhlbiBpbmZvcm0gbXkgbmV4dCBzdGVwcy4gVGhpcyBpcyBhIHNvbGlkIHN0YXJ0aW5nIHBvaW50IGZvciBhbnkgbWVkaWEtcmVsYXRlZCBpbnZlc3RpZ2F0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAyMTo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMTA6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9tZWRpYS9jZWMvS2NvbmZpZ1wmIzM0O1xuICAxMTpcdFxuICAxMjpcdG1lbnVjb25maWcgTUVESUFfU1VQUE9SVFxuICAxMzpcdFx0dHJpc3RhdGUgXCYjMzQ7TXVsdGltZWRpYSBzdXBwb3J0XCYjMzQ7XG4gIDE0Olx0XHRkZXBlbmRzIG9uIEhBU19JT01FTVxuICAxNTpcdFx0aGVscFxuICAxNjpcdFx0ICBJZiB5b3Ugd2FudCB0byB1c2UgbWVkaWEgZGV2aWNlcywgaW5jbHVkaW5nIFdlYmNhbXMsIFZpZGVvIGdyYWJiZXJcbiAgMTc6XHRcdCAgZGV2aWNlcyBhbmQvb3IgVFYgZGV2aWNlcywgVjRMMiBjb2RlY3MsIGV0YywgZW5hYmxlIHRoaXMgb3B0aW9uXG4gIDE4Olx0XHQgIGFuZCBvdGhlciBvcHRpb25zIGJlbG93LlxuICAxOTpcdFxuICAyMDpcdFx0ICBBZGRpdGlvbmFsIGluZm8gYW5kIGRvY3MgYXJlIGF2YWlsYWJsZSBvbiB0aGUgd2ViIGF0XG4gIDIxOlx0XHQgIFx1MDAzY2h0dHBzOi8vbGludXh0di5vcmdcdTAwM2VcbiAgMjI6XHRcbiAgMjM6XHRpZiBNRURJQV9TVVBQT1JUXG4gIDI0Olx0XG4gIDI1Olx0Y29uZmlnIE1FRElBX1NVUFBPUlRfRklMVEVSXG4gIDI2Olx0XHRib29sIFwmIzM0O0ZpbHRlciBtZWRpYSBkcml2ZXJzXCYjMzQ7XG4gIDI3Olx0XHRkZWZhdWx0IHkgaWYgIUVYUEVSVFxuICAyODpcdFx0aGVscFxuICAyOTpcdFx0ICAgQ29uZmlndXJpbmcgdGhlIG1lZGlhIHN1YnN5c3RlbSBjYW4gYmUgY29tcGxleCwgYXMgdGhlcmUgYXJlXG4gIDMwOlx0XHQgICBodW5kcmVkcyBvZiBkcml2ZXJzIGFuZCBvdGhlciBjb25maWcgb3B0aW9ucy5cbiAgMzE6XHRcbiAgMzI6XHRcdCAgIFRoaXMgbWVudSBvZmZlcnMgb3B0aW9uIHRoYXQgd2lsbCBoZWxwIHRoZSBLZXJuZWwmIzM5O3MgY29uZmlnXG4gIDMzOlx0XHQgICBzeXN0ZW0gdG8gaGlkZSBkcml2ZXJzIHRoYXQgYXJlIG91dCBvZiB0aGUgc2NvcGUgb2YgdGhlXG4gIDM0Olx0XHQgICB1c2VyIG5lZWRzLCBhbmQgZGlzYWJsaW5nIGNvcmUgc3VwcG9ydCBmb3IgdW51c2VkIEFQSXMuXG4gIDM1Olx0XG4gIDM2Olx0XHQgICBJZiBub3Qgc2VsZWN0ZWQsIGFsbCBub24tb3B0aW9uYWwgbWVkaWEgY29yZSBmdW5jdGlvbmFsaXR5XG4gIDM3Olx0XHQgICBuZWVkZWQgdG8gc3VwcG9ydCBtZWRpYSBkcml2ZXJzIHdpbGwgYmUgZW5hYmxlZC4gQWxzbywgYWxsXG4gIDM4Olx0XHQgICBtZWRpYSBkZXZpY2UgZHJpdmVycyBzaG91bGQgYmUgc2hvd24uXG4gIDM5Olx0XG4gIDQwOlx0Y29uZmlnIE1FRElBX1NVQkRSVl9BVVRPU0VMRUNUXG4gIDQxOlx0XHRib29sIFwmIzM0O0F1dG9zZWxlY3QgYW5jaWxsYXJ5IGRyaXZlcnMgKHR1bmVycywgc2Vuc29ycywgaTJjLCBzcGksIGZyb250ZW5kcylcJiMzNDtcbiAgNDI6XHRcdGRlcGVuZHMgb24gSEFTX0lPTUVNXG4gIDQzOlx0XHRzZWxlY3QgSTJDXG4gIDQ0Olx0XHRzZWxlY3QgSTJDX01VWFxuICA0NTpcdFx0ZGVmYXVsdCB5IGlmIE1FRElBX1NVUFBPUlRfRklMVEVSXG4gIDQ2Olx0XHRoZWxwXG4gIDQ3Olx0XHQgIEJ5IGRlZmF1bHQsIGEgbWVkaWEgZHJpdmVyIGF1dG8tc2VsZWN0cyBhbGwgcG9zc2libGUgYW5jaWxsYXJ5XG4gIDQ4Olx0XHQgIGRldmljZXMgc3VjaCBhcyB0dW5lcnMsIHNlbnNvcnMsIHZpZGVvIGVuY29kZXJzL2RlY29kZXJzIGFuZFxuICA0OTpcdFx0ICBmcm9udGVuZHMsIHRoYXQgYXJlIHVzZWQgYnkgYW55IG9mIHRoZSBzdXBwb3J0ZWQgZGV2aWNlcy5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMjE6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA5ODgKCQkJCQkJCW91dHB1dDogMTM2CgkJCQkJCQl0aG91Z2h0czogMzU3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFY0TDIgQ29udHJvbCBDb21waWxhdGlvbioqCgpPa2F5LCBzbyBiYXNlZCBvbiB0aGUgaW5pdGlhbCBpbmZvcm1hdGlvbiwgaXQgbG9va3MgbGlrZSBgTUVESUFfU1VQUE9SVGAgYW5kIGBWSURFT19ERVZgIGFyZSB0aGUga2V5IGNvbmZpZ3VyYXRpb25zIHJlcXVpcmVkIHRvIGNvbXBpbGUgYHY0bDItY3RybHMtY29yZS5jYC4gV2UgKmNvdWxkKiBwb3RlbnRpYWxseSBjb25zaWRlciBgVklERU9fVEVTVF9EUklWRVJTYCwgYFZJREVPX1ZJVklEYCwgb3IgYFVTQl9HU1BDQWAgaWYgd2Ugd2FudGVkIHRvIGdldCBtb3JlIHNwZWNpZmljIGRyaXZlcnMgaW52b2x2ZWQsIGJ1dCB0aGUgY29yZSBmb3VuZGF0aW9uIHNlZW1zIHRvIGJlIGBNRURJQV9TVVBQT1JUYCBhbmQgYFZJREVPX0RFVmAuCgpMZXQmIzM5O3MgcXVpY2tseSB2ZXJpZnkgdGhhdCBgVklERU9fREVWYCBhY3R1YWxseSBpbmNsdWRlcyBgdjRsMi1jdHJscy1jb3JlLmNgLiBJIG5lZWQgdG8gY29uZmlybSB0aGUgYnVpbGQgcHJvY2Vzcy4gTG9va2luZyBpbiBgZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvTWFrZWZpbGVgLCBJIHNlZToKCmBvYmotJChDT05GSUdfVklERU9fREVWKSAmIzQzOz0gdjRsMi1kdi10aW1pbmdzLm8gdmlkZW9kZXYub2AKYW5kCmB2aWRlb2Rldi1vYmpzIDo9IC4uLiB2NGwyLWN0cmxzLWNvcmUubyAuLi5gCgpBbHJpZ2h0LCB0aGF0IGNvbmZpcm1zIGl0OiBlbmFibGluZyBib3RoIGBNRURJQV9TVVBQT1JUYCBhbmQgYFZJREVPX0RFVmAgd2lsbCBpbmRlZWQgY29tcGlsZSBgdmlkZW9kZXYub2AsIHdoaWNoIGluIHR1cm4gaW5jbHVkZXMgYHY0bDItY3RybHMtY29yZS5jYC4KCk5vdywgbGV0JiMzOTtzIGp1c3QgbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgbGluZXMgdXAgZnJvbSB0aGUgdHJpYWdlIHBlcnNwZWN0aXZlLiBJIG5lZWQgdG8gZG8gYSBmaW5hbCBxdWljayBjaGVjayB0byBlbnN1cmUgdGhlIGFuYWx5c2lzIGlzIHNvdW5kOgoKMS4gICoqV29ydGhGdXp6aW5nOiBUcnVlKiogLSBTb3VuZHMgZ29vZCwgdGhlIHBhdGNoIHNlZW1zIHByb21pc2luZyBmb3IgZnV6emluZy4KMi4gICoqUmVhc29uaW5nOioqIENvcnJlY3QsIGl0JiMzOTtzIG1vZGlmeWluZyB2YWxpZGF0aW9uIGFuZCBlcnJvciBoYW5kbGluZyBpbiBgdjRsMl9jdHJsX2NsdXN0ZXJgIGFuZCBgdjRsMl9jdHJsX2F1dG9fY2x1c3RlcmAsIHVzZWQgaW4gVjRMMiBkZXZpY2UgZHJpdmVycywgaW5jbHVkaW5nIHRob3NlIGFjY2Vzc2libGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgYHZpdmlkYC4KMy4gICoqRm9jdXNTeW1ib2xzOiBbJiMzNDt2NGwyX2N0cmxfY2x1c3RlciYjMzQ7LCAmIzM0O3Y0bDJfY3RybF9hdXRvX2NsdXN0ZXImIzM0O10qKiAtIFl1cCwgdGhlIGZ1bmN0aW9ucyBpZGVudGlmaWVkIGFzIHRoZSBhcmVhIG9mIGludGVyZXN0IGluIHRoZSBwYXRjaCBhcmUgdGhlIGNvcnJlY3Qgb25lcy4KNC4gICoqRW5hYmxlQ29uZmlnczogWyYjMzQ7TUVESUFfU1VQUE9SVCYjMzQ7LCAmIzM0O1ZJREVPX0RFViYjMzQ7XSoqIC0gV2UmIzM5O3ZlIHZlcmlmaWVkIHRoaXMsIHRoaXMgaXMgd2hhdCB0aGUgYW5hbHlzaXMgbGFuZGVkIG9uLgoKT2theSwgZXZlcnl0aGluZyBjaGVja3Mgb3V0LCBsZXQmIzM5O3MgY2FsbCBgc2V0LXJlc3VsdHNgLiBJJiMzOTttIGNvbmZpZGVudCBpbiB0aGVzZSBmaW5kaW5ncy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMjE6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01FRElBX1NVUFBPUlQmIzM0OywKICAgICYjMzQ7VklERU9fREVWJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7djRsMl9jdHJsX2NsdXN0ZXImIzM0OywKICAgICYjMzQ7djRsMl9jdHJsX2F1dG9fY2x1c3RlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb250cm9sIGZsb3cgYW5kIE5VTEwgY2hlY2tzIGluIHRoZSBjb3JlIFY0TDIgY29udHJvbCBjbHVzdGVyaW5nIGZ1bmN0aW9ucyAodjRsMl9jdHJsX2NsdXN0ZXIgYW5kIHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIpLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSBhbmQgZXhlcmNpc2VkIGR1cmluZyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdmFyaW91cyBWNEwyIGRyaXZlcnMsIGluY2x1ZGluZyB2aXJ0dWFsIGRyaXZlcnMgKHN1Y2ggYXMgdml2aWQpIGFuZCBlbXVsYXRlZCBVU0IgbWVkaWEgZGV2aWNlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUVESUFfU1VQUE9SVCYjMzQ7LAogICAgJiMzNDtWSURFT19ERVYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2NGwyX2N0cmxfY2x1c3RlciYjMzQ7LAogICAgJiMzNDt2NGwyX2N0cmxfYXV0b19jbHVzdGVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGNvbnRyb2wgZmxvdyBhbmQgTlVMTCBjaGVja3MgaW4gdGhlIGNvcmUgVjRMMiBjb250cm9sIGNsdXN0ZXJpbmcgZnVuY3Rpb25zICh2NGwyX2N0cmxfY2x1c3RlciBhbmQgdjRsMl9jdHJsX2F1dG9fY2x1c3RlcikuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIGFuZCBleGVyY2lzZWQgZHVyaW5nIHRoZSBpbml0aWFsaXphdGlvbiBvZiB2YXJpb3VzIFY0TDIgZHJpdmVycywgaW5jbHVkaW5nIHZpcnR1YWwgZHJpdmVycyAoc3VjaCBhcyB2aXZpZCkgYW5kIGVtdWxhdGVkIFVTQiBtZWRpYSBkZXZpY2VzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAyMTo0NjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDIxOjQ2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYHY0bDJfY3RybF9jbHVzdGVyYCBhbmQgYHY0bDJfY3RybF9hdXRvX2NsdXN0ZXJgIHRvIGdyYWNlZnVsbHkgaGFuZGxlIGNhc2VzIHdoZXJlIGBjb250cm9sc1swXWAgaXMgTlVMTCBvciBgbmNvbnRyb2xzID09IDBgLCBwcmV2ZW50aW5nIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgYW5kIHJlbW92aW5nIGFuIHVubmVjZXNzYXJ5IFdBUk5fT04uIEl0IGRvZXMgbm90IGludHJvZHVjZSwgcmVhZCwgb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIHN0YWNrIG9yIGhlYXAgbWVtb3J5LCBub3IgZG9lcyBpdCBwYXNzIHVuaW5pdGlhbGl6ZWQgZGF0YSB0byB1c2VyIHNwYWNlLiBTdGFuZGFyZCBzYW5pdGl6ZXJzIGFuZCBLQVNBTiBhcmUgc3VmZmljaWVudCB0byBkZXRlY3QgbWVtb3J5IHNhZmV0eSBpc3N1ZXMgaW4gdGhlc2UgY29udHJvbCBwYXRocy4gVGhlcmVmb3JlLCBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAwM2M1MTIwODhkZmFlMTY5ODMzMzIzMTIyZjk3MjI0MDE2YzM4Yjc5CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBTZXAgOSAyMTo0NTozNCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL3Y0bDItY3RybHMtY29yZS5jIGIvZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1jdHJscy1jb3JlLmMKaW5kZXggNWI4YTU5NGZiOWUyNC4uZTc3Y2U3YjU2ZmNhNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1jdHJscy1jb3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1jdHJscy1jb3JlLmMKQEAgLTI1MjEsOCAmIzQzOzI1MjEsMTQgQEAgdm9pZCB2NGwyX2N0cmxfY2x1c3Rlcih1bnNpZ25lZCBuY29udHJvbHMsIHN0cnVjdCB2NGwyX2N0cmwgKipjb250cm9scykKIAlib29sIGhhc192b2xhdGlsZXMgPSBmYWxzZTsKIAlpbnQgaTsKIAotCS8qIFRoZSBmaXJzdCBjb250cm9sIGlzIHRoZSBtYXN0ZXIgY29udHJvbCBhbmQgaXQgbXVzdCBub3QgYmUgTlVMTCAqLwotCWlmIChXQVJOX09OKG5jb250cm9scyA9PSAwIHx8IGNvbnRyb2xzWzBdID09IE5VTEwpKQomIzQzOwlpZiAoV0FSTl9PTihuY29udHJvbHMgPT0gMCkpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiYjNDM7CS8qCiYjNDM7CSAqIFRoZSBmaXJzdCBjb250cm9sIGlzIHRoZSBtYXN0ZXIgY29udHJvbC4gSWYgdGhpcyBpcyBOVUxMIHRoZW4KJiM0MzsJICogdGhlcmUgaXMgbm90aGluZyB0byBkby4KJiM0MzsJICovCiYjNDM7CWlmIChjb250cm9sc1swXSA9PSBOVUxMKQogCQlyZXR1cm47CiAKIAlmb3IgKGkgPSAwOyBpICZsdDsgbmNvbnRyb2xzOyBpJiM0MzsmIzQzOykgewpAQCAtMjU0MCwxMiAmIzQzOzI1NDYsMTQgQEAgRVhQT1JUX1NZTUJPTCh2NGwyX2N0cmxfY2x1c3Rlcik7CiB2b2lkIHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIodW5zaWduZWQgbmNvbnRyb2xzLCBzdHJ1Y3QgdjRsMl9jdHJsICoqY29udHJvbHMsCiAJCQkgICAgdTggbWFudWFsX3ZhbCwgYm9vbCBzZXRfdm9sYXRpbGUpCiB7Ci0Jc3RydWN0IHY0bDJfY3RybCAqbWFzdGVyID0gY29udHJvbHNbMF07CiYjNDM7CXN0cnVjdCB2NGwyX2N0cmwgKm1hc3RlciA9IG5jb250cm9scyA/IGNvbnRyb2xzWzBdIDogTlVMTDsKIAl1MzIgZmxhZyA9IDA7CiAJaW50IGk7CiAKIAl2NGwyX2N0cmxfY2x1c3RlcihuY29udHJvbHMsIGNvbnRyb2xzKTsKIAlXQVJOX09OKG5jb250cm9scyAmbHQ7PSAxKTsKJiM0MzsJaWYgKCFtYXN0ZXIpCiYjNDM7CQlyZXR1cm47CiAJV0FSTl9PTihtYW51YWxfdmFsICZsdDsgbWFzdGVyLSZndDttaW5pbXVtIHx8IG1hbnVhbF92YWwgJmd0OyBtYXN0ZXItJmd0O21heGltdW0pOwogCVdBUk5fT04oc2V0X3ZvbGF0aWxlICZhbXA7JmFtcDsgIWhhc19vcChtYXN0ZXIsIGdfdm9sYXRpbGVfY3RybCkpOwogCW1hc3Rlci0mZ3Q7aXNfYXV0byA9IHRydWU7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAyMTo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDQ1CgkJCQkJCQlvdXRwdXQ6IDUxCgkJCQkJCQl0aG91Z2h0czogNDAyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVmlkZW80TGludXggQ29udHJvbCBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGV4YW1pbmUgdGhlIG1vZGlmaWNhdGlvbnMgd2l0aGluIHRoZSBgZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1jdHJscy1jb3JlLmNgIGZpbGUuIEkgc2VlIGNoYW5nZXMgaW4gYm90aCBgdjRsMl9jdHJsX2NsdXN0ZXJgIGFuZCBgdjRsMl9jdHJsX2F1dG9fY2x1c3RlcmAsIGFuZCBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGVzZSBhbHRlcmF0aW9ucy4KCkxvb2tpbmcgYXQgYHY0bDJfY3RybF9jbHVzdGVyYCwgaXQgYXBwZWFycyB0aGUgb3JpZ2luYWwgY29kZSBoYWQgYW4gYXNzZXJ0aW9uIHJlZ2FyZGluZyB0aGUgZmlyc3QgY29udHJvbCBub3QgYmVpbmcgTlVMTC4gVGhlIG5ldyB2ZXJzaW9uIGFja25vd2xlZGdlcyB0aGF0IHRoZSBmaXJzdCBjb250cm9sIG1pZ2h0LCBpbiBmYWN0LCBiZSBOVUxMLCBhbmQgYWRqdXN0cyB0aGUgY29uZGl0aW9uYWwgZmxvdyBhY2NvcmRpbmdseS4gVGhlIG9yaWdpbmFsIGhhZDoKYGBgYwovKiBUaGUgZmlyc3QgY29udHJvbCBpcyB0aGUgbWFzdGVyIGNvbnRyb2wgYW5kIGl0IG11c3Qgbm90IGJlIE5VTEwgKi8KaWYgKFdBUk5fT04obmNvbnRyb2xzID09IDAgfHwgY29udHJvbHNbMF0gPT0gTlVMTCkpCiAgICByZXR1cm47CmBgYAoKQW5kIGl0JiMzOTtzIGJlZW4gY2hhbmdlZCB0bzoKCmBgYGMKaWYgKFdBUk5fT04obmNvbnRyb2xzID09IDApKQogICAgcmV0dXJuOwoKLyoKICogVGhlIGZpcnN0IGNvbnRyb2wgaXMgdGhlIG1hc3RlciBjb250cm9sLiBJZiB0aGlzIGlzIE5VTEwgdGhlbgogKiB0aGVyZSBpcyBub3RoaW5nIHRvIGRvLgogKi8KaWYgKGNvbnRyb2xzWzBdID09IE5VTEwpCiAgICByZXR1cm47CmBgYAoKVGhpcyBzdWdnZXN0cyBhIHJlZmluZW1lbnQgaW4gaGFuZGxpbmcgcG90ZW50aWFsbHkgZW1wdHkgY29udHJvbCBjbHVzdGVycy4gSSYjMzk7bGwgbmVlZCB0byBjb25zaWRlciBzY2VuYXJpb3Mgd2hlcmUgYSBjbHVzdGVyIG1pZ2h0IGxlZ2l0aW1hdGVseSBzdGFydCB3aXRob3V0IGEgbWFzdGVyIGNvbnRyb2wuIFRoZSBvbGRlciBhc3NlcnRpb24gd291bGQgaGF2ZSBmYWlsZWQgaWYgYGNvbnRyb2xzWzBdYCB3YXMgYE5VTExgIGV2ZW4gaWYgYG5jb250cm9sc2Agd2FzIGdyZWF0ZXIgdGhhbiAwLCB3aGlsZSB0aGUgbmV3IHZlcnNpb24gbW9yZSBleHBsaWNpdGx5IHN0YXRlcyB3aGF0IGhhcHBlbnMgaW4gdGhlIGNhc2Ugb2YgYSBgTlVMTGAgbWFzdGVyLgoKTW92aW5nIG9udG8gYHY0bDJfY3RybF9hdXRvX2NsdXN0ZXJgLCB0aGUgbW9zdCBzaWduaWZpY2FudCBjaGFuZ2UgY29uY2VybnMgdGhlIGhhbmRsaW5nIG9mIHRoZSBtYXN0ZXIgY29udHJvbCB3aXRoaW4gdGhlIGF1dG9tYXRpYyBjbHVzdGVyLiBJbiB0aGUgb2xkIGNvZGU6CmBgYGMKc3RydWN0IHY0bDJfY3RybCAqbWFzdGVyID0gY29udHJvbHNbMF07Ci4uLgp2NGwyX2N0cmxfY2x1c3RlcihuY29udHJvbHMsIGNvbnRyb2xzKTsKV0FSTl9PTihuY29udHJvbHMgJmx0Oz0gMSk7CldBUk5fT04obWFudWFsX3ZhbCAmbHQ7IG1hc3Rlci0mZ3Q7bWluaW11bSB8fCBtYW51YWxfdmFsICZndDsgbWFzdGVyLSZndDttYXhpbXVtKTsKYGBgCgpUaGUgbWFzdGVyIGNvbnRyb2wgd2FzIGFsd2F5cyBhc3N1bWVkIHRvIGV4aXN0LiBUaGUgcmV2aXNlZCBjb2RlOgoKYGBgYwpzdHJ1Y3QgdjRsMl9jdHJsICptYXN0ZXIgPSBuY29udHJvbHMgPyBjb250cm9sc1swXSA6IE5VTEw7CnUzMiBmbGFnID0gMDsKaW50IGk7Cgp2NGwyX2N0cmxfY2x1c3RlcihuY29udHJvbHMsIGNvbnRyb2xzKTsKV0FSTl9PTihuY29udHJvbHMgJmx0Oz0gMSk7CmlmICghbWFzdGVyKQogICAgcmV0dXJuOwpgYGAKCk5vdywgaXQgZXhwbGljaXRseSBjaGVja3MgaWYgYG5jb250cm9sc2AgaXMgZ3JlYXRlciB0aGFuIDAgYmVmb3JlIGFzc2lnbmluZyBgbWFzdGVyYC4gVGhpcyBpcyBhIGNydWNpYWwgaW1wcm92ZW1lbnQgYmVjYXVzZSBpdCBwcmV2ZW50cyBhIE5VTEwgZGVyZWZlcmVuY2UgaWYgdGhlIGNsdXN0ZXIgaXMgZW1wdHkgb3Igb25seSBoYXMgb25lIGNvbnRyb2wuIEl0IGFsc28gcHJvdmlkZXMgZm9yIGEgYmV0dGVyIGVhcmx5IGV4aXQuIFRoZSBzdWJzZXF1ZW50IGNoZWNrcyByZWxhdGVkIHRvIGBtYXN0ZXItJmd0O21pbmltdW1gIGFuZCBgbWFzdGVyLSZndDttYXhpbXVtYCBhcmUgbm93IGRlcGVuZGVudCBvbiBhIHZhbGlkIGBtYXN0ZXJgLgoKVG8gZnVsbHkgZ3Jhc3AgdGhlIGludGVudCBhbmQgcG90ZW50aWFsIHJhbWlmaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2UsIEkmIzM5O2xsIG5lZWQgdG8gZGVsdmUgZGVlcGVyIGludG8gdGhlIHN1cnJvdW5kaW5nIGNvZGUuIEkmIzM5O2xsIHVzZSBgcmVhZC1maWxlYCBvciBgZ3JlcHBlcmAgdG8gZXhhbWluZSB0aGUgY29udGV4dCBvZiB0aGVzZSBmdW5jdGlvbnMgd2l0aGluIGB2NGwyLWN0cmxzLWNvcmUuY2AsIGFuZCBwb3RlbnRpYWxseSB0cmFjZSB0aGUgY2FsbCBjaGFpbnMgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgY2x1c3RlcnMgYXJlIGNyZWF0ZWQgYW5kIHVzZWQuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGNhc2VzIHdoZXJlIHRoaXMgY291bGQgaW1wcm92ZSBvciBicmVhayB0aGluZ3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoeSB0aGUgb3JpZ2luYWwgYXNzdW1wdGlvbiBhYm91dCBhIG1hc3RlciBjb250cm9sIHdhcyBjaGFuZ2VkOyB3YXMgaXQgYSBidWcgZml4LCBhbiBvcHRpbWl6YXRpb24sIG9yIGEgZmVhdHVyZSBlbmhhbmNlbWVudD8gSSYjMzk7bGwgYWxzbyB3YW50IHRvIGxvb2sgYXQgd2hldGhlciB0aGlzIGhhcyBhbnkgaW1wYWN0IG9uIG90aGVyIHBhcnRzIG9mIHRoZSBkcml2ZXIsIGFuZCBlc3BlY2lhbGx5IGFueSBkZXBlbmRlbmNpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDIxOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1jdHJscy1jb3JlLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNTE1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDU1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzI1MTU6XHR9XG4yNTE2Olx0RVhQT1JUX1NZTUJPTCh2NGwyX2N0cmxfcmFkaW9fZmlsdGVyKTtcbjI1MTc6XHRcbjI1MTg6XHQvKiBDbHVzdGVyIGNvbnRyb2xzICovXG4yNTE5Olx0dm9pZCB2NGwyX2N0cmxfY2x1c3Rlcih1bnNpZ25lZCBuY29udHJvbHMsIHN0cnVjdCB2NGwyX2N0cmwgKipjb250cm9scylcbjI1MjA6XHR7XG4yNTIxOlx0XHRib29sIGhhc192b2xhdGlsZXMgPSBmYWxzZTtcbjI1MjI6XHRcdGludCBpO1xuMjUyMzpcdFxuMjUyNDpcdFx0aWYgKFdBUk5fT04obmNvbnRyb2xzID09IDApKVxuMjUyNTpcdFx0XHRyZXR1cm47XG4yNTI2Olx0XG4yNTI3Olx0XHQvKlxuMjUyODpcdFx0ICogVGhlIGZpcnN0IGNvbnRyb2wgaXMgdGhlIG1hc3RlciBjb250cm9sLiBJZiB0aGlzIGlzIE5VTEwgdGhlblxuMjUyOTpcdFx0ICogdGhlcmUgaXMgbm90aGluZyB0byBkby5cbjI1MzA6XHRcdCAqL1xuMjUzMTpcdFx0aWYgKGNvbnRyb2xzWzBdID09IE5VTEwpXG4yNTMyOlx0XHRcdHJldHVybjtcbjI1MzM6XHRcbjI1MzQ6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5jb250cm9sczsgaSYjNDM7JiM0MzspIHtcbjI1MzU6XHRcdFx0aWYgKGNvbnRyb2xzW2ldKSB7XG4yNTM2Olx0XHRcdFx0Y29udHJvbHNbaV0tXHUwMDNlY2x1c3RlciA9IGNvbnRyb2xzO1xuMjUzNzpcdFx0XHRcdGNvbnRyb2xzW2ldLVx1MDAzZW5jb250cm9scyA9IG5jb250cm9scztcbjI1Mzg6XHRcdFx0XHRpZiAoY29udHJvbHNbaV0tXHUwMDNlZmxhZ3MgXHUwMDI2IFY0TDJfQ1RSTF9GTEFHX1ZPTEFUSUxFKVxuMjUzOTpcdFx0XHRcdFx0aGFzX3ZvbGF0aWxlcyA9IHRydWU7XG4yNTQwOlx0XHRcdH1cbjI1NDE6XHRcdH1cbjI1NDI6XHRcdGNvbnRyb2xzWzBdLVx1MDAzZWhhc192b2xhdGlsZXMgPSBoYXNfdm9sYXRpbGVzO1xuMjU0MzpcdH1cbjI1NDQ6XHRFWFBPUlRfU1lNQk9MKHY0bDJfY3RybF9jbHVzdGVyKTtcbjI1NDU6XHRcbjI1NDY6XHR2b2lkIHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIodW5zaWduZWQgbmNvbnRyb2xzLCBzdHJ1Y3QgdjRsMl9jdHJsICoqY29udHJvbHMsXG4yNTQ3Olx0XHRcdFx0ICAgIHU4IG1hbnVhbF92YWwsIGJvb2wgc2V0X3ZvbGF0aWxlKVxuMjU0ODpcdHtcbjI1NDk6XHRcdHN0cnVjdCB2NGwyX2N0cmwgKm1hc3RlciA9IG5jb250cm9scyA/IGNvbnRyb2xzWzBdIDogTlVMTDtcbjI1NTA6XHRcdHUzMiBmbGFnID0gMDtcbjI1NTE6XHRcdGludCBpO1xuMjU1MjpcdFxuMjU1MzpcdFx0djRsMl9jdHJsX2NsdXN0ZXIobmNvbnRyb2xzLCBjb250cm9scyk7XG4yNTU0Olx0XHRXQVJOX09OKG5jb250cm9scyBcdTAwM2M9IDEpO1xuMjU1NTpcdFx0aWYgKCFtYXN0ZXIpXG4yNTU2Olx0XHRcdHJldHVybjtcbjI1NTc6XHRcdFdBUk5fT04obWFudWFsX3ZhbCBcdTAwM2MgbWFzdGVyLVx1MDAzZW1pbmltdW0gfHwgbWFudWFsX3ZhbCBcdTAwM2UgbWFzdGVyLVx1MDAzZW1heGltdW0pO1xuMjU1ODpcdFx0V0FSTl9PTihzZXRfdm9sYXRpbGUgXHUwMDI2XHUwMDI2ICFoYXNfb3AobWFzdGVyLCBnX3ZvbGF0aWxlX2N0cmwpKTtcbjI1NTk6XHRcdG1hc3Rlci1cdTAwM2Vpc19hdXRvID0gdHJ1ZTtcbjI1NjA6XHRcdG1hc3Rlci1cdTAwM2VoYXNfdm9sYXRpbGVzID0gc2V0X3ZvbGF0aWxlO1xuMjU2MTpcdFx0bWFzdGVyLVx1MDAzZW1hbnVhbF9tb2RlX3ZhbHVlID0gbWFudWFsX3ZhbDtcbjI1NjI6XHRcdG1hc3Rlci1cdTAwM2VmbGFncyB8PSBWNEwyX0NUUkxfRkxBR19VUERBVEU7XG4yNTYzOlx0XG4yNTY0Olx0XHRpZiAoIWlzX2N1cl9tYW51YWwobWFzdGVyKSlcbjI1NjU6XHRcdFx0ZmxhZyA9IFY0TDJfQ1RSTF9GTEFHX0lOQUNUSVZFIHxcbjI1NjY6XHRcdFx0XHQoc2V0X3ZvbGF0aWxlID8gVjRMMl9DVFJMX0ZMQUdfVk9MQVRJTEUgOiAwKTtcbjI1Njc6XHRcbjI1Njg6XHRcdGZvciAoaSA9IDE7IGkgXHUwMDNjIG5jb250cm9sczsgaSYjNDM7JiM0MzspXG4yNTY5Olx0XHRcdGlmIChjb250cm9sc1tpXSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMjE6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDUxOQoJCQkJCQkJb3V0cHV0OiAxNDQKCQkJCQkJCXRob3VnaHRzOiAzNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgVjRMMiBDb250cm9sIEZyYW1ld29yayBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBJdCBzZWVtcyB3ZSYjMzk7cmUgbG9va2luZyBhdCBhIHBhdGNoIGZvciB0aGUgVjRMMiBjb250cm9sIGZyYW1ld29yaywgc3BlY2lmaWNhbGx5IGRlYWxpbmcgd2l0aCB0aGUgYHY0bDJfY3RybF9jbHVzdGVyYCBhbmQgYHY0bDJfY3RybF9hdXRvX2NsdXN0ZXJgIGZ1bmN0aW9ucy4gVGhlc2UgYXJlIGhlbHBlciBmdW5jdGlvbnMsIHRoZSBidWlsZGluZyBibG9ja3MgZm9yIGdyb3VwaW5nIGNvbnRyb2xzIHRvZ2V0aGVyLiBUaGUgY29yZSBvZiB0aGlzIHBhdGNoIGFkZHJlc3NlcyBhIHNjZW5hcmlvIHdoZXJlIHRoZSBgY29udHJvbHNgIGFycmF5IHBhc3NlZCB0byB0aGVzZSBmdW5jdGlvbnMgaXMgZWl0aGVyIGVtcHR5IChgbmNvbnRyb2xzID09IDBgKSBvciwgY3J1Y2lhbGx5LCB0aGUgZmlyc3QgZWxlbWVudCBvZiB0aGF0IGFycmF5IGlzIGEgbnVsbCBwb2ludGVyIChgY29udHJvbHNbMF0gPT0gTlVMTGApLgoKVGhlIGNvbmNlcm4sIGFuZCB0aGUgbW90aXZhdGlvbiBmb3IgdGhpcyBwYXRjaCwgaXMgcHJldmVudGluZyBjcmFzaGVzIG9yIHVuZGVzaXJhYmxlIGJlaGF2aW9yIGluIHRoZXNlIHNpdHVhdGlvbnMuIFdoYXQgdGhlIHBhdGNoIGRvZXMgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDoKCiogICBJbiBgdjRsMl9jdHJsX2NsdXN0ZXJgLCB0aGUgZXhpc3RpbmcgYFdBUk5fT05gIGNoZWNrIGZvciBhIGBOVUxMYCBgY29udHJvbHNbMF1gIGlzIHJlbW92ZWQsIGFuZCB0aGUgZnVuY3Rpb24gbm93IHNpbXBseSByZXR1cm5zIGVhcmx5LCBncmFjZWZ1bGx5IGhhbmRsaW5nIHRoZSBjYXNlLgoqICAgSW4gYHY0bDJfY3RybF9hdXRvX2NsdXN0ZXJgLCB3aGljaCBpcyB0cmlja2llciwgaXQgZXhwbGljaXRseSBwcm90ZWN0cyBhZ2FpbnN0IHBvdGVudGlhbCBudWxsIHBvaW50ZXIgZGVyZWZlcmVuY2VzIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzLiBJdCYjMzk7cyBub3cgY2hlY2tpbmcgaWYgYG5jb250cm9scyA9PSAwYCBvciBgY29udHJvbHNbMF0gPT0gTlVMTGAgYmVmb3JlIGFjY2Vzc2luZyBtZW1iZXJzIG9mIHRoZSBgbWFzdGVyYCBjb250cm9sLgoKTm93LCB0aGUgaW1wb3J0YW50IHBhcnQ6IGRvZXMgdGhpcyBwYXRjaCBpbnRyb2R1Y2UgYW55IG5ldyByaXNrcz8gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIG5vLCBidXQgd2UgbmVlZCB0byBiZSB0aG9yb3VnaC4KCiogICBObyB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZXM6IHRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIHN0YWNrIG9yIGhlYXAgYWxsb2NhdGlvbnMgaW4gdGhpcyBwYXRjaC4KKiAgIE5vIGluZm9ybWF0aW9uIGxlYWtzOiB0aGVyZSBpcyBubyBgY29weV90b191c2VyYCBvciBhbnkgb3RoZXIgbWVhbnMgZm9yIGtlcm5lbC10by11c2VyIGluZm9ybWF0aW9uIGxlYWtzLgoqICAgTm8gcmVsaWFuY2Ugb24gdW5pbml0aWFsaXplZCBkYXRhOiB0aGVyZSBhcmUgbm8gY29uZGl0aW9uYWwgYnJhbmNoZXMgYmFzZWQgb24gdW5pbml0aWFsaXplZCBkYXRhLCBzbyB3ZSYjMzk7cmUgc2FmZSB0aGVyZS4KKiAgIEluIGZhY3QsIHRoZSBwYXRjaCYjMzk7cyBtYWluIGdvYWwgaXMgKnByZXZlbnRpbmcqIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgd2hpY2ggaXMgYSBwb3NpdGl2ZSEgVGhlc2UgdHlwZXMgb2YgZXJyb3JzIGFyZSBjb3ZlcmVkIGJ5IHN0YW5kYXJkIGtlcm5lbCBydW50aW1lIGNoZWNrcyBhbmQgS0FTQU4uCgpMZXQmIzM5O3MgZG91YmxlLWNoZWNrIGFueSBLTVNBTiBjb25jZXJucywgdGhvdWdoLiBTaW5jZSBLTVNBTiBpcyBkZXNpZ25lZCB0byBjYXRjaCB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBhbmQgbGVha3MgdG8gdXNlciBzcGFjZSwgdGhlIHBhdGNoIHNlZW1zIHNhZmUuIEtBU0FOIGFuZCBzdGFuZGFyZCBzYW5pdGl6ZXJzIGhhbmRsZSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzLCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCBhbmQgdXNlLWFmdGVyLWZyZWUgc2l0dWF0aW9ucyBhbnl3YXkuCgpJbiBjb25jbHVzaW9uLCBJIHRoaW5rIHRoaXMgcGF0Y2ggaXMgYSBzYWZlIGFuZCBjb3JyZWN0IGZpeC4gSSYjMzk7bGwgZ2V0IHJlYWR5IHRvIHByZXBhcmUgdGhlIHRvb2wgY2FsbCB0byBzZXQgdGhlIHJlc3VsdHMgdG8gJiMzOTtQQVNTJiMzOTsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDIxOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGB2NGwyX2N0cmxfY2x1c3RlcmAgYW5kIGB2NGwyX2N0cmxfYXV0b19jbHVzdGVyYCB0byBncmFjZWZ1bGx5IGhhbmRsZSBjYXNlcyB3aGVyZSBgY29udHJvbHNbMF1gIGlzIE5VTEwgb3IgYG5jb250cm9scyA9PSAwYCwgcHJldmVudGluZyBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIGFuZCByZW1vdmluZyBhbiB1bm5lY2Vzc2FyeSBXQVJOX09OLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UsIHJlYWQsIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBzdGFjayBvciBoZWFwIG1lbW9yeSwgbm9yIGRvZXMgaXQgcGFzcyB1bmluaXRpYWxpemVkIGRhdGEgdG8gdXNlciBzcGFjZS4gU3RhbmRhcmQgc2FuaXRpemVycyBhbmQgS0FTQU4gYXJlIHN1ZmZpY2llbnQgdG8gZGV0ZWN0IG1lbW9yeSBzYWZldHkgaXNzdWVzIGluIHRoZXNlIGNvbnRyb2wgcGF0aHMuIFRoZXJlZm9yZSwgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYHY0bDJfY3RybF9jbHVzdGVyYCBhbmQgYHY0bDJfY3RybF9hdXRvX2NsdXN0ZXJgIHRvIGdyYWNlZnVsbHkgaGFuZGxlIGNhc2VzIHdoZXJlIGBjb250cm9sc1swXWAgaXMgTlVMTCBvciBgbmNvbnRyb2xzID09IDBgLCBwcmV2ZW50aW5nIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgYW5kIHJlbW92aW5nIGFuIHVubmVjZXNzYXJ5IFdBUk5fT04uIEl0IGRvZXMgbm90IGludHJvZHVjZSwgcmVhZCwgb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIHN0YWNrIG9yIGhlYXAgbWVtb3J5LCBub3IgZG9lcyBpdCBwYXNzIHVuaW5pdGlhbGl6ZWQgZGF0YSB0byB1c2VyIHNwYWNlLiBTdGFuZGFyZCBzYW5pdGl6ZXJzIGFuZCBLQVNBTiBhcmUgc3VmZmljaWVudCB0byBkZXRlY3QgbWVtb3J5IHNhZmV0eSBpc3N1ZXMgaW4gdGhlc2UgY29udHJvbCBwYXRocy4gVGhlcmVmb3JlLCBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDIxOjQ1OjM1LjcwNDUzNjY1NloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwMjg4NDYyODkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1FRElBX1NVUFBPUlRcIixcbiAgICBcIlZJREVPX0RFVlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInY0bDJfY3RybF9jbHVzdGVyXCIsXG4gICAgXCJ2NGwyX2N0cmxfYXV0b19jbHVzdGVyXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgdjRsMl9jdHJsX2NsdXN0ZXJgIGFuZCBgdjRsMl9jdHJsX2F1dG9fY2x1c3RlcmAgdG8gZ3JhY2VmdWxseSBoYW5kbGUgY2FzZXMgd2hlcmUgYGNvbnRyb2xzWzBdYCBpcyBOVUxMIG9yIGBuY29udHJvbHMgPT0gMGAsIHByZXZlbnRpbmcgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyBhbmQgcmVtb3ZpbmcgYW4gdW5uZWNlc3NhcnkgV0FSTl9PTi4gSXQgZG9lcyBub3QgaW50cm9kdWNlLCByZWFkLCBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgc3RhY2sgb3IgaGVhcCBtZW1vcnksIG5vciBkb2VzIGl0IHBhc3MgdW5pbml0aWFsaXplZCBkYXRhIHRvIHVzZXIgc3BhY2UuIFN0YW5kYXJkIHNhbml0aXplcnMgYW5kIEtBU0FOIGFyZSBzdWZmaWNpZW50IHRvIGRldGVjdCBtZW1vcnkgc2FmZXR5IGlzc3VlcyBpbiB0aGVzZSBjb250cm9sIHBhdGhzLiBUaGVyZWZvcmUsIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBjb250cm9sIGZsb3cgYW5kIE5VTEwgY2hlY2tzIGluIHRoZSBjb3JlIFY0TDIgY29udHJvbCBjbHVzdGVyaW5nIGZ1bmN0aW9ucyAodjRsMl9jdHJsX2NsdXN0ZXIgYW5kIHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIpLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSBhbmQgZXhlcmNpc2VkIGR1cmluZyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdmFyaW91cyBWNEwyIGRyaXZlcnMsIGluY2x1ZGluZyB2aXJ0dWFsIGRyaXZlcnMgKHN1Y2ggYXMgdml2aWQpIGFuZCBlbXVsYXRlZCBVU0IgbWVkaWEgZGV2aWNlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMjE6NDU6MzUuNzA0NTQxMzk2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjMwMjMxMDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAwM2M1MTIwODhkZmFlMTY5ODMzMzIzMTIyZjk3MjI0MDE2YzM4Yjc5XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgU2VwIDkgMjE6NDU6MzQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1jdHJscy1jb3JlLmMgYi9kcml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwyLWN0cmxzLWNvcmUuY1xcbmluZGV4IDViOGE1OTRmYjllMjQuLmU3N2NlN2I1NmZjYTYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1jdHJscy1jb3JlLmNcXG4rKysgYi9kcml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwyLWN0cmxzLWNvcmUuY1xcbkBAIC0yNTIxLDggKzI1MjEsMTQgQEAgdm9pZCB2NGwyX2N0cmxfY2x1c3Rlcih1bnNpZ25lZCBuY29udHJvbHMsIHN0cnVjdCB2NGwyX2N0cmwgKipjb250cm9scylcXG4gXFx0Ym9vbCBoYXNfdm9sYXRpbGVzID0gZmFsc2U7XFxuIFxcdGludCBpO1xcbiBcXG4tXFx0LyogVGhlIGZpcnN0IGNvbnRyb2wgaXMgdGhlIG1hc3RlciBjb250cm9sIGFuZCBpdCBtdXN0IG5vdCBiZSBOVUxMICovXFxuLVxcdGlmIChXQVJOX09OKG5jb250cm9scyA9PSAwIHx8IGNvbnRyb2xzWzBdID09IE5VTEwpKVxcbitcXHRpZiAoV0FSTl9PTihuY29udHJvbHMgPT0gMCkpXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuK1xcdC8qXFxuK1xcdCAqIFRoZSBmaXJzdCBjb250cm9sIGlzIHRoZSBtYXN0ZXIgY29udHJvbC4gSWYgdGhpcyBpcyBOVUxMIHRoZW5cXG4rXFx0ICogdGhlcmUgaXMgbm90aGluZyB0byBkby5cXG4rXFx0ICovXFxuK1xcdGlmIChjb250cm9sc1swXSA9PSBOVUxMKVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbmNvbnRyb2xzOyBpKyspIHtcXG5AQCAtMjU0MCwxMiArMjU0NiwxNCBAQCBFWFBPUlRfU1lNQk9MKHY0bDJfY3RybF9jbHVzdGVyKTtcXG4gdm9pZCB2NGwyX2N0cmxfYXV0b19jbHVzdGVyKHVuc2lnbmVkIG5jb250cm9scywgc3RydWN0IHY0bDJfY3RybCAqKmNvbnRyb2xzLFxcbiBcXHRcXHRcXHQgICAgdTggbWFudWFsX3ZhbCwgYm9vbCBzZXRfdm9sYXRpbGUpXFxuIHtcXG4tXFx0c3RydWN0IHY0bDJfY3RybCAqbWFzdGVyID0gY29udHJvbHNbMF07XFxuK1xcdHN0cnVjdCB2NGwyX2N0cmwgKm1hc3RlciA9IG5jb250cm9scyA/IGNvbnRyb2xzWzBdIDogTlVMTDtcXG4gXFx0dTMyIGZsYWcgPSAwO1xcbiBcXHRpbnQgaTtcXG4gXFxuIFxcdHY0bDJfY3RybF9jbHVzdGVyKG5jb250cm9scywgY29udHJvbHMpO1xcbiBcXHRXQVJOX09OKG5jb250cm9scyBcXHUwMDNjPSAxKTtcXG4rXFx0aWYgKCFtYXN0ZXIpXFxuK1xcdFxcdHJldHVybjtcXG4gXFx0V0FSTl9PTihtYW51YWxfdmFsIFxcdTAwM2MgbWFzdGVyLVxcdTAwM2VtaW5pbXVtIHx8IG1hbnVhbF92YWwgXFx1MDAzZSBtYXN0ZXItXFx1MDAzZW1heGltdW0pO1xcbiBcXHRXQVJOX09OKHNldF92b2xhdGlsZSBcXHUwMDI2XFx1MDAyNiAhaGFzX29wKG1hc3RlciwgZ192b2xhdGlsZV9jdHJsKSk7XFxuIFxcdG1hc3Rlci1cXHUwMDNlaXNfYXV0byA9IHRydWU7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDIxOjQ1OjM2LjE2ODMzODM1OFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6Mzg5ODM4OTcyNTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUVESUFfU1VQUE9SVFwiLFxuICAgIFwiVklERU9fREVWXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidjRsMl9jdHJsX2NsdXN0ZXJcIixcbiAgICBcInY0bDJfY3RybF9hdXRvX2NsdXN0ZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBjb250cm9sIGZsb3cgYW5kIE5VTEwgY2hlY2tzIGluIHRoZSBjb3JlIFY0TDIgY29udHJvbCBjbHVzdGVyaW5nIGZ1bmN0aW9ucyAodjRsMl9jdHJsX2NsdXN0ZXIgYW5kIHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIpLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSBhbmQgZXhlcmNpc2VkIGR1cmluZyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdmFyaW91cyBWNEwyIGRyaXZlcnMsIGluY2x1ZGluZyB2aXJ0dWFsIGRyaXZlcnMgKHN1Y2ggYXMgdml2aWQpIGFuZCBlbXVsYXRlZCBVU0IgbWVkaWEgZGV2aWNlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAwM2M1MTIwODhkZmFlMTY5ODMzMzIzMTIyZjk3MjI0MDE2YzM4Yjc5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBTZXAgOSAyMTo0NTozNCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL3Y0bDItY3RybHMtY29yZS5jIGIvZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1jdHJscy1jb3JlLmNcbmluZGV4IDViOGE1OTRmYjllMjQuLmU3N2NlN2I1NmZjYTYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwyLWN0cmxzLWNvcmUuY1xuKysrIGIvZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1jdHJscy1jb3JlLmNcbkBAIC0yNTIxLDggKzI1MjEsMTQgQEAgdm9pZCB2NGwyX2N0cmxfY2x1c3Rlcih1bnNpZ25lZCBuY29udHJvbHMsIHN0cnVjdCB2NGwyX2N0cmwgKipjb250cm9scylcbiBcdGJvb2wgaGFzX3ZvbGF0aWxlcyA9IGZhbHNlO1xuIFx0aW50IGk7XG4gXG4tXHQvKiBUaGUgZmlyc3QgY29udHJvbCBpcyB0aGUgbWFzdGVyIGNvbnRyb2wgYW5kIGl0IG11c3Qgbm90IGJlIE5VTEwgKi9cbi1cdGlmIChXQVJOX09OKG5jb250cm9scyA9PSAwIHx8IGNvbnRyb2xzWzBdID09IE5VTEwpKVxuK1x0aWYgKFdBUk5fT04obmNvbnRyb2xzID09IDApKVxuK1x0XHRyZXR1cm47XG4rXG4rXHQvKlxuK1x0ICogVGhlIGZpcnN0IGNvbnRyb2wgaXMgdGhlIG1hc3RlciBjb250cm9sLiBJZiB0aGlzIGlzIE5VTEwgdGhlblxuK1x0ICogdGhlcmUgaXMgbm90aGluZyB0byBkby5cbitcdCAqL1xuK1x0aWYgKGNvbnRyb2xzWzBdID09IE5VTEwpXG4gXHRcdHJldHVybjtcbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5jb250cm9sczsgaSsrKSB7XG5AQCAtMjU0MCwxMiArMjU0NiwxNCBAQCBFWFBPUlRfU1lNQk9MKHY0bDJfY3RybF9jbHVzdGVyKTtcbiB2b2lkIHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIodW5zaWduZWQgbmNvbnRyb2xzLCBzdHJ1Y3QgdjRsMl9jdHJsICoqY29udHJvbHMsXG4gXHRcdFx0ICAgIHU4IG1hbnVhbF92YWwsIGJvb2wgc2V0X3ZvbGF0aWxlKVxuIHtcbi1cdHN0cnVjdCB2NGwyX2N0cmwgKm1hc3RlciA9IGNvbnRyb2xzWzBdO1xuK1x0c3RydWN0IHY0bDJfY3RybCAqbWFzdGVyID0gbmNvbnRyb2xzID8gY29udHJvbHNbMF0gOiBOVUxMO1xuIFx0dTMyIGZsYWcgPSAwO1xuIFx0aW50IGk7XG4gXG4gXHR2NGwyX2N0cmxfY2x1c3RlcihuY29udHJvbHMsIGNvbnRyb2xzKTtcbiBcdFdBUk5fT04obmNvbnRyb2xzIFx1MDAzYz0gMSk7XG4rXHRpZiAoIW1hc3RlcilcbitcdFx0cmV0dXJuO1xuIFx0V0FSTl9PTihtYW51YWxfdmFsIFx1MDAzYyBtYXN0ZXItXHUwMDNlbWluaW11bSB8fCBtYW51YWxfdmFsIFx1MDAzZSBtYXN0ZXItXHUwMDNlbWF4aW11bSk7XG4gXHRXQVJOX09OKHNldF92b2xhdGlsZSBcdTAwMjZcdTAwMjYgIWhhc19vcChtYXN0ZXIsIGdfdm9sYXRpbGVfY3RybCkpO1xuIFx0bWFzdGVyLVx1MDAzZWlzX2F1dG8gPSB0cnVlO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMjE6NDU6MzYuMTY4MzM5NjE4WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjY1NzQzNTk0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoOiBWaWRlbzRMaW51eCBDb250cm9sIENsdXN0ZXIqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBwYXRjaCBhbmQgdGhlIGFzc29jaWF0ZWQgaW5zdHJ1Y3Rpb25zLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGJyZWFrIGl0IGRvd24gc3lzdGVtYXRpY2FsbHkuIFxuXG5GaXJzdCwgdGhlIHBhdGNoIGl0c2VsZi4gSXQgbG9va3MgbGlrZSB3ZSdyZSBkZWFsaW5nIHdpdGggdGhlIHZpZGVvNGxpbnV4IChWNEwyKSBjb3JlLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gdGhlIGNvbnRyb2wgY2x1c3RlciBmdW5jdGlvbmFsaXR5LiBUaGUgZGlmZiB0b3VjaGVzIGBkcml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwyLWN0cmxzLWNvcmUuY2AsIHdoaWNoIGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaXMgcmVsYXRlZCB0byBob3cgY29udHJvbHMgYXJlIG9yZ2FuaXplZCBhbmQgbWFuYWdlZCB3aXRoaW4gVjRMMi5cblxuVGhlIHNpZ25pZmljYW50IG1vZGlmaWNhdGlvbnMgYXJlIHdpdGhpbiB0aGUgZnVuY3Rpb25zIGB2NGwyX2N0cmxfY2x1c3RlcmAgYW5kIGB2NGwyX2N0cmxfYXV0b19jbHVzdGVyYC4gVGhpcyBzdWdnZXN0cyB0aGV5IGFyZSBlaXRoZXIgZW5oYW5jaW5nIG9yIGNoYW5naW5nIHRoZSBiZWhhdmlvdXIgb2YgdGhlc2UgZnVuY3Rpb25zLiBOb3csIEkgc2hvdWxkIGV4YW1pbmUgdGhlIGNvcmUgZmlsZSAoYHY0bDItY3RybHMtY29yZS5jYCkgYXJvdW5kIGxpbmUgMjUyMSB0byBmdWxseSBjb21wcmVoZW5kIHRoZSBjaGFuZ2VzLiBJbiBteSB2aWV3LCB0aGlzIHdpbGwgcHJvdmlkZSB0aGUgbmVjZXNzYXJ5IGNvbnRleHQgdG8gZGV0ZXJtaW5lIGhvdyB0aGUgdXBkYXRlIGhhcyBjaGFuZ2VkIHRoZXNlIGNyaXRpY2FsIGZ1bmN0aW9ucy4gSSB3aWxsIGFsc28gaGF2ZSBhIHF1aWNrIGxvb2sgYXQgdGhlIEtjb25maWcgZmlsZSBmb3IgdGhlIFY0TDIgY29yZSwgYXMgaXQgc2hvdWxkIHByb3ZpZGUgdmFsdWFibGUgaW5mb3JtYXRpb24gb24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRoaXMgZnVuY3Rpb25hbGl0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzIzMywiT3V0cHV0VG9rZW5zIjo1MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyNSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDIxOjQ1OjQyLjgyNTc3NzkwNloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MDc4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwyLWN0cmxzLWNvcmUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyNTE1LFxuICBcIkxpbmVDb3VudFwiOiA1NVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyNTE1OlxcdH1cXG4yNTE2OlxcdEVYUE9SVF9TWU1CT0wodjRsMl9jdHJsX3JhZGlvX2ZpbHRlcik7XFxuMjUxNzpcXHRcXG4yNTE4OlxcdC8qIENsdXN0ZXIgY29udHJvbHMgKi9cXG4yNTE5OlxcdHZvaWQgdjRsMl9jdHJsX2NsdXN0ZXIodW5zaWduZWQgbmNvbnRyb2xzLCBzdHJ1Y3QgdjRsMl9jdHJsICoqY29udHJvbHMpXFxuMjUyMDpcXHR7XFxuMjUyMTpcXHRcXHRib29sIGhhc192b2xhdGlsZXMgPSBmYWxzZTtcXG4yNTIyOlxcdFxcdGludCBpO1xcbjI1MjM6XFx0XFxuMjUyNDpcXHRcXHRpZiAoV0FSTl9PTihuY29udHJvbHMgPT0gMCkpXFxuMjUyNTpcXHRcXHRcXHRyZXR1cm47XFxuMjUyNjpcXHRcXG4yNTI3OlxcdFxcdC8qXFxuMjUyODpcXHRcXHQgKiBUaGUgZmlyc3QgY29udHJvbCBpcyB0aGUgbWFzdGVyIGNvbnRyb2wuIElmIHRoaXMgaXMgTlVMTCB0aGVuXFxuMjUyOTpcXHRcXHQgKiB0aGVyZSBpcyBub3RoaW5nIHRvIGRvLlxcbjI1MzA6XFx0XFx0ICovXFxuMjUzMTpcXHRcXHRpZiAoY29udHJvbHNbMF0gPT0gTlVMTClcXG4yNTMyOlxcdFxcdFxcdHJldHVybjtcXG4yNTMzOlxcdFxcbjI1MzQ6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG5jb250cm9sczsgaSsrKSB7XFxuMjUzNTpcXHRcXHRcXHRpZiAoY29udHJvbHNbaV0pIHtcXG4yNTM2OlxcdFxcdFxcdFxcdGNvbnRyb2xzW2ldLVxcdTAwM2VjbHVzdGVyID0gY29udHJvbHM7XFxuMjUzNzpcXHRcXHRcXHRcXHRjb250cm9sc1tpXS1cXHUwMDNlbmNvbnRyb2xzID0gbmNvbnRyb2xzO1xcbjI1Mzg6XFx0XFx0XFx0XFx0aWYgKGNvbnRyb2xzW2ldLVxcdTAwM2VmbGFncyBcXHUwMDI2IFY0TDJfQ1RSTF9GTEFHX1ZPTEFUSUxFKVxcbjI1Mzk6XFx0XFx0XFx0XFx0XFx0aGFzX3ZvbGF0aWxlcyA9IHRydWU7XFxuMjU0MDpcXHRcXHRcXHR9XFxuMjU0MTpcXHRcXHR9XFxuMjU0MjpcXHRcXHRjb250cm9sc1swXS1cXHUwMDNlaGFzX3ZvbGF0aWxlcyA9IGhhc192b2xhdGlsZXM7XFxuMjU0MzpcXHR9XFxuMjU0NDpcXHRFWFBPUlRfU1lNQk9MKHY0bDJfY3RybF9jbHVzdGVyKTtcXG4yNTQ1OlxcdFxcbjI1NDY6XFx0dm9pZCB2NGwyX2N0cmxfYXV0b19jbHVzdGVyKHVuc2lnbmVkIG5jb250cm9scywgc3RydWN0IHY0bDJfY3RybCAqKmNvbnRyb2xzLFxcbjI1NDc6XFx0XFx0XFx0XFx0ICAgIHU4IG1hbnVhbF92YWwsIGJvb2wgc2V0X3ZvbGF0aWxlKVxcbjI1NDg6XFx0e1xcbjI1NDk6XFx0XFx0c3RydWN0IHY0bDJfY3RybCAqbWFzdGVyID0gbmNvbnRyb2xzID8gY29udHJvbHNbMF0gOiBOVUxMO1xcbjI1NTA6XFx0XFx0dTMyIGZsYWcgPSAwO1xcbjI1NTE6XFx0XFx0aW50IGk7XFxuMjU1MjpcXHRcXG4yNTUzOlxcdFxcdHY0bDJfY3RybF9jbHVzdGVyKG5jb250cm9scywgY29udHJvbHMpO1xcbjI1NTQ6XFx0XFx0V0FSTl9PTihuY29udHJvbHMgXFx1MDAzYz0gMSk7XFxuMjU1NTpcXHRcXHRpZiAoIW1hc3RlcilcXG4yNTU2OlxcdFxcdFxcdHJldHVybjtcXG4yNTU3OlxcdFxcdFdBUk5fT04obWFudWFsX3ZhbCBcXHUwMDNjIG1hc3Rlci1cXHUwMDNlbWluaW11bSB8fCBtYW51YWxfdmFsIFxcdTAwM2UgbWFzdGVyLVxcdTAwM2VtYXhpbXVtKTtcXG4yNTU4OlxcdFxcdFdBUk5fT04oc2V0X3ZvbGF0aWxlIFxcdTAwMjZcXHUwMDI2ICFoYXNfb3AobWFzdGVyLCBnX3ZvbGF0aWxlX2N0cmwpKTtcXG4yNTU5OlxcdFxcdG1hc3Rlci1cXHUwMDNlaXNfYXV0byA9IHRydWU7XFxuMjU2MDpcXHRcXHRtYXN0ZXItXFx1MDAzZWhhc192b2xhdGlsZXMgPSBzZXRfdm9sYXRpbGU7XFxuMjU2MTpcXHRcXHRtYXN0ZXItXFx1MDAzZW1hbnVhbF9tb2RlX3ZhbHVlID0gbWFudWFsX3ZhbDtcXG4yNTYyOlxcdFxcdG1hc3Rlci1cXHUwMDNlZmxhZ3MgfD0gVjRMMl9DVFJMX0ZMQUdfVVBEQVRFO1xcbjI1NjM6XFx0XFxuMjU2NDpcXHRcXHRpZiAoIWlzX2N1cl9tYW51YWwobWFzdGVyKSlcXG4yNTY1OlxcdFxcdFxcdGZsYWcgPSBWNEwyX0NUUkxfRkxBR19JTkFDVElWRSB8XFxuMjU2NjpcXHRcXHRcXHRcXHQoc2V0X3ZvbGF0aWxlID8gVjRMMl9DVFJMX0ZMQUdfVk9MQVRJTEUgOiAwKTtcXG4yNTY3OlxcdFxcbjI1Njg6XFx0XFx0Zm9yIChpID0gMTsgaSBcXHUwMDNjIG5jb250cm9sczsgaSsrKVxcbjI1Njk6XFx0XFx0XFx0aWYgKGNvbnRyb2xzW2ldKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQyMTo0NTo0Mi44MjU5NzExNjZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMDMwNDMxOTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipJbnZlc3RpZ2F0aW5nIENvbnRyb2wgQ2x1c3RlcnMgaW4gdGhlIFY0TDIgRnJhbWV3b3JrKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIGB2NGwyX2N0cmxfY2x1c3RlcmAgYW5kIGB2NGwyX2N0cmxfYXV0b19jbHVzdGVyYC4gTXkgaW1tZWRpYXRlIGdvYWwgaXMgdG8gbWFwIG91dCB0aGVpciB1c2FnZSDigJMgcGlucG9pbnRpbmcgd2hlcmUgdGhleSdyZSBiZWluZyBjYWxsZWQgd2l0aGluIHRoZSBrZXJuZWwgY29kZSBhbmQsIGNydWNpYWxseSwgd2hpY2ggc3BlY2lmaWMgZHJpdmVycyBhcmUgbGV2ZXJhZ2luZyB0aGVtLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbGFuZHNjYXBlIG9mIHRoZXNlIGNvbnRyb2wgbWVjaGFuaXNtcy5cblxuQmV5b25kIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHksIEknbSB0aGlua2luZyBhYm91dCB0aGUgYmlnZ2VyIHBpY3R1cmUsIGFuZCB0aGF0IG1lYW5zIGNvbnNpZGVyaW5nIGhvdyB0aGVzZSBjbHVzdGVycyBiZWhhdmUgaW4gYSB2aXJ0dWFsaXplZCBjb250ZXh0LiBJJ20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gaG93IHRoZXkgZnVuY3Rpb24gd2l0aGluIGVudmlyb25tZW50cyBsaWtlIFFFTVUuIFNwZWNpZmljYWxseSwgaG93IGRvIHRoZXkgaGFuZGxlIHNldHVwcyB1c2luZywgZm9yIGV4YW1wbGUsIHRoZSBgdXZjdmlkZW9gIGRyaXZlciBvdmVyIGEgVVNCIGdhZGdldCwgb3IsIGFsdGVybmF0aXZlbHksIGVtdWxhdGVkIFY0TDIgZHJpdmVycyBzdWNoIGFzIGB2aXZpZGAgb3IgYHZpbWNgPyBUaGUgdmlydHVhbGl6ZWQgc3BhY2Ugb2Z0ZW4gcHJlc2VudHMgaXRzIG93biBzZXQgb2YgY2hhbGxlbmdlcywgYW5kIHVuZGVyc3RhbmRpbmcgaWYgYW5kIGhvdyB0aGVzZSBjb250cm9sIGNsdXN0ZXJzIGZ1bmN0aW9uIGluIHRob3NlIHNldHRpbmdzIGlzIGNyaXRpY2FsIGZvciBhIGNvbXBsZXRlIHBpY3R1cmUuIFRoaXMgY291bGQgaGF2ZSBodWdlIGltcGxpY2F0aW9ucyBvbiB0aGUgdGVzdGluZywgZGVidWdnaW5nLCBhbmQgZGVwbG95bWVudCBvZiBkcml2ZXJzIGluIHNpbXVsYXRlZCBzY2VuYXJpb3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1MjEsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3OSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDIxOjQ1OjQ1Ljg1NjQwNDg5NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NDUyOTAxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2NGwyX2N0cmxfYXV0b19jbHVzdGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbWVkaWFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL3J0bDI4MzJfc2RyLmM9MTMxOT1zdGF0aWMgaW50IHJ0bDI4MzJfc2RyX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvcnRsMjgzMl9zZHIuYy0xNDAxLVxcdFxcdFxcdFxcdFxcdFxcdCAgIDAsIDgwMDAwMDAsIDEwMDAwMCwgMCk7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL3J0bDI4MzJfc2RyLmM6MTQwMjpcXHRcXHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDIsIFxcdTAwMjZkZXYtXFx1MDAzZWJhbmR3aWR0aF9hdXRvLCAwLCBmYWxzZSk7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL3J0bDI4MzJfc2RyLmMtMTQwMy1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9ydGwyODMyX3Nkci5jLTE0MTMtXFx0XFx0XFx0XFx0XFx0XFx0ICAgNjAwMDAwMCk7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL3J0bDI4MzJfc2RyLmM6MTQxNDpcXHRcXHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDIsIFxcdTAwMjZkZXYtXFx1MDAzZWJhbmR3aWR0aF9hdXRvLCAwLCBmYWxzZSk7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL3J0bDI4MzJfc2RyLmMtMTQxNS1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbWVkaWEvaTJjL2Fsdml1bS1jc2kyLmM9MjA4OD1zdGF0aWMgaW50IGFsdml1bV9jdHJsX2luaXQoc3RydWN0IGFsdml1bV9kZXYgKmFsdml1bSlcXG4tLVxcbmRyaXZlcnMvbWVkaWEvaTJjL2Fsdml1bS1jc2kyLmMtMjExNi1cXHRcXHRpZiAoY3RybHMtXFx1MDAzZWF1dG9fd2IpXFxuZHJpdmVycy9tZWRpYS9pMmMvYWx2aXVtLWNzaTIuYzoyMTE3OlxcdFxcdFxcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMywgXFx1MDAyNmN0cmxzLVxcdTAwM2VhdXRvX3diLCAwLCBmYWxzZSk7XFxuZHJpdmVycy9tZWRpYS9pMmMvYWx2aXVtLWNzaTIuYy0yMTE4LVxcdH1cXG4tLVxcbmRyaXZlcnMvbWVkaWEvaTJjL2Fsdml1bS1jc2kyLmMtMjE0MS1cXHRcXHRpZiAoY3RybHMtXFx1MDAzZWF1dG9fZXhwKVxcbmRyaXZlcnMvbWVkaWEvaTJjL2Fsdml1bS1jc2kyLmM6MjE0MjpcXHRcXHRcXHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDIsIFxcdTAwMjZjdHJscy1cXHUwMDNlYXV0b19leHAsXFxuZHJpdmVycy9tZWRpYS9pMmMvYWx2aXVtLWNzaTIuYy0yMTQzLVxcdFxcdFxcdFxcdFxcdCAgICAgICBWNEwyX0VYUE9TVVJFX01BTlVBTCwgdHJ1ZSk7XFxuLS1cXG5kcml2ZXJzL21lZGlhL2kyYy9hbHZpdW0tY3NpMi5jLTIxNjAtXFx0XFx0aWYgKGN0cmxzLVxcdTAwM2VhdXRvX2dhaW4pXFxuZHJpdmVycy9tZWRpYS9pMmMvYWx2aXVtLWNzaTIuYzoyMTYxOlxcdFxcdFxcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXFx1MDAyNmN0cmxzLVxcdTAwM2VhdXRvX2dhaW4sIDAsIHRydWUpO1xcbmRyaXZlcnMvbWVkaWEvaTJjL2Fsdml1bS1jc2kyLmMtMjE2Mi1cXHR9XFxuLS1cXG5kcml2ZXJzL21lZGlhL2kyYy9tdDltMDAxLmM9NzMwPXN0YXRpYyBpbnQgbXQ5bTAwMV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9tZWRpYS9pMmMvbXQ5bTAwMS5jLTc4Mi1cXG5kcml2ZXJzL21lZGlhL2kyYy9tdDltMDAxLmM6NzgzOlxcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXFx1MDAyNm10OW0wMDEtXFx1MDAzZWF1dG9leHBvc3VyZSxcXG5kcml2ZXJzL21lZGlhL2kyYy9tdDltMDAxLmMtNzg0LVxcdFxcdFxcdFxcdFxcdFY0TDJfRVhQT1NVUkVfTUFOVUFMLCB0cnVlKTtcXG4tLVxcbmRyaXZlcnMvbWVkaWEvaTJjL292NTY0MC5jPTM0Mjg9c3RhdGljIGludCBvdjU2NDBfaW5pdF9jb250cm9scyhzdHJ1Y3Qgb3Y1NjQwX2RldiAqc2Vuc29yKVxcbi0tXFxuZHJpdmVycy9tZWRpYS9pMmMvb3Y1NjQwLmMtMzUzMC1cXG5kcml2ZXJzL21lZGlhL2kyYy9vdjU2NDAuYzozNTMxOlxcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMywgXFx1MDAyNmN0cmxzLVxcdTAwM2VhdXRvX3diLCAwLCBmYWxzZSk7XFxuZHJpdmVycy9tZWRpYS9pMmMvb3Y1NjQwLmM6MzUzMjpcXHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDIsIFxcdTAwMjZjdHJscy1cXHUwMDNlYXV0b19nYWluLCAwLCB0cnVlKTtcXG5kcml2ZXJzL21lZGlhL2kyYy9vdjU2NDAuYzozNTMzOlxcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXFx1MDAyNmN0cmxzLVxcdTAwM2VhdXRvX2V4cCwgMSwgdHJ1ZSk7XFxuZHJpdmVycy9tZWRpYS9pMmMvb3Y1NjQwLmMtMzUzNC1cXG4tLVxcbmRyaXZlcnMvbWVkaWEvaTJjL292NTY0OC5jPTIwMzk9c3RhdGljIGludCBvdjU2NDhfY3RybHNfaW5pdChzdHJ1Y3Qgb3Y1NjQ4X3NlbnNvciAqc2Vuc29yKVxcbi0tXFxuZHJpdmVycy9tZWRpYS9pMmMvb3Y1NjQ4LmMtMjA2MC1cXG5kcml2ZXJzL21lZGlhL2kyYy9vdjU2NDguYzoyMDYxOlxcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXFx1MDAyNmN0cmxzLVxcdTAwM2VleHBvc3VyZV9hdXRvLCAxLCB0cnVlKTtcXG5kcml2ZXJzL21lZGlhL2kyYy9vdjU2NDguYy0yMDYyLVxcbi0tXFxuZHJpdmVycy9tZWRpYS9pMmMvb3Y1NjQ4LmMtMjA3MC1cXG5kcml2ZXJzL21lZGlhL2kyYy9vdjU2NDguYzoyMDcxOlxcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXFx1MDAyNmN0cmxzLVxcdTAwM2VnYWluX2F1dG8sIDAsIHRydWUpO1xcbmRyaXZlcnMvbWVkaWEvaTJjL292NTY0OC5jLTIwNzItXFxuLS1cXG5kcml2ZXJzL21lZGlhL2kyYy9vdjU2NDguYy0yMDg2LVxcbmRyaXZlcnMvbWVkaWEvaTJjL292NTY0OC5jOjIwODc6XFx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigzLCBcXHUwMDI2Y3RybHMtXFx1MDAzZXdoaXRlX2JhbGFuY2VfYXV0bywgMCwgZmFsc2UpO1xcbmRyaXZlcnMvbWVkaWEvaTJjL292NTY0OC5jLTIwODgtXFxuLS1cXG5kcml2ZXJzL21lZGlhL2kyYy9vdjc2NzAuYz0xODIzPXN0YXRpYyBpbnQgb3Y3NjcwX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuLS1cXG5kcml2ZXJzL21lZGlhL2kyYy9vdjc2NzAuYy0xOTQ0LVxcdCAqL1xcbmRyaXZlcnMvbWVkaWEvaTJjL292NzY3MC5jOjE5NDU6XFx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigyLCBcXHUwMDI2aW5mby1cXHUwMDNlYXV0b19nYWluLCAwLCB0cnVlKTtcXG5kcml2ZXJzL21lZGlhL2kyYy9vdjc2NzAuYzoxOTQ2OlxcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXFx1MDAyNmluZm8tXFx1MDAzZWF1dG9fZXhwb3N1cmUsXFxuZHJpdmVycy9tZWRpYS9pMmMvb3Y3NjcwLmMtMTk0Ny1cXHRcXHRcXHQgICAgICAgVjRMMl9FWFBPU1VSRV9NQU5VQUwsIGZhbHNlKTtcXG4tLVxcbmRyaXZlcnMvbWVkaWEvaTJjL292Nzc0MC5jPTkzOT1zdGF0aWMgaW50IG92Nzc0MF9pbml0X2NvbnRyb2xzKHN0cnVjdCBvdjc3NDAgKm92Nzc0MClcXG4tLVxcbmRyaXZlcnMvbWVkaWEvaTJjL292Nzc0MC5jLTk4Ny1cXG5kcml2ZXJzL21lZGlhL2kyYy9vdjc3NDAuYzo5ODg6XFx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigzLCBcXHUwMDI2b3Y3NzQwLVxcdTAwM2VhdXRvX3diLCAwLCBmYWxzZSk7XFxuZHJpdmVycy9tZWRpYS9pMmMvb3Y3NzQwLmM6OTg5OlxcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXFx1MDAyNm92Nzc0MC1cXHUwMDNlYXV0b19nYWluLCAwLCB0cnVlKTtcXG5kcml2ZXJzL21lZGlhL2kyYy9vdjc3NDAuYzo5OTA6XFx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigyLCBcXHUwMDI2b3Y3NzQwLVxcdTAwM2VhdXRvX2V4cG9zdXJlLFxcbmRyaXZlcnMvbWVkaWEvaTJjL292Nzc0MC5jLTk5MS1cXHRcXHRcXHQgICAgICAgVjRMMl9FWFBPU1VSRV9NQU5VQUwsIHRydWUpO1xcbi0tXFxuZHJpdmVycy9tZWRpYS9pMmMvb3Y5NjUwLmM9OTg2PXN0YXRpYyBpbnQgb3Y5NjV4X2luaXRpYWxpemVfY29udHJvbHMoc3RydWN0IG92OTY1eCAqb3Y5NjV4KVxcbi0tXFxuZHJpdmVycy9tZWRpYS9pMmMvb3Y5NjUwLmMtMTA0OC1cXG5kcml2ZXJzL21lZGlhL2kyYy9vdjk2NTAuYzoxMDQ5OlxcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMywgXFx1MDAyNmN0cmxzLVxcdTAwM2VhdXRvX3diLCAwLCBmYWxzZSk7XFxuZHJpdmVycy9tZWRpYS9pMmMvb3Y5NjUwLmM6MTA1MDpcXHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDIsIFxcdTAwMjZjdHJscy1cXHUwMDNlYXV0b19nYWluLCAwLCB0cnVlKTtcXG5kcml2ZXJzL21lZGlhL2kyYy9vdjk2NTAuYzoxMDUxOlxcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXFx1MDAyNmN0cmxzLVxcdTAwM2VhdXRvX2V4cCwgMSwgdHJ1ZSk7XFxuZHJpdmVycy9tZWRpYS9pMmMvb3Y5NjUwLmMtMTA1Mi1cXHR2NGwyX2N0cmxfY2x1c3RlcigyLCBcXHUwMDI2Y3RybHMtXFx1MDAzZWhmbGlwKTtcXG4tLVxcbmRyaXZlcnMvbWVkaWEvaTJjL3M1YzczbTMvczVjNzNtMy1jdHJscy5jPTQ0MT1pbnQgczVjNzNtM19pbml0X2NvbnRyb2xzKHN0cnVjdCBzNWM3M20zICpzdGF0ZSlcXG4tLVxcbmRyaXZlcnMvbWVkaWEvaTJjL3M1YzczbTMvczVjNzNtMy1jdHJscy5jLTU0Mi1cXG5kcml2ZXJzL21lZGlhL2kyYy9zNWM3M20zL3M1YzczbTMtY3RybHMuYzo1NDM6XFx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigzLCBcXHUwMDI2Y3RybHMtXFx1MDAzZWF1dG9fZXhwb3N1cmUsIDAsIGZhbHNlKTtcXG5kcml2ZXJzL21lZGlhL2kyYy9zNWM3M20zL3M1YzczbTMtY3RybHMuYy01NDQtXFx0Y3RybHMtXFx1MDAzZWF1dG9faXNvLVxcdTAwM2VmbGFncyB8PSBWNEwyX0NUUkxfRkxBR19WT0xBVElMRSB8XFxuZHJpdmVycy9tZWRpYS9pMmMvczVjNzNtMy9zNWM3M20zLWN0cmxzLmMtNTQ1LVxcdFxcdFxcdFxcdFY0TDJfQ1RSTF9GTEFHX1VQREFURTtcXG5kcml2ZXJzL21lZGlhL2kyYy9zNWM3M20zL3M1YzczbTMtY3RybHMuYzo1NDY6XFx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigyLCBcXHUwMDI2Y3RybHMtXFx1MDAzZWF1dG9faXNvLCAwLCBmYWxzZSk7XFxuZHJpdmVycy9tZWRpYS9pMmMvczVjNzNtMy9zNWM3M20zLWN0cmxzLmMtNTQ3LVxcdGN0cmxzLVxcdTAwM2VhZl9zdGF0dXMtXFx1MDAzZWZsYWdzIHw9IFY0TDJfQ1RSTF9GTEFHX1ZPTEFUSUxFO1xcbi0tXFxuZHJpdmVycy9tZWRpYS9pMmMvczVrNWJhZi5jPTE2MzI9c3RhdGljIGludCBzNWs1YmFmX2luaXRpYWxpemVfY3RybHMoc3RydWN0IHM1azViYWYgKnN0YXRlKVxcbi0tXFxuZHJpdmVycy9tZWRpYS9pMmMvczVrNWJhZi5jLTE2NTEtXFx0XFx0XFx0XFx0XFx0ICAgICAwLCAyNTUsIDEsIFM1SzVCQUZfR0FJTl9CTFVFX0RFRik7XFxuZHJpdmVycy9tZWRpYS9pMmMvczVrNWJhZi5jOjE2NTI6XFx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigzLCBcXHUwMDI2Y3RybHMtXFx1MDAzZWF3YiwgMCwgZmFsc2UpO1xcbmRyaXZlcnMvbWVkaWEvaTJjL3M1azViYWYuYy0xNjUzLVxcbi0tXFxuZHJpdmVycy9tZWRpYS9pMmMvczVrNWJhZi5jLTE2NjYtXFx0XFx0XFx0XFx0XFx0MCwgMjU2LCAxLCAyNTYpO1xcbmRyaXZlcnMvbWVkaWEvaTJjL3M1azViYWYuYzoxNjY3OlxcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMywgXFx1MDAyNmN0cmxzLVxcdTAwM2VhdXRvX2V4cCwgMCwgZmFsc2UpO1xcbmRyaXZlcnMvbWVkaWEvaTJjL3M1azViYWYuYy0xNjY4LVxcbi0tXFxuZHJpdmVycy9tZWRpYS9pMmMvc2FhNzExNS5jPTE3OTk9c3RhdGljIGludCBzYWE3MTF4X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuLS1cXG5kcml2ZXJzL21lZGlhL2kyYy9zYWE3MTE1LmMtMTg3Mi1cXHR9XFxuZHJpdmVycy9tZWRpYS9pMmMvc2FhNzExNS5jOjE4NzM6XFx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigyLCBcXHUwMDI2c3RhdGUtXFx1MDAzZWFnYywgMCwgdHJ1ZSk7XFxuZHJpdmVycy9tZWRpYS9pMmMvc2FhNzExNS5jLTE4NzQtXFxuLS1cXG5kcml2ZXJzL21lZGlhL2kyYy92ZDU1ZzEuYz0xNTc1PXN0YXRpYyBpbnQgdmQ1NWcxX2luaXRfY3RybHMoc3RydWN0IHZkNTVnMSAqc2Vuc29yKVxcbi0tXFxuZHJpdmVycy9tZWRpYS9pMmMvdmQ1NWcxLmMtMTYxNi1cXHRcXHRcXHRcXHRcXHQgICAgICAxLCBWRDU1RzFfRVhQT19ERUYpO1xcbmRyaXZlcnMvbWVkaWEvaTJjL3ZkNTVnMS5jOjE2MTc6XFx0djRsMl9jdHJsX2F1dG9fY2x1c3Rlcig0LCBcXHUwMDI2c2Vuc29yLVxcdTAwM2VhZV9jdHJsLCBWNEwyX0VYUE9TVVJFX01BTlVBTCwgdHJ1ZSk7XFxuZHJpdmVycy9tZWRpYS9pMmMvdmQ1NWcxLmMtMTYxOC1cXG4tLVxcbmRyaXZlcnMvbWVkaWEvaTJjL3ZkNTZnMy5jPTYzMT1zdGF0aWMgaW50IHZkNTZnM19pbml0X2NvbnRyb2xzKHN0cnVjdCB2ZDU2ZzMgKnNlbnNvcilcXG4tLVxcbmRyaXZlcnMvbWVkaWEvaTJjL3ZkNTZnMy5jLTcyNC1cXHR2NGwyX2N0cmxfY2x1c3RlcigyLCBcXHUwMDI2c2Vuc29yLVxcdTAwM2VoZmxpcF9jdHJsKTtcXG5kcml2ZXJzL21lZGlhL2kyYy92ZDU2ZzMuYzo3MjU6XFx0djRsMl9jdHJsX2F1dG9fY2x1c3Rlcig0LCBcXHUwMDI2c2Vuc29yLVxcdTAwM2VhZV9jdHJsLCBWNEwyX0VYUE9TVVJFX01BTlVBTCwgdHJ1ZSk7XFxuZHJpdmVycy9tZWRpYS9pMmMvdmQ1NmczLmMtNzI2LVxcbi0tXFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9taWNyb2NoaXAvbWljcm9jaGlwLWlzYy1iYXNlLmM9MTYxMj1zdGF0aWMgaW50IGlzY19jdHJsX2luaXQoc3RydWN0IGlzY19kZXZpY2UgKmlzYylcXG4tLVxcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbWljcm9jaGlwL21pY3JvY2hpcC1pc2MtYmFzZS5jLTE2NjMtXFx0ICovXFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9taWNyb2NoaXAvbWljcm9jaGlwLWlzYy1iYXNlLmM6MTY2NDpcXHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDEwLCBcXHUwMDI2aXNjLVxcdTAwM2Vhd2JfY3RybCwgMCwgdHJ1ZSk7XFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9taWNyb2NoaXAvbWljcm9jaGlwLWlzYy1iYXNlLmMtMTY2NS1cXG4tLVxcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vc2Ftc3VuZy9leHlub3M0LWlzL2ZpbWMtaXNwLmM9NjkxPWludCBmaW1jX2lzcF9zdWJkZXZfY3JlYXRlKHN0cnVjdCBmaW1jX2lzcCAqaXNwKVxcbi0tXFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zYW1zdW5nL2V4eW5vczQtaXMvZmltYy1pc3AuYy03NjUtXFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zYW1zdW5nL2V4eW5vczQtaXMvZmltYy1pc3AuYzo3NjY6XFx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigyLCBcXHUwMDI2Y3RybHMtXFx1MDAzZWF1dG9faXNvLFxcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vc2Ftc3VuZy9leHlub3M0LWlzL2ZpbWMtaXNwLmMtNzY3LVxcdFxcdFxcdFY0TDJfSVNPX1NFTlNJVElWSVRZX01BTlVBTCwgZmFsc2UpO1xcbi0tXFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zYW1zdW5nL3MzYy1jYW1pZi9jYW1pZi1jYXB0dXJlLmM9MTUzOD1pbnQgczNjX2NhbWlmX2NyZWF0ZV9zdWJkZXYoc3RydWN0IGNhbWlmX2RldiAqY2FtaWYpXFxuLS1cXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3NhbXN1bmcvczNjLWNhbWlmL2NhbWlmLWNhcHR1cmUuYy0xNTgwLVxcdGlmIChjYW1pZi1cXHUwMDNldmFyaWFudC1cXHUwMDNlaGFzX2ltZ19lZmZlY3QpXFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zYW1zdW5nL3MzYy1jYW1pZi9jYW1pZi1jYXB0dXJlLmM6MTU4MTpcXHRcXHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDIsIFxcdTAwMjZjYW1pZi1cXHUwMDNlY3RybF9jb2xvcmZ4LFxcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vc2Ftc3VuZy9zM2MtY2FtaWYvY2FtaWYtY2FwdHVyZS5jLTE1ODItXFx0XFx0XFx0ICAgICAgIFY0TDJfQ09MT1JGWF9TRVRfQ0JDUiwgZmFsc2UpO1xcbi0tXFxuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtY3RybHMuYz0xNjMxPWludCB2aXZpZF9jcmVhdGVfY29udHJvbHMoc3RydWN0IHZpdmlkX2RldiAqZGV2LCBib29sIHNob3dfY2NzX2NhcCxcXG4tLVxcbmRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL3ZpdmlkLWN0cmxzLmMtMjAxNi1cXHRpZiAoZGV2LVxcdTAwM2VhdXRvZ2FpbilcXG5kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC92aXZpZC1jdHJscy5jOjIwMTc6XFx0XFx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigyLCBcXHUwMDI2ZGV2LVxcdTAwM2VhdXRvZ2FpbiwgMCwgdHJ1ZSk7XFxuZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtY3RybHMuYy0yMDE4LVxcbi0tXFxuZHJpdmVycy9tZWRpYS90dW5lcnMvZTQwMDAuYz02MTI9c3RhdGljIGludCBlNDAwMF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9tZWRpYS90dW5lcnMvZTQwMDAuYy02NjItXFx0XFx0XFx0VjRMMl9DSURfUkZfVFVORVJfQkFORFdJRFRILCA0MzAwMDAwLCAxMTAwMDAwMCwgMTAwMDAwLCA0MzAwMDAwKTtcXG5kcml2ZXJzL21lZGlhL3R1bmVycy9lNDAwMC5jOjY2MzpcXHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDIsIFxcdTAwMjZkZXYtXFx1MDAzZWJhbmR3aWR0aF9hdXRvLCAwLCBmYWxzZSk7XFxuZHJpdmVycy9tZWRpYS90dW5lcnMvZTQwMDAuYy02NjQtXFx0ZGV2LVxcdTAwM2VsbmFfZ2Fpbl9hdXRvID0gdjRsMl9jdHJsX25ld19zdGQoXFx1MDAyNmRldi1cXHUwMDNlaGRsLCBcXHUwMDI2ZTQwMDBfY3RybF9vcHMsXFxuLS1cXG5kcml2ZXJzL21lZGlhL3R1bmVycy9lNDAwMC5jLTY2Ny1cXHRcXHRcXHRWNEwyX0NJRF9SRl9UVU5FUl9MTkFfR0FJTiwgMCwgMTUsIDEsIDEwKTtcXG5kcml2ZXJzL21lZGlhL3R1bmVycy9lNDAwMC5jOjY2ODpcXHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDIsIFxcdTAwMjZkZXYtXFx1MDAzZWxuYV9nYWluX2F1dG8sIDAsIGZhbHNlKTtcXG5kcml2ZXJzL21lZGlhL3R1bmVycy9lNDAwMC5jLTY2OS1cXHRkZXYtXFx1MDAzZW1peGVyX2dhaW5fYXV0byA9IHY0bDJfY3RybF9uZXdfc3RkKFxcdTAwMjZkZXYtXFx1MDAzZWhkbCwgXFx1MDAyNmU0MDAwX2N0cmxfb3BzLFxcbi0tXFxuZHJpdmVycy9tZWRpYS90dW5lcnMvZTQwMDAuYy02NzItXFx0XFx0XFx0VjRMMl9DSURfUkZfVFVORVJfTUlYRVJfR0FJTiwgMCwgMSwgMSwgMSk7XFxuZHJpdmVycy9tZWRpYS90dW5lcnMvZTQwMDAuYzo2NzM6XFx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigyLCBcXHUwMDI2ZGV2LVxcdTAwM2VtaXhlcl9nYWluX2F1dG8sIDAsIGZhbHNlKTtcXG5kcml2ZXJzL21lZGlhL3R1bmVycy9lNDAwMC5jLTY3NC1cXHRkZXYtXFx1MDAzZWlmX2dhaW5fYXV0byA9IHY0bDJfY3RybF9uZXdfc3RkKFxcdTAwMjZkZXYtXFx1MDAzZWhkbCwgXFx1MDAyNmU0MDAwX2N0cmxfb3BzLFxcbi0tXFxuZHJpdmVycy9tZWRpYS90dW5lcnMvZTQwMDAuYy02NzctXFx0XFx0XFx0VjRMMl9DSURfUkZfVFVORVJfSUZfR0FJTiwgMCwgNTQsIDEsIDApO1xcbmRyaXZlcnMvbWVkaWEvdHVuZXJzL2U0MDAwLmM6Njc4OlxcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXFx1MDAyNmRldi1cXHUwMDNlaWZfZ2Fpbl9hdXRvLCAwLCBmYWxzZSk7XFxuZHJpdmVycy9tZWRpYS90dW5lcnMvZTQwMDAuYy02NzktXFx0ZGV2LVxcdTAwM2VwbGxfbG9jayA9IHY0bDJfY3RybF9uZXdfc3RkKFxcdTAwMjZkZXYtXFx1MDAzZWhkbCwgXFx1MDAyNmU0MDAwX2N0cmxfb3BzLFxcbi0tXFxuZHJpdmVycy9tZWRpYS90dW5lcnMvZmMyNTgwLmM9NTA5PXN0YXRpYyBpbnQgZmMyNTgwX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuLS1cXG5kcml2ZXJzL21lZGlhL3R1bmVycy9mYzI1ODAuYy01NjItXFx0XFx0XFx0XFx0XFx0ICAgMzAwMCwgMTAwMDAwMDAsIDEsIDMwMDApO1xcbmRyaXZlcnMvbWVkaWEvdHVuZXJzL2ZjMjU4MC5jOjU2MzpcXHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDIsIFxcdTAwMjZkZXYtXFx1MDAzZWJhbmR3aWR0aF9hdXRvLCAwLCBmYWxzZSk7XFxuZHJpdmVycy9tZWRpYS90dW5lcnMvZmMyNTgwLmMtNTY0LVxcdGlmIChkZXYtXFx1MDAzZWhkbC5lcnJvcikge1xcbi0tXFxuZHJpdmVycy9tZWRpYS90dW5lcnMvbXNpMDAxLmM9NDIyPXN0YXRpYyBpbnQgbXNpMDAxX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXFxuLS1cXG5kcml2ZXJzL21lZGlhL3R1bmVycy9tc2kwMDEuYy00NTEtXFxuZHJpdmVycy9tZWRpYS90dW5lcnMvbXNpMDAxLmM6NDUyOlxcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXFx1MDAyNmRldi1cXHUwMDNlYmFuZHdpZHRoX2F1dG8sIDAsIGZhbHNlKTtcXG5kcml2ZXJzL21lZGlhL3R1bmVycy9tc2kwMDEuYy00NTMtXFx0ZGV2LVxcdTAwM2VsbmFfZ2FpbiA9IHY0bDJfY3RybF9uZXdfc3RkKFxcdTAwMjZkZXYtXFx1MDAzZWhkbCwgXFx1MDAyNm1zaTAwMV9jdHJsX29wcyxcXG4tLVxcbmRyaXZlcnMvbWVkaWEvdXNiL2FpcnNweS9haXJzcHkuYz05NzA9c3RhdGljIGludCBhaXJzcHlfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXFxuLS1cXG5kcml2ZXJzL21lZGlhL3VzYi9haXJzcHkvYWlyc3B5LmMtMTA1Mi1cXHRcXHRcXHRWNEwyX0NJRF9SRl9UVU5FUl9MTkFfR0FJTiwgMCwgMTQsIDEsIDgpO1xcbmRyaXZlcnMvbWVkaWEvdXNiL2FpcnNweS9haXJzcHkuYzoxMDUzOlxcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXFx1MDAyNnMtXFx1MDAzZWxuYV9nYWluX2F1dG8sIDAsIGZhbHNlKTtcXG5kcml2ZXJzL21lZGlhL3VzYi9haXJzcHkvYWlyc3B5LmMtMTA1NC1cXHRzLVxcdTAwM2VtaXhlcl9nYWluX2F1dG8gPSB2NGwyX2N0cmxfbmV3X3N0ZChcXHUwMDI2cy1cXHUwMDNlaGRsLCBcXHUwMDI2YWlyc3B5X2N0cmxfb3BzLFxcbi0tXFxuZHJpdmVycy9tZWRpYS91c2IvYWlyc3B5L2FpcnNweS5jLTEwNTctXFx0XFx0XFx0VjRMMl9DSURfUkZfVFVORVJfTUlYRVJfR0FJTiwgMCwgMTUsIDEsIDgpO1xcbmRyaXZlcnMvbWVkaWEvdXNiL2FpcnNweS9haXJzcHkuYzoxMDU4OlxcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXFx1MDAyNnMtXFx1MDAzZW1peGVyX2dhaW5fYXV0bywgMCwgZmFsc2UpO1xcbmRyaXZlcnMvbWVkaWEvdXNiL2FpcnNweS9haXJzcHkuYy0xMDU5LVxcdHMtXFx1MDAzZWlmX2dhaW4gPSB2NGwyX2N0cmxfbmV3X3N0ZChcXHUwMDI2cy1cXHUwMDNlaGRsLCBcXHUwMDI2YWlyc3B5X2N0cmxfb3BzLFxcbi0tXFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvbTU2MDIvbTU2MDJfbXQ5bTExMS5jPTI3Mj1pbnQgbXQ5bTExMV9pbml0X2NvbnRyb2xzKHN0cnVjdCBzZCAqc2QpXFxuLS1cXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9tNTYwMi9tNTYwMl9tdDltMTExLmMtMzAzLVxcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL201NjAyL201NjAyX210OW0xMTEuYzozMDQ6XFx0djRsMl9jdHJsX2F1dG9fY2x1c3Rlcig0LCBcXHUwMDI2c2QtXFx1MDAzZWF1dG9fd2hpdGVfYmFsLCAwLCBmYWxzZSk7XFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvbTU2MDIvbTU2MDJfbXQ5bTExMS5jLTMwNS1cXHR2NGwyX2N0cmxfY2x1c3RlcigyLCBcXHUwMDI2c2QtXFx1MDAzZWhmbGlwKTtcXG4tLVxcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL201NjAyL201NjAyX292NzY2MC5jPTI3Mz1pbnQgb3Y3NjYwX2luaXRfY29udHJvbHMoc3RydWN0IHNkICpzZClcXG4tLVxcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL201NjAyL201NjAyX292NzY2MC5jLTI5OS1cXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9tNTYwMi9tNTYwMl9vdjc2NjAuYzozMDA6XFx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigyLCBcXHUwMDI2c2QtXFx1MDAzZWF1dG9nYWluLCAwLCBmYWxzZSk7XFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvbTU2MDIvbTU2MDJfb3Y3NjYwLmMtMzAxLVxcdHY0bDJfY3RybF9jbHVzdGVyKDIsIFxcdTAwMjZzZC1cXHUwMDNlaGZsaXApO1xcbi0tXFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvbTU2MDIvbTU2MDJfb3Y5NjUwLmM9MzY1PWludCBvdjk2NTBfaW5pdF9jb250cm9scyhzdHJ1Y3Qgc2QgKnNkKVxcbi0tXFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvbTU2MDIvbTU2MDJfb3Y5NjUwLmMtNDAxLVxcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL201NjAyL201NjAyX292OTY1MC5jOjQwMjpcXHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDMsIFxcdTAwMjZzZC1cXHUwMDNlYXV0b193aGl0ZV9iYWwsIDAsIGZhbHNlKTtcXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9tNTYwMi9tNTYwMl9vdjk2NTAuYzo0MDM6XFx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigyLCBcXHUwMDI2c2QtXFx1MDAzZWF1dG9leHBvLCAwLCBmYWxzZSk7XFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvbTU2MDIvbTU2MDJfb3Y5NjUwLmM6NDA0OlxcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXFx1MDAyNnNkLVxcdTAwM2VhdXRvZ2FpbiwgMCwgZmFsc2UpO1xcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL201NjAyL201NjAyX292OTY1MC5jLTQwNS1cXHR2NGwyX2N0cmxfY2x1c3RlcigyLCBcXHUwMDI2c2QtXFx1MDAzZWhmbGlwKTtcXG4tLVxcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL201NjAyL201NjAyX3BvMTAzMC5jPTIzNz1pbnQgcG8xMDMwX2luaXRfY29udHJvbHMoc3RydWN0IHNkICpzZClcXG4tLVxcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL201NjAyL201NjAyX3BvMTAzMC5jLTI3Mi1cXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9tNTYwMi9tNTYwMl9wbzEwMzAuYzoyNzM6XFx0djRsMl9jdHJsX2F1dG9fY2x1c3Rlcig0LCBcXHUwMDI2c2QtXFx1MDAzZWF1dG9fd2hpdGVfYmFsLCAwLCBmYWxzZSk7XFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvbTU2MDIvbTU2MDJfcG8xMDMwLmM6Mjc0OlxcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXFx1MDAyNnNkLVxcdTAwM2VhdXRvZXhwbywgMCwgZmFsc2UpO1xcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL201NjAyL201NjAyX3BvMTAzMC5jLTI3NS1cXHR2NGwyX2N0cmxfY2x1c3RlcigyLCBcXHUwMDI2c2QtXFx1MDAzZWhmbGlwKTtcXG4tLVxcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL253ODB4LmM9MTk5OT1zdGF0aWMgaW50IHNkX2luaXRfY29udHJvbHMoc3RydWN0IGdzcGNhX2RldiAqZ3NwY2FfZGV2KVxcbi0tXFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2Evbnc4MHguYy0yMDM3LVxcdGlmIChnc3BjYV9kZXYtXFx1MDAzZWF1dG9nYWluKVxcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL253ODB4LmM6MjAzODpcXHRcXHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDMsIFxcdTAwMjZnc3BjYV9kZXYtXFx1MDAzZWF1dG9nYWluLCAwLCBmYWxzZSk7XFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2Evbnc4MHguYy0yMDM5LVxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2Evb3Y1MTkuYz00ODgxPXN0YXRpYyBpbnQgc2RfaW5pdF9jb250cm9scyhzdHJ1Y3QgZ3NwY2FfZGV2ICpnc3BjYV9kZXYpXFxuLS1cXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9vdjUxOS5jLTQ5NDMtXFx0aWYgKGdzcGNhX2Rldi1cXHUwMDNlYXV0b2dhaW4pXFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2Evb3Y1MTkuYzo0OTQ0OlxcdFxcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMywgXFx1MDAyNmdzcGNhX2Rldi1cXHUwMDNlYXV0b2dhaW4sIDAsIHRydWUpO1xcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL292NTE5LmMtNDk0NS1cXHRpZiAoc2QtXFx1MDAzZWF1dG9icmlnaHQpXFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2Evb3Y1MTkuYzo0OTQ2OlxcdFxcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXFx1MDAyNnNkLVxcdTAwM2VhdXRvYnJpZ2h0LCAwLCBmYWxzZSk7XFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2Evb3Y1MTkuYy00OTQ3LVxcdGlmIChzZC1cXHUwMDNlaGZsaXApXFxuLS1cXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9vdjUzNC5jPTEyMDQ9c3RhdGljIGludCBzZF9pbml0X2NvbnRyb2xzKHN0cnVjdCBnc3BjYV9kZXYgKmdzcGNhX2RldilcXG4tLVxcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL292NTM0LmMtMTMwMy1cXHRpZiAoc2QtXFx1MDAzZXNlbnNvciA9PSBTRU5TT1JfT1Y3NzJ4KVxcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL292NTM0LmM6MTMwNDpcXHRcXHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDIsIFxcdTAwMjZzZC1cXHUwMDNlYXV0b2dhaW4sIDAsIHRydWUpO1xcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL292NTM0LmMtMTMwNS1cXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9vdjUzNC5jOjEzMDY6XFx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigyLCBcXHUwMDI2c2QtXFx1MDAzZWF1dG9leHBvc3VyZSwgVjRMMl9FWFBPU1VSRV9NQU5VQUwsXFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2Evb3Y1MzQuYy0xMzA3LVxcdFxcdFxcdCAgICAgICB0cnVlKTtcXG4tLVxcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL292NTM0XzkuYz0xNzQwPXN0YXRpYyBpbnQgc2RfaW5pdF9jb250cm9scyhzdHJ1Y3QgZ3NwY2FfZGV2ICpnc3BjYV9kZXYpXFxuLS1cXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9vdjUzNF85LmMtMTc3MC1cXHRcXHRcXHRWNEwyX0NJRF9QT1dFUl9MSU5FX0ZSRVFVRU5DWV82MEhaLCAwLCAwKTtcXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9vdjUzNF85LmM6MTc3MTpcXHRcXHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDMsIFxcdTAwMjZnc3BjYV9kZXYtXFx1MDAzZWF1dG9nYWluLCAwLCBmYWxzZSk7XFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2Evb3Y1MzRfOS5jLTE3NzItXFx0fVxcbi0tXFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvcGFjMjA3LmM9MjQ1PXN0YXRpYyBpbnQgc2RfaW5pdF9jb250cm9scyhzdHJ1Y3QgZ3NwY2FfZGV2ICpnc3BjYV9kZXYpXFxuLS1cXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9wYWMyMDcuYy0yNzAtXFx0fVxcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3BhYzIwNy5jOjI3MTpcXHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDMsIFxcdTAwMjZnc3BjYV9kZXYtXFx1MDAzZWF1dG9nYWluLCAwLCBmYWxzZSk7XFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvcGFjMjA3LmMtMjcyLVxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvcGFjNzMwMi5jPTYzMT1zdGF0aWMgaW50IHNkX2luaXRfY29udHJvbHMoc3RydWN0IGdzcGNhX2RldiAqZ3NwY2FfZGV2KVxcbi0tXFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvcGFjNzMwMi5jLTY4Mi1cXHR2NGwyX2N0cmxfY2x1c3RlcigyLCBcXHUwMDI2c2QtXFx1MDAzZWJyaWdodG5lc3MpO1xcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3BhYzczMDIuYzo2ODM6XFx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigzLCBcXHUwMDI2Z3NwY2FfZGV2LVxcdTAwM2VhdXRvZ2FpbiwgMCwgZmFsc2UpO1xcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3BhYzczMDIuYy02ODQtXFx0djRsMl9jdHJsX2NsdXN0ZXIoMiwgXFx1MDAyNnNkLVxcdTAwM2VoZmxpcCk7XFxuLS1cXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9wYWM3MzExLmM9NDAxPXN0YXRpYyBpbnQgc2RfaW5pdF9jb250cm9scyhzdHJ1Y3QgZ3NwY2FfZGV2ICpnc3BjYV9kZXYpXFxuLS1cXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9wYWM3MzExLmMtNDI2LVxcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3BhYzczMTEuYzo0Mjc6XFx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigzLCBcXHUwMDI2Z3NwY2FfZGV2LVxcdTAwM2VhdXRvZ2FpbiwgMCwgZmFsc2UpO1xcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3BhYzczMTEuYy00MjgtXFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9zbjljMjB4LmM9MTcyMj1zdGF0aWMgaW50IHNkX2luaXRfY29udHJvbHMoc3RydWN0IGdzcGNhX2RldiAqZ3NwY2FfZGV2KVxcbi0tXFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2Evc245YzIweC5jLTE3OTEtXFx0XFx0XFx0ICAgYmVjYXVzZSBzZC1cXHUwMDNlZXhwb3N1cmUgPT0gTlVMTC4gKi9cXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9zbjljMjB4LmM6MTc5MjpcXHRcXHRcXHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDMsIFxcdTAwMjZzZC1cXHUwMDNlYXV0b2dhaW4sIDAsIGZhbHNlKTtcXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9zbjljMjB4LmMtMTc5My1cXHRcXHRlbHNlXFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2Evc245YzIweC5jLTE3OTQtXFx0XFx0XFx0LyogT3RoZXJ3aXNlIGF1dG9nYWluIGlzIGNsdXN0ZXJlZCB3aXRoIGV4cG9zdXJlLiAqL1xcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3NuOWMyMHguYzoxNzk1OlxcdFxcdFxcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXFx1MDAyNnNkLVxcdTAwM2VhdXRvZ2FpbiwgMCwgZmFsc2UpO1xcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3NuOWMyMHguYy0xNzk2LVxcdH1cXG4tLVxcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3Nvbml4Yi5jPTk5OD1zdGF0aWMgaW50IHNkX2luaXRfY29udHJvbHMoc3RydWN0IGdzcGNhX2RldiAqZ3NwY2FfZGV2KVxcbi0tXFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2Evc29uaXhiLmMtMTA4MS1cXHRpZiAoZ3NwY2FfZGV2LVxcdTAwM2VhdXRvZ2FpbilcXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9zb25peGIuYzoxMDgyOlxcdFxcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMywgXFx1MDAyNmdzcGNhX2Rldi1cXHUwMDNlYXV0b2dhaW4sIDAsIGZhbHNlKTtcXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9zb25peGIuYy0xMDgzLVxcbi0tXFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2Evc29uaXhqLmM9MTYxNz1zdGF0aWMgaW50IHNkX2luaXRfY29udHJvbHMoc3RydWN0IGdzcGNhX2RldiAqZ3NwY2FfZGV2KVxcbi0tXFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2Evc29uaXhqLmMtMTY4Ni1cXHRcXHR2NGwyX2N0cmxfY2x1c3RlcigyLCBcXHUwMDI2c2QtXFx1MDAzZXZmbGlwKTtcXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9zb25peGouYzoxNjg3OlxcdFxcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMywgXFx1MDAyNmdzcGNhX2Rldi1cXHUwMDNlYXV0b2dhaW4sIDAsIGZhbHNlKTtcXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9zb25peGouYy0xNjg4LVxcdH1cXG4tLVxcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3N0djA2eHgvc3R2MDZ4eF9wYjAxMDAuYz0xMDY9c3RhdGljIGludCBwYjAxMDBfaW5pdF9jb250cm9scyhzdHJ1Y3Qgc2QgKnNkKVxcbi0tXFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2Evc3R2MDZ4eC9zdHYwNnh4X3BiMDEwMC5jLTE1MC1cXHRzZC1cXHUwMDNlc2Vuc29yX3ByaXYgPSBjdHJscztcXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS9zdHYwNnh4L3N0djA2eHhfcGIwMTAwLmM6MTUxOlxcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoNSwgXFx1MDAyNmN0cmxzLVxcdTAwM2VhdXRvZ2FpbiwgMCwgZmFsc2UpO1xcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3N0djA2eHgvc3R2MDZ4eF9wYjAxMDAuYy0xNTItXFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS90NjEzLmM9OTQ1PXN0YXRpYyBpbnQgc2RfaW5pdF9jb250cm9scyhzdHJ1Y3QgZ3NwY2FfZGV2ICpnc3BjYV9kZXYpXFxuLS1cXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS90NjEzLmMtOTk0LVxcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3Q2MTMuYzo5OTU6XFx0djRsMl9jdHJsX2F1dG9fY2x1c3Rlcig0LCBcXHUwMDI2c2QtXFx1MDAzZWF3YiwgMCwgdHJ1ZSk7XFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvdDYxMy5jLTk5Ni1cXG4tLVxcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3RvcHJvLmM9NDg3OT1zdGF0aWMgaW50IHNkX2luaXRfY29udHJvbHMoc3RydWN0IGdzcGNhX2RldiAqZ3NwY2FfZGV2KVxcbi0tXFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvdG9wcm8uYy00OTE4LVxcdGlmIChnc3BjYV9kZXYtXFx1MDAzZWF1dG9nYWluKVxcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3RvcHJvLmM6NDkxOTpcXHRcXHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDMsIFxcdTAwMjZnc3BjYV9kZXYtXFx1MDAzZWF1dG9nYWluLCAwLCBmYWxzZSk7XFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvdG9wcm8uYy00OTIwLVxcdGVsc2VcXG4tLVxcbmRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL3pjM3h4LmM9NjQxNT1zdGF0aWMgaW50IHNkX2luaXRfY29udHJvbHMoc3RydWN0IGdzcGNhX2RldiAqZ3NwY2FfZGV2KVxcbi0tXFxuZHJpdmVycy9tZWRpYS91c2IvZ3NwY2EvemMzeHguYy02NDc0LVxcdGlmIChzZC1cXHUwMDNlc2Vuc29yID09IFNFTlNPUl9IVjcxMzFSIHx8IHNkLVxcdTAwM2VzZW5zb3IgPT0gU0VOU09SX09WNzYyMClcXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS96YzN4eC5jOjY0NzU6XFx0XFx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigyLCBcXHUwMDI2c2QtXFx1MDAzZWF1dG9nYWluLCAwLCB0cnVlKTtcXG5kcml2ZXJzL21lZGlhL3VzYi9nc3BjYS96YzN4eC5jLTY0NzYtXFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL21lZGlhL3VzYi9oYWNrcmYvaGFja3JmLmM9MTM0ND1zdGF0aWMgaW50IGhhY2tyZl9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZixcXG4tLVxcbmRyaXZlcnMvbWVkaWEvdXNiL2hhY2tyZi9oYWNrcmYuYy0xNDI5LVxcdFxcdDE3NTAwMDAsIDI4MDAwMDAwLCA1MDAwMCwgMTc1MDAwMCk7XFxuZHJpdmVycy9tZWRpYS91c2IvaGFja3JmL2hhY2tyZi5jOjE0MzA6XFx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigyLCBcXHUwMDI2ZGV2LVxcdTAwM2VyeF9iYW5kd2lkdGhfYXV0bywgMCwgZmFsc2UpO1xcbmRyaXZlcnMvbWVkaWEvdXNiL2hhY2tyZi9oYWNrcmYuYy0xNDMxLVxcdGRldi1cXHUwMDNlcnhfcmZfZ2FpbiA9IHY0bDJfY3RybF9uZXdfc3RkKFxcdTAwMjZkZXYtXFx1MDAzZXJ4X2N0cmxfaGFuZGxlcixcXG4tLVxcbmRyaXZlcnMvbWVkaWEvdXNiL2hhY2tyZi9oYWNrcmYuYy0xNDUyLVxcdFxcdDE3NTAwMDAsIDI4MDAwMDAwLCA1MDAwMCwgMTc1MDAwMCk7XFxuZHJpdmVycy9tZWRpYS91c2IvaGFja3JmL2hhY2tyZi5jOjE0NTM6XFx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigyLCBcXHUwMDI2ZGV2LVxcdTAwM2V0eF9iYW5kd2lkdGhfYXV0bywgMCwgZmFsc2UpO1xcbmRyaXZlcnMvbWVkaWEvdXNiL2hhY2tyZi9oYWNrcmYuYy0xNDU0LVxcdGRldi1cXHUwMDNldHhfbG5hX2dhaW4gPSB2NGwyX2N0cmxfbmV3X3N0ZChcXHUwMDI2ZGV2LVxcdTAwM2V0eF9jdHJsX2hhbmRsZXIsXFxuLS1cXG5kcml2ZXJzL21lZGlhL3VzYi9wd2MvcHdjLXY0bC5jPTE1MD1pbnQgcHdjX2luaXRfY29udHJvbHMoc3RydWN0IHB3Y19kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL21lZGlhL3VzYi9wd2MvcHdjLXY0bC5jLTIwMC1cXHRwZGV2LVxcdTAwM2VhdXRvX3doaXRlX2JhbGFuY2UgPSB2NGwyX2N0cmxfbmV3X2N1c3RvbShoZGwsIFxcdTAwMjZjZmcsIE5VTEwpO1xcbmRyaXZlcnMvbWVkaWEvdXNiL3B3Yy9wd2MtdjRsLmM6MjAxOlxcdC8qIGNoZWNrIGF1dG8gY29udHJvbHMgdG8gYXZvaWQgTlVMTCBkZXJlZiBpbiB2NGwyX2N0cmxfYXV0b19jbHVzdGVyICovXFxuZHJpdmVycy9tZWRpYS91c2IvcHdjL3B3Yy12NGwuYy0yMDItXFx0aWYgKCFwZGV2LVxcdTAwM2VhdXRvX3doaXRlX2JhbGFuY2UpXFxuLS1cXG5kcml2ZXJzL21lZGlhL3VzYi9wd2MvcHdjLXY0bC5jLTIxOC1cXG5kcml2ZXJzL21lZGlhL3VzYi9wd2MvcHdjLXY0bC5jOjIxOTpcXHR2NGwyX2N0cmxfYXV0b19jbHVzdGVyKDMsIFxcdTAwMjZwZGV2LVxcdTAwM2VhdXRvX3doaXRlX2JhbGFuY2UsIGF3Yl9tYW51YWwsIHRydWUpO1xcbmRyaXZlcnMvbWVkaWEvdXNiL3B3Yy9wd2MtdjRsLmMtMjIwLVxcbi0tXFxuZHJpdmVycy9tZWRpYS91c2IvcHdjL3B3Yy12NGwuYy0yNjEtXFx0XFx0LyogQ09ERUMyOiBzZXBhcmF0ZSBhdXRvIGdhaW4gXFx1MDAyNiBhdXRvIGV4cG9zdXJlICovXFxuZHJpdmVycy9tZWRpYS91c2IvcHdjL3B3Yy12NGwuYzoyNjI6XFx0XFx0djRsMl9jdHJsX2F1dG9fY2x1c3RlcigyLCBcXHUwMDI2cGRldi1cXHUwMDNlYXV0b2dhaW4sIDAsIHRydWUpO1xcbmRyaXZlcnMvbWVkaWEvdXNiL3B3Yy9wd2MtdjRsLmM6MjYzOlxcdFxcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXFx1MDAyNnBkZXYtXFx1MDAzZWV4cG9zdXJlX2F1dG8sXFxuZHJpdmVycy9tZWRpYS91c2IvcHdjL3B3Yy12NGwuYy0yNjQtXFx0XFx0XFx0XFx0ICAgICAgIFY0TDJfRVhQT1NVUkVfTUFOVUFMLCB0cnVlKTtcXG4tLVxcbmRyaXZlcnMvbWVkaWEvdXNiL3B3Yy9wd2MtdjRsLmMtMjc2LVxcdFxcdHBkZXYtXFx1MDAzZWF1dG9nYWluX2V4cG9fY2x1c3RlclsyXSA9IHBkZXYtXFx1MDAzZWV4cG9zdXJlO1xcbmRyaXZlcnMvbWVkaWEvdXNiL3B3Yy9wd2MtdjRsLmM6Mjc3OlxcdFxcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMywgcGRldi1cXHUwMDNlYXV0b2dhaW5fZXhwb19jbHVzdGVyLFxcbmRyaXZlcnMvbWVkaWEvdXNiL3B3Yy9wd2MtdjRsLmMtMjc4LVxcdFxcdFxcdFxcdCAgICAgICAwLCB0cnVlKTtcXG4tLVxcbmRyaXZlcnMvbWVkaWEvdXNiL3B3Yy9wd2MtdjRsLmMtMzA2LVxcbmRyaXZlcnMvbWVkaWEvdXNiL3B3Yy9wd2MtdjRsLmM6MzA3OlxcdHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIoMiwgXFx1MDAyNnBkZXYtXFx1MDAzZWF1dG9jb250b3VyLCAwLCBmYWxzZSk7XFxuZHJpdmVycy9tZWRpYS91c2IvcHdjL3B3Yy12NGwuYy0zMDgtXFxuLS1cXG5kcml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwyLWN0cmxzLWNvcmUuYz0yNTQ0PUVYUE9SVF9TWU1CT0wodjRsMl9jdHJsX2NsdXN0ZXIpO1xcbmRyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL3Y0bDItY3RybHMtY29yZS5jLTI1NDUtXFxuZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1jdHJscy1jb3JlLmM6MjU0Njp2b2lkIHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIodW5zaWduZWQgbmNvbnRyb2xzLCBzdHJ1Y3QgdjRsMl9jdHJsICoqY29udHJvbHMsXFxuZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1jdHJscy1jb3JlLmMtMjU0Ny1cXHRcXHRcXHQgICAgdTggbWFudWFsX3ZhbCwgYm9vbCBzZXRfdm9sYXRpbGUpXFxuLS1cXG5kcml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwyLWN0cmxzLWNvcmUuYy0yNTcxLX1cXG5kcml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwyLWN0cmxzLWNvcmUuYzoyNTcyOkVYUE9SVF9TWU1CT0wodjRsMl9jdHJsX2F1dG9fY2x1c3Rlcik7XFxuZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1jdHJscy1jb3JlLmMtMjU3My1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMjE6NDU6NDUuOTQwOTM5NjE3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjgzNTAzNTM2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgQ29udHJvbCBDbHVzdGVyIFZ1bG5lcmFiaWxpdGllcyoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhlc2UgYHY0bDJfY3RybF9jbHVzdGVyYCBhbmQgYHY0bDJfY3RybF9hdXRvX2NsdXN0ZXJgIGNhbGxzLiBUaGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhhdCB0aGV5J3JlIGJlaW5nIHVzZWQgaW4gYGRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL3ZpdmlkLWN0cmxzLmNgLiBUaGF0J3MgdGhlIHNvZnR3YXJlLWVtdWxhdGVkLCBzdXBlci1mdXp6ZWQgYHZpdmlkYCBkcml2ZXIsIHdoaWNoIGluc3RhbnRseSBwaXF1ZXMgbXkgaW50ZXJlc3QgZ2l2ZW4gaG93IGFnZ3Jlc3NpdmUgU3l6a2FsbGVyIGlzIHdpdGggaXQuIFRoYXQncyBhIHByaW1lIHRhcmdldCBmb3IgcG90ZW50aWFsIGV4cGxvaXRzLlxuXG5UaGVuLCB0aGVyZSdzIHRoZSBwcmVzZW5jZSBpbiBhIGJ1bmNoIG9mIFVTQiBkcml2ZXJzIOKAkyB0aGluZ3MgbGlrZSBhaXJzcHksIGhhY2tyZiwgZ3NwY2EsIGFuZCBwd2MuIFRoZSBmYWN0IHRoYXQgdGhlc2UgYXJlIHJlYWNoYWJsZSB2aWEgVVNCIGVtdWxhdGlvbiwgYW5kIHBvdGVudGlhbGx5IHRocm91Z2ggcmF3LWdhZGdldCBvciBTeXprYWxsZXIncyBVU0IgZnV6emluZyBjYXBhYmlsaXRpZXMsIGp1c3Qgc29saWRpZmllcyB0aGUgaW1wb3J0YW5jZSBvZiBjaGVja2luZyB0aGVtIG91dC4gVVNCIGlzIGFsd2F5cyBhIGdyZWF0IGF2ZW51ZSBmb3IgYXR0YWNraW5nIGRyaXZlcnMuXG5cblNvLCB3aGVyZSB0byBzdGFydD8gSSB0aGluayBJJ2xsIHplcm8gaW4gb24gYHZpdmlkYCBmaXJzdC4gSXQncyB0aGUgbW9zdCBleHBsaWNpdGx5IG1lbnRpb25lZCBhbmQgd2VsbC1mdXp6ZWQgZXhhbXBsZSwgc28gaXQgc2hvdWxkIGJlIGEgZ29vZCBzdGFydGluZyBwb2ludC4gSSBzaG91bGQgcHJvYmFibHkgYWxzbyBkbyBhIHF1aWNrIGF1ZGl0IG9mIHRoZSBLY29uZmlnIG9wdGlvbnMgZm9yIGB2aXZpZGAgYW5kIGZvciBhbnl0aGluZyByZWxhdGVkIHRvIGB2NGwyLWN0cmxzLWNvcmUuY2AgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3VidGxlIGNvbmZpZ3VyYXRpb24gdnVsbmVyYWJpbGl0aWVzIHRoYXQgbWF5IGV4cG9zZSBhdHRhY2sgc3VyZmFjZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1MDM2LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDIxOjQ1OjQ4Ljc3NTk3NzVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTAwMDcyNzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidjRsMi1jdHJscy1jb3JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbWVkaWFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvTWFrZWZpbGU9MTE9dmlkZW9kZXYtb2Jqc1xcdDo9XFx0djRsMi1kZXYubyB2NGwyLWlvY3RsLm8gdjRsMi1kZXZpY2UubyB2NGwyLWZoLm8gXFxcXFxcbmRyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL01ha2VmaWxlLTEyLVxcdFxcdFxcdHY0bDItZXZlbnQubyB2NGwyLXN1YmRldi5vIHY0bDItY29tbW9uLm8gXFxcXFxcbmRyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL01ha2VmaWxlOjEzOlxcdFxcdFxcdHY0bDItY3RybHMtY29yZS5vIHY0bDItY3RybHMtYXBpLm8gXFxcXFxcbmRyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL01ha2VmaWxlLTE0LVxcdFxcdFxcdHY0bDItY3RybHMtcmVxdWVzdC5vIHY0bDItY3RybHMtZGVmcy5vXFxuLS1cXG5kcml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwyLWN0cmxzLXByaXYuaD00NT1zdGF0aWMgaW5saW5lIHUzMiB1c2VyX2ZsYWdzKGNvbnN0IHN0cnVjdCB2NGwyX2N0cmwgKmN0cmwpXFxuLS1cXG5kcml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwyLWN0cmxzLXByaXYuaC01NC1cXG5kcml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwyLWN0cmxzLXByaXYuaDo1NTovKiB2NGwyLWN0cmxzLWNvcmUuYyAqL1xcbmRyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL3Y0bDItY3RybHMtcHJpdi5oLTU2LXZvaWQgY3VyX3RvX25ldyhzdHJ1Y3QgdjRsMl9jdHJsICpjdHJsKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMjE6NDU6NDguODY1OTkzMTQ2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDYzMzY3OTE2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHdoYXQgeW91J3JlIGFza2luZywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBCdWlsZCBDb25maWd1cmF0aW9uIGZvciBgdmlkZW9kZXZgKipcblxuT2theSwgc28gd2UgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgYHZpZGVvZGV2YCBtb2R1bGUsIHNwZWNpZmljYWxseSwgaXMgYmVpbmcgYnVpbHQuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIHRoZSBvYnZpb3VzIHBsYWNlczogdGhlIGBNYWtlZmlsZWAgYW5kIGBLY29uZmlnYCBmaWxlcyB0aGF0IGFyZSBkaXJlY3RseSBpbnZvbHZlZCB3aXRoIHRoZSBWNEwyIGNvcmUuIE1vcmUgc3BlY2lmaWNhbGx5LCBJJ2xsIGJlIGxvb2tpbmcgYXQ6XG5cbiogICBUaGUgYE1ha2VmaWxlYCBsb2NhdGVkIGluIGBkcml2ZXJzL21lZGlhL3Y0bDItY29yZS9NYWtlZmlsZWAuIFRoaXMgaXMgd2hlcmUgSSB3b3VsZCBleHBlY3QgdG8gZmluZCB0aGUgcnVsZXMgdGhhdCBkZWZpbmUgdGhlIGNvbXBpbGF0aW9uIGFuZCBsaW5raW5nIHByb2Nlc3MsIHNwZWNpZnlpbmcgc291cmNlIGZpbGVzLCBvYmplY3QgZmlsZXMsIGFuZCBkZXBlbmRlbmNpZXMgaW52b2x2ZWQgaW4gY3JlYXRpbmcgYHZpZGVvZGV2YC5cbiogICBUaGUgYEtjb25maWdgIGZpbGVzLCBlc3BlY2lhbGx5IGBkcml2ZXJzL21lZGlhL0tjb25maWdgIGFuZCBgZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvS2NvbmZpZ2AuIFRoZXNlIGFyZSBjcnVjaWFsLCBhcyB0aGV5IGRlc2NyaWJlIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBjb250cm9sIHdoZXRoZXIgYHZpZGVvZGV2YCBpcyBidWlsdCBhcyBhIG1vZHVsZSwgYnVpbHQtaW4sIG9yIGNvbXBsZXRlbHkgb21pdHRlZCBiYXNlZCBvbiBrZXJuZWwgY29uZmlndXJhdGlvbi4gSSdsbCBuZWVkIHRvIHRyYWNlIHRoZSBkZXBlbmRlbmNpZXMgdGhyb3VnaCB0aGVzZSBLY29uZmlnIGZpbGVzIHRvIHNlZSBleGFjdGx5IHdoYXQgb3RoZXIgb3B0aW9ucyBpbmZsdWVuY2UgdGhlIGZpbmFsIG91dGNvbWUuIEknbGwgcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgc3ltYm9scyB0aGF0IHJlbGF0ZSB0byBgdmlkZW9kZXZgIGFuZCBpdHMgZGVwZW5kZW5jaWVzIG9uIG90aGVyIG1vZHVsZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1ODc1LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMjE6NDU6NTMuNDk5Njc1ODk0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5OTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL01ha2VmaWxlXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBNYWtlZmlsZSBmb3IgdGhlIFY0TDIgY29yZVxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRjY2ZsYWdzLXkgKz0gLUkkKHNyY3RyZWUpL2RyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kc1xcbiAgIDc6XFx0Y2NmbGFncy15ICs9IC1JJChzcmN0cmVlKS9kcml2ZXJzL21lZGlhL3R1bmVyc1xcbiAgIDg6XFx0XFxuICAgOTpcXHR0dW5lci1vYmpzXFx0Oj1cXHR0dW5lci1jb3JlLm9cXG4gIDEwOlxcdFxcbiAgMTE6XFx0dmlkZW9kZXYtb2Jqc1xcdDo9XFx0djRsMi1kZXYubyB2NGwyLWlvY3RsLm8gdjRsMi1kZXZpY2UubyB2NGwyLWZoLm8gXFxcXFxcbiAgMTI6XFx0XFx0XFx0XFx0djRsMi1ldmVudC5vIHY0bDItc3ViZGV2Lm8gdjRsMi1jb21tb24ubyBcXFxcXFxuICAxMzpcXHRcXHRcXHRcXHR2NGwyLWN0cmxzLWNvcmUubyB2NGwyLWN0cmxzLWFwaS5vIFxcXFxcXG4gIDE0OlxcdFxcdFxcdFxcdHY0bDItY3RybHMtcmVxdWVzdC5vIHY0bDItY3RybHMtZGVmcy5vXFxuICAxNTpcXHRcXG4gIDE2OlxcdCMgUGxlYXNlIGtlZXAgaXQgYWxwaGFiZXRpY2FsbHkgc29ydGVkIGJ5IEtjb25maWcgbmFtZVxcbiAgMTc6XFx0IyAoZS4gZy4gTENfQUxMPUMgc29ydCBNYWtlZmlsZSlcXG4gIDE4OlxcdHZpZGVvZGV2LSQoQ09ORklHX0NPTVBBVCkgKz0gdjRsMi1jb21wYXQtaW9jdGwzMi5vXFxuICAxOTpcXHR2aWRlb2Rldi0kKENPTkZJR19NRURJQV9DT05UUk9MTEVSKSArPSB2NGwyLW1jLm9cXG4gIDIwOlxcdHZpZGVvZGV2LSQoQ09ORklHX1NQSSkgKz0gdjRsMi1zcGkub1xcbiAgMjE6XFx0dmlkZW9kZXYtJChDT05GSUdfVFJBQ0VQT0lOVFMpICs9IHY0bDItdHJhY2Uub1xcbiAgMjI6XFx0dmlkZW9kZXYtJChDT05GSUdfVklERU9fVjRMMl9JMkMpICs9IHY0bDItaTJjLm9cXG4gIDIzOlxcdFxcbiAgMjQ6XFx0IyBQbGVhc2Uga2VlcCBpdCBhbHBoYWJldGljYWxseSBzb3J0ZWQgYnkgS2NvbmZpZyBuYW1lXFxuICAyNTpcXHQjIChlLiBnLiBMQ19BTEw9QyBzb3J0IE1ha2VmaWxlKVxcbiAgMjY6XFx0XFxuICAyNzpcXHRvYmotJChDT05GSUdfVjRMMl9BU1lOQykgKz0gdjRsMi1hc3luYy5vXFxuICAyODpcXHRvYmotJChDT05GSUdfVjRMMl9DQ0kpICs9IHY0bDItY2NpLm9cXG4gIDI5OlxcdG9iai0kKENPTkZJR19WNEwyX0ZMQVNIX0xFRF9DTEFTUykgKz0gdjRsMi1mbGFzaC1sZWQtY2xhc3Mub1xcbiAgMzA6XFx0b2JqLSQoQ09ORklHX1Y0TDJfRldOT0RFKSArPSB2NGwyLWZ3bm9kZS5vXFxuICAzMTpcXHRvYmotJChDT05GSUdfVjRMMl9IMjY0KSArPSB2NGwyLWgyNjQub1xcbiAgMzI6XFx0b2JqLSQoQ09ORklHX1Y0TDJfSVNQKSArPSB2NGwyLWlzcC5vXFxuICAzMzpcXHRvYmotJChDT05GSUdfVjRMMl9KUEVHX0hFTFBFUikgKz0gdjRsMi1qcGVnLm9cXG4gIDM0OlxcdG9iai0kKENPTkZJR19WNEwyX01FTTJNRU1fREVWKSArPSB2NGwyLW1lbTJtZW0ub1xcbiAgMzU6XFx0b2JqLSQoQ09ORklHX1Y0TDJfVlA5KSArPSB2NGwyLXZwOS5vXFxuICAzNjpcXHRcXG4gIDM3OlxcdG9iai0kKENPTkZJR19WSURFT19UVU5FUikgKz0gdHVuZXIub1xcbiAgMzg6XFx0b2JqLSQoQ09ORklHX1ZJREVPX0RFVikgKz0gdjRsMi1kdi10aW1pbmdzLm8gdmlkZW9kZXYub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQyMTo0NTo1My40OTk3Mzg5NjRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTk2NjEyOTk1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeGFtaW5pbmcgdGhlIFZpZGVvIERldmljZSBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBidWlsZCBydWxlOiBgb2JqLSQoQ09ORklHX1ZJREVPX0RFVikgKz0gdjRsMi1kdi10aW1pbmdzLm8gdmlkZW9kZXYub2AuIFRoaXMgdGVsbHMgbWUgdGhhdCB0aGUgb2JqZWN0IGZpbGVzIGB2NGwyLWR2LXRpbWluZ3Mub2AgYW5kIGB2aWRlb2Rldi5vYCB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZSBidWlsZCwgYnV0IG9ubHkgaWYgYSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbiwgYENPTkZJR19WSURFT19ERVZgLCBpcyBlbmFibGVkLiBOYXR1cmFsbHksIG15IG5leHQgc3RlcCBpcyB0byBmaWd1cmUgb3V0IHdoYXQgYFZJREVPX0RFVmAgYWN0dWFsbHkgKm1lYW5zKi4gVG8gdW5kZXJzdGFuZCBpdHMgaW1wbGljYXRpb25zLCBJIG5lZWQgdG8gdHJhY2UgYmFjayBhbmQgZmluZCBpdHMgZGVmaW5pdGlvbiB3aXRoaW4gdGhlIEtjb25maWcgZmlsZXMuIFRoaXMgd2lsbCBzaGVkIGxpZ2h0IG9uIHRoZSBwdXJwb3NlIG9mIHRoZXNlIHZpZGVvLXJlbGF0ZWQgbW9kdWxlcywgd2hpY2ggaGFyZHdhcmUgb3IgZmVhdHVyZXMgdGhleSBzdXBwb3J0LCBhbmQgdW5kZXIgd2hhdCBjb25kaXRpb25zIHRoZXkncmUgaW5jbHVkZWQgaW4gdGhlIGtlcm5lbCBpbWFnZS4gVWx0aW1hdGVseSwgSSBuZWVkIGEgY2xlYXJlciBwaWN0dXJlIG9mIHdoZW4gYW5kIHdoeSB0aGVzZSBzcGVjaWZpYyBvYmplY3QgZmlsZXMgYXJlIGJlaW5nIGJ1aWx0LiBMZXQncyBzZWUgd2hhdCBLY29uZmlnIGhhcyB0byBzYXkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3MDc0LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQyMTo0NTo1NS40NjU4NzE5NTlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg2MTkxMjAyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBWSURFT19ERVZcXFxcYlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL21lZGlhXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbWVkaWEvS2NvbmZpZz0xNTc9bWVudSBcXFwiTWVkaWEgY29yZSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9tZWRpYS9LY29uZmlnLTE1OS1cXG5kcml2ZXJzL21lZGlhL0tjb25maWc6MTYwOmNvbmZpZyBWSURFT19ERVZcXG5kcml2ZXJzL21lZGlhL0tjb25maWctMTYxLVxcdHRyaXN0YXRlIFxcXCJWaWRlbzRMaW51eCBjb3JlXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQyMTo0NTo1NS41NTIwNjg1ODFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTg1MDMyMjIxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIHRoZSBzdW1tYXJ5LCByZW5kZXJlZCBhcyBhIGZpcnN0LXBlcnNvbiBhY2NvdW50IGZyb20gbXkgcGVyc3BlY3RpdmU6XG5cbioqRGl2aW5nIGludG8gdGhlIE1lZGlhIFN1YnN5c3RlbSBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkgd2l0aCB0aGlzIG1lZGlhLXJlbGF0ZWQgaXNzdWUuIExldCdzIHN0YXJ0IGJ5IG5hdmlnYXRpbmcgdG8gYGRyaXZlcnMvbWVkaWEvS2NvbmZpZ2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgYXJvdW5kIGxpbmUgMTYwLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBjb25maWd1cmF0aW9uIG9wdGlvbnMgSSBuZWVkIHRvIGJlIGF3YXJlIG9mLiBJJ20gZXNwZWNpYWxseSBrZWVuIHRvIHNlZSBpZiBzb21ldGhpbmcgbGlrZSBgTUVESUFfU1VQUE9SVGAgb3Igc29tZXRoaW5nIHNpbWlsYXIgaXMgYWxzbyByZXF1aXJlZCwgYW5kIGhvdyBpdHMgc3RhdGUgYWZmZWN0cyB0aGUgb3B0aW9ucyBpbiB0aGlzIGJsb2NrLiBHZXR0aW5nIGEgaGFuZGxlIG9uIHRoZSByZWxhdGlvbnNoaXBzIGJldHdlZW4gdGhlc2UgY29uZmlncyB3aWxsIGJlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBwcm9ibGVtLiBMZXQncyBzZWUgd2hhdCB0aGUgS2NvbmZpZyBmaWxlIHJldmVhbHMuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc0MzYsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQyMTo0NTo1Ny40MDIzOTI5NzVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODIzOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9tZWRpYS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE0NSxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE0NTpcXHRcXHQgIGNhbiBiZSB1c2VmdWwgb24gZGVidWcgb25lcy4gVGhpcyBvcHRpb24gZW5hYmxlcyBzZXZlcmFsIGR1bW15IGRyaXZlcnNcXG4gMTQ2OlxcdFxcdCAgdGhhdCBzaW11bGF0ZSByZWFsIGhhcmR3YXJlLiBWZXJ5IHVzZWZ1bCB0byB0ZXN0IHVzZXJzcGFjZVxcbiAxNDc6XFx0XFx0ICBhcHBsaWNhdGlvbnMgYW5kIHRvIHZhbGlkYXRlIGlmIHRoZSBzdWJzeXN0ZW0gY29yZSBkb2Vzbid0XFxuIDE0ODpcXHRcXHQgIGhhdmUgcmVncmVzc2lvbnMuXFxuIDE0OTpcXHRcXG4gMTUwOlxcdFxcdCAgU2F5IFkgaWYgeW91IHdhbnQgdG8gdXNlIHNvbWUgdmlydHVhbCB0ZXN0IGRyaXZlci5cXG4gMTUxOlxcdFxcbiAxNTI6XFx0XFx0ICBJbiBjYXNlIG9mIGRvdWJ0cywgc2F5IE4uXFxuIDE1MzpcXHRcXHQgIFNheSBZIHdoZW4geW91IGhhdmUgYSBzb2Z0d2FyZSBkZWZpbmVkIHJhZGlvIGRldmljZS5cXG4gMTU0OlxcdGVuZG1lbnUgIyBtZWRpYSBkZXZpY2UgdHlwZXNcXG4gMTU1OlxcdFxcbiAxNTY6XFx0XFxuIDE1NzpcXHRtZW51IFxcXCJNZWRpYSBjb3JlIHN1cHBvcnRcXFwiXFxuIDE1ODpcXHRcXHR2aXNpYmxlIGlmICFNRURJQV9TVVBQT1JUX0ZJTFRFUlxcbiAxNTk6XFx0XFxuIDE2MDpcXHRjb25maWcgVklERU9fREVWXFxuIDE2MTpcXHRcXHR0cmlzdGF0ZSBcXFwiVmlkZW80TGludXggY29yZVxcXCJcXG4gMTYyOlxcdFxcdGRlZmF1bHQgTUVESUFfQ0FNRVJBX1NVUFBPUlQgfHwgTUVESUFfQU5BTE9HX1RWX1NVUFBPUlQgfHwgTUVESUFfUkFESU9fU1VQUE9SVCB8fCBNRURJQV9TRFJfU1VQUE9SVCB8fCBNRURJQV9QTEFURk9STV9TVVBQT1JUIHx8IE1FRElBX1RFU1RfU1VQUE9SVFxcbiAxNjM6XFx0XFx0ZGVwZW5kcyBvbiAoSTJDIHx8IEkyQz1uKVxcbiAxNjQ6XFx0XFx0c2VsZWN0IFJBVElPTkFMXFxuIDE2NTpcXHRcXHRzZWxlY3QgVklERU9CVUYyX1Y0TDIgaWYgVklERU9CVUYyX0NPUkVcXG4gMTY2OlxcdFxcdGhlbHBcXG4gMTY3OlxcdFxcdCAgRW5hYmxlcyB0aGUgVjRMMiBBUEksIHVzZWQgYnkgY2FtZXJhcywgYW5hbG9nIFRWLCB2aWRlbyBncmFiYmVycyxcXG4gMTY4OlxcdFxcdCAgcmFkaW8gZGV2aWNlcyBhbmQgYnkgc29tZSBpbnB1dCBkZXZpY2VzLlxcbiAxNjk6XFx0XFxuIDE3MDpcXHRjb25maWcgTUVESUFfQ09OVFJPTExFUlxcbiAxNzE6XFx0XFx0Ym9vbCBcXFwiTWVkaWEgQ29udHJvbGxlciBBUElcXFwiXFxuIDE3MjpcXHRcXHRkZWZhdWx0IE1FRElBX0NBTUVSQV9TVVBQT1JUIHx8IE1FRElBX0FOQUxPR19UVl9TVVBQT1JUIHx8IE1FRElBX0RJR0lUQUxfVFZfU1VQUE9SVCB8fCBNRURJQV9QTEFURk9STV9TVVBQT1JUXFxuIDE3MzpcXHRcXHRoZWxwXFxuIDE3NDpcXHRcXHQgIEVuYWJsZSB0aGUgbWVkaWEgY29udHJvbGxlciBBUEkgdXNlZCB0byBxdWVyeSBtZWRpYSBkZXZpY2VzIGludGVybmFsXFxuIDE3NTpcXHRcXHQgIHRvcG9sb2d5IGFuZCBjb25maWd1cmUgaXQgZHluYW1pY2FsbHkuXFxuIDE3NjpcXHRcXG4gMTc3OlxcdFxcdCAgVGhpcyBBUEkgaXMgbW9zdGx5IHVzZWQgYnkgY2FtZXJhIGludGVyZmFjZXMgaW4gZW1iZWRkZWQgcGxhdGZvcm1zLlxcbiAxNzg6XFx0XFxuIDE3OTpcXHQjXFxuIDE4MDpcXHQjIERWQiBDb3JlXFxuIDE4MTpcXHQjXFx0T25seSBlbmFibGVzIGlmIG9uZSBvZiBEVFYgaXMgc2VsZWN0ZWRcXG4gMTgyOlxcdCNcXG4gMTgzOlxcdFxcbiAxODQ6XFx0Y29uZmlnIERWQl9DT1JFXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDIxOjQ1OjU3LjQwMjQ3Njg5NVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo5MzE2MjIxMTkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlBhdGNoIEFuYWx5c2lzOiBWNEwyIENvbnRyb2wgQ2x1c3RlciBhbmQgQXV0by1DbHVzdGVyIENoYW5nZXMgLSBXb3J0aCBGdXp6aW5nKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgZG93biB0aGlzIHBhdGNoLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZXhhbWluZSB0aGUgY29kZSBjaGFuZ2VzLCBzcGVjaWZpY2FsbHkgd2l0aGluIGB2NGwyX2N0cmxfY2x1c3RlcmAgYW5kIGB2NGwyX2N0cmxfYXV0b19jbHVzdGVyYC5cblxuSSBzZWUgdGhhdCB0aGUgb3JpZ2luYWwgaW1wbGVtZW50YXRpb24gb2YgYHY0bDJfY3RybF9jbHVzdGVyYCBoYWQgYSBgV0FSTl9PTmAgY2hlY2sgZm9yIGBuY29udHJvbHMgPT0gMCB8fCBjb250cm9sc1swXSA9PSBOVUxMYC4gVGhlIHVwZGF0ZWQgdmVyc2lvbiBoYXMgc2ltcGxpZmllZCB0aGlzIHRvIGp1c3QgYFdBUk5fT04obmNvbnRyb2xzID09IDApYCBhbmQgc3Vic2VxdWVudGx5IGFkZGVkIGEgY2hlY2sgZm9yIHRoZSBtYXN0ZXIgY29udHJvbCBiZWluZyBOVUxMLiBTaW1pbGFybHksIGluIGB2NGwyX2N0cmxfYXV0b19jbHVzdGVyYCwgdGhlcmUncyBhIHJlZmluZW1lbnQgdG8gaG93IGBtYXN0ZXJgIGlzIGFzc2lnbmVkLCBoYW5kbGluZyB0aGUgY2FzZSB3aGVyZSBgbmNvbnRyb2xzYCBtaWdodCBiZSB6ZXJvLCBvciBgY29udHJvbHNbMF1gIGlzIE5VTEwuIFRoZXJlJ3Mgbm93IGFuIGV4cGxpY2l0IGNoZWNrOiBgaWYgKCFtYXN0ZXIpIHJldHVybjtgIHdoaWNoIGF2b2lkcyBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcy4gVGhlIG9yaWdpbmFsIGNvZGUgd2FzIHBvdGVudGlhbGx5IHZ1bG5lcmFibGUgdG8gTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyBpZiBgbmNvbnRyb2xzYCB3YXMgemVyby5cblxuU28sIHRoZSBrZXkgdGFrZWF3YXkgaXMgdGhhdCB0aGUgcGF0Y2ggcHJpbWFyaWx5IGltcHJvdmVzIGVycm9yIGhhbmRsaW5nIGJ5IHByZXZlbnRpbmcgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgYW5kIHNpbXBsaWZ5aW5nIHRoZSBgV0FSTl9PTmAgY29uZGl0aW9ucy5cblxuTm93LCBjb25zaWRlcmluZyB0aGUgcGF0Y2gncyByZWFjaGFiaWxpdHkgYW5kIGZ1enppbmcgcG90ZW50aWFsLCBsZXQncyBjb25zdWx0IHRoZSBndWlkZWxpbmVzLiBUaGUgZ29hbCBpcyB0byBpZGVudGlmeSBjcmFzaGVzLCByZWdyZXNzaW9ucywgYW5kIGxhdGVudCBidWdzLiBUaGUgcGF0Y2ggdG91Y2hlcyBgZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1jdHJscy1jb3JlLmNgLCB3aGljaCBpcyBjbGVhcmx5IHBhcnQgb2YgdGhlIFY0TDIgY29yZS4gVGhpcyBpcyBzaWduaWZpY2FudCBiZWNhdXNlIFY0TDIgaXMgZXhwb3NlZCB0aHJvdWdoIHZhcmlvdXMgbWVjaGFuaXNtcywgbm90YWJseSBVU0IgZ2FkZ2V0cyAocmF3LWdhZGdldCBmdXp6aW5nKSwgYW5kIHZpcnR1YWwgbWVkaWEgZHJpdmVycyBzdWNoIGFzIGB2aXZpZGAuIFRoaXMgbWVhbnMgdGhlIGNvZGUgKmlzKiByZWFjaGFibGUgYW5kIGV4ZWN1dGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGUgZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBhbmQgYXJlIGNhbGxlZCBkdXJpbmcgZHJpdmVyIGluaXRpYWxpemF0aW9uIGFuZCBjb250cm9sIHNldHVwIGluIG51bWVyb3VzIFY0TDIgZHJpdmVycywgaW5jbHVkaW5nIFVTQiB2aWRlbyBjYXB0dXJlIGRldmljZXMuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgYWxzbyBwYXJ0IG9mIHRoZSBjb3JlLCBhbmQgc28gYW55IGNoYW5nZSBoZXJlIGlzIHZhbHVhYmxlLiBHaXZlbiB0aGUgY2hhbmdlcyB0byBydW50aW1lIGRlZmVuc2l2ZSBjaGVja3MgYW5kIGZsb3cgY29udHJvbCwgaXQgc2VlbXMgY2xlYXIgdGhpcyBpcyB3b3J0aCBmdXp6aW5nLiBUaGUgdXBkYXRlZCBlcnJvciBoYW5kbGluZyB0b3VjaGVzIG9uIHRoZSBcInJ1bnRpbWUgYXNzZXJ0aW9ucyBhbmQgZGVmZW5zaXZlIGNoZWNrc1wiIGNhdGVnb3J5LCB3aGljaCBpcyBhIGJpZyBncmVlbiBsaWdodC4gVGhlcmVmb3JlLCB0aGUgYW5zd2VyIGlzIGBXb3J0aEZ1enppbmcgPSB0cnVlYC5cblxuTmV4dCwgbGV0J3MgbmFpbCBkb3duIHRoZSBmb2N1cyBzeW1ib2xzLiBUaGUgcGF0Y2ggbW9kaWZpZXMgYHY0bDJfY3RybF9jbHVzdGVyYCBhbmQgYHY0bDJfY3RybF9hdXRvX2NsdXN0ZXJgIGRpcmVjdGx5LCBub3RoaW5nIGVsc2UuIFRoZXJlZm9yZSwgdGhvc2UgYXJlIG15IGZvY3VzIHN5bWJvbHMuIFRoZXNlIGFyZSBzcGVjaWZpYyBmdW5jdGlvbnMsIG5vdCB1YmlxdWl0b3VzLCBzbyB3ZSBjYW4gZGVmaW5lIHRoZW0gcHJlY2lzZWx5LlxuXG5GaW5hbGx5LCByZWdhcmRpbmcgYEVuYWJsZUNvbmZpZ3NgLCB0aGUgY29yZSBtb2R1bGVzIHRvdWNoZWQgYnkgdGhpcyBwYXRjaCBhcmUgZW5hYmxlZCBieSBgTUVESUFfU1VQUE9SVGAgYW5kIGBWSURFT19ERVZgLiBMZXQncyBjb25maXJtIGFueSBzcGVjaWZpY3MgcmVnYXJkaW5nIHRoZSBWaXZpZCBkcml2ZXIuIEknbGwgbmVlZCB0byBjaGVjayBgZHJpdmVycy9tZWRpYS9LY29uZmlnYCB0byBwaW5wb2ludCB3aGV0aGVyIGB2aXZpZGAgb3Igb3RoZXIgcmVsZXZhbnQgZHJpdmVycyByZXF1aXJlIGFkZGl0aW9uYWwgY29uZmlncy4gSSdtIHJlYXNvbmFibHkgc3VyZSBgTUVESUFfU1VQUE9SVGAgYW5kIGBWSURFT19ERVZgIHdpbGwgYmUgc3VmZmljaWVudCwgYnV0IEkgd2lsbCBkb3VibGUtY2hlY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4MjY3LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE2MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDIxOjQ2OjA2LjcxODcwMDIyOVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODM4MDY5NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWVudWNvbmZpZyBNRURJQV9TVVBQT1JUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbWVkaWFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9tZWRpYS9LY29uZmlnPTEwPXNvdXJjZSBcXFwiZHJpdmVycy9tZWRpYS9jZWMvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL21lZGlhL0tjb25maWctMTEtXFxuZHJpdmVycy9tZWRpYS9LY29uZmlnOjEyOm1lbnVjb25maWcgTUVESUFfU1VQUE9SVFxcbmRyaXZlcnMvbWVkaWEvS2NvbmZpZy0xMy1cXHR0cmlzdGF0ZSBcXFwiTXVsdGltZWRpYSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQyMTo0NjowNi44MDI1MTU0NzhaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjYyMDU0NDk1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqQ2hlY2tpbmcgS2VybmVsIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBpbi4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBjdXJyZW50IHN0YXRlIG9mIG1lZGlhIHN1cHBvcnQgaW4gdGhlIGtlcm5lbC4gTGV0J3Mgc3RhcnQgYnkgemVyb2luZyBpbiBvbiB0aG9zZSBjb3JlIGNvbmZpZ3VyYXRpb25zLiBJJ20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayBgTUVESUFfU1VQUE9SVGAgYW5kIGBWSURFT19ERVZgIHdpdGhpbiB0aGUgYGRyaXZlcnMvbWVkaWEvS2NvbmZpZ2AgZmlsZS4gVGhhdCdzIHVzdWFsbHkgdGhlIGJlc3QgcGxhY2UgdG8gZmluZCB0aGUgaGlnaC1sZXZlbCBmbGFncyB0aGF0IGdvdmVybiBhIGxvdCBvZiB0aGUgc3Vic3lzdGVtJ3MgYmVoYXZpb3VyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGVzZSBhcmUgZW5hYmxlZCwgZGlzYWJsZWQsIG9yIGlmIHRoZWlyIGRlcGVuZGVuY2llcyBoYXZlIGNoYW5nZWQgc2luY2UgdGhlIGxhc3QgdGltZSBJIGxvb2tlZC4gQSBxdWljayBzY2FuIHRoZXJlIHNob3VsZCBnaXZlIG1lIHRoZSBsYXkgb2YgdGhlIGxhbmQsIHdoaWNoIHdpbGwgdGhlbiBpbmZvcm0gbXkgbmV4dCBzdGVwcy4gVGhpcyBpcyBhIHNvbGlkIHN0YXJ0aW5nIHBvaW50IGZvciBhbnkgbWVkaWEtcmVsYXRlZCBpbnZlc3RpZ2F0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDE4OCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDIxOjQ2OjA5LjQyMzA2Mjk5N1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDIwMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9tZWRpYS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEwLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDEwOlxcdHNvdXJjZSBcXFwiZHJpdmVycy9tZWRpYS9jZWMvS2NvbmZpZ1xcXCJcXG4gIDExOlxcdFxcbiAgMTI6XFx0bWVudWNvbmZpZyBNRURJQV9TVVBQT1JUXFxuICAxMzpcXHRcXHR0cmlzdGF0ZSBcXFwiTXVsdGltZWRpYSBzdXBwb3J0XFxcIlxcbiAgMTQ6XFx0XFx0ZGVwZW5kcyBvbiBIQVNfSU9NRU1cXG4gIDE1OlxcdFxcdGhlbHBcXG4gIDE2OlxcdFxcdCAgSWYgeW91IHdhbnQgdG8gdXNlIG1lZGlhIGRldmljZXMsIGluY2x1ZGluZyBXZWJjYW1zLCBWaWRlbyBncmFiYmVyXFxuICAxNzpcXHRcXHQgIGRldmljZXMgYW5kL29yIFRWIGRldmljZXMsIFY0TDIgY29kZWNzLCBldGMsIGVuYWJsZSB0aGlzIG9wdGlvblxcbiAgMTg6XFx0XFx0ICBhbmQgb3RoZXIgb3B0aW9ucyBiZWxvdy5cXG4gIDE5OlxcdFxcbiAgMjA6XFx0XFx0ICBBZGRpdGlvbmFsIGluZm8gYW5kIGRvY3MgYXJlIGF2YWlsYWJsZSBvbiB0aGUgd2ViIGF0XFxuICAyMTpcXHRcXHQgIFxcdTAwM2NodHRwczovL2xpbnV4dHYub3JnXFx1MDAzZVxcbiAgMjI6XFx0XFxuICAyMzpcXHRpZiBNRURJQV9TVVBQT1JUXFxuICAyNDpcXHRcXG4gIDI1OlxcdGNvbmZpZyBNRURJQV9TVVBQT1JUX0ZJTFRFUlxcbiAgMjY6XFx0XFx0Ym9vbCBcXFwiRmlsdGVyIG1lZGlhIGRyaXZlcnNcXFwiXFxuICAyNzpcXHRcXHRkZWZhdWx0IHkgaWYgIUVYUEVSVFxcbiAgMjg6XFx0XFx0aGVscFxcbiAgMjk6XFx0XFx0ICAgQ29uZmlndXJpbmcgdGhlIG1lZGlhIHN1YnN5c3RlbSBjYW4gYmUgY29tcGxleCwgYXMgdGhlcmUgYXJlXFxuICAzMDpcXHRcXHQgICBodW5kcmVkcyBvZiBkcml2ZXJzIGFuZCBvdGhlciBjb25maWcgb3B0aW9ucy5cXG4gIDMxOlxcdFxcbiAgMzI6XFx0XFx0ICAgVGhpcyBtZW51IG9mZmVycyBvcHRpb24gdGhhdCB3aWxsIGhlbHAgdGhlIEtlcm5lbCdzIGNvbmZpZ1xcbiAgMzM6XFx0XFx0ICAgc3lzdGVtIHRvIGhpZGUgZHJpdmVycyB0aGF0IGFyZSBvdXQgb2YgdGhlIHNjb3BlIG9mIHRoZVxcbiAgMzQ6XFx0XFx0ICAgdXNlciBuZWVkcywgYW5kIGRpc2FibGluZyBjb3JlIHN1cHBvcnQgZm9yIHVudXNlZCBBUElzLlxcbiAgMzU6XFx0XFxuICAzNjpcXHRcXHQgICBJZiBub3Qgc2VsZWN0ZWQsIGFsbCBub24tb3B0aW9uYWwgbWVkaWEgY29yZSBmdW5jdGlvbmFsaXR5XFxuICAzNzpcXHRcXHQgICBuZWVkZWQgdG8gc3VwcG9ydCBtZWRpYSBkcml2ZXJzIHdpbGwgYmUgZW5hYmxlZC4gQWxzbywgYWxsXFxuICAzODpcXHRcXHQgICBtZWRpYSBkZXZpY2UgZHJpdmVycyBzaG91bGQgYmUgc2hvd24uXFxuICAzOTpcXHRcXG4gIDQwOlxcdGNvbmZpZyBNRURJQV9TVUJEUlZfQVVUT1NFTEVDVFxcbiAgNDE6XFx0XFx0Ym9vbCBcXFwiQXV0b3NlbGVjdCBhbmNpbGxhcnkgZHJpdmVycyAodHVuZXJzLCBzZW5zb3JzLCBpMmMsIHNwaSwgZnJvbnRlbmRzKVxcXCJcXG4gIDQyOlxcdFxcdGRlcGVuZHMgb24gSEFTX0lPTUVNXFxuICA0MzpcXHRcXHRzZWxlY3QgSTJDXFxuICA0NDpcXHRcXHRzZWxlY3QgSTJDX01VWFxcbiAgNDU6XFx0XFx0ZGVmYXVsdCB5IGlmIE1FRElBX1NVUFBPUlRfRklMVEVSXFxuICA0NjpcXHRcXHRoZWxwXFxuICA0NzpcXHRcXHQgIEJ5IGRlZmF1bHQsIGEgbWVkaWEgZHJpdmVyIGF1dG8tc2VsZWN0cyBhbGwgcG9zc2libGUgYW5jaWxsYXJ5XFxuICA0ODpcXHRcXHQgIGRldmljZXMgc3VjaCBhcyB0dW5lcnMsIHNlbnNvcnMsIHZpZGVvIGVuY29kZXJzL2RlY29kZXJzIGFuZFxcbiAgNDk6XFx0XFx0ICBmcm9udGVuZHMsIHRoYXQgYXJlIHVzZWQgYnkgYW55IG9mIHRoZSBzdXBwb3J0ZWQgZGV2aWNlcy5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMjE6NDY6MDkuNDIzMjA5NDk3WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU2NDIxNjEzNjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgVjRMMiBDb250cm9sIENvbXBpbGF0aW9uKipcblxuT2theSwgc28gYmFzZWQgb24gdGhlIGluaXRpYWwgaW5mb3JtYXRpb24sIGl0IGxvb2tzIGxpa2UgYE1FRElBX1NVUFBPUlRgIGFuZCBgVklERU9fREVWYCBhcmUgdGhlIGtleSBjb25maWd1cmF0aW9ucyByZXF1aXJlZCB0byBjb21waWxlIGB2NGwyLWN0cmxzLWNvcmUuY2AuIFdlICpjb3VsZCogcG90ZW50aWFsbHkgY29uc2lkZXIgYFZJREVPX1RFU1RfRFJJVkVSU2AsIGBWSURFT19WSVZJRGAsIG9yIGBVU0JfR1NQQ0FgIGlmIHdlIHdhbnRlZCB0byBnZXQgbW9yZSBzcGVjaWZpYyBkcml2ZXJzIGludm9sdmVkLCBidXQgdGhlIGNvcmUgZm91bmRhdGlvbiBzZWVtcyB0byBiZSBgTUVESUFfU1VQUE9SVGAgYW5kIGBWSURFT19ERVZgLlxuXG5MZXQncyBxdWlja2x5IHZlcmlmeSB0aGF0IGBWSURFT19ERVZgIGFjdHVhbGx5IGluY2x1ZGVzIGB2NGwyLWN0cmxzLWNvcmUuY2AuIEkgbmVlZCB0byBjb25maXJtIHRoZSBidWlsZCBwcm9jZXNzLiBMb29raW5nIGluIGBkcml2ZXJzL21lZGlhL3Y0bDItY29yZS9NYWtlZmlsZWAsIEkgc2VlOlxuXG5gb2JqLSQoQ09ORklHX1ZJREVPX0RFVikgKz0gdjRsMi1kdi10aW1pbmdzLm8gdmlkZW9kZXYub2BcbmFuZFxuYHZpZGVvZGV2LW9ianMgOj0gLi4uIHY0bDItY3RybHMtY29yZS5vIC4uLmBcblxuQWxyaWdodCwgdGhhdCBjb25maXJtcyBpdDogZW5hYmxpbmcgYm90aCBgTUVESUFfU1VQUE9SVGAgYW5kIGBWSURFT19ERVZgIHdpbGwgaW5kZWVkIGNvbXBpbGUgYHZpZGVvZGV2Lm9gLCB3aGljaCBpbiB0dXJuIGluY2x1ZGVzIGB2NGwyLWN0cmxzLWNvcmUuY2AuXG5cbk5vdywgbGV0J3MganVzdCBtYWtlIHN1cmUgZXZlcnl0aGluZyBsaW5lcyB1cCBmcm9tIHRoZSB0cmlhZ2UgcGVyc3BlY3RpdmUuIEkgbmVlZCB0byBkbyBhIGZpbmFsIHF1aWNrIGNoZWNrIHRvIGVuc3VyZSB0aGUgYW5hbHlzaXMgaXMgc291bmQ6XG5cbjEuICAqKldvcnRoRnV6emluZzogVHJ1ZSoqIC0gU291bmRzIGdvb2QsIHRoZSBwYXRjaCBzZWVtcyBwcm9taXNpbmcgZm9yIGZ1enppbmcuXG4yLiAgKipSZWFzb25pbmc6KiogQ29ycmVjdCwgaXQncyBtb2RpZnlpbmcgdmFsaWRhdGlvbiBhbmQgZXJyb3IgaGFuZGxpbmcgaW4gYHY0bDJfY3RybF9jbHVzdGVyYCBhbmQgYHY0bDJfY3RybF9hdXRvX2NsdXN0ZXJgLCB1c2VkIGluIFY0TDIgZGV2aWNlIGRyaXZlcnMsIGluY2x1ZGluZyB0aG9zZSBhY2Nlc3NpYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIGB2aXZpZGAuXG4zLiAgKipGb2N1c1N5bWJvbHM6IFtcInY0bDJfY3RybF9jbHVzdGVyXCIsIFwidjRsMl9jdHJsX2F1dG9fY2x1c3RlclwiXSoqIC0gWXVwLCB0aGUgZnVuY3Rpb25zIGlkZW50aWZpZWQgYXMgdGhlIGFyZWEgb2YgaW50ZXJlc3QgaW4gdGhlIHBhdGNoIGFyZSB0aGUgY29ycmVjdCBvbmVzLlxuNC4gICoqRW5hYmxlQ29uZmlnczogW1wiTUVESUFfU1VQUE9SVFwiLCBcIlZJREVPX0RFVlwiXSoqIC0gV2UndmUgdmVyaWZpZWQgdGhpcywgdGhpcyBpcyB3aGF0IHRoZSBhbmFseXNpcyBsYW5kZWQgb24uXG5cbk9rYXksIGV2ZXJ5dGhpbmcgY2hlY2tzIG91dCwgbGV0J3MgY2FsbCBgc2V0LXJlc3VsdHNgLiBJJ20gY29uZmlkZW50IGluIHRoZXNlIGZpbmRpbmdzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDk4OCwiT3V0cHV0VG9rZW5zIjoxMzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNTcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQyMTo0NjoxNS4wNjUzNzQzOTdaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4Njg1NzQ4MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUVESUFfU1VQUE9SVFwiLFxuICAgIFwiVklERU9fREVWXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidjRsMl9jdHJsX2NsdXN0ZXJcIixcbiAgICBcInY0bDJfY3RybF9hdXRvX2NsdXN0ZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBjb250cm9sIGZsb3cgYW5kIE5VTEwgY2hlY2tzIGluIHRoZSBjb3JlIFY0TDIgY29udHJvbCBjbHVzdGVyaW5nIGZ1bmN0aW9ucyAodjRsMl9jdHJsX2NsdXN0ZXIgYW5kIHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIpLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSBhbmQgZXhlcmNpc2VkIGR1cmluZyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdmFyaW91cyBWNEwyIGRyaXZlcnMsIGluY2x1ZGluZyB2aXJ0dWFsIGRyaXZlcnMgKHN1Y2ggYXMgdml2aWQpIGFuZCBlbXVsYXRlZCBVU0IgbWVkaWEgZGV2aWNlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNRURJQV9TVVBQT1JUXCIsXG4gICAgXCJWSURFT19ERVZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2NGwyX2N0cmxfY2x1c3RlclwiLFxuICAgIFwidjRsMl9jdHJsX2F1dG9fY2x1c3RlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNvbnRyb2wgZmxvdyBhbmQgTlVMTCBjaGVja3MgaW4gdGhlIGNvcmUgVjRMMiBjb250cm9sIGNsdXN0ZXJpbmcgZnVuY3Rpb25zICh2NGwyX2N0cmxfY2x1c3RlciBhbmQgdjRsMl9jdHJsX2F1dG9fY2x1c3RlcikuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIGFuZCBleGVyY2lzZWQgZHVyaW5nIHRoZSBpbml0aWFsaXphdGlvbiBvZiB2YXJpb3VzIFY0TDIgZHJpdmVycywgaW5jbHVkaW5nIHZpcnR1YWwgZHJpdmVycyAoc3VjaCBhcyB2aXZpZCkgYW5kIGVtdWxhdGVkIFVTQiBtZWRpYSBkZXZpY2VzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQyMTo0NjoxNS4xNTIyMzk5NFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA4NDA3NDk3MDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQyMTo0NjoxNS4xNTI4MzA2MloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjEwODQwMTU0MTI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgdjRsMl9jdHJsX2NsdXN0ZXJgIGFuZCBgdjRsMl9jdHJsX2F1dG9fY2x1c3RlcmAgdG8gZ3JhY2VmdWxseSBoYW5kbGUgY2FzZXMgd2hlcmUgYGNvbnRyb2xzWzBdYCBpcyBOVUxMIG9yIGBuY29udHJvbHMgPT0gMGAsIHByZXZlbnRpbmcgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyBhbmQgcmVtb3ZpbmcgYW4gdW5uZWNlc3NhcnkgV0FSTl9PTi4gSXQgZG9lcyBub3QgaW50cm9kdWNlLCByZWFkLCBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgc3RhY2sgb3IgaGVhcCBtZW1vcnksIG5vciBkb2VzIGl0IHBhc3MgdW5pbml0aWFsaXplZCBkYXRhIHRvIHVzZXIgc3BhY2UuIFN0YW5kYXJkIHNhbml0aXplcnMgYW5kIEtBU0FOIGFyZSBzdWZmaWNpZW50IHRvIGRldGVjdCBtZW1vcnkgc2FmZXR5IGlzc3VlcyBpbiB0aGVzZSBjb250cm9sIHBhdGhzLiBUaGVyZWZvcmUsIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAwM2M1MTIwODhkZmFlMTY5ODMzMzIzMTIyZjk3MjI0MDE2YzM4Yjc5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBTZXAgOSAyMTo0NTozNCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL3Y0bDItY3RybHMtY29yZS5jIGIvZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1jdHJscy1jb3JlLmNcbmluZGV4IDViOGE1OTRmYjllMjQuLmU3N2NlN2I1NmZjYTYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwyLWN0cmxzLWNvcmUuY1xuKysrIGIvZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1jdHJscy1jb3JlLmNcbkBAIC0yNTIxLDggKzI1MjEsMTQgQEAgdm9pZCB2NGwyX2N0cmxfY2x1c3Rlcih1bnNpZ25lZCBuY29udHJvbHMsIHN0cnVjdCB2NGwyX2N0cmwgKipjb250cm9scylcbiBcdGJvb2wgaGFzX3ZvbGF0aWxlcyA9IGZhbHNlO1xuIFx0aW50IGk7XG4gXG4tXHQvKiBUaGUgZmlyc3QgY29udHJvbCBpcyB0aGUgbWFzdGVyIGNvbnRyb2wgYW5kIGl0IG11c3Qgbm90IGJlIE5VTEwgKi9cbi1cdGlmIChXQVJOX09OKG5jb250cm9scyA9PSAwIHx8IGNvbnRyb2xzWzBdID09IE5VTEwpKVxuK1x0aWYgKFdBUk5fT04obmNvbnRyb2xzID09IDApKVxuK1x0XHRyZXR1cm47XG4rXG4rXHQvKlxuK1x0ICogVGhlIGZpcnN0IGNvbnRyb2wgaXMgdGhlIG1hc3RlciBjb250cm9sLiBJZiB0aGlzIGlzIE5VTEwgdGhlblxuK1x0ICogdGhlcmUgaXMgbm90aGluZyB0byBkby5cbitcdCAqL1xuK1x0aWYgKGNvbnRyb2xzWzBdID09IE5VTEwpXG4gXHRcdHJldHVybjtcbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5jb250cm9sczsgaSsrKSB7XG5AQCAtMjU0MCwxMiArMjU0NiwxNCBAQCBFWFBPUlRfU1lNQk9MKHY0bDJfY3RybF9jbHVzdGVyKTtcbiB2b2lkIHY0bDJfY3RybF9hdXRvX2NsdXN0ZXIodW5zaWduZWQgbmNvbnRyb2xzLCBzdHJ1Y3QgdjRsMl9jdHJsICoqY29udHJvbHMsXG4gXHRcdFx0ICAgIHU4IG1hbnVhbF92YWwsIGJvb2wgc2V0X3ZvbGF0aWxlKVxuIHtcbi1cdHN0cnVjdCB2NGwyX2N0cmwgKm1hc3RlciA9IGNvbnRyb2xzWzBdO1xuK1x0c3RydWN0IHY0bDJfY3RybCAqbWFzdGVyID0gbmNvbnRyb2xzID8gY29udHJvbHNbMF0gOiBOVUxMO1xuIFx0dTMyIGZsYWcgPSAwO1xuIFx0aW50IGk7XG4gXG4gXHR2NGwyX2N0cmxfY2x1c3RlcihuY29udHJvbHMsIGNvbnRyb2xzKTtcbiBcdFdBUk5fT04obmNvbnRyb2xzIFx1MDAzYz0gMSk7XG4rXHRpZiAoIW1hc3RlcilcbitcdFx0cmV0dXJuO1xuIFx0V0FSTl9PTihtYW51YWxfdmFsIFx1MDAzYyBtYXN0ZXItXHUwMDNlbWluaW11bSB8fCBtYW51YWxfdmFsIFx1MDAzZSBtYXN0ZXItXHUwMDNlbWF4aW11bSk7XG4gXHRXQVJOX09OKHNldF92b2xhdGlsZSBcdTAwMjZcdTAwMjYgIWhhc19vcChtYXN0ZXIsIGdfdm9sYXRpbGVfY3RybCkpO1xuIFx0bWFzdGVyLVx1MDAzZWlzX2F1dG8gPSB0cnVlO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMjE6NDY6MTUuMTUyODMxNTMxWiIsIlNlcSI6MjMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU1NTU3NDIwMDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBWaWRlbzRMaW51eCBDb250cm9sIFBhdGNoKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGV4YW1pbmUgdGhlIG1vZGlmaWNhdGlvbnMgd2l0aGluIHRoZSBgZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1jdHJscy1jb3JlLmNgIGZpbGUuIEkgc2VlIGNoYW5nZXMgaW4gYm90aCBgdjRsMl9jdHJsX2NsdXN0ZXJgIGFuZCBgdjRsMl9jdHJsX2F1dG9fY2x1c3RlcmAsIGFuZCBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoZXNlIGFsdGVyYXRpb25zLlxuXG5Mb29raW5nIGF0IGB2NGwyX2N0cmxfY2x1c3RlcmAsIGl0IGFwcGVhcnMgdGhlIG9yaWdpbmFsIGNvZGUgaGFkIGFuIGFzc2VydGlvbiByZWdhcmRpbmcgdGhlIGZpcnN0IGNvbnRyb2wgbm90IGJlaW5nIE5VTEwuIFRoZSBuZXcgdmVyc2lvbiBhY2tub3dsZWRnZXMgdGhhdCB0aGUgZmlyc3QgY29udHJvbCBtaWdodCwgaW4gZmFjdCwgYmUgTlVMTCwgYW5kIGFkanVzdHMgdGhlIGNvbmRpdGlvbmFsIGZsb3cgYWNjb3JkaW5nbHkuIFRoZSBvcmlnaW5hbCBoYWQ6XG5gYGBjXG4vKiBUaGUgZmlyc3QgY29udHJvbCBpcyB0aGUgbWFzdGVyIGNvbnRyb2wgYW5kIGl0IG11c3Qgbm90IGJlIE5VTEwgKi9cbmlmIChXQVJOX09OKG5jb250cm9scyA9PSAwIHx8IGNvbnRyb2xzWzBdID09IE5VTEwpKVxuICAgIHJldHVybjtcbmBgYFxuXG5BbmQgaXQncyBiZWVuIGNoYW5nZWQgdG86XG5cbmBgYGNcbmlmIChXQVJOX09OKG5jb250cm9scyA9PSAwKSlcbiAgICByZXR1cm47XG5cbi8qXG4gKiBUaGUgZmlyc3QgY29udHJvbCBpcyB0aGUgbWFzdGVyIGNvbnRyb2wuIElmIHRoaXMgaXMgTlVMTCB0aGVuXG4gKiB0aGVyZSBpcyBub3RoaW5nIHRvIGRvLlxuICovXG5pZiAoY29udHJvbHNbMF0gPT0gTlVMTClcbiAgICByZXR1cm47XG5gYGBcblxuVGhpcyBzdWdnZXN0cyBhIHJlZmluZW1lbnQgaW4gaGFuZGxpbmcgcG90ZW50aWFsbHkgZW1wdHkgY29udHJvbCBjbHVzdGVycy4gSSdsbCBuZWVkIHRvIGNvbnNpZGVyIHNjZW5hcmlvcyB3aGVyZSBhIGNsdXN0ZXIgbWlnaHQgbGVnaXRpbWF0ZWx5IHN0YXJ0IHdpdGhvdXQgYSBtYXN0ZXIgY29udHJvbC4gVGhlIG9sZGVyIGFzc2VydGlvbiB3b3VsZCBoYXZlIGZhaWxlZCBpZiBgY29udHJvbHNbMF1gIHdhcyBgTlVMTGAgZXZlbiBpZiBgbmNvbnRyb2xzYCB3YXMgZ3JlYXRlciB0aGFuIDAsIHdoaWxlIHRoZSBuZXcgdmVyc2lvbiBtb3JlIGV4cGxpY2l0bHkgc3RhdGVzIHdoYXQgaGFwcGVucyBpbiB0aGUgY2FzZSBvZiBhIGBOVUxMYCBtYXN0ZXIuXG5cbk1vdmluZyBvbnRvIGB2NGwyX2N0cmxfYXV0b19jbHVzdGVyYCwgdGhlIG1vc3Qgc2lnbmlmaWNhbnQgY2hhbmdlIGNvbmNlcm5zIHRoZSBoYW5kbGluZyBvZiB0aGUgbWFzdGVyIGNvbnRyb2wgd2l0aGluIHRoZSBhdXRvbWF0aWMgY2x1c3Rlci4gSW4gdGhlIG9sZCBjb2RlOlxuYGBgY1xuc3RydWN0IHY0bDJfY3RybCAqbWFzdGVyID0gY29udHJvbHNbMF07XG4uLi5cbnY0bDJfY3RybF9jbHVzdGVyKG5jb250cm9scywgY29udHJvbHMpO1xuV0FSTl9PTihuY29udHJvbHMgXHUwMDNjPSAxKTtcbldBUk5fT04obWFudWFsX3ZhbCBcdTAwM2MgbWFzdGVyLVx1MDAzZW1pbmltdW0gfHwgbWFudWFsX3ZhbCBcdTAwM2UgbWFzdGVyLVx1MDAzZW1heGltdW0pO1xuYGBgXG5cblRoZSBtYXN0ZXIgY29udHJvbCB3YXMgYWx3YXlzIGFzc3VtZWQgdG8gZXhpc3QuIFRoZSByZXZpc2VkIGNvZGU6XG5cbmBgYGNcbnN0cnVjdCB2NGwyX2N0cmwgKm1hc3RlciA9IG5jb250cm9scyA/IGNvbnRyb2xzWzBdIDogTlVMTDtcbnUzMiBmbGFnID0gMDtcbmludCBpO1xuXG52NGwyX2N0cmxfY2x1c3RlcihuY29udHJvbHMsIGNvbnRyb2xzKTtcbldBUk5fT04obmNvbnRyb2xzIFx1MDAzYz0gMSk7XG5pZiAoIW1hc3RlcilcbiAgICByZXR1cm47XG5gYGBcblxuTm93LCBpdCBleHBsaWNpdGx5IGNoZWNrcyBpZiBgbmNvbnRyb2xzYCBpcyBncmVhdGVyIHRoYW4gMCBiZWZvcmUgYXNzaWduaW5nIGBtYXN0ZXJgLiBUaGlzIGlzIGEgY3J1Y2lhbCBpbXByb3ZlbWVudCBiZWNhdXNlIGl0IHByZXZlbnRzIGEgTlVMTCBkZXJlZmVyZW5jZSBpZiB0aGUgY2x1c3RlciBpcyBlbXB0eSBvciBvbmx5IGhhcyBvbmUgY29udHJvbC4gSXQgYWxzbyBwcm92aWRlcyBmb3IgYSBiZXR0ZXIgZWFybHkgZXhpdC4gVGhlIHN1YnNlcXVlbnQgY2hlY2tzIHJlbGF0ZWQgdG8gYG1hc3Rlci1cdTAwM2VtaW5pbXVtYCBhbmQgYG1hc3Rlci1cdTAwM2VtYXhpbXVtYCBhcmUgbm93IGRlcGVuZGVudCBvbiBhIHZhbGlkIGBtYXN0ZXJgLlxuXG5UbyBmdWxseSBncmFzcCB0aGUgaW50ZW50IGFuZCBwb3RlbnRpYWwgcmFtaWZpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZSwgSSdsbCBuZWVkIHRvIGRlbHZlIGRlZXBlciBpbnRvIHRoZSBzdXJyb3VuZGluZyBjb2RlLiBJJ2xsIHVzZSBgcmVhZC1maWxlYCBvciBgZ3JlcHBlcmAgdG8gZXhhbWluZSB0aGUgY29udGV4dCBvZiB0aGVzZSBmdW5jdGlvbnMgd2l0aGluIGB2NGwyLWN0cmxzLWNvcmUuY2AsIGFuZCBwb3RlbnRpYWxseSB0cmFjZSB0aGUgY2FsbCBjaGFpbnMgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgY2x1c3RlcnMgYXJlIGNyZWF0ZWQgYW5kIHVzZWQuIEknbGwgYmUgbG9va2luZyBmb3IgY2FzZXMgd2hlcmUgdGhpcyBjb3VsZCBpbXByb3ZlIG9yIGJyZWFrIHRoaW5ncy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5IHRoZSBvcmlnaW5hbCBhc3N1bXB0aW9uIGFib3V0IGEgbWFzdGVyIGNvbnRyb2wgd2FzIGNoYW5nZWQ7IHdhcyBpdCBhIGJ1ZyBmaXgsIGFuIG9wdGltaXphdGlvbiwgb3IgYSBmZWF0dXJlIGVuaGFuY2VtZW50PyBJJ2xsIGFsc28gd2FudCB0byBsb29rIGF0IHdoZXRoZXIgdGhpcyBoYXMgYW55IGltcGFjdCBvbiBvdGhlciBwYXJ0cyBvZiB0aGUgZHJpdmVyLCBhbmQgZXNwZWNpYWxseSBhbnkgZGVwZW5kZW5jaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDQ1LCJPdXRwdXRUb2tlbnMiOjUxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDAyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMjE6NDY6MjAuNzA4NTc3Mzg4WiIsIlNlcSI6MjQsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMjk2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwyLWN0cmxzLWNvcmUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyNTE1LFxuICBcIkxpbmVDb3VudFwiOiA1NVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyNTE1OlxcdH1cXG4yNTE2OlxcdEVYUE9SVF9TWU1CT0wodjRsMl9jdHJsX3JhZGlvX2ZpbHRlcik7XFxuMjUxNzpcXHRcXG4yNTE4OlxcdC8qIENsdXN0ZXIgY29udHJvbHMgKi9cXG4yNTE5OlxcdHZvaWQgdjRsMl9jdHJsX2NsdXN0ZXIodW5zaWduZWQgbmNvbnRyb2xzLCBzdHJ1Y3QgdjRsMl9jdHJsICoqY29udHJvbHMpXFxuMjUyMDpcXHR7XFxuMjUyMTpcXHRcXHRib29sIGhhc192b2xhdGlsZXMgPSBmYWxzZTtcXG4yNTIyOlxcdFxcdGludCBpO1xcbjI1MjM6XFx0XFxuMjUyNDpcXHRcXHRpZiAoV0FSTl9PTihuY29udHJvbHMgPT0gMCkpXFxuMjUyNTpcXHRcXHRcXHRyZXR1cm47XFxuMjUyNjpcXHRcXG4yNTI3OlxcdFxcdC8qXFxuMjUyODpcXHRcXHQgKiBUaGUgZmlyc3QgY29udHJvbCBpcyB0aGUgbWFzdGVyIGNvbnRyb2wuIElmIHRoaXMgaXMgTlVMTCB0aGVuXFxuMjUyOTpcXHRcXHQgKiB0aGVyZSBpcyBub3RoaW5nIHRvIGRvLlxcbjI1MzA6XFx0XFx0ICovXFxuMjUzMTpcXHRcXHRpZiAoY29udHJvbHNbMF0gPT0gTlVMTClcXG4yNTMyOlxcdFxcdFxcdHJldHVybjtcXG4yNTMzOlxcdFxcbjI1MzQ6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG5jb250cm9sczsgaSsrKSB7XFxuMjUzNTpcXHRcXHRcXHRpZiAoY29udHJvbHNbaV0pIHtcXG4yNTM2OlxcdFxcdFxcdFxcdGNvbnRyb2xzW2ldLVxcdTAwM2VjbHVzdGVyID0gY29udHJvbHM7XFxuMjUzNzpcXHRcXHRcXHRcXHRjb250cm9sc1tpXS1cXHUwMDNlbmNvbnRyb2xzID0gbmNvbnRyb2xzO1xcbjI1Mzg6XFx0XFx0XFx0XFx0aWYgKGNvbnRyb2xzW2ldLVxcdTAwM2VmbGFncyBcXHUwMDI2IFY0TDJfQ1RSTF9GTEFHX1ZPTEFUSUxFKVxcbjI1Mzk6XFx0XFx0XFx0XFx0XFx0aGFzX3ZvbGF0aWxlcyA9IHRydWU7XFxuMjU0MDpcXHRcXHRcXHR9XFxuMjU0MTpcXHRcXHR9XFxuMjU0MjpcXHRcXHRjb250cm9sc1swXS1cXHUwMDNlaGFzX3ZvbGF0aWxlcyA9IGhhc192b2xhdGlsZXM7XFxuMjU0MzpcXHR9XFxuMjU0NDpcXHRFWFBPUlRfU1lNQk9MKHY0bDJfY3RybF9jbHVzdGVyKTtcXG4yNTQ1OlxcdFxcbjI1NDY6XFx0dm9pZCB2NGwyX2N0cmxfYXV0b19jbHVzdGVyKHVuc2lnbmVkIG5jb250cm9scywgc3RydWN0IHY0bDJfY3RybCAqKmNvbnRyb2xzLFxcbjI1NDc6XFx0XFx0XFx0XFx0ICAgIHU4IG1hbnVhbF92YWwsIGJvb2wgc2V0X3ZvbGF0aWxlKVxcbjI1NDg6XFx0e1xcbjI1NDk6XFx0XFx0c3RydWN0IHY0bDJfY3RybCAqbWFzdGVyID0gbmNvbnRyb2xzID8gY29udHJvbHNbMF0gOiBOVUxMO1xcbjI1NTA6XFx0XFx0dTMyIGZsYWcgPSAwO1xcbjI1NTE6XFx0XFx0aW50IGk7XFxuMjU1MjpcXHRcXG4yNTUzOlxcdFxcdHY0bDJfY3RybF9jbHVzdGVyKG5jb250cm9scywgY29udHJvbHMpO1xcbjI1NTQ6XFx0XFx0V0FSTl9PTihuY29udHJvbHMgXFx1MDAzYz0gMSk7XFxuMjU1NTpcXHRcXHRpZiAoIW1hc3RlcilcXG4yNTU2OlxcdFxcdFxcdHJldHVybjtcXG4yNTU3OlxcdFxcdFdBUk5fT04obWFudWFsX3ZhbCBcXHUwMDNjIG1hc3Rlci1cXHUwMDNlbWluaW11bSB8fCBtYW51YWxfdmFsIFxcdTAwM2UgbWFzdGVyLVxcdTAwM2VtYXhpbXVtKTtcXG4yNTU4OlxcdFxcdFdBUk5fT04oc2V0X3ZvbGF0aWxlIFxcdTAwMjZcXHUwMDI2ICFoYXNfb3AobWFzdGVyLCBnX3ZvbGF0aWxlX2N0cmwpKTtcXG4yNTU5OlxcdFxcdG1hc3Rlci1cXHUwMDNlaXNfYXV0byA9IHRydWU7XFxuMjU2MDpcXHRcXHRtYXN0ZXItXFx1MDAzZWhhc192b2xhdGlsZXMgPSBzZXRfdm9sYXRpbGU7XFxuMjU2MTpcXHRcXHRtYXN0ZXItXFx1MDAzZW1hbnVhbF9tb2RlX3ZhbHVlID0gbWFudWFsX3ZhbDtcXG4yNTYyOlxcdFxcdG1hc3Rlci1cXHUwMDNlZmxhZ3MgfD0gVjRMMl9DVFJMX0ZMQUdfVVBEQVRFO1xcbjI1NjM6XFx0XFxuMjU2NDpcXHRcXHRpZiAoIWlzX2N1cl9tYW51YWwobWFzdGVyKSlcXG4yNTY1OlxcdFxcdFxcdGZsYWcgPSBWNEwyX0NUUkxfRkxBR19JTkFDVElWRSB8XFxuMjU2NjpcXHRcXHRcXHRcXHQoc2V0X3ZvbGF0aWxlID8gVjRMMl9DVFJMX0ZMQUdfVk9MQVRJTEUgOiAwKTtcXG4yNTY3OlxcdFxcbjI1Njg6XFx0XFx0Zm9yIChpID0gMTsgaSBcXHUwMDNjIG5jb250cm9sczsgaSsrKVxcbjI1Njk6XFx0XFx0XFx0aWYgKGNvbnRyb2xzW2ldKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQyMTo0NjoyMC43MDg3ODI0NThaIiwiU2VxIjoyNSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTI4NDE4MjQ5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBWNEwyIENvbnRyb2wgRnJhbWV3b3JrIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJdCBzZWVtcyB3ZSdyZSBsb29raW5nIGF0IGEgcGF0Y2ggZm9yIHRoZSBWNEwyIGNvbnRyb2wgZnJhbWV3b3JrLCBzcGVjaWZpY2FsbHkgZGVhbGluZyB3aXRoIHRoZSBgdjRsMl9jdHJsX2NsdXN0ZXJgIGFuZCBgdjRsMl9jdHJsX2F1dG9fY2x1c3RlcmAgZnVuY3Rpb25zLiBUaGVzZSBhcmUgaGVscGVyIGZ1bmN0aW9ucywgdGhlIGJ1aWxkaW5nIGJsb2NrcyBmb3IgZ3JvdXBpbmcgY29udHJvbHMgdG9nZXRoZXIuIFRoZSBjb3JlIG9mIHRoaXMgcGF0Y2ggYWRkcmVzc2VzIGEgc2NlbmFyaW8gd2hlcmUgdGhlIGBjb250cm9sc2AgYXJyYXkgcGFzc2VkIHRvIHRoZXNlIGZ1bmN0aW9ucyBpcyBlaXRoZXIgZW1wdHkgKGBuY29udHJvbHMgPT0gMGApIG9yLCBjcnVjaWFsbHksIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoYXQgYXJyYXkgaXMgYSBudWxsIHBvaW50ZXIgKGBjb250cm9sc1swXSA9PSBOVUxMYCkuXG5cblRoZSBjb25jZXJuLCBhbmQgdGhlIG1vdGl2YXRpb24gZm9yIHRoaXMgcGF0Y2gsIGlzIHByZXZlbnRpbmcgY3Jhc2hlcyBvciB1bmRlc2lyYWJsZSBiZWhhdmlvciBpbiB0aGVzZSBzaXR1YXRpb25zLiBXaGF0IHRoZSBwYXRjaCBkb2VzIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6XG5cbiogICBJbiBgdjRsMl9jdHJsX2NsdXN0ZXJgLCB0aGUgZXhpc3RpbmcgYFdBUk5fT05gIGNoZWNrIGZvciBhIGBOVUxMYCBgY29udHJvbHNbMF1gIGlzIHJlbW92ZWQsIGFuZCB0aGUgZnVuY3Rpb24gbm93IHNpbXBseSByZXR1cm5zIGVhcmx5LCBncmFjZWZ1bGx5IGhhbmRsaW5nIHRoZSBjYXNlLlxuKiAgIEluIGB2NGwyX2N0cmxfYXV0b19jbHVzdGVyYCwgd2hpY2ggaXMgdHJpY2tpZXIsIGl0IGV4cGxpY2l0bHkgcHJvdGVjdHMgYWdhaW5zdCBwb3RlbnRpYWwgbnVsbCBwb2ludGVyIGRlcmVmZXJlbmNlcyBvciBvdXQtb2YtYm91bmRzIGFjY2Vzcy4gSXQncyBub3cgY2hlY2tpbmcgaWYgYG5jb250cm9scyA9PSAwYCBvciBgY29udHJvbHNbMF0gPT0gTlVMTGAgYmVmb3JlIGFjY2Vzc2luZyBtZW1iZXJzIG9mIHRoZSBgbWFzdGVyYCBjb250cm9sLlxuXG5Ob3csIHRoZSBpbXBvcnRhbnQgcGFydDogZG9lcyB0aGlzIHBhdGNoIGludHJvZHVjZSBhbnkgbmV3IHJpc2tzPyBNeSBpbml0aWFsIHRob3VnaHQgaXMgbm8sIGJ1dCB3ZSBuZWVkIHRvIGJlIHRob3JvdWdoLlxuXG4qICAgTm8gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWVzOiB0aGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBzdGFjayBvciBoZWFwIGFsbG9jYXRpb25zIGluIHRoaXMgcGF0Y2guXG4qICAgTm8gaW5mb3JtYXRpb24gbGVha3M6IHRoZXJlIGlzIG5vIGBjb3B5X3RvX3VzZXJgIG9yIGFueSBvdGhlciBtZWFucyBmb3Iga2VybmVsLXRvLXVzZXIgaW5mb3JtYXRpb24gbGVha3MuXG4qICAgTm8gcmVsaWFuY2Ugb24gdW5pbml0aWFsaXplZCBkYXRhOiB0aGVyZSBhcmUgbm8gY29uZGl0aW9uYWwgYnJhbmNoZXMgYmFzZWQgb24gdW5pbml0aWFsaXplZCBkYXRhLCBzbyB3ZSdyZSBzYWZlIHRoZXJlLlxuKiAgIEluIGZhY3QsIHRoZSBwYXRjaCdzIG1haW4gZ29hbCBpcyAqcHJldmVudGluZyogTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyB3aGljaCBpcyBhIHBvc2l0aXZlISBUaGVzZSB0eXBlcyBvZiBlcnJvcnMgYXJlIGNvdmVyZWQgYnkgc3RhbmRhcmQga2VybmVsIHJ1bnRpbWUgY2hlY2tzIGFuZCBLQVNBTi5cblxuTGV0J3MgZG91YmxlLWNoZWNrIGFueSBLTVNBTiBjb25jZXJucywgdGhvdWdoLiBTaW5jZSBLTVNBTiBpcyBkZXNpZ25lZCB0byBjYXRjaCB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBhbmQgbGVha3MgdG8gdXNlciBzcGFjZSwgdGhlIHBhdGNoIHNlZW1zIHNhZmUuIEtBU0FOIGFuZCBzdGFuZGFyZCBzYW5pdGl6ZXJzIGhhbmRsZSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzLCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCBhbmQgdXNlLWFmdGVyLWZyZWUgc2l0dWF0aW9ucyBhbnl3YXkuXG5cbkluIGNvbmNsdXNpb24sIEkgdGhpbmsgdGhpcyBwYXRjaCBpcyBhIHNhZmUgYW5kIGNvcnJlY3QgZml4LiBJJ2xsIGdldCByZWFkeSB0byBwcmVwYXJlIHRoZSB0b29sIGNhbGwgdG8gc2V0IHRoZSByZXN1bHRzIHRvICdQQVNTJy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDUxOSwiT3V0cHV0VG9rZW5zIjoxNDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNDcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQyMTo0NjoyNS45OTI5NjgzNTdaIiwiU2VxIjoyNiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDQwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGB2NGwyX2N0cmxfY2x1c3RlcmAgYW5kIGB2NGwyX2N0cmxfYXV0b19jbHVzdGVyYCB0byBncmFjZWZ1bGx5IGhhbmRsZSBjYXNlcyB3aGVyZSBgY29udHJvbHNbMF1gIGlzIE5VTEwgb3IgYG5jb250cm9scyA9PSAwYCwgcHJldmVudGluZyBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIGFuZCByZW1vdmluZyBhbiB1bm5lY2Vzc2FyeSBXQVJOX09OLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UsIHJlYWQsIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBzdGFjayBvciBoZWFwIG1lbW9yeSwgbm9yIGRvZXMgaXQgcGFzcyB1bmluaXRpYWxpemVkIGRhdGEgdG8gdXNlciBzcGFjZS4gU3RhbmRhcmQgc2FuaXRpemVycyBhbmQgS0FTQU4gYXJlIHN1ZmZpY2llbnQgdG8gZGV0ZWN0IG1lbW9yeSBzYWZldHkgaXNzdWVzIGluIHRoZXNlIGNvbnRyb2wgcGF0aHMuIFRoZXJlZm9yZSwgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGB2NGwyX2N0cmxfY2x1c3RlcmAgYW5kIGB2NGwyX2N0cmxfYXV0b19jbHVzdGVyYCB0byBncmFjZWZ1bGx5IGhhbmRsZSBjYXNlcyB3aGVyZSBgY29udHJvbHNbMF1gIGlzIE5VTEwgb3IgYG5jb250cm9scyA9PSAwYCwgcHJldmVudGluZyBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIGFuZCByZW1vdmluZyBhbiB1bm5lY2Vzc2FyeSBXQVJOX09OLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UsIHJlYWQsIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBzdGFjayBvciBoZWFwIG1lbW9yeSwgbm9yIGRvZXMgaXQgcGFzcyB1bmluaXRpYWxpemVkIGRhdGEgdG8gdXNlciBzcGFjZS4gU3RhbmRhcmQgc2FuaXRpemVycyBhbmQgS0FTQU4gYXJlIHN1ZmZpY2llbnQgdG8gZGV0ZWN0IG1lbW9yeSBzYWZldHkgaXNzdWVzIGluIHRoZXNlIGNvbnRyb2wgcGF0aHMuIFRoZXJlZm9yZSwgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowjd46p[1] Phase: Succeeded StartedAt: 2026-09-09 21:46:37 +0000 UTC FinishedAt: 2026-09-09 21:46:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjd46p[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-09-09 21:46:37 +0000 UTC FinishedAt: 2026-09-09 21:46:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjd46p[2] Phase: Succeeded StartedAt: 2026-09-09 21:46:37 +0000 UTC FinishedAt: 2026-09-10 01:27:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjd46p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["v4l2_ctrl_cluster","v4l2_ctrl_auto_cluster"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"e40cd1e7-13e0-4bca-b362-dfd662d1c328","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-09-09 21:46:37 +0000 UTC FinishedAt: 2026-09-10 01:27:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["v4l2_ctrl_cluster","v4l2_ctrl_auto_cluster"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"e40cd1e7-13e0-4bca-b362-dfd662d1c328","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowjd46p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["v4l2_ctrl_cluster","v4l2_ctrl_auto_cluster"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"e40cd1e7-13e0-4bca-b362-dfd662d1c328","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-09-09 21:46:37 +0000 UTC FinishedAt: 2026-09-09 21:46:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjd46p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["v4l2_ctrl_cluster","v4l2_ctrl_auto_cluster"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"e40cd1e7-13e0-4bca-b362-dfd662d1c328","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-09-09 21:46:37 +0000 UTC FinishedAt: 2026-09-09 21:46:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowjd46p/series-workflowjd46p-convert-artifact-2522954908/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjd46p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["v4l2_ctrl_cluster","v4l2_ctrl_auto_cluster"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"e40cd1e7-13e0-4bca-b362-dfd662d1c328","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-09-09 21:46:47 +0000 UTC FinishedAt: 2026-09-09 22:03:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjd46p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["v4l2_ctrl_cluster","v4l2_ctrl_auto_cluster"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"e40cd1e7-13e0-4bca-b362-dfd662d1c328","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-09-09 21:46:47 +0000 UTC FinishedAt: 2026-09-09 22:03:32 +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:*a0d75533-0fec-4a69-9122-6790e3db5733,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-workflowjd46p/series-workflowjd46p-convert-artifact-2522954908/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": "2b06e44e-cfd5-43ae-b1ab-f123789ce08c", "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-workflowjd46p/series-workflowjd46p-build-action-353100490/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjd46p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["v4l2_ctrl_cluster","v4l2_ctrl_auto_cluster"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"e40cd1e7-13e0-4bca-b362-dfd662d1c328","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-09-09 21:46:47 +0000 UTC FinishedAt: 2026-09-09 22:03:22 +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:*a0d75533-0fec-4a69-9122-6790e3db5733,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-workflowjd46p/series-workflowjd46p-convert-artifact-2522954908/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": "2b06e44e-cfd5-43ae-b1ab-f123789ce08c", "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-workflowjd46p/series-workflowjd46p-build-action-353100490/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjd46p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["v4l2_ctrl_cluster","v4l2_ctrl_auto_cluster"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"e40cd1e7-13e0-4bca-b362-dfd662d1c328","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-09-09 22:03:32 +0000 UTC FinishedAt: 2026-09-09 22:03:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjd46p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["v4l2_ctrl_cluster","v4l2_ctrl_auto_cluster"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"e40cd1e7-13e0-4bca-b362-dfd662d1c328","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-09-09 22:03:32 +0000 UTC FinishedAt: 2026-09-09 22:03:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjd46p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["v4l2_ctrl_cluster","v4l2_ctrl_auto_cluster"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"e40cd1e7-13e0-4bca-b362-dfd662d1c328","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-09-09 22:03:32 +0000 UTC FinishedAt: 2026-09-09 22:03:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjd46p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["v4l2_ctrl_cluster","v4l2_ctrl_auto_cluster"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"e40cd1e7-13e0-4bca-b362-dfd662d1c328","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-09-09 22:03:32 +0000 UTC FinishedAt: 2026-09-09 22:03:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"e40cd1e7-13e0-4bca-b362-dfd662d1c328","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowjd46p/series-workflowjd46p-convert-artifact-1321324763/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjd46p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["v4l2_ctrl_cluster","v4l2_ctrl_auto_cluster"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"e40cd1e7-13e0-4bca-b362-dfd662d1c328","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-09-09 22:03:43 +0000 UTC FinishedAt: 2026-09-09 22:06:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjd46p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["v4l2_ctrl_cluster","v4l2_ctrl_auto_cluster"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"e40cd1e7-13e0-4bca-b362-dfd662d1c328","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-09-09 22:03:43 +0000 UTC FinishedAt: 2026-09-09 22:06:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*2b06e44e-cfd5-43ae-b1ab-f123789ce08c,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-workflowjd46p/series-workflowjd46p-build-action-353100490/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-workflowjd46p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["v4l2_ctrl_cluster","v4l2_ctrl_auto_cluster"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"e40cd1e7-13e0-4bca-b362-dfd662d1c328","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-09-09 22:06:15 +0000 UTC FinishedAt: 2026-09-09 22:06:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjd46p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["v4l2_ctrl_cluster","v4l2_ctrl_auto_cluster"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"e40cd1e7-13e0-4bca-b362-dfd662d1c328","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-09-09 22:06:15 +0000 UTC FinishedAt: 2026-09-09 22:06:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjd46p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["v4l2_ctrl_cluster","v4l2_ctrl_auto_cluster"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"e40cd1e7-13e0-4bca-b362-dfd662d1c328","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-09-09 22:06:15 +0000 UTC FinishedAt: 2026-09-09 22:23:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjd46p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["v4l2_ctrl_cluster","v4l2_ctrl_auto_cluster"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"e40cd1e7-13e0-4bca-b362-dfd662d1c328","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-09-09 22:06:15 +0000 UTC FinishedAt: 2026-09-09 22:23:04 +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:*a0d75533-0fec-4a69-9122-6790e3db5733,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-workflowjd46p/series-workflowjd46p-convert-artifact-1321324763/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": "993e0e0d-13d2-4465-9bd4-1aa7d881909a", "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-workflowjd46p/series-workflowjd46p-build-action-1358264191/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjd46p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["v4l2_ctrl_cluster","v4l2_ctrl_auto_cluster"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"e40cd1e7-13e0-4bca-b362-dfd662d1c328","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-09-09 22:06:15 +0000 UTC FinishedAt: 2026-09-09 22:22:54 +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:*a0d75533-0fec-4a69-9122-6790e3db5733,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-workflowjd46p/series-workflowjd46p-convert-artifact-1321324763/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": "993e0e0d-13d2-4465-9bd4-1aa7d881909a", "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-workflowjd46p/series-workflowjd46p-build-action-1358264191/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjd46p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["v4l2_ctrl_cluster","v4l2_ctrl_auto_cluster"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"e40cd1e7-13e0-4bca-b362-dfd662d1c328","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-09-09 22:23:04 +0000 UTC FinishedAt: 2026-09-09 22:23:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjd46p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["v4l2_ctrl_cluster","v4l2_ctrl_auto_cluster"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"e40cd1e7-13e0-4bca-b362-dfd662d1c328","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-09-09 22:23:04 +0000 UTC FinishedAt: 2026-09-09 22:23:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjd46p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["v4l2_ctrl_cluster","v4l2_ctrl_auto_cluster"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"e40cd1e7-13e0-4bca-b362-dfd662d1c328","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-09-09 22:23:04 +0000 UTC FinishedAt: 2026-09-09 22:25:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjd46p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["v4l2_ctrl_cluster","v4l2_ctrl_auto_cluster"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"e40cd1e7-13e0-4bca-b362-dfd662d1c328","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-09-09 22:23:04 +0000 UTC FinishedAt: 2026-09-09 22:24:56 +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:*993e0e0d-13d2-4465-9bd4-1aa7d881909a,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-workflowjd46p/series-workflowjd46p-build-action-1358264191/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-workflowjd46p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["v4l2_ctrl_cluster","v4l2_ctrl_auto_cluster"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"e40cd1e7-13e0-4bca-b362-dfd662d1c328","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-09-09 22:25:06 +0000 UTC FinishedAt: 2026-09-10 01:27:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjd46p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["v4l2_ctrl_cluster","v4l2_ctrl_auto_cluster"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"e40cd1e7-13e0-4bca-b362-dfd662d1c328","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-09-09 22:25:06 +0000 UTC FinishedAt: 2026-09-10 01:27:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["v4l2_ctrl_cluster","v4l2_ctrl_auto_cluster"],"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:*2b06e44e-cfd5-43ae-b1ab-f123789ce08c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*993e0e0d-13d2-4465-9bd4-1aa7d881909a,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-workflowjd46p/series-workflowjd46p-build-action-353100490/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-workflowjd46p/series-workflowjd46p-build-action-1358264191/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowjd46p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["v4l2_ctrl_cluster","v4l2_ctrl_auto_cluster"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"e40cd1e7-13e0-4bca-b362-dfd662d1c328","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-09-09 22:25:06 +0000 UTC FinishedAt: 2026-09-09 22:25:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjd46p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["v4l2_ctrl_cluster","v4l2_ctrl_auto_cluster"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"e40cd1e7-13e0-4bca-b362-dfd662d1c328","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-09-09 22:25:06 +0000 UTC FinishedAt: 2026-09-09 22:25:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["v4l2_ctrl_cluster","v4l2_ctrl_auto_cluster"],"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-workflowjd46p/series-workflowjd46p-convert-artifact-899464404/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjd46p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["v4l2_ctrl_cluster","v4l2_ctrl_auto_cluster"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"e40cd1e7-13e0-4bca-b362-dfd662d1c328","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-09-09 22:25:06 +0000 UTC FinishedAt: 2026-09-09 22:25:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjd46p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["v4l2_ctrl_cluster","v4l2_ctrl_auto_cluster"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"e40cd1e7-13e0-4bca-b362-dfd662d1c328","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-09-09 22:25:06 +0000 UTC FinishedAt: 2026-09-09 22:25:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjd46p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["v4l2_ctrl_cluster","v4l2_ctrl_auto_cluster"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"e40cd1e7-13e0-4bca-b362-dfd662d1c328","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-09-09 22:25:06 +0000 UTC FinishedAt: 2026-09-09 22:25:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjd46p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["v4l2_ctrl_cluster","v4l2_ctrl_auto_cluster"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"e40cd1e7-13e0-4bca-b362-dfd662d1c328","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-09-09 22:25:16 +0000 UTC FinishedAt: 2026-09-10 01:27:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjd46p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["v4l2_ctrl_cluster","v4l2_ctrl_auto_cluster"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEDIA_SUPPORT","VIDEO_DEV"],"series_id":"e40cd1e7-13e0-4bca-b362-dfd662d1c328","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-09-09 22:25:16 +0000 UTC FinishedAt: 2026-09-10 01:27:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*2b06e44e-cfd5-43ae-b1ab-f123789ce08c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*993e0e0d-13d2-4465-9bd4-1aa7d881909a,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-workflowjd46p/series-workflowjd46p-build-action-353100490/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-workflowjd46p/series-workflowjd46p-build-action-1358264191/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-workflowjd46p/series-workflowjd46p-convert-artifact-899464404/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,}