Name: series-workflowwlmn2 Phase: Succeeded StartedAt: 2026-07-22 11:44:22 +0000 UTC FinishedAt: 2026-07-22 13:25:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwlmn2[0] Phase: Succeeded StartedAt: 2026-07-22 11:44:22 +0000 UTC FinishedAt: 2026-07-22 12:05:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwlmn2[0].run-triage Phase: Succeeded StartedAt: 2026-07-22 11:44:22 +0000 UTC FinishedAt: 2026-07-22 12:05:51 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "a204badd8432f93b7e862e7dac6db0fe3d65f370", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM", "KVM_INTEL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "a204badd8432f93b7e862e7dac6db0fe3d65f370", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM", "KVM_INTEL" ], "series_id": "81cbd054-c7ab-49ef-adfd-82e0ba21ec76" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "vmx_vcpu_run", "vmx_handle_exit", "__vmx_handle_exit", "handle_ept_violation", "handle_exception_nmi" ], "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+CgkJCTx0ZD4yMDI2LzA3LzIyIDEyOjA1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtLVk1fSU5URUwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2bXhfdmNwdV9ydW4mIzM0OywKICAgICYjMzQ7dm14X2hhbmRsZV9leGl0JiMzNDssCiAgICAmIzM0O19fdm14X2hhbmRsZV9leGl0JiMzNDssCiAgICAmIzM0O2hhbmRsZV9lcHRfdmlvbGF0aW9uJiMzNDssCiAgICAmIzM0O2hhbmRsZV9leGNlcHRpb25fbm1pJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBcJiMzNDttZW1vcnlcJiMzNDsgY2xvYmJlciB0byBpbmxpbmUgYXNzZW1ibHkgZm9yIFZNQ1MgcmVhZHMgYW5kIHdyaXRlcyBpbiBLVk0gVk1YLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBwcmV2ZW50cyBjb21waWxlciByZW9yZGVyaW5nIGFuZCBjYWNoaW5nIG9mIG1lbW9yeSB2YWx1ZXMgYXJvdW5kIFZNQ1Mgb3BlcmF0aW9ucywgd2hpY2ggY2FuIGxlYWQgdG8gc3VidGxlIGJ1Z3MgaW4gS1ZNIGV4ZWN1dGlvbiBmbG93LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDEyOjA1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNTY1ZjgyYzQ3MTZmYTJmMzVkZWQ0YzllMzgxOTgxNWEzZmI3MTZlYlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDIyIDEyOjA1OjA0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS92bXgvdm14X29wcy5oIGIvYXJjaC94ODYva3ZtL3ZteC92bXhfb3BzLmhcbmluZGV4IDgxNzg0YmVmYWFmNDk4Li45ZmZlMDNhMGMyMjNjNCAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS92bXgvdm14X29wcy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vdm14L3ZteF9vcHMuaFxuQEAgLTEwMSw3ICYjNDM7MTAxLDcgQEAgc3RhdGljIF9fYWx3YXlzX2lubGluZSB1bnNpZ25lZCBsb25nIF9fdm1jc19yZWFkbCh1bnNpZ25lZCBsb25nIGZpZWxkKVxuIFxuIFx0XHRcdCAgOiBbb3V0cHV0XSBcJiMzNDs9clwmIzM0OyAodmFsdWUpXG4gXHRcdFx0ICA6IFtmaWVsZF0gXCYjMzQ7clwmIzM0OyAoZmllbGQpXG4tXHRcdFx0ICA6IFwmIzM0O2NjXCYjMzQ7XG4mIzQzO1x0XHRcdCAgOiBcJiMzNDtjY1wmIzM0OywgXCYjMzQ7bWVtb3J5XCYjMzQ7XG4gXHRcdFx0ICA6IGRvX2ZhaWwsIGRvX2V4Y2VwdGlvbik7XG4gXG4gXHRyZXR1cm4gdmFsdWU7XG5AQCAtMTQ1LDcgJiM0MzsxNDUsNyBAQCBzdGF0aWMgX19hbHdheXNfaW5saW5lIHVuc2lnbmVkIGxvbmcgX192bWNzX3JlYWRsKHVuc2lnbmVkIGxvbmcgZmllbGQpXG4gXG4gXHRcdCAgICAgOiBBU01fQ0FMTF9DT05TVFJBSU5ULCBbb3V0cHV0XSBcJiMzNDs9XHUwMDI2clwmIzM0OyAodmFsdWUpXG4gXHRcdCAgICAgOiBbZmllbGRdIFwmIzM0O3JcJiMzNDsgKGZpZWxkKVxuLVx0XHQgICAgIDogXCYjMzQ7Y2NcJiMzNDspO1xuJiM0MztcdFx0ICAgICA6IFwmIzM0O2NjXCYjMzQ7LCBcJiMzNDttZW1vcnlcJiMzNDspO1xuIFx0cmV0dXJuIHZhbHVlO1xuIFxuICNlbmRpZiAvKiBDT05GSUdfQ0NfSEFTX0FTTV9HT1RPX09VVFBVVCAqL1xuQEAgLTE5Miw3ICYjNDM7MTkyLDcgQEAgZG8ge1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4gXHRhc20gZ290byhcJiMzNDsxOiBcJiMzNDsgX19zdHJpbmdpZnkoaW5zbikgXCYjMzQ7ICUwXFxuXFx0XCYjMzQ7XHRcdFx0XFxcbiBcdFx0XHQgIFwmIzM0O2puYSAlbFtlcnJvcl1cXG5cXHRcJiMzNDtcdFx0XHRcdFxcXG4gXHRcdFx0ICBfQVNNX0VYVEFCTEUoMWIsICVsW2ZhdWx0XSlcdFx0XHRcXFxuLVx0XHRcdCAgOiA6IG9wMSA6IFwmIzM0O2NjXCYjMzQ7IDogZXJyb3IsIGZhdWx0KTtcdFx0XFxcbiYjNDM7XHRcdFx0ICA6IDogb3AxIDogXCYjMzQ7Y2NcJiMzNDssIFwmIzM0O21lbW9yeVwmIzM0OyA6IGVycm9yLCBmYXVsdCk7XHRcXFxuIFx0cmV0dXJuO1x0XHRcdFx0XHRcdFx0XHRcXFxuIGVycm9yOlx0XHRcdFx0XHRcdFx0XHRcdFxcXG4gXHRpbnN0cnVtZW50YXRpb25fYmVnaW4oKTtcdFx0XHRcdFx0XFxcbkBAIC0yMDgsNyAmIzQzOzIwOCw3IEBAIGRvIHtcdFx0XHRcdFx0XHRcdFx0XHRcXFxuIFx0YXNtIGdvdG8oXCYjMzQ7MTogXCYjMzQ7ICBfX3N0cmluZ2lmeShpbnNuKSBcJiMzNDsgJTEsICUwXFxuXFx0XCYjMzQ7XHRcdFx0XFxcbiBcdFx0XHQgIFwmIzM0O2puYSAlbFtlcnJvcl1cXG5cXHRcJiMzNDtcdFx0XHRcdFxcXG4gXHRcdFx0ICBfQVNNX0VYVEFCTEUoMWIsICVsW2ZhdWx0XSlcdFx0XHRcXFxuLVx0XHRcdCAgOiA6IG9wMSwgb3AyIDogXCYjMzQ7Y2NcJiMzNDsgOiBlcnJvciwgZmF1bHQpO1x0XHRcXFxuJiM0MztcdFx0XHQgIDogOiBvcDEsIG9wMiA6IFwmIzM0O2NjXCYjMzQ7LCBcJiMzNDttZW1vcnlcJiMzNDsgOiBlcnJvciwgZmF1bHQpO1xcXG4gXHRyZXR1cm47XHRcdFx0XHRcdFx0XHRcdFxcXG4gZXJyb3I6XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiBcdGluc3RydW1lbnRhdGlvbl9iZWdpbigpO1x0XHRcdFx0XHRcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDEyOjA1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OywKICAgICYjMzQ7S1ZNX0lOVEVMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dm14X3ZjcHVfcnVuJiMzNDssCiAgICAmIzM0O3ZteF9oYW5kbGVfZXhpdCYjMzQ7LAogICAgJiMzNDtfX3ZteF9oYW5kbGVfZXhpdCYjMzQ7LAogICAgJiMzNDtoYW5kbGVfZXB0X3Zpb2xhdGlvbiYjMzQ7LAogICAgJiMzNDtoYW5kbGVfZXhjZXB0aW9uX25taSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgXCYjMzQ7bWVtb3J5XCYjMzQ7IGNsb2JiZXIgdG8gaW5saW5lIGFzc2VtYmx5IGZvciBWTUNTIHJlYWRzIGFuZCB3cml0ZXMgaW4gS1ZNIFZNWC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgcHJldmVudHMgY29tcGlsZXIgcmVvcmRlcmluZyBhbmQgY2FjaGluZyBvZiBtZW1vcnkgdmFsdWVzIGFyb3VuZCBWTUNTIG9wZXJhdGlvbnMsIHdoaWNoIGNhbiBsZWFkIHRvIHN1YnRsZSBidWdzIGluIEtWTSBleGVjdXRpb24gZmxvdy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNTY1ZjgyYzQ3MTZmYTJmMzVkZWQ0YzllMzgxOTgxNWEzZmI3MTZlYgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgSnVsIDIyIDEyOjA1OjA0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3ZteC92bXhfb3BzLmggYi9hcmNoL3g4Ni9rdm0vdm14L3ZteF9vcHMuaAppbmRleCA4MTc4NGJlZmFhZjQ5OC4uOWZmZTAzYTBjMjIzYzQgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS92bXgvdm14X29wcy5oCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS92bXgvdm14X29wcy5oCkBAIC0xMDEsNyAmIzQzOzEwMSw3IEBAIHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdW5zaWduZWQgbG9uZyBfX3ZtY3NfcmVhZGwodW5zaWduZWQgbG9uZyBmaWVsZCkKIAogCQkJICA6IFtvdXRwdXRdICYjMzQ7PXImIzM0OyAodmFsdWUpCiAJCQkgIDogW2ZpZWxkXSAmIzM0O3ImIzM0OyAoZmllbGQpCi0JCQkgIDogJiMzNDtjYyYjMzQ7CiYjNDM7CQkJICA6ICYjMzQ7Y2MmIzM0OywgJiMzNDttZW1vcnkmIzM0OwogCQkJICA6IGRvX2ZhaWwsIGRvX2V4Y2VwdGlvbik7CiAKIAlyZXR1cm4gdmFsdWU7CkBAIC0xNDUsNyAmIzQzOzE0NSw3IEBAIHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdW5zaWduZWQgbG9uZyBfX3ZtY3NfcmVhZGwodW5zaWduZWQgbG9uZyBmaWVsZCkKIAogCQkgICAgIDogQVNNX0NBTExfQ09OU1RSQUlOVCwgW291dHB1dF0gJiMzNDs9JmFtcDtyJiMzNDsgKHZhbHVlKQogCQkgICAgIDogW2ZpZWxkXSAmIzM0O3ImIzM0OyAoZmllbGQpCi0JCSAgICAgOiAmIzM0O2NjJiMzNDspOwomIzQzOwkJICAgICA6ICYjMzQ7Y2MmIzM0OywgJiMzNDttZW1vcnkmIzM0Oyk7CiAJcmV0dXJuIHZhbHVlOwogCiAjZW5kaWYgLyogQ09ORklHX0NDX0hBU19BU01fR09UT19PVVRQVVQgKi8KQEAgLTE5Miw3ICYjNDM7MTkyLDcgQEAgZG8gewkJCQkJCQkJCVwKIAlhc20gZ290bygmIzM0OzE6ICYjMzQ7IF9fc3RyaW5naWZ5KGluc24pICYjMzQ7ICUwXG5cdCYjMzQ7CQkJXAogCQkJICAmIzM0O2puYSAlbFtlcnJvcl1cblx0JiMzNDsJCQkJXAogCQkJICBfQVNNX0VYVEFCTEUoMWIsICVsW2ZhdWx0XSkJCQlcCi0JCQkgIDogOiBvcDEgOiAmIzM0O2NjJiMzNDsgOiBlcnJvciwgZmF1bHQpOwkJXAomIzQzOwkJCSAgOiA6IG9wMSA6ICYjMzQ7Y2MmIzM0OywgJiMzNDttZW1vcnkmIzM0OyA6IGVycm9yLCBmYXVsdCk7CVwKIAlyZXR1cm47CQkJCQkJCQlcCiBlcnJvcjoJCQkJCQkJCQlcCiAJaW5zdHJ1bWVudGF0aW9uX2JlZ2luKCk7CQkJCQlcCkBAIC0yMDgsNyAmIzQzOzIwOCw3IEBAIGRvIHsJCQkJCQkJCQlcCiAJYXNtIGdvdG8oJiMzNDsxOiAmIzM0OyAgX19zdHJpbmdpZnkoaW5zbikgJiMzNDsgJTEsICUwXG5cdCYjMzQ7CQkJXAogCQkJICAmIzM0O2puYSAlbFtlcnJvcl1cblx0JiMzNDsJCQkJXAogCQkJICBfQVNNX0VYVEFCTEUoMWIsICVsW2ZhdWx0XSkJCQlcCi0JCQkgIDogOiBvcDEsIG9wMiA6ICYjMzQ7Y2MmIzM0OyA6IGVycm9yLCBmYXVsdCk7CQlcCiYjNDM7CQkJICA6IDogb3AxLCBvcDIgOiAmIzM0O2NjJiMzNDssICYjMzQ7bWVtb3J5JiMzNDsgOiBlcnJvciwgZmF1bHQpO1wKIAlyZXR1cm47CQkJCQkJCQlcCiBlcnJvcjoJCQkJCQkJCQlcCiAJaW5zdHJ1bWVudGF0aW9uX2JlZ2luKCk7CQkJCQlcCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDEyOjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMjAKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAxMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBLVk0vVk1YIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdG91Y2hlcyBgYXJjaC94ODYva3ZtL3ZteC92bXhfb3BzLmhgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtBaCwgVk1YIG9wZXJhdGlvbnMuJiMzNDsgVGhhdCBmaWxlIGlzIGNlbnRyYWwgdG8gaG93IHRoZSBLVk0gaHlwZXJ2aXNvciBpbnRlcmFjdHMgd2l0aCB0aGUgaGFyZHdhcmUgdmlydHVhbGl6YXRpb24gZXh0ZW5zaW9ucy4gU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyBsaWtlIHRoZXkmIzM5O3ZlIGFkZGVkIGAmIzM0O21lbW9yeSYjMzQ7YCB0byB0aGUgY2xvYmJlciBsaXN0IHdpdGhpbiB0aGUgaW5saW5lIGFzc2VtYmx5IGZvciBgX192bWNzX3JlYWRsYCBhbmQgdGhvc2UgVk1YIGluc3RydWN0aW9uIG1hY3JvcywgbGlrZSBgdm1jc193cml0ZWxgIGFuZCB0aGVpciBpbGssIHdoaWNoIHVzZSB0aGUgYGluc24gJTBgIG9yIGBpbnNuICUxLCAlMGAgY29uc3RydWN0cy4KCk15IGV4cGVydGlzZSB0ZWxscyBtZSB0aGlzIGlzIGFsbW9zdCBjZXJ0YWlubHkgYWltZWQgYXQgZW5zdXJpbmcgcHJvcGVyIG1lbW9yeSBvcmRlcmluZy4gV2l0aCB0aGVzZSBWTUNTIHJlYWRzL3dyaXRlcywgeW91JiMzOTtyZSBkZWFsaW5nIHdpdGggdmVyeSBzZW5zaXRpdmUgaGFyZHdhcmUgc3RhdGUuIENvbXBpbGVycyBjYW4gYmUgY2xldmVyLCBwb3RlbnRpYWxseSByZW9yZGVyaW5nIGluc3RydWN0aW9ucyBvciBjYWNoaW5nIHZhbHVlcyBpbiB3YXlzIHRoYXQgYnJlYWsgdGhlIGNyaXRpY2FsIHN5bmNocm9uaXphdGlvbiBuZWVkZWQgZm9yIHZpcnR1YWxpemF0aW9uIHRvIGZ1bmN0aW9uIGNvcnJlY3RseS4gQnkgaW5jbHVkaW5nIGAmIzM0O21lbW9yeSYjMzQ7YCBpbiB0aGUgY2xvYmJlciBsaXN0LCB0aGUgcGF0Y2ggaXMgZXNzZW50aWFsbHkgdGVsbGluZyB0aGUgY29tcGlsZXIsICYjMzQ7SGV5LCBkb24mIzM5O3QgYXNzdW1lIGFueXRoaW5nIGFib3V0IHRoZSBjb250ZW50cyBvZiBtZW1vcnkgc3Vycm91bmRpbmcgdGhlc2UgaW5zdHJ1Y3Rpb25zLiBUaGV5ICptaWdodCogYmUgY2hhbmdlZCBieSB0aGUgVk1YIGluc3RydWN0aW9uLCBhbmQgeW91IG5lZWQgdG8gdHJlYXQgdGhlbSBhcyB2b2xhdGlsZS4mIzM0OyBUaGlzIG1ha2VzIHNlbnNlIHRvIG1lLiBUaGUgcGF0Y2ggaXMgcHJvYmFibHkgZml4aW5nIHBvdGVudGlhbCBjb21waWxlci1yZWxhdGVkIGJ1Z3MgcmVsYXRlZCB0byByZW9yZGVyaW5nIG9mIGluc3RydWN0aW9ucyB0aGF0IHdvdWxkIG5vcm1hbGx5IGJlIHBlcmZlY3RseSB2YWxpZCBpbiBub24tdmlydHVhbGl6ZWQgY29kZS4KCk5vdywgSSYjMzk7bGwgZGl2ZSBpbnRvIGBhcmNoL3g4Ni9rdm0vdm14L3ZteF9vcHMuaGAgaXRzZWxmIHRvIGNvbmZpcm0gbXkgdW5kZXJzdGFuZGluZyBhbmQgc2VlIHRoZSBzcGVjaWZpY3Mgb2YgdGhlIGNoYW5nZS4gVGhpcyBhZGRpdGlvbiBpcyBsaWtlbHkgdGhlIG5lY2Vzc2FyeSAmIzM0O2ZlbmNlJiMzNDsgdG8gbWFrZSBzdXJlIHRoYXQgdGhlc2UgVk1YIGluc3RydWN0aW9ucyB3b3JrIHByb3Blcmx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDEyOjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fdm1jc19yZWFkbCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS92bXgvdm14X29wcy5oJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS92bXgvdm14X29wcy5oPTc5PXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdm9pZCB2bWNzX2NoZWNrbCh1bnNpZ25lZCBsb25nIGZpZWxkKVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14X29wcy5oLTkwLVxuYXJjaC94ODYva3ZtL3ZteC92bXhfb3BzLmg6OTE6c3RhdGljIF9fYWx3YXlzX2lubGluZSB1bnNpZ25lZCBsb25nIF9fdm1jc19yZWFkbCh1bnNpZ25lZCBsb25nIGZpZWxkKVxuYXJjaC94ODYva3ZtL3ZteC92bXhfb3BzLmgtOTIte1xuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14X29wcy5oPTE1ND1zdGF0aWMgX19hbHdheXNfaW5saW5lIHUxNiB2bWNzX3JlYWQxNih1bnNpZ25lZCBsb25nIGZpZWxkKVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14X29wcy5oLTE1OC1cdFx0cmV0dXJuIGV2bWNzX3JlYWQxNihmaWVsZCk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteF9vcHMuaDoxNTk6XHRyZXR1cm4gX192bWNzX3JlYWRsKGZpZWxkKTtcbmFyY2gveDg2L2t2bS92bXgvdm14X29wcy5oLTE2MC19XG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXhfb3BzLmg9MTYyPXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdTMyIHZtY3NfcmVhZDMyKHVuc2lnbmVkIGxvbmcgZmllbGQpXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXhfb3BzLmgtMTY2LVx0XHRyZXR1cm4gZXZtY3NfcmVhZDMyKGZpZWxkKTtcbmFyY2gveDg2L2t2bS92bXgvdm14X29wcy5oOjE2NzpcdHJldHVybiBfX3ZtY3NfcmVhZGwoZmllbGQpO1xuYXJjaC94ODYva3ZtL3ZteC92bXhfb3BzLmgtMTY4LX1cbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteF9vcHMuaD0xNzA9c3RhdGljIF9fYWx3YXlzX2lubGluZSB1NjQgdm1jc19yZWFkNjQodW5zaWduZWQgbG9uZyBmaWVsZClcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteF9vcHMuaC0xNzUtI2lmZGVmIENPTkZJR19YODZfNjRcbmFyY2gveDg2L2t2bS92bXgvdm14X29wcy5oOjE3NjpcdHJldHVybiBfX3ZtY3NfcmVhZGwoZmllbGQpO1xuYXJjaC94ODYva3ZtL3ZteC92bXhfb3BzLmgtMTc3LSNlbHNlXG5hcmNoL3g4Ni9rdm0vdm14L3ZteF9vcHMuaDoxNzg6XHRyZXR1cm4gX192bWNzX3JlYWRsKGZpZWxkKSB8ICgodTY0KV9fdm1jc19yZWFkbChmaWVsZCYjNDM7MSkgXHUwMDNjXHUwMDNjIDMyKTtcbmFyY2gveDg2L2t2bS92bXgvdm14X29wcy5oLTE3OS0jZW5kaWZcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteF9vcHMuaD0xODI9c3RhdGljIF9fYWx3YXlzX2lubGluZSB1bnNpZ25lZCBsb25nIHZtY3NfcmVhZGwodW5zaWduZWQgbG9uZyBmaWVsZClcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteF9vcHMuaC0xODYtXHRcdHJldHVybiBldm1jc19yZWFkNjQoZmllbGQpO1xuYXJjaC94ODYva3ZtL3ZteC92bXhfb3BzLmg6MTg3Olx0cmV0dXJuIF9fdm1jc19yZWFkbChmaWVsZCk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteF9vcHMuaC0xODgtfVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14X29wcy5oPTI2Nj1zdGF0aWMgX19hbHdheXNfaW5saW5lIHZvaWQgdm1jc19jbGVhcl9iaXRzKHVuc2lnbmVkIGxvbmcgZmllbGQsIHUzMiBtYXNrKVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14X29wcy5oLTI3Mi1cbmFyY2gveDg2L2t2bS92bXgvdm14X29wcy5oOjI3MzpcdF9fdm1jc193cml0ZWwoZmllbGQsIF9fdm1jc19yZWFkbChmaWVsZCkgXHUwMDI2IH5tYXNrKTtcbmFyY2gveDg2L2t2bS92bXgvdm14X29wcy5oLTI3NC19XG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXhfb3BzLmg9Mjc2PXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdm9pZCB2bWNzX3NldF9iaXRzKHVuc2lnbmVkIGxvbmcgZmllbGQsIHUzMiBtYXNrKVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14X29wcy5oLTI4Mi1cbmFyY2gveDg2L2t2bS92bXgvdm14X29wcy5oOjI4MzpcdF9fdm1jc193cml0ZWwoZmllbGQsIF9fdm1jc19yZWFkbChmaWVsZCkgfCBtYXNrKTtcbmFyY2gveDg2L2t2bS92bXgvdm14X29wcy5oLTI4NC19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTI6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzkyOAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDI0OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEltcGFjdCBvZiB0aGUgTWVtb3J5IENsb2JiZXIgaW4gS1ZNIFZNWCBJbmxpbmUgQXNzZW1ibHkqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgYCYjMzQ7bWVtb3J5JiMzNDtgIGNsb2JiZXIgaW50byB0aGUgaW5saW5lIGFzc2VtYmx5IHdpdGhpbiBgX192bWNzX3JlYWRsYCBhbmQgdGhlIGB2bXhfYXNtMWAvYHZteF9hc20yYCBtYWNyb3MuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSBuZWNlc3Nhcnkgb25lLiBJdCBzdG9wcyB0aGUgY29tcGlsZXIgZnJvbSBiZWluZyBvdmVybHkgYWdncmVzc2l2ZSBpbiBjYWNoaW5nIG1lbW9yeSB2YWx1ZXMgYWNyb3NzIFZNQ1MgcmVhZHMgYW5kIHdyaXRlcy4gVGhhdCYjMzk7cyBjcnVjaWFsIGZvciBjb3JyZWN0bmVzcyBpbiB0aGlzIGNvbnRleHQuIEJ1dCB3YWl04oCmIGRvZXMgdGhpcyBhY3R1YWxseSAqY2hhbmdlKiB0aGUgZXhlY3V0aW9uIGZsb3c/IFRlY2huaWNhbGx5LCBpdCYjMzk7cyBhIGNvbXBpbGVyIGJlaGF2aW9yIGNoYW5nZSwgYnV0IHRoYXQgc3VidGx5IGFmZmVjdHMgaG93IHRoZSBjb2RlIGV4ZWN1dGVzLCBlc3BlY2lhbGx5IHdpdGggbWVtb3J5IGJhcnJpZXJzLiBUaGlzIHdhcnJhbnRzIGEgZGVlcGVyIGxvb2suCgpUaGUgbmV4dCBxdWVzdGlvbiBpcyBmdXp6aW5nLiBXb3VsZCB0aGlzIGJlIGEgZ29vZCB0YXJnZXQ/IEl0IHdvbiYjMzk7dCBzcGVjaWZpY2FsbHkgdGFyZ2V0IHRoZSBjbG9iYmVyIGl0c2VsZiwgYnV0IGl04oCZcyBhIGNvcmUgY2hhbmdlIHdpdGhpbiBLVk0gVk1YLiBXaGlsZSBmdXp6aW5nIG1pZ2h0IG5vdCBoaXQgdGhlIHByZWNpc2UgcmFjZSBjb25kaXRpb24gb3IgY29tcGlsZXIgcmVvcmRlcmluZyB3ZSYjMzk7cmUgbm93IHRyeWluZyB0byBwcmV2ZW50LCBpdCAqaXMqIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBjcml0aWNhbCBhcmVhLCBzbyBpdCYjMzk7cyBwcm9iYWJseSB3b3J0aCBpdC4KCkFscmlnaHQsIGxldCYjMzk7cyB0cnkgdG8gZXh0cmFjdCBzb21lIHJlbGV2YW50IHN5bWJvbHMgdG8gZm9jdXMgb24uIFRoaW5raW5nIGFib3V0IHRoZSBmdW5jdGlvbnMgaW52b2x2ZWQ6IGB2bWNzX3JlYWRsYCwgYHZtY3Nfd3JpdGVsYCwgYW5kIHRoZSBsaWtlIC0gdGhleSYjMzk7cmUgYWxsIGlubGluZS4gSSBjYW4gc2VlIHRoZXkgYXJlIHVzZWQgcHJldHR5IHdpZGVseSB0aHJvdWdob3V0IGBhcmNoL3g4Ni9rdm0vdm14L2AuIEkmIzM5O2xsIGZvY3VzIG9uIGBhcmNoL3g4Ni9rdm0vdm14L3ZteC5jYCB0byBzZWUgaWYgSSBjYW4gdW5kZXJzdGFuZCBob3cgdGhlc2UgbmV3IGNsb2JiZXJzIGFyZSBiZWluZyB1c2VkIGluIG1vcmUgY29uY3JldGUgZXhhbXBsZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTI6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dm1jc19yZWFkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3ZteC92bXguYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNTEwIGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTU2Mj1ub2lubGluZSB2b2lkIHZtd3JpdGVfZXJyb3IodW5zaWduZWQgbG9uZyBmaWVsZCwgdW5zaWduZWQgbG9uZyB2YWx1ZSlcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTU2NC1cdHZteF9pbnNuX2ZhaWxlZChcJiMzNDt2bXdyaXRlIGZhaWxlZDogZmllbGQ9JWx4IHZhbD0lbHggZXJyPSV1XFxuXCYjMzQ7LFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo1NjU6XHRcdFx0ZmllbGQsIHZhbHVlLCB2bWNzX3JlYWQzMihWTV9JTlNUUlVDVElPTl9FUlJPUikpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy01NjYtfVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM9NTY4PW5vaW5saW5lIHZvaWQgdm1jbGVhcl9lcnJvcihzdHJ1Y3Qgdm1jcyAqdm1jcywgdTY0IHBoeXNfYWRkcilcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTU3MC1cdHZteF9pbnNuX2ZhaWxlZChcJiMzNDt2bWNsZWFyIGZhaWxlZDogJXAvJWxseCBlcnI9JXVcXG5cJiMzNDssXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjU3MTpcdFx0XHR2bWNzLCBwaHlzX2FkZHIsIHZtY3NfcmVhZDMyKFZNX0lOU1RSVUNUSU9OX0VSUk9SKSk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTU3Mi19XG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYz01NzQ9bm9pbmxpbmUgdm9pZCB2bXB0cmxkX2Vycm9yKHN0cnVjdCB2bWNzICp2bWNzLCB1NjQgcGh5c19hZGRyKVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNTc2LVx0dm14X2luc25fZmFpbGVkKFwmIzM0O3ZtcHRybGQgZmFpbGVkOiAlcC8lbGx4IGVycj0ldVxcblwmIzM0OyxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NTc3Olx0XHRcdHZtY3MsIHBoeXNfYWRkciwgdm1jc19yZWFkMzIoVk1fSU5TVFJVQ1RJT05fRVJST1IpKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNTc4LX1cbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTg2Mz1zdGF0aWMgdTE2IHZteF9yZWFkX2d1ZXN0X3NlZ19zZWxlY3RvcihzdHJ1Y3QgdmNwdV92bXggKnZteCwgdW5zaWduZWQgc2VnKVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmMtODY3LVx0aWYgKCF2bXhfc2VnbWVudF9jYWNoZV90ZXN0X3NldCh2bXgsIHNlZywgU0VHX0ZJRUxEX1NFTCkpXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjg2ODpcdFx0KnAgPSB2bWNzX3JlYWQxNihrdm1fdm14X3NlZ21lbnRfZmllbGRzW3NlZ10uc2VsZWN0b3IpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy04NjktXHRyZXR1cm4gKnA7XG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYz04NzI9c3RhdGljIHVsb25nIHZteF9yZWFkX2d1ZXN0X3NlZ19iYXNlKHN0cnVjdCB2Y3B1X3ZteCAqdm14LCB1bnNpZ25lZCBzZWcpXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy04NzYtXHRpZiAoIXZteF9zZWdtZW50X2NhY2hlX3Rlc3Rfc2V0KHZteCwgc2VnLCBTRUdfRklFTERfQkFTRSkpXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjg3NzpcdFx0KnAgPSB2bWNzX3JlYWRsKGt2bV92bXhfc2VnbWVudF9maWVsZHNbc2VnXS5iYXNlKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtODc4LVx0cmV0dXJuICpwO1xuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM9ODgxPXN0YXRpYyB1MzIgdm14X3JlYWRfZ3Vlc3Rfc2VnX2xpbWl0KHN0cnVjdCB2Y3B1X3ZteCAqdm14LCB1bnNpZ25lZCBzZWcpXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy04ODUtXHRpZiAoIXZteF9zZWdtZW50X2NhY2hlX3Rlc3Rfc2V0KHZteCwgc2VnLCBTRUdfRklFTERfTElNSVQpKVxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo4ODY6XHRcdCpwID0gdm1jc19yZWFkMzIoa3ZtX3ZteF9zZWdtZW50X2ZpZWxkc1tzZWddLmxpbWl0KTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtODg3LVx0cmV0dXJuICpwO1xuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM9ODkwPXN0YXRpYyB1MzIgdm14X3JlYWRfZ3Vlc3Rfc2VnX2FyKHN0cnVjdCB2Y3B1X3ZteCAqdm14LCB1bnNpZ25lZCBzZWcpXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy04OTQtXHRpZiAoIXZteF9zZWdtZW50X2NhY2hlX3Rlc3Rfc2V0KHZteCwgc2VnLCBTRUdfRklFTERfQVIpKVxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo4OTU6XHRcdCpwID0gdm1jc19yZWFkMzIoa3ZtX3ZteF9zZWdtZW50X2ZpZWxkc1tzZWddLmFyX2J5dGVzKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtODk2LVx0cmV0dXJuICpwO1xuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM9MTYyNz11bnNpZ25lZCBsb25nIHZteF9nZXRfcmZsYWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTE2MzMtXHRcdGt2bV9yZWdpc3Rlcl9tYXJrX2F2YWlsYWJsZSh2Y3B1LCBWQ1BVX1JFR19SRkxBR1MpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYzoxNjM0Olx0XHRyZmxhZ3MgPSB2bWNzX3JlYWRsKEdVRVNUX1JGTEFHUyk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTE2MzUtXHRcdGlmICh2bXgtXHUwMDNlcm1vZGUudm04Nl9hY3RpdmUpIHtcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTE2Nzk9dTMyIHZteF9nZXRfaW50ZXJydXB0X3NoYWRvdyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTE2ODAte1xuYXJjaC94ODYva3ZtL3ZteC92bXguYzoxNjgxOlx0dTMyIGludGVycnVwdGliaWxpdHkgPSB2bWNzX3JlYWQzMihHVUVTVF9JTlRFUlJVUFRJQklMSVRZX0lORk8pO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy0xNjgyLVx0aW50IHJldCA9IDA7XG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYz0xNjkyPXZvaWQgdm14X3NldF9pbnRlcnJ1cHRfc2hhZG93KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgaW50IG1hc2spXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTE2OTMte1xuYXJjaC94ODYva3ZtL3ZteC92bXguYzoxNjk0Olx0dTMyIGludGVycnVwdGliaWxpdHlfb2xkID0gdm1jc19yZWFkMzIoR1VFU1RfSU5URVJSVVBUSUJJTElUWV9JTkZPKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMTY5NS1cdHUzMiBpbnRlcnJ1cHRpYmlsaXR5ID0gaW50ZXJydXB0aWJpbGl0eV9vbGQ7XG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYz0xODA0PXN0YXRpYyBpbnQgc2tpcF9lbXVsYXRlZF9pbnN0cnVjdGlvbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0xODE5LVx0ICAgIGV4aXRfcmVhc29uLmJhc2ljICE9IEVYSVRfUkVBU09OX0VQVF9NSVNDT05GSUcpIHtcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6MTgyMDpcdFx0aW5zdHJfbGVuID0gdm1jc19yZWFkMzIoVk1fRVhJVF9JTlNUUlVDVElPTl9MRU4pO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy0xODIxLVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM9MTkwOT1zdGF0aWMgdm9pZCB2bXhfY2xlYXJfaGx0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTE5MTctXHRpZiAoa3ZtX2hsdF9pbl9ndWVzdCh2Y3B1LVx1MDAzZWt2bSkgXHUwMDI2XHUwMDI2XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjE5MTg6XHRcdFx0dm1jc19yZWFkMzIoR1VFU1RfQUNUSVZJVFlfU1RBVEUpID09IEdVRVNUX0FDVElWSVRZX0hMVClcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMTkxOS1cdFx0dm1jc193cml0ZTMyKEdVRVNUX0FDVElWSVRZX1NUQVRFLCBHVUVTVF9BQ1RJVklUWV9BQ1RJVkUpO1xuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM9MTkyMj12b2lkIHZteF9pbmplY3RfZXhjZXB0aW9uKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTE5NDMtXHRcdHZtY3Nfd3JpdGVsKEdVRVNUX1BFTkRJTkdfREJHX0VYQ0VQVElPTlMsXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjE5NDQ6XHRcdFx0ICAgIHZtY3NfcmVhZGwoR1VFU1RfUEVORElOR19EQkdfRVhDRVBUSU9OUykgfCBEUjZfQlMpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy0xOTQ1LVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM9MjEyNj1pbnQgdm14X2dldF9tc3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgbXNyX2RhdGEgKm1zcl9pbmZvKVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMjEzNC1cdGNhc2UgTVNSX0ZTX0JBU0U6XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjIxMzU6XHRcdG1zcl9pbmZvLVx1MDAzZWRhdGEgPSB2bWNzX3JlYWRsKEdVRVNUX0ZTX0JBU0UpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy0yMTM2LVx0XHRicmVhaztcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMjEzNy1cdGNhc2UgTVNSX0dTX0JBU0U6XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjIxMzg6XHRcdG1zcl9pbmZvLVx1MDAzZWRhdGEgPSB2bWNzX3JlYWRsKEdVRVNUX0dTX0JBU0UpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy0yMTM5LVx0XHRicmVhaztcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTIxNjQtXHRjYXNlIE1TUl9JQTMyX1NZU0VOVEVSX0NTOlxuYXJjaC94ODYva3ZtL3ZteC92bXguYzoyMTY1Olx0XHRtc3JfaW5mby1cdTAwM2VkYXRhID0gdm1jc19yZWFkMzIoR1VFU1RfU1lTRU5URVJfQ1MpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy0yMTY2LVx0XHRicmVhaztcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMjE2Ny1cdGNhc2UgTVNSX0lBMzJfU1lTRU5URVJfRUlQOlxuYXJjaC94ODYva3ZtL3ZteC92bXguYzoyMTY4Olx0XHRtc3JfaW5mby1cdTAwM2VkYXRhID0gdm1jc19yZWFkbChHVUVTVF9TWVNFTlRFUl9FSVApO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy0yMTY5LVx0XHRicmVhaztcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMjE3MC1cdGNhc2UgTVNSX0lBMzJfU1lTRU5URVJfRVNQOlxuYXJjaC94ODYva3ZtL3ZteC92bXguYzoyMTcxOlx0XHRtc3JfaW5mby1cdTAwM2VkYXRhID0gdm1jc19yZWFkbChHVUVTVF9TWVNFTlRFUl9FU1ApO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy0yMTcyLVx0XHRicmVhaztcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTIxNzctXHRcdFx0cmV0dXJuIDE7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjIxNzg6XHRcdG1zcl9pbmZvLVx1MDAzZWRhdGEgPSB2bWNzX3JlYWQ2NChHVUVTVF9CTkRDRkdTKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMjE3OS1cdFx0YnJlYWs7XG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0yMjYxLVx0Y2FzZSBNU1JfSUEzMl9TX0NFVDpcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6MjI2MjpcdFx0bXNyX2luZm8tXHUwMDNlZGF0YSA9IHZtY3NfcmVhZGwoR1VFU1RfU19DRVQpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy0yMjYzLVx0XHRicmVhaztcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMjI2NC1cdGNhc2UgTVNSX0tWTV9JTlRFUk5BTF9HVUVTVF9TU1A6XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjIyNjU6XHRcdG1zcl9pbmZvLVx1MDAzZWRhdGEgPSB2bWNzX3JlYWRsKEdVRVNUX1NTUCk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTIyNjYtXHRcdGJyZWFrO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy0yMjY3LVx0Y2FzZSBNU1JfSUEzMl9JTlRfU1NQX1RBQjpcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6MjI2ODpcdFx0bXNyX2luZm8tXHUwMDNlZGF0YSA9IHZtY3NfcmVhZGwoR1VFU1RfSU5UUl9TU1BfVEFCTEUpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy0yMjY5LVx0XHRicmVhaztcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTI2MzU9dm9pZCB2bXhfY2FjaGVfcmVnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgZW51bSBrdm1fcmVnIHJlZylcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTI2NDItXHRjYXNlIFZDUFVfUkVHU19SU1A6XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjI2NDM6XHRcdHZjcHUtXHUwMDNlYXJjaC5yZWdzW1ZDUFVfUkVHU19SU1BdID0gdm1jc19yZWFkbChHVUVTVF9SU1ApO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy0yNjQ0LVx0XHRicmVhaztcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMjY0NS1cdGNhc2UgVkNQVV9SRUdfUklQOlxuYXJjaC94ODYva3ZtL3ZteC92bXguYzoyNjQ2Olx0XHR2Y3B1LVx1MDAzZWFyY2gucmlwID0gdm1jc19yZWFkbChHVUVTVF9SSVApO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy0yNjQ3LVx0XHRicmVhaztcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTI2NTUtXHRcdHZjcHUtXHUwMDNlYXJjaC5jcjAgXHUwMDI2PSB+Z3Vlc3Rfb3duZWRfYml0cztcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6MjY1NjpcdFx0dmNwdS1cdTAwM2VhcmNoLmNyMCB8PSB2bWNzX3JlYWRsKEdVRVNUX0NSMCkgXHUwMDI2IGd1ZXN0X293bmVkX2JpdHM7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTI2NTctXHRcdGJyZWFrO1xuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMjY2My1cdFx0aWYgKCEoZXhlY19jb250cm9sc19nZXQodG9fdm14KHZjcHUpKSBcdTAwMjYgQ1BVX0JBU0VEX0NSM19MT0FEX0VYSVRJTkcpKVxuYXJjaC94ODYva3ZtL3ZteC92bXguYzoyNjY0Olx0XHRcdHZjcHUtXHUwMDNlYXJjaC5jcjMgPSB2bWNzX3JlYWRsKEdVRVNUX0NSMyk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTI2NjUtXHRcdGJyZWFrO1xuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMjY2OS1cdFx0dmNwdS1cdTAwM2VhcmNoLmNyNCBcdTAwMjY9IH5ndWVzdF9vd25lZF9iaXRzO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYzoyNjcwOlx0XHR2Y3B1LVx1MDAzZWFyY2guY3I0IHw9IHZtY3NfcmVhZGwoR1VFU1RfQ1I0KSBcdTAwMjYgZ3Vlc3Rfb3duZWRfYml0cztcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMjY3MS1cdFx0YnJlYWs7XG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYz0zMTMxPXN0YXRpYyB2b2lkIGVudGVyX3Btb2RlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTMxNTAtXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjMxNTE6XHRmbGFncyA9IHZtY3NfcmVhZGwoR1VFU1RfUkZMQUdTKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMzE1Mi1cdGZsYWdzIFx1MDAyNj0gUk1PREVfR1VFU1RfT1dORURfRUZMQUdTX0JJVFM7XG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0zMTU1LVxuYXJjaC94ODYva3ZtL3ZteC92bXguYzozMTU2Olx0dm1jc193cml0ZWwoR1VFU1RfQ1I0LCAodm1jc19yZWFkbChHVUVTVF9DUjQpIFx1MDAyNiB+WDg2X0NSNF9WTUUpIHxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6MzE1NzpcdFx0XHQodm1jc19yZWFkbChDUjRfUkVBRF9TSEFET1cpIFx1MDAyNiBYODZfQ1I0X1ZNRSkpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy0zMTU4LVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM9MzIwMT1zdGF0aWMgdm9pZCBlbnRlcl9ybW9kZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0zMjMxLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYzozMjMyOlx0ZmxhZ3MgPSB2bWNzX3JlYWRsKEdVRVNUX1JGTEFHUyk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTMyMzMtXHR2bXgtXHUwMDNlcm1vZGUuc2F2ZV9yZmxhZ3MgPSBmbGFncztcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTMyMzctXHR2bWNzX3dyaXRlbChHVUVTVF9SRkxBR1MsIGZsYWdzKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6MzIzODpcdHZtY3Nfd3JpdGVsKEdVRVNUX0NSNCwgdm1jc19yZWFkbChHVUVTVF9DUjQpIHwgWDg2X0NSNF9WTUUpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy0zMjM5LVx0dm14X3VwZGF0ZV9leGNlcHRpb25fYml0bWFwKHZjcHUpO1xuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM9MzI3ND1zdGF0aWMgdm9pZCBlbnRlcl9sbW9kZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0zMjc5LVxuYXJjaC94ODYva3ZtL3ZteC92bXguYzozMjgwOlx0Z3Vlc3RfdHJfYXIgPSB2bWNzX3JlYWQzMihHVUVTVF9UUl9BUl9CWVRFUyk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTMyODEtXHRpZiAoKGd1ZXN0X3RyX2FyIFx1MDAyNiBWTVhfQVJfVFlQRV9NQVNLKSAhPSBWTVhfQVJfVFlQRV9CVVNZXzY0X1RTUykge1xuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM9MzQxMT12b2lkIGVwdF9zYXZlX3BkcHRycyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0zNDE1LVxuYXJjaC94ODYva3ZtL3ZteC92bXguYzozNDE2Olx0dmNwdS1cdTAwM2VhcmNoLnBkcHRyc1swXSA9IHZtY3NfcmVhZDY0KEdVRVNUX1BEUFRSMCk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjM0MTc6XHR2Y3B1LVx1MDAzZWFyY2gucGRwdHJzWzFdID0gdm1jc19yZWFkNjQoR1VFU1RfUERQVFIxKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6MzQxODpcdHZjcHUtXHUwMDNlYXJjaC5wZHB0cnNbMl0gPSB2bWNzX3JlYWQ2NChHVUVTVF9QRFBUUjIpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYzozNDE5Olx0dmNwdS1cdTAwM2VhcmNoLnBkcHRyc1szXSA9IHZtY3NfcmVhZDY0KEdVRVNUX1BEUFRSMyk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTM0MjAtXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYz0zNjkwPXN0YXRpYyBpbnQgX192bXhfZ2V0X2NwbChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGJvb2wgbm9fY2FjaGUpXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0zNjk4LVx0aWYgKG5vX2NhY2hlKVxuYXJjaC94ODYva3ZtL3ZteC92bXguYzozNjk5Olx0XHRhciA9IHZtY3NfcmVhZDMyKEdVRVNUX1NTX0FSX0JZVEVTKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMzcwMC1cdGVsc2Vcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTM3ODQ9dm9pZCB2bXhfZ2V0X2lkdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBkZXNjX3B0ciAqZHQpXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTM3ODUte1xuYXJjaC94ODYva3ZtL3ZteC92bXguYzozNzg2Olx0ZHQtXHUwMDNlc2l6ZSA9IHZtY3NfcmVhZDMyKEdVRVNUX0lEVFJfTElNSVQpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYzozNzg3Olx0ZHQtXHUwMDNlYWRkcmVzcyA9IHZtY3NfcmVhZGwoR1VFU1RfSURUUl9CQVNFKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMzc4OC19XG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYz0zNzk2PXZvaWQgdm14X2dldF9nZHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgZGVzY19wdHIgKmR0KVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0zNzk3LXtcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6Mzc5ODpcdGR0LVx1MDAzZXNpemUgPSB2bWNzX3JlYWQzMihHVUVTVF9HRFRSX0xJTUlUKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6Mzc5OTpcdGR0LVx1MDAzZWFkZHJlc3MgPSB2bWNzX3JlYWRsKEdVRVNUX0dEVFJfQkFTRSk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTM4MDAtfVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM9NTEwOD12b2lkIHZteF9lbmFibGVfbm1pX3dpbmRvdyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy01MTEwLVx0aWYgKCFlbmFibGVfdm5taSB8fFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo1MTExOlx0ICAgIHZtY3NfcmVhZDMyKEdVRVNUX0lOVEVSUlVQVElCSUxJVFlfSU5GTykgXHUwMDI2IEdVRVNUX0lOVFJfU1RBVEVfU1RJKSB7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTUxMTItXHRcdHZteF9lbmFibGVfaXJxX3dpbmRvdyh2Y3B1KTtcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTUxNzg9Ym9vbCB2bXhfZ2V0X25taV9tYXNrKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTUxODYtXHRcdHJldHVybiBmYWxzZTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NTE4NzpcdG1hc2tlZCA9IHZtY3NfcmVhZDMyKEdVRVNUX0lOVEVSUlVQVElCSUxJVFlfSU5GTykgXHUwMDI2IEdVRVNUX0lOVFJfU1RBVEVfTk1JO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy01MTg4LVx0dm14LVx1MDAzZWxvYWRlZF92bWNzLVx1MDAzZW5taV9rbm93bl91bm1hc2tlZCA9ICFtYXNrZWQ7XG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYz01MjEyPWJvb2wgdm14X25taV9ibG9ja2VkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTUyMTktXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjUyMjA6XHRyZXR1cm4gKHZtY3NfcmVhZDMyKEdVRVNUX0lOVEVSUlVQVElCSUxJVFlfSU5GTykgXHUwMDI2XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTUyMjEtXHRcdChHVUVTVF9JTlRSX1NUQVRFX01PVl9TUyB8IEdVRVNUX0lOVFJfU1RBVEVfU1RJIHxcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTUyMzc9Ym9vbCBfX3ZteF9pbnRlcnJ1cHRfYmxvY2tlZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy01MjM5LVx0cmV0dXJuICEodm14X2dldF9yZmxhZ3ModmNwdSkgXHUwMDI2IFg4Nl9FRkxBR1NfSUYpIHx8XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjUyNDA6XHQgICAgICAgKHZtY3NfcmVhZDMyKEdVRVNUX0lOVEVSUlVQVElCSUxJVFlfSU5GTykgXHUwMDI2XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTUyNDEtXHRcdChHVUVTVF9JTlRSX1NUQVRFX1NUSSB8IEdVRVNUX0lOVFJfU1RBVEVfTU9WX1NTKSk7XG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYz01Mjk2PXN0YXRpYyBib29sIHJtb2RlX2V4Y2VwdGlvbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGludCB2ZWMpXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy01MzA0LVx0XHR0b192bXgodmNwdSktXHUwMDNldmNwdS5hcmNoLmV2ZW50X2V4aXRfaW5zdF9sZW4gPVxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo1MzA1Olx0XHRcdHZtY3NfcmVhZDMyKFZNX0VYSVRfSU5TVFJVQ1RJT05fTEVOKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNTMwNi1cdFx0aWYgKHZjcHUtXHUwMDNlZ3Vlc3RfZGVidWcgXHUwMDI2IEtWTV9HVUVTVERCR19VU0VfU1dfQlApXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYz01NDI1PXN0YXRpYyBpbnQgaGFuZGxlX2V4Y2VwdGlvbl9ubWkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNTQ3MC1cdGlmIChpbnRyX2luZm8gXHUwMDI2IElOVFJfSU5GT19ERUxJVkVSX0NPREVfTUFTSylcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NTQ3MTpcdFx0ZXJyb3JfY29kZSA9IHZtY3NfcmVhZDMyKFZNX0VYSVRfSU5UUl9FUlJPUl9DT0RFKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNTQ3Mi1cbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTU1MzQtXHRcdGt2bV9ydW4tXHUwMDNlZGVidWcuYXJjaC5kcjYgPSBkcjYgfCBEUjZfQUNUSVZFX0xPVztcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NTUzNTpcdFx0a3ZtX3J1bi1cdTAwM2VkZWJ1Zy5hcmNoLmRyNyA9IHZtY3NfcmVhZGwoR1VFU1RfRFI3KTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNTUzNi1cdFx0ZmFsbHRocm91Z2g7XG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy01NTQzLVx0XHR2bXgtXHUwMDNldmNwdS5hcmNoLmV2ZW50X2V4aXRfaW5zdF9sZW4gPVxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo1NTQ0Olx0XHRcdHZtY3NfcmVhZDMyKFZNX0VYSVRfSU5TVFJVQ1RJT05fTEVOKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNTU0NS1cdFx0a3ZtX3J1bi1cdTAwM2VleGl0X3JlYXNvbiA9IEtWTV9FWElUX0RFQlVHO1xuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM9NTc1Mj1zdGF0aWMgaW50IGhhbmRsZV9kcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy01NzY3LVxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo1NzY4Olx0ZHI3ID0gdm1jc19yZWFkbChHVUVTVF9EUjcpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy01NzY5LVx0aWYgKGRyNyBcdTAwMjYgRFI3X0dEKSB7XG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYz01ODEyPXZvaWQgdm14X3N5bmNfZGlydHlfZGVidWdfcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy01ODE4LVx0Z2V0X2RlYnVncmVnKHZjcHUtXHUwMDNlYXJjaC5kcjYsIDYpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYzo1ODE5Olx0dmNwdS1cdTAwM2VhcmNoLmRyNyA9IHZtY3NfcmVhZGwoR1VFU1RfRFI3KTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNTgyMC1cbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTU5MDk9c3RhdGljIGludCBoYW5kbGVfdGFza19zd2l0Y2goc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNTkzOS1cdFx0XHRcdGVycm9yX2NvZGUgPVxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo1OTQwOlx0XHRcdFx0XHR2bWNzX3JlYWQzMihJRFRfVkVDVE9SSU5HX0VSUk9SX0NPREUpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy01OTQxLVx0XHRcdH1cbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTU5NjY9c3RhdGljIGludCBoYW5kbGVfZXB0X3Zpb2xhdGlvbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy01OTgxLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo1OTgyOlx0Z3BhID0gdm1jc19yZWFkNjQoR1VFU1RfUEhZU0lDQUxfQUREUkVTUyk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTU5ODMtXHR0cmFjZV9rdm1fcGFnZV9mYXVsdCh2Y3B1LCBncGEsIGV4aXRfcXVhbGlmaWNhdGlvbik7XG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYz01OTk5PXN0YXRpYyBpbnQgaGFuZGxlX2VwdF9taXNjb25maWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjAwOS1cdCAqL1xuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2MDEwOlx0Z3BhID0gdm1jc19yZWFkNjQoR1VFU1RfUEhZU0lDQUxfQUREUkVTUyk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTYwMTEtXHRpZiAoIWlzX2d1ZXN0X21vZGUodmNwdSkgXHUwMDI2XHUwMDI2XG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYz02MTQ2PXN0YXRpYyBpbnQgaGFuZGxlX2ludnBjaWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjE2MS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjE2MjpcdHZteF9pbnN0cnVjdGlvbl9pbmZvID0gdm1jc19yZWFkMzIoVk1YX0lOU1RSVUNUSU9OX0lORk8pO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy02MTYzLVx0Z3ByX2luZGV4ID0gdm14X2dldF9pbnN0cl9pbmZvX3JlZzIodm14X2luc3RydWN0aW9uX2luZm8pO1xuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM9NjMxMT1zdGF0aWMgaW50IHZteF9nZXRfbXNyX2ltbV9yZWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02MzEyLXtcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjMxMzpcdHJldHVybiB2bXhfZ2V0X2luc3RyX2luZm9fcmVnKHZtY3NfcmVhZDMyKFZNWF9JTlNUUlVDVElPTl9JTkZPKSk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTYzMTQtfVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM9NjM5NT12b2lkIHZteF9nZXRfZXhpdF9pbmZvKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyICpyZWFzb24sXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NDA1LVx0XHRpZiAoaXNfZXhjZXB0aW9uX3dpdGhfZXJyb3JfY29kZSgqaW50cl9pbmZvKSlcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjQwNjpcdFx0XHQqZXJyb3JfY29kZSA9IHZtY3NfcmVhZDMyKFZNX0VYSVRfSU5UUl9FUlJPUl9DT0RFKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjQwNy1cdFx0ZWxzZVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM9NjQxNj12b2lkIHZteF9nZXRfZW50cnlfaW5mbyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiAqaW50cl9pbmZvLCB1MzIgKmVycm9yX2NvZGUpXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY0MTcte1xuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NDE4Olx0KmludHJfaW5mbyA9IHZtY3NfcmVhZDMyKFZNX0VOVFJZX0lOVFJfSU5GT19GSUVMRCk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY0MTktXHRpZiAoaXNfZXhjZXB0aW9uX3dpdGhfZXJyb3JfY29kZSgqaW50cl9pbmZvKSlcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjQyMDpcdFx0KmVycm9yX2NvZGUgPSB2bWNzX3JlYWQzMihWTV9FTlRSWV9FWENFUFRJT05fRVJST1JfQ09ERSk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY0MjEtXHRlbHNlXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYz02NDMzPXN0YXRpYyB2b2lkIHZteF9mbHVzaF9wbWxfYnVmZmVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY0MzktXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY0NDA6XHRwbWxfaWR4ID0gdm1jc19yZWFkMTYoR1VFU1RfUE1MX0lOREVYKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjQ0MS1cbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTY0ODE9c3RhdGljIHZvaWQgdm14X2R1bXBfc2VsKGNoYXIgKm5hbWUsIHVpbnQzMl90IHNlbClcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY0ODMtXHRwcl9lcnIoXCYjMzQ7JXMgc2VsPTB4JTA0eCwgYXR0cj0weCUwNXgsIGxpbWl0PTB4JTA4eCwgYmFzZT0weCUwMTZseFxcblwmIzM0OyxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjQ4NDpcdCAgICAgICBuYW1lLCB2bWNzX3JlYWQxNihzZWwpLFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NDg1Olx0ICAgICAgIHZtY3NfcmVhZDMyKHNlbCAmIzQzOyBHVUVTVF9FU19BUl9CWVRFUyAtIEdVRVNUX0VTX1NFTEVDVE9SKSxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjQ4NjpcdCAgICAgICB2bWNzX3JlYWQzMihzZWwgJiM0MzsgR1VFU1RfRVNfTElNSVQgLSBHVUVTVF9FU19TRUxFQ1RPUiksXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY0ODc6XHQgICAgICAgdm1jc19yZWFkbChzZWwgJiM0MzsgR1VFU1RfRVNfQkFTRSAtIEdVRVNUX0VTX1NFTEVDVE9SKSk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY0ODgtfVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM9NjQ5MD1zdGF0aWMgdm9pZCB2bXhfZHVtcF9kdHNlbChjaGFyICpuYW1lLCB1aW50MzJfdCBsaW1pdClcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY0OTItXHRwcl9lcnIoXCYjMzQ7JXMgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW1pdD0weCUwOHgsIGJhc2U9MHglMDE2bHhcXG5cJiMzNDssXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY0OTM6XHQgICAgICAgbmFtZSwgdm1jc19yZWFkMzIobGltaXQpLFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NDk0Olx0ICAgICAgIHZtY3NfcmVhZGwobGltaXQgJiM0MzsgR1VFU1RfR0RUUl9CQVNFIC0gR1VFU1RfR0RUUl9MSU1JVCkpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NDk1LX1cbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTY1MDc9dm9pZCBkdW1wX3ZtY3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjUyMC1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjUyMTpcdHZtZW50cnlfY3RsID0gdm1jc19yZWFkMzIoVk1fRU5UUllfQ09OVFJPTFMpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NTIyOlx0dm1leGl0X2N0bCA9IHZtY3NfcmVhZDMyKFZNX0VYSVRfQ09OVFJPTFMpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NTIzOlx0Y3B1X2Jhc2VkX2V4ZWNfY3RybCA9IHZtY3NfcmVhZDMyKENQVV9CQVNFRF9WTV9FWEVDX0NPTlRST0wpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NTI0Olx0cGluX2Jhc2VkX2V4ZWNfY3RybCA9IHZtY3NfcmVhZDMyKFBJTl9CQVNFRF9WTV9FWEVDX0NPTlRST0wpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NTI1Olx0Y3I0ID0gdm1jc19yZWFkbChHVUVTVF9DUjQpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NTI2LVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NTI3LVx0aWYgKGNwdV9oYXNfc2Vjb25kYXJ5X2V4ZWNfY3RybHMoKSlcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjUyODpcdFx0c2Vjb25kYXJ5X2V4ZWNfY29udHJvbCA9IHZtY3NfcmVhZDMyKFNFQ09OREFSWV9WTV9FWEVDX0NPTlRST0wpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NTI5LVx0ZWxzZVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjUzMi1cdGlmIChjcHVfaGFzX3RlcnRpYXJ5X2V4ZWNfY3RybHMoKSlcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjUzMzpcdFx0dGVydGlhcnlfZXhlY19jb250cm9sID0gdm1jc19yZWFkNjQoVEVSVElBUllfVk1fRVhFQ19DT05UUk9MKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjUzNC1cdGVsc2Vcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY1NDAtXHRwcl9lcnIoXCYjMzQ7Q1IwOiBhY3R1YWw9MHglMDE2bHgsIHNoYWRvdz0weCUwMTZseCwgZ2hfbWFzaz0lMDE2bHhcXG5cJiMzNDssXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY1NDE6XHQgICAgICAgdm1jc19yZWFkbChHVUVTVF9DUjApLCB2bWNzX3JlYWRsKENSMF9SRUFEX1NIQURPVyksXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY1NDI6XHQgICAgICAgdm1jc19yZWFkbChDUjBfR1VFU1RfSE9TVF9NQVNLKSk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY1NDMtXHRwcl9lcnIoXCYjMzQ7Q1I0OiBhY3R1YWw9MHglMDE2bHgsIHNoYWRvdz0weCUwMTZseCwgZ2hfbWFzaz0lMDE2bHhcXG5cJiMzNDssXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY1NDQ6XHQgICAgICAgY3I0LCB2bWNzX3JlYWRsKENSNF9SRUFEX1NIQURPVyksIHZtY3NfcmVhZGwoQ1I0X0dVRVNUX0hPU1RfTUFTSykpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NTQ1Olx0cHJfZXJyKFwmIzM0O0NSMyA9IDB4JTAxNmx4XFxuXCYjMzQ7LCB2bWNzX3JlYWRsKEdVRVNUX0NSMykpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NTQ2LVx0aWYgKGNwdV9oYXNfdm14X2VwdCgpKSB7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY1NDctXHRcdHByX2VycihcJiMzNDtQRFBUUjAgPSAweCUwMTZsbHggIFBEUFRSMSA9IDB4JTAxNmxseFxcblwmIzM0OyxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjU0ODpcdFx0ICAgICAgIHZtY3NfcmVhZDY0KEdVRVNUX1BEUFRSMCksIHZtY3NfcmVhZDY0KEdVRVNUX1BEUFRSMSkpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NTQ5LVx0XHRwcl9lcnIoXCYjMzQ7UERQVFIyID0gMHglMDE2bGx4ICBQRFBUUjMgPSAweCUwMTZsbHhcXG5cJiMzNDssXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY1NTA6XHRcdCAgICAgICB2bWNzX3JlYWQ2NChHVUVTVF9QRFBUUjIpLCB2bWNzX3JlYWQ2NChHVUVTVF9QRFBUUjMpKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjU1MS1cdH1cbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjU1Mi1cdHByX2VycihcJiMzNDtSU1AgPSAweCUwMTZseCAgUklQID0gMHglMDE2bHhcXG5cJiMzNDssXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY1NTM6XHQgICAgICAgdm1jc19yZWFkbChHVUVTVF9SU1ApLCB2bWNzX3JlYWRsKEdVRVNUX1JJUCkpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NTU0LVx0cHJfZXJyKFwmIzM0O1JGTEFHUz0weCUwOGx4ICAgICAgICAgRFI3ID0gMHglMDE2bHhcXG5cJiMzNDssXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY1NTU6XHQgICAgICAgdm1jc19yZWFkbChHVUVTVF9SRkxBR1MpLCB2bWNzX3JlYWRsKEdVRVNUX0RSNykpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NTU2LVx0cHJfZXJyKFwmIzM0O1N5c2VudGVyIFJTUD0lMDE2bHggQ1M6UklQPSUwNHg6JTAxNmx4XFxuXCYjMzQ7LFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NTU3Olx0ICAgICAgIHZtY3NfcmVhZGwoR1VFU1RfU1lTRU5URVJfRVNQKSxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjU1ODpcdCAgICAgICB2bWNzX3JlYWQzMihHVUVTVF9TWVNFTlRFUl9DUyksIHZtY3NfcmVhZGwoR1VFU1RfU1lTRU5URVJfRUlQKSk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY1NTktXHR2bXhfZHVtcF9zZWwoXCYjMzQ7Q1M6ICBcJiMzNDssIEdVRVNUX0NTX1NFTEVDVE9SKTtcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY1NzAtXHRpZiAodm1lbnRyeV9jdGwgXHUwMDI2IFZNX0VOVFJZX0xPQURfSUEzMl9FRkVSKVxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NTcxOlx0XHRwcl9lcnIoXCYjMzQ7RUZFUj0gMHglMDE2bGx4XFxuXCYjMzQ7LCB2bWNzX3JlYWQ2NChHVUVTVF9JQTMyX0VGRVIpKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjU3Mi1cdGVsc2UgaWYgKGVmZXJfc2xvdCBcdTAwM2U9IDApXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NTgxLVx0aWYgKHZtZW50cnlfY3RsIFx1MDAyNiBWTV9FTlRSWV9MT0FEX0lBMzJfUEFUKVxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NTgyOlx0XHRwcl9lcnIoXCYjMzQ7UEFUID0gMHglMDE2bGx4XFxuXCYjMzQ7LCB2bWNzX3JlYWQ2NChHVUVTVF9JQTMyX1BBVCkpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NTgzLVx0cHJfZXJyKFwmIzM0O0RlYnVnQ3RsID0gMHglMDE2bGx4ICBEZWJ1Z0V4Y2VwdGlvbnMgPSAweCUwMTZseFxcblwmIzM0OyxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjU4NDpcdCAgICAgICB2bWNzX3JlYWQ2NChHVUVTVF9JQTMyX0RFQlVHQ1RMKSxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjU4NTpcdCAgICAgICB2bWNzX3JlYWRsKEdVRVNUX1BFTkRJTkdfREJHX0VYQ0VQVElPTlMpKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjU4Ni1cdGlmIChjcHVfaGFzX2xvYWRfcGVyZl9nbG9iYWxfY3RybCgpIFx1MDAyNlx1MDAyNlxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjU4OC1cdFx0cHJfZXJyKFwmIzM0O1BlcmZHbG9iQ3RsID0gMHglMDE2bGx4XFxuXCYjMzQ7LFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NTg5Olx0XHQgICAgICAgdm1jc19yZWFkNjQoR1VFU1RfSUEzMl9QRVJGX0dMT0JBTF9DVFJMKSk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY1OTAtXHRpZiAodm1lbnRyeV9jdGwgXHUwMDI2IFZNX0VOVFJZX0xPQURfQk5EQ0ZHUylcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjU5MTpcdFx0cHJfZXJyKFwmIzM0O0JuZENmZ1MgPSAweCUwMTZsbHhcXG5cJiMzNDssIHZtY3NfcmVhZDY0KEdVRVNUX0JORENGR1MpKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjU5Mi1cdHByX2VycihcJiMzNDtJbnRlcnJ1cHRpYmlsaXR5ID0gJTA4eCAgQWN0aXZpdHlTdGF0ZSA9ICUwOHhcXG5cJiMzNDssXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY1OTM6XHQgICAgICAgdm1jc19yZWFkMzIoR1VFU1RfSU5URVJSVVBUSUJJTElUWV9JTkZPKSxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjU5NDpcdCAgICAgICB2bWNzX3JlYWQzMihHVUVTVF9BQ1RJVklUWV9TVEFURSkpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NTk1LVx0aWYgKHNlY29uZGFyeV9leGVjX2NvbnRyb2wgXHUwMDI2IFNFQ09OREFSWV9FWEVDX1ZJUlRVQUxfSU5UUl9ERUxJVkVSWSlcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjU5Ni1cdFx0cHJfZXJyKFwmIzM0O0ludGVycnVwdFN0YXR1cyA9ICUwNHhcXG5cJiMzNDssXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY1OTc6XHRcdCAgICAgICB2bWNzX3JlYWQxNihHVUVTVF9JTlRSX1NUQVRVUykpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NTk4Olx0aWYgKHZtY3NfcmVhZDMyKFZNX0VOVFJZX01TUl9MT0FEX0NPVU5UKSBcdTAwM2UgMClcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjU5OS1cdFx0dm14X2R1bXBfbXNycyhcJiMzNDtndWVzdCBhdXRvbG9hZFwmIzM0OywgXHUwMDI2dm14LVx1MDAzZW1zcl9hdXRvbG9hZC5ndWVzdCk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2MDA6XHRpZiAodm1jc19yZWFkMzIoVk1fRVhJVF9NU1JfU1RPUkVfQ09VTlQpIFx1MDAzZSAwKVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NjAxLVx0XHR2bXhfZHVtcF9tc3JzKFwmIzM0O2F1dG9zdG9yZVwmIzM0OywgXHUwMDI2dm14LVx1MDAzZW1zcl9hdXRvc3RvcmUpO1xuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjYwNC1cdFx0cHJfZXJyKFwmIzM0O1NfQ0VUID0gMHglMDE2bHgsIFNTUCA9IDB4JTAxNmx4LCBTU1AgVEFCTEUgPSAweCUwMTZseFxcblwmIzM0OyxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjYwNTpcdFx0ICAgICAgIHZtY3NfcmVhZGwoR1VFU1RfU19DRVQpLCB2bWNzX3JlYWRsKEdVRVNUX1NTUCksXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2MDY6XHRcdCAgICAgICB2bWNzX3JlYWRsKEdVRVNUX0lOVFJfU1NQX1RBQkxFKSk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY2MDctXHRwcl9lcnIoXCYjMzQ7KioqIEhvc3QgU3RhdGUgKioqXFxuXCYjMzQ7KTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjYwOC1cdHByX2VycihcJiMzNDtSSVAgPSAweCUwMTZseCAgUlNQID0gMHglMDE2bHhcXG5cJiMzNDssXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2MDk6XHQgICAgICAgdm1jc19yZWFkbChIT1NUX1JJUCksIHZtY3NfcmVhZGwoSE9TVF9SU1ApKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjYxMC1cdHByX2VycihcJiMzNDtDUz0lMDR4IFNTPSUwNHggRFM9JTA0eCBFUz0lMDR4IEZTPSUwNHggR1M9JTA0eCBUUj0lMDR4XFxuXCYjMzQ7LFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NjExOlx0ICAgICAgIHZtY3NfcmVhZDE2KEhPU1RfQ1NfU0VMRUNUT1IpLCB2bWNzX3JlYWQxNihIT1NUX1NTX1NFTEVDVE9SKSxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjYxMjpcdCAgICAgICB2bWNzX3JlYWQxNihIT1NUX0RTX1NFTEVDVE9SKSwgdm1jc19yZWFkMTYoSE9TVF9FU19TRUxFQ1RPUiksXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2MTM6XHQgICAgICAgdm1jc19yZWFkMTYoSE9TVF9GU19TRUxFQ1RPUiksIHZtY3NfcmVhZDE2KEhPU1RfR1NfU0VMRUNUT1IpLFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NjE0Olx0ICAgICAgIHZtY3NfcmVhZDE2KEhPU1RfVFJfU0VMRUNUT1IpKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjYxNS1cdHByX2VycihcJiMzNDtGU0Jhc2U9JTAxNmx4IEdTQmFzZT0lMDE2bHggVFJCYXNlPSUwMTZseFxcblwmIzM0OyxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjYxNjpcdCAgICAgICB2bWNzX3JlYWRsKEhPU1RfRlNfQkFTRSksIHZtY3NfcmVhZGwoSE9TVF9HU19CQVNFKSxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjYxNzpcdCAgICAgICB2bWNzX3JlYWRsKEhPU1RfVFJfQkFTRSkpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NjE4LVx0cHJfZXJyKFwmIzM0O0dEVEJhc2U9JTAxNmx4IElEVEJhc2U9JTAxNmx4XFxuXCYjMzQ7LFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NjE5Olx0ICAgICAgIHZtY3NfcmVhZGwoSE9TVF9HRFRSX0JBU0UpLCB2bWNzX3JlYWRsKEhPU1RfSURUUl9CQVNFKSk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY2MjAtXHRwcl9lcnIoXCYjMzQ7Q1IwPSUwMTZseCBDUjM9JTAxNmx4IENSND0lMDE2bHhcXG5cJiMzNDssXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2MjE6XHQgICAgICAgdm1jc19yZWFkbChIT1NUX0NSMCksIHZtY3NfcmVhZGwoSE9TVF9DUjMpLFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NjIyOlx0ICAgICAgIHZtY3NfcmVhZGwoSE9TVF9DUjQpKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjYyMy1cdHByX2VycihcJiMzNDtTeXNlbnRlciBSU1A9JTAxNmx4IENTOlJJUD0lMDR4OiUwMTZseFxcblwmIzM0OyxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjYyNDpcdCAgICAgICB2bWNzX3JlYWRsKEhPU1RfSUEzMl9TWVNFTlRFUl9FU1ApLFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NjI1Olx0ICAgICAgIHZtY3NfcmVhZDMyKEhPU1RfSUEzMl9TWVNFTlRFUl9DUyksXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2MjY6XHQgICAgICAgdm1jc19yZWFkbChIT1NUX0lBMzJfU1lTRU5URVJfRUlQKSk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY2MjctXHRpZiAodm1leGl0X2N0bCBcdTAwMjYgVk1fRVhJVF9MT0FEX0lBMzJfRUZFUilcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjYyODpcdFx0cHJfZXJyKFwmIzM0O0VGRVI9IDB4JTAxNmxseFxcblwmIzM0Oywgdm1jc19yZWFkNjQoSE9TVF9JQTMyX0VGRVIpKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjYyOS1cdGlmICh2bWV4aXRfY3RsIFx1MDAyNiBWTV9FWElUX0xPQURfSUEzMl9QQVQpXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2MzA6XHRcdHByX2VycihcJiMzNDtQQVQgPSAweCUwMTZsbHhcXG5cJiMzNDssIHZtY3NfcmVhZDY0KEhPU1RfSUEzMl9QQVQpKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjYzMS1cdGlmIChjcHVfaGFzX2xvYWRfcGVyZl9nbG9iYWxfY3RybCgpIFx1MDAyNlx1MDAyNlxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjYzMy1cdFx0cHJfZXJyKFwmIzM0O1BlcmZHbG9iQ3RsID0gMHglMDE2bGx4XFxuXCYjMzQ7LFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NjM0Olx0XHQgICAgICAgdm1jc19yZWFkNjQoSE9TVF9JQTMyX1BFUkZfR0xPQkFMX0NUUkwpKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjYzNTpcdGlmICh2bWNzX3JlYWQzMihWTV9FWElUX01TUl9MT0FEX0NPVU5UKSBcdTAwM2UgMClcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjYzNi1cdFx0dm14X2R1bXBfbXNycyhcJiMzNDtob3N0IGF1dG9sb2FkXCYjMzQ7LCBcdTAwMjZ2bXgtXHUwMDNlbXNyX2F1dG9sb2FkLmhvc3QpO1xuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjYzOC1cdFx0cHJfZXJyKFwmIzM0O1NfQ0VUID0gMHglMDE2bHgsIFNTUCA9IDB4JTAxNmx4LCBTU1AgVEFCTEUgPSAweCUwMTZseFxcblwmIzM0OyxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjYzOTpcdFx0ICAgICAgIHZtY3NfcmVhZGwoSE9TVF9TX0NFVCksIHZtY3NfcmVhZGwoSE9TVF9TU1ApLFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NjQwOlx0XHQgICAgICAgdm1jc19yZWFkbChIT1NUX0lOVFJfU1NQX1RBQkxFKSk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY2NDEtXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NjQ3LVx0cHJfZXJyKFwmIzM0O0V4Y2VwdGlvbkJpdG1hcD0lMDh4IFBGRUNtYXNrPSUwOHggUEZFQ21hdGNoPSUwOHhcXG5cJiMzNDssXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2NDg6XHQgICAgICAgdm1jc19yZWFkMzIoRVhDRVBUSU9OX0JJVE1BUCksXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2NDk6XHQgICAgICAgdm1jc19yZWFkMzIoUEFHRV9GQVVMVF9FUlJPUl9DT0RFX01BU0spLFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NjUwOlx0ICAgICAgIHZtY3NfcmVhZDMyKFBBR0VfRkFVTFRfRVJST1JfQ09ERV9NQVRDSCkpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NjUxLVx0cHJfZXJyKFwmIzM0O1ZNRW50cnk6IGludHJfaW5mbz0lMDh4IGVycmNvZGU9JTA4eCBpbGVuPSUwOHhcXG5cJiMzNDssXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2NTI6XHQgICAgICAgdm1jc19yZWFkMzIoVk1fRU5UUllfSU5UUl9JTkZPX0ZJRUxEKSxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjY1MzpcdCAgICAgICB2bWNzX3JlYWQzMihWTV9FTlRSWV9FWENFUFRJT05fRVJST1JfQ09ERSksXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2NTQ6XHQgICAgICAgdm1jc19yZWFkMzIoVk1fRU5UUllfSU5TVFJVQ1RJT05fTEVOKSk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY2NTUtXHRwcl9lcnIoXCYjMzQ7Vk1FeGl0OiBpbnRyX2luZm89JTA4eCBlcnJjb2RlPSUwOHggaWxlbj0lMDh4XFxuXCYjMzQ7LFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NjU2Olx0ICAgICAgIHZtY3NfcmVhZDMyKFZNX0VYSVRfSU5UUl9JTkZPKSxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjY1NzpcdCAgICAgICB2bWNzX3JlYWQzMihWTV9FWElUX0lOVFJfRVJST1JfQ09ERSksXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2NTg6XHQgICAgICAgdm1jc19yZWFkMzIoVk1fRVhJVF9JTlNUUlVDVElPTl9MRU4pKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjY1OS1cdHByX2VycihcJiMzNDsgICAgICAgIHJlYXNvbj0lMDh4IHF1YWxpZmljYXRpb249JTAxNmx4XFxuXCYjMzQ7LFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NjYwOlx0ICAgICAgIHZtY3NfcmVhZDMyKFZNX0VYSVRfUkVBU09OKSwgdm1jc19yZWFkbChFWElUX1FVQUxJRklDQVRJT04pKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjY2MS1cdHByX2VycihcJiMzNDtJRFRWZWN0b3Jpbmc6IGluZm89JTA4eCBlcnJjb2RlPSUwOHhcXG5cJiMzNDssXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2NjI6XHQgICAgICAgdm1jc19yZWFkMzIoSURUX1ZFQ1RPUklOR19JTkZPX0ZJRUxEKSxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjY2MzpcdCAgICAgICB2bWNzX3JlYWQzMihJRFRfVkVDVE9SSU5HX0VSUk9SX0NPREUpKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjY2NDpcdHByX2VycihcJiMzNDtUU0MgT2Zmc2V0ID0gMHglMDE2bGx4XFxuXCYjMzQ7LCB2bWNzX3JlYWQ2NChUU0NfT0ZGU0VUKSk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY2NjUtXHRpZiAoc2Vjb25kYXJ5X2V4ZWNfY29udHJvbCBcdTAwMjYgU0VDT05EQVJZX0VYRUNfVFNDX1NDQUxJTkcpXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY2NjYtXHRcdHByX2VycihcJiMzNDtUU0MgTXVsdGlwbGllciA9IDB4JTAxNmxseFxcblwmIzM0OyxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjY2NzpcdFx0ICAgICAgIHZtY3NfcmVhZDY0KFRTQ19NVUxUSVBMSUVSKSk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY2NjgtXHRpZiAoY3B1X2Jhc2VkX2V4ZWNfY3RybCBcdTAwMjYgQ1BVX0JBU0VEX1RQUl9TSEFET1cpIHtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjY2OS1cdFx0aWYgKHNlY29uZGFyeV9leGVjX2NvbnRyb2wgXHUwMDI2IFNFQ09OREFSWV9FWEVDX1ZJUlRVQUxfSU5UUl9ERUxJVkVSWSkge1xuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NjcwOlx0XHRcdHUxNiBzdGF0dXMgPSB2bWNzX3JlYWQxNihHVUVTVF9JTlRSX1NUQVRVUyk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY2NzEtXHRcdFx0cHJfZXJyKFwmIzM0O1NWSXxSVkkgPSAlMDJ4fCUwMnggXCYjMzQ7LCBzdGF0dXMgXHUwMDNlXHUwMDNlIDgsIHN0YXR1cyBcdTAwMjYgMHhmZik7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY2NzItXHRcdH1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjY3MzpcdFx0cHJfY29udChcJiMzNDtUUFIgVGhyZXNob2xkID0gMHglMDJ4XFxuXCYjMzQ7LCB2bWNzX3JlYWQzMihUUFJfVEhSRVNIT0xEKSk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY2NzQtXHRcdGlmIChzZWNvbmRhcnlfZXhlY19jb250cm9sIFx1MDAyNiBTRUNPTkRBUllfRVhFQ19WSVJUVUFMSVpFX0FQSUNfQUNDRVNTRVMpXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2NzU6XHRcdFx0cHJfZXJyKFwmIzM0O0FQSUMtYWNjZXNzIGFkZHIgPSAweCUwMTZsbHggXCYjMzQ7LCB2bWNzX3JlYWQ2NChBUElDX0FDQ0VTU19BRERSKSk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2NzY6XHRcdHByX2NvbnQoXCYjMzQ7dmlydC1BUElDIGFkZHIgPSAweCUwMTZsbHhcXG5cJiMzNDssIHZtY3NfcmVhZDY0KFZJUlRVQUxfQVBJQ19QQUdFX0FERFIpKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjY3Ny1cdH1cbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjY3OC1cdGlmIChwaW5fYmFzZWRfZXhlY19jdHJsIFx1MDAyNiBQSU5fQkFTRURfUE9TVEVEX0lOVFIpXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2Nzk6XHRcdHByX2VycihcJiMzNDtQb3N0ZWRJbnRyVmVjID0gMHglMDJ4XFxuXCYjMzQ7LCB2bWNzX3JlYWQxNihQT1NURURfSU5UUl9OVikpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NjgwLVx0aWYgKChzZWNvbmRhcnlfZXhlY19jb250cm9sIFx1MDAyNiBTRUNPTkRBUllfRVhFQ19FTkFCTEVfRVBUKSlcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjY4MTpcdFx0cHJfZXJyKFwmIzM0O0VQVCBwb2ludGVyID0gMHglMDE2bGx4XFxuXCYjMzQ7LCB2bWNzX3JlYWQ2NChFUFRfUE9JTlRFUikpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NjgyLVx0aWYgKHNlY29uZGFyeV9leGVjX2NvbnRyb2wgXHUwMDI2IFNFQ09OREFSWV9FWEVDX1BBVVNFX0xPT1BfRVhJVElORylcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjY4My1cdFx0cHJfZXJyKFwmIzM0O1BMRSBHYXA9JTA4eCBXaW5kb3c9JTA4eFxcblwmIzM0OyxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjY4NDpcdFx0ICAgICAgIHZtY3NfcmVhZDMyKFBMRV9HQVApLCB2bWNzX3JlYWQzMihQTEVfV0lORE9XKSk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY2ODUtXHRpZiAoc2Vjb25kYXJ5X2V4ZWNfY29udHJvbCBcdTAwMjYgU0VDT05EQVJZX0VYRUNfRU5BQkxFX1ZQSUQpXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY2ODYtXHRcdHByX2VycihcJiMzNDtWaXJ0dWFsIHByb2Nlc3NvciBJRCA9IDB4JTA0eFxcblwmIzM0OyxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjY4NzpcdFx0ICAgICAgIHZtY3NfcmVhZDE2KFZJUlRVQUxfUFJPQ0VTU09SX0lEKSk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY2ODgtXHRpZiAoc2Vjb25kYXJ5X2V4ZWNfY29udHJvbCBcdTAwMjYgU0VDT05EQVJZX0VYRUNfRVBUX1ZJT0xBVElPTl9WRSkge1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy02Njg5LVx0XHRzdHJ1Y3Qgdm14X3ZlX2luZm9ybWF0aW9uICp2ZV9pbmZvID0gdm14LVx1MDAzZXZlX2luZm87XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2OTA6XHRcdHU2NCB2ZV9pbmZvX3BhID0gdm1jc19yZWFkNjQoVkVfSU5GT1JNQVRJT05fQUREUkVTUyk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY2OTEtXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYz02NzEyPXN0YXRpYyBpbnQgX192bXhfaGFuZGxlX2V4aXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBmYXN0cGF0aF90IGV4aXRfZmFzdHBhdGgpXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02Nzk5LVx0XHR2Y3B1LVx1MDAzZXJ1bi1cdTAwM2VmYWlsX2VudHJ5LmhhcmR3YXJlX2VudHJ5X2ZhaWx1cmVfcmVhc29uXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY4MDA6XHRcdFx0PSB2bWNzX3JlYWQzMihWTV9JTlNUUlVDVElPTl9FUlJPUik7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY4MDEtXHRcdHZjcHUtXHUwMDNlcnVuLVx1MDAzZWZhaWxfZW50cnkuY3B1ID0gdmNwdS1cdTAwM2VhcmNoLmxhc3Rfdm1lbnRyeV9jcHU7XG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYz03MDMwPXZvaWQgdm14X2h3YXBpY19pc3JfdXBkYXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgaW50IG1heF9pc3IpXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy03MDQ0LVxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo3MDQ1Olx0c3RhdHVzID0gdm1jc19yZWFkMTYoR1VFU1RfSU5UUl9TVEFUVVMpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy03MDQ2LVx0b2xkID0gc3RhdHVzIFx1MDAzZVx1MDAzZSA4O1xuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM9NzA1ND1zdGF0aWMgdm9pZCB2bXhfc2V0X3J2aShpbnQgdmVjdG9yKVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNzA2MS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NzA2MjpcdHN0YXR1cyA9IHZtY3NfcmVhZDE2KEdVRVNUX0lOVFJfU1RBVFVTKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNzA2My1cdG9sZCA9ICh1OClzdGF0dXMgXHUwMDI2IDB4ZmY7XG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYz03MjQ2PXN0YXRpYyB2b2lkIHZteF9yZWNvdmVyX25taV9ibG9ja2luZyhzdHJ1Y3QgdmNwdV92bXggKnZteClcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTcyNzctXHRcdFx0dm14LVx1MDAzZWxvYWRlZF92bWNzLVx1MDAzZW5taV9rbm93bl91bm1hc2tlZCA9XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjcyNzg6XHRcdFx0XHQhKHZtY3NfcmVhZDMyKEdVRVNUX0lOVEVSUlVQVElCSUxJVFlfSU5GTylcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNzI3OS1cdFx0XHRcdCAgXHUwMDI2IEdVRVNUX0lOVFJfU1RBVEVfTk1JKTtcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTcyODY9c3RhdGljIHZvaWQgX192bXhfY29tcGxldGVfaW50ZXJydXB0cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy03MzE5LVx0Y2FzZSBJTlRSX1RZUEVfU09GVF9FWENFUFRJT046XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjczMjA6XHRcdHZjcHUtXHUwMDNlYXJjaC5ldmVudF9leGl0X2luc3RfbGVuID0gdm1jc19yZWFkMzIoaW5zdHJfbGVuX2ZpZWxkKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNzMyMS1cdFx0ZmFsbHRocm91Z2g7XG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy03MzI1LVx0XHRpZiAoaWR0X3ZlY3RvcmluZ19pbmZvIFx1MDAyNiBWRUNUT1JJTkdfSU5GT19ERUxJVkVSX0NPREVfTUFTSylcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NzMyNjpcdFx0XHRlcnJvcl9jb2RlID0gdm1jc19yZWFkMzIoZXJyb3JfY29kZV9maWVsZCk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTczMjctXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy03MzMzLVx0Y2FzZSBJTlRSX1RZUEVfU09GVF9JTlRSOlxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo3MzM0Olx0XHR2Y3B1LVx1MDAzZWFyY2guZXZlbnRfZXhpdF9pbnN0X2xlbiA9IHZtY3NfcmVhZDMyKGluc3RyX2xlbl9maWVsZCk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTczMzUtXHRcdGZhbGx0aHJvdWdoO1xuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM9NzM1MT12b2lkIHZteF9jYW5jZWxfaW5qZWN0aW9uKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTczNTMtXHRfX3ZteF9jb21wbGV0ZV9pbnRlcnJ1cHRzKHZjcHUsXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjczNTQ6XHRcdFx0XHQgIHZtY3NfcmVhZDMyKFZNX0VOVFJZX0lOVFJfSU5GT19GSUVMRCksXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTczNTUtXHRcdFx0XHQgIFZNX0VOVFJZX0lOU1RSVUNUSU9OX0xFTixcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTczODc9c3RhdGljIHZvaWQgdm14X3JlZnJlc2hfZ3Vlc3RfcGVyZl9nbG9iYWxfY29udHJvbChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy03NDA2LVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTI6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA5MDYKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAxODkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBDb21waWxlciBSZW9yZGVyaW5nIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdGFyZ2V0aW5nIGEgcHJldHR5IHNwZWNpZmljIGlzc3VlOiBjb21waWxlciByZW9yZGVyaW5nIGFyb3VuZCB0aG9zZSBjcnVjaWFsIFZNQ1MgcmVhZC93cml0ZSBvcGVyYXRpb25zLiBUaGF0JiMzOTtzIGEgY2xhc3NpYyBjYXVzZSBvZiBoYXJkLXRvLWRlYnVnIGJ1Z3MsIGVzcGVjaWFsbHkgaW4gYSBwZXJmb3JtYW5jZS1jcml0aWNhbCBhcmVhIGxpa2UgdmlydHVhbGl6YXRpb24uIEl0IGxvb2tzIGxpa2UgdGhlIGZpeCBpbnZvbHZlcyB0d2Vha2luZyBgX192bWNzX3JlYWRsYCBhbmQgdGhlIGB2bXhfYXNtMWAgLyBgdm14X2FzbTJgIG1hY3JvcyB3aXRoaW4gYGFyY2gveDg2L2t2bS92bXgvdm14X29wcy5oYC4gRnVuY3Rpb25hbGx5LCB0aGlzIHNlZW1zIHNvdW5kLiBBZGRyZXNzaW5nIHBvdGVudGlhbCBtZW1vcnkgYWNjZXNzIG9wdGltaXphdGlvbiBvciByZW9yZGVyaW5nIGlzc3VlcyBpcyBkZWZpbml0ZWx5IHRoZSByaWdodCBhcHByb2FjaCBoZXJlLiBXZSBuZWVkIHRvIGZvY3VzIGZ1enppbmcgZWZmb3J0cyBvbiB0aGUgS1ZNIFZNWCBjb21wb25lbnRzIHRvIHByb3Blcmx5IHZhbGlkYXRlIHRoaXMgZml4LgoKR2l2ZW4gdGhhdCwgSSBzaG91bGQgY29uY2VudHJhdGUgb24gdGhlIGtleSBWTVggb3BlcmF0aW9ucyBkdXJpbmcgZnV6emluZy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gbG9vayBhdCBmdW5jdGlvbnMgbGlrZSBgdm14X2hhbmRsZV9leGl0YCwgYGhhbmRsZV9leGNlcHRpb25fbm1pYCwgYW5kIGBoYW5kbGVfZXB0X3Zpb2xhdGlvbmAuIFRoZW4sIGxldCYjMzk7cyBuYWlsIGRvd24gdGhlIG1haW4gcnVuIGxvb3AuIEl0JiMzOTtzIGxpa2VseSBgdm14X3ZjcHVfcnVuYCwgYnV0IEkgc2hvdWxkIHZlcmlmeSB0aGF0IGJ5IGNoZWNraW5nIGBhcmNoL3g4Ni9rdm0vdm14L3ZteC5jYC4gVGhhdCBzaG91bGQgZ2l2ZSB1cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIGNvbnN0cnVjdGluZyBlZmZlY3RpdmUgZnV6eiB0YXJnZXRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDEyOjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZteF92Y3B1X3J1biYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS92bXgvdm14LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3ZteC92bXguYz01MzUyPXN0YXRpYyBpbnQgaGFuZGxlX21hY2hpbmVfY2hlY2soc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy01MzUzLXtcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NTM1NDpcdC8qIGhhbmRsZWQgYnkgdm14X3ZjcHVfcnVuKCkgKi9cbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNTM1NS1cdHJldHVybiAxO1xuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM9NTQyNT1zdGF0aWMgaW50IGhhbmRsZV9leGNlcHRpb25fbm1pKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTU0MzctXHQgKiBNYWNoaW5lIGNoZWNrcyBhcmUgaGFuZGxlZCBieSBoYW5kbGVfZXhjZXB0aW9uX2lycW9mZigpLCBvciBieVxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo1NDM4Olx0ICogdm14X3ZjcHVfcnVuKCkgaWYgYSAjTUMgb2NjdXJzIG9uIFZNLUVudHJ5LiAgTk1JcyBhcmUgaGFuZGxlZCBieVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy01NDM5LVx0ICogdm14X3ZjcHVfZW50ZXJfZXhpdCgpLlxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM9NzQ4Mz1zdGF0aWMgbm9pbnN0ciB2b2lkIHZteF92Y3B1X2VudGVyX2V4aXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNzQ5Ni1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NzQ5NzpcdHZteC1cdTAwM2VmYWlsID0gX192bXhfdmNwdV9ydW4odm14LCBmbGFncyk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTc0OTgtXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy03NTIwLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo3NTIxOmZhc3RwYXRoX3Qgdm14X3ZjcHVfcnVuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IHJ1bl9mbGFncylcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNzUyMi17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTI6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE5NTkKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKkRpdmluZyBpbnRvIHRoZSBWTVggRXhpdCBIYW5kbGVyKioKCk9rYXksIHNvIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGhhbmRsaW5nIFZNIGV4aXRzIGluIHRoZSBWTVggY29udGV4dCwgYW5kIHRoYXQgdXN1YWxseSBtZWFucyBhIHRyaXAgaW50byBgYXJjaC94ODYva3ZtL3ZteC92bXguY2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gYHZteF9oYW5kbGVfZXhpdGAuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIHJ1YmJlciBtZWV0cyB0aGUgcm9hZCwgd2hlcmUgdGhlIGtlcm5lbCBqdW1wcyB0byBwcm9jZXNzIHRoZSByZWFzb25zIGZvciB0aGUgZ3Vlc3QmIzM5O3MgaGFsdC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgKmhvdyogdGhlIGhhcmR3YXJlIHNpZ25hbGVkIGFuIGV4aXQsICp3aHkqIGl0IGRpZCwgYW5kICp3aGF0KiBuZWVkcyB0byBiZSBkb25lIG9uIHRoZSBob3N0IHRvIHByb3Blcmx5IGVtdWxhdGUgYW5kIHRoZW4gcmVzdW1lLiBUaGUgYHZteF9oYW5kbGVfZXhpdGAgZnVuY3Rpb24gaXMgdGhlIGNlbnRyYWwgcGllY2Ugb2YgdGhhdCBwdXp6bGUuIEl0JiMzOTtzIHRoZSBkaXNwYXRjaGVyLCB0aGUgdHJhZmZpYyBjb250cm9sbGVyIGZvciBhbGwgdGhlc2UgdmFyaW91cyBldmVudHMgdGhhdCBjYW4gb2NjdXIgaW4gdGhlIFZNWCBlbnZpcm9ubWVudC4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCB0aGUgbG9naWMgdGhhdCBkZXRlcm1pbmVzIHRoZSBleGl0IHJlYXNvbiAocGFnZSBmYXVsdCwgaW50ZXJydXB0IHdpbmRvdywgbmVzdGVkIHZpcnR1YWxpemF0aW9uIGV2ZW50LCBldGMuKSBhbmQgdGhlbiBkaXNwYXRjaGVzIHRvIHRoZSBjb3JyZWN0IGhhbmRsZXIuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGFueSBoaW50cyBvbiBob3cgdGhlIFZDUFUgaXMgc2F2ZWQgYW5kIHJlc3RvcmVkIGhlcmUgdG9vLCBiZWNhdXNlIHRoZSBjb250ZXh0IHN3aXRjaCBpcyB0aGUgbWFpbiBjaGFsbGVuZ2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDEyOjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZteF9oYW5kbGVfZXhpdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS92bXgvdm14LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3ZteC92bXguYz01NDI1PXN0YXRpYyBpbnQgaGFuZGxlX2V4Y2VwdGlvbl9ubWkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNTQ5MC1cdCAqIE1NSU8sIGl0IGlzIGJldHRlciB0byByZXBvcnQgYW4gaW50ZXJuYWwgZXJyb3IuXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjU0OTE6XHQgKiBTZWUgdGhlIGNvbW1lbnRzIGluIHZteF9oYW5kbGVfZXhpdC5cbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNTQ5Mi1cdCAqL1xuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM9NjI3ND1zdGF0aWMgaW50IGhhbmRsZV9idXNfbG9ja192bWV4aXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjI3OC1cdCAqIFZNLUV4aXRzLiBVbmNvbmRpdGlvbmFsbHkgc2V0IHRoZSBmbGFnIGhlcmUgYW5kIGxlYXZlIHRoZSBoYW5kbGluZyB0b1xuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2Mjc5Olx0ICogdm14X2hhbmRsZV9leGl0KCkuXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTYyODAtXHQgKi9cbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTY1MDc9dm9pZCBkdW1wX3ZtY3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjcxMS0gKi9cbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjcxMjpzdGF0aWMgaW50IF9fdm14X2hhbmRsZV9leGl0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgZmFzdHBhdGhfdCBleGl0X2Zhc3RwYXRoKVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NzEzLXtcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY4NzAtXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY4NzE6aW50IHZteF9oYW5kbGVfZXhpdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGZhc3RwYXRoX3QgZXhpdF9mYXN0cGF0aClcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjg3Mi17XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY4NzM6XHRpbnQgcmV0ID0gX192bXhfaGFuZGxlX2V4aXQodmNwdSwgZXhpdF9mYXN0cGF0aCk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY4NzQtXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYz03MTg0PXN0YXRpYyB2b2lkIGhhbmRsZV9leHRlcm5hbF9pbnRlcnJ1cHRfaXJxb2ZmKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTcxOTktXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjcyMDA6dm9pZCB2bXhfaGFuZGxlX2V4aXRfaXJxb2ZmKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNzIwMS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDEyOjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMDMwCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogODgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKk15IEFuYWx5c2lzIG9mIHRoZSBLVk0vVk1YIENvZGUgUGF0aCoqCgpSaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyB0aGlzIGFsbCBmaXRzIHRvZ2V0aGVyLiBgdm14X3ZjcHVfcnVuYCwgYHZteF9oYW5kbGVfZXhpdGAsIGBfX3ZteF9oYW5kbGVfZXhpdGAsIGBoYW5kbGVfZXB0X3Zpb2xhdGlvbmAsIGFuZCBgaGFuZGxlX2V4Y2VwdGlvbl9ubWlgIGFyZSBkZWZpbml0ZWx5IGtleSBlbnRyeSBwb2ludHMgb3IgY29yZSBmdW5jdGlvbnMgSSBuZWVkIHRvIGtlZXAgaW4gbWluZC4gVGhvc2Ugc3ltYm9scyBhcmUgd2hlcmUgdGhlIHJ1YmJlciBtZWV0cyB0aGUgcm9hZCwgdGhlIGNyaXRpY2FsIGp1bmN0aW9ucyBpbiB0aGUgVk1YIGV4ZWN1dGlvbiBmbG93LiBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlaXIgaW50ZXJhY3Rpb25zIGludGltYXRlbHkuCgpCdXQgSSBjYW4mIzM5O3QganVzdCBkaXZlIGludG8gdGhlIGNvZGUgd2l0aG91dCBjb250ZXh0LiBXaGF0IGFib3V0IHRoZSBidWlsZCBjb25maWd1cmF0aW9uPyBLY29uZmlnIGlzIHRoZSBnYXRla2VlcGVyLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEtWTSBhbmQgS1ZNX0lOVEVMIGFyZSBlbmFibGVkLiBMZXQgbWUgcHVsbCB1cCBgYXJjaC94ODYva3ZtL0tjb25maWdgIGFuZCBzZWUgd2hhdCB0aGUgYnVpbGQgc2V0dGluZ3MgYXJlIGFuZCBob3cgdGhpcyBpcyBhbGwgY29uZmlndXJlZC4gVGhhdCBzaG91bGQgdGVsbCBtZSB3aGljaCBjb2RlIHBhdGhzIGFyZSBldmVuIHJlbGV2YW50IGZvciBteSBhbmFseXNpcy4gVW5kZXJzdGFuZGluZyB0aGUgYnVpbGQgb3B0aW9ucyBpcyBjcnVjaWFsIHRvIHVuZGVyc3RhbmRpbmcgdGhlIHJlbGV2YW50IGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDEyOjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBLVk0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxuYXJjaC94ODYva3ZtL0tjb25maWctMTktXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNX1g4NlxuYXJjaC94ODYva3ZtL0tjb25maWctMjEtXHRkZWZfdHJpc3RhdGUgS1ZNIGlmIChLVk1fSU5URUwgIT0gbiB8fCBLVk1fQU1EICE9IG4pXG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctNTEtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo1Mjpjb25maWcgS1ZNXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy01My1cdHRyaXN0YXRlIFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTY4LVxuYXJjaC94ODYva3ZtL0tjb25maWc6Njk6Y29uZmlnIEtWTV9XRVJST1JcbmFyY2gveDg2L2t2bS9LY29uZmlnLTcwLVx0Ym9vbCBcJiMzNDtDb21waWxlIEtWTSB3aXRoIC1XZXJyb3JcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy04Mi1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjgzOmNvbmZpZyBLVk1fU1dfUFJPVEVDVEVEX1ZNXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy04NC1cdGJvb2wgXCYjMzQ7RW5hYmxlIHN1cHBvcnQgZm9yIEtWTSBzb2Z0d2FyZS1wcm90ZWN0ZWQgVk1zXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctOTUtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo5Njpjb25maWcgS1ZNX0lOVEVMXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy05Ny1cdHRyaXN0YXRlIFwmIzM0O0tWTSBmb3IgSW50ZWwgKGFuZCBjb21wYXRpYmxlKSBwcm9jZXNzb3JzIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMDYtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxMDc6Y29uZmlnIEtWTV9JTlRFTF9QUk9WRV9WRVxuYXJjaC94ODYva3ZtL0tjb25maWctMTA4LSAgICAgICAgYm9vbCBcJiMzNDtDaGVjayB0aGF0IGd1ZXN0cyBkbyBub3QgcmVjZWl2ZSAjVkUgZXhjZXB0aW9uc1wmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnPTEyMj1jb25maWcgWDg2X1NHWF9LVk1cbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMzMtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxMzQ6Y29uZmlnIEtWTV9JTlRFTF9URFhcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEzNS1cdGJvb2wgXCYjMzQ7SW50ZWwgVHJ1c3QgRG9tYWluIEV4dGVuc2lvbnMgKFREWCkgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0NS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjE0Njpjb25maWcgS1ZNX0FNRFxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ3LVx0dHJpc3RhdGUgXCYjMzQ7S1ZNIGZvciBBTUQgcHJvY2Vzc29ycyBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTU1LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTU2OmNvbmZpZyBLVk1fQU1EX1NFVlxuYXJjaC94ODYva3ZtL0tjb25maWctMTU3LVx0Ym9vbCBcJiMzNDtBTUQgU2VjdXJlIEVuY3J5cHRlZCBWaXJ0dWFsaXphdGlvbiAoU0VWKSBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTcxLVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTcyOmNvbmZpZyBLVk1fSU9BUElDXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNzMtXHRib29sIFwmIzM0O0kvTyBBUElDLCBQSUMsIGFuZCBQSVQgZW11bGF0aW9uXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTgxLVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTgyOmNvbmZpZyBLVk1fU01NXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xODMtXHRib29sIFwmIzM0O1N5c3RlbSBNYW5hZ2VtZW50IE1vZGUgZW11bGF0aW9uXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTkyLVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTkzOmNvbmZpZyBLVk1fSFlQRVJWXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOTQtXHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIE1pY3Jvc29mdCBIeXBlci1WIGVtdWxhdGlvblwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTIwNi1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjIwNzpjb25maWcgS1ZNX1hFTlxuYXJjaC94ODYva3ZtL0tjb25maWctMjA4LVx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZvciBYZW4gaHlwZXJjYWxsIGludGVyZmFjZVwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxNS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjIxNjpjb25maWcgS1ZNX1BST1ZFX01NVVxuYXJjaC94ODYva3ZtL0tjb25maWctMjE3LVx0Ym9vbCBcJiMzNDtQcm92ZSBLVk0gTU1VIGNvcnJlY3RuZXNzXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMjI4LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MjI5OmNvbmZpZyBLVk1fRVhURVJOQUxfV1JJVEVfVFJBQ0tJTkdcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzMC1cdGJvb2xcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzMS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjIzMjpjb25maWcgS1ZNX01BWF9OUl9WQ1BVU1xuYXJjaC94ODYva3ZtL0tjb25maWctMjMzLVx0aW50IFwmIzM0O01heGltdW0gbnVtYmVyIG9mIHZDUFVzIHBlciBLVk0gZ3Vlc3RcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTI6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQ1OTUKCQkJCQkJCW91dHB1dDogMTQ2CgkJCQkJCQl0aG91Z2h0czogNDYwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEZ1enppbmcgU3RyYXRlZ3kgZm9yIFRoaXMgS1ZNIFZNWCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCB0aGF0IGludHJvZHVjZXMgYSAmIzM0O21lbW9yeSYjMzQ7IGNsb2JiZXIgaW4gdGhlIGlubGluZSBhc3NlbWJseSBmb3IgVk1DUyByZWFkcyBhbmQgd3JpdGVzIHdpdGhpbiBLVk0gVk1YLiBUaGlzIGlzIGludGVyZXN0aW5nIGJlY2F1c2UgaXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0JiMzOTtzICpzcGVjaWZpY2FsbHkqIGFpbWVkIGF0IHByZXZlbnRpbmcgY29tcGlsZXIgb3B0aW1pemF0aW9ucyB0aGF0IGNvdWxkIGNhdXNlIHN1YnRsZSwgaGFyZC10by1kZWJ1ZyBidWdzIGluIEtWTSBleGVjdXRpb24uIFRoYXQgc2NyZWFtcyAmIzM0O2Z1enppbmcgdGFyZ2V0JiMzNDsgdG8gbWUuCgpGaXJzdCwgdGhlIGNvbmZpZ3MuIExvb2tzIGxpa2Ugd2UgbmVlZCBgS1ZNYCBhbmQgYEtWTV9JTlRFTGAgZW5hYmxlZC4gR29vZC4gSSYjMzk7bSBnb2luZyB0byBqdXN0IHJvbGwgd2l0aCBgS1ZNX0lOVEVMYCBzaW5jZSBpdCYjMzk7cyBzdWZmaWNpZW50LgoKTm93LCBsZXQmIzM5O3MgbmFpbCBkb3duIHRoZSBjcml0aWNhbCBmdW5jdGlvbnMuIFRoaXMgcGF0Y2ggdG91Y2hlcyBWTUNTIHJlYWRzIGFuZCB3cml0ZXMsIHdoaWNoIG1lYW5zIEkgd2FudCB0byBmb2N1cyBvbiB0aGUgZW50cnkgcG9pbnRzIGFuZCB0aGUgaGFuZGxlcnMgdGhhdCBpbnRlcmFjdCB3aXRoIHRoZSBWTUNTIGRpcmVjdGx5LiBJbml0aWFsbHksIEkgd2FzIHRoaW5raW5nIGB2bXhfdmNwdV9ydW5gLCBgdm14X2hhbmRsZV9leGl0YCwgYF9fdm14X2hhbmRsZV9leGl0YCwgYGhhbmRsZV9lcHRfdmlvbGF0aW9uYCwgYW5kIGBoYW5kbGVfZXhjZXB0aW9uX25taWAgYXJlIHByaW1lIHRhcmdldHMuCgpgdm14X3ZjcHVfcnVuYCBzZWVtcyBsaWtlIGEgc29saWQgY2hvaWNlIHNpbmNlIGl0JiMzOTtzIHRoZSBtYWluIGZ1bmN0aW9uIHRvIGVudGVyIHRoZSBWTVggZXhlY3V0aW9uLCBzbyBJJiMzOTttIGdvaW5nIHRvIGtlZXAgaXQuIFllcywgaXQmIzM5O3MgYGZhc3RwYXRoX3Qgdm14X3ZjcHVfcnVuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IHJ1bl9mbGFncylgLiAKCkkmIzM5O3ZlIGFsc28gZ290IGB2bXhfaGFuZGxlX2V4aXRgLCBhcyBpdCB3aWxsIGhhbmRsZSBhbnkgZXhpdHMgZHVyaW5nIHRoZSBleGVjdXRpb24uCgpMZXQgbWUganVzdCBkb3VibGUtY2hlY2sgZm9yIGFueSBvdGhlciBmdW5jdGlvbnMgaW4gdGhpcyBzcGFjZS4gQWgsIHRoZXJlIGFyZSBhIGZldyBtb3JlOiBgdm14X3NldF9pbnRlcnJ1cHRfc2hhZG93YCwgYHZteF9nZXRfcmZsYWdzYCwgYHZteF9nZXRfaW50ZXJydXB0X3NoYWRvd2AsIGB2bXhfaW5qZWN0X2V4Y2VwdGlvbmAuIFdoaWxlIGludGVyZXN0aW5nLCBgdm14X3ZjcHVfcnVuYCBhbmQgYHZteF9oYW5kbGVfZXhpdGAgYXJlIHRoZSBiaWcgb25lcy4gVGhleSBhcmUgdGhlIGNvcmUgb2YgVk1YIGV4ZWN1dGlvbiBhbmQgZXhpdCwgYW5kIHRodXMgcmVseSBoZWF2aWx5IG9uIHRoZSBWTUNTIHJlYWRzIGFuZCB3cml0ZXMuCgpTbywgbGV0JiMzOTtzIHJlZmluZSB0aG9zZSBgRm9jdXNTeW1ib2xzYCBhZ2FpbjoKCiogICBgdm14X3ZjcHVfcnVuYAoqICAgYHZteF9oYW5kbGVfZXhpdGAKKiAgIGBfX3ZteF9oYW5kbGVfZXhpdGAKKiAgIGBoYW5kbGVfZXB0X3Zpb2xhdGlvbmAKKiAgIGBoYW5kbGVfZXhjZXB0aW9uX25taWAKClllYWgsIHRoaXMgaXMgbG9va2luZyBsaWtlIGEgc29saWQgc2V0IHRvIHN0YXJ0IHdpdGguIEkmIzM5O2xsIGZsYWcgdGhpcyBhcyAmIzM0O1dvcnRoRnV6emluZzogdHJ1ZSYjMzQ7IGJlY2F1c2UgY29tcGlsZXIgcmVvcmRlcmluZyBidWdzIGFyZSBleGFjdGx5IHRoZSB0eXBlIG9mIHN1YnRsZSBpc3N1ZXMgdGhhdCBmdXp6aW5nIGV4Y2VscyBhdCBmaW5kaW5nLiBUaW1lIHRvIGdvIGFoZWFkIGFuZCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxMjowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDssCiAgICAmIzM0O0tWTV9JTlRFTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ZteF92Y3B1X3J1biYjMzQ7LAogICAgJiMzNDt2bXhfaGFuZGxlX2V4aXQmIzM0OywKICAgICYjMzQ7X192bXhfaGFuZGxlX2V4aXQmIzM0OywKICAgICYjMzQ7aGFuZGxlX2VwdF92aW9sYXRpb24mIzM0OywKICAgICYjMzQ7aGFuZGxlX2V4Y2VwdGlvbl9ubWkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIFwmIzM0O21lbW9yeVwmIzM0OyBjbG9iYmVyIHRvIGlubGluZSBhc3NlbWJseSBmb3IgVk1DUyByZWFkcyBhbmQgd3JpdGVzIGluIEtWTSBWTVguIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHByZXZlbnRzIGNvbXBpbGVyIHJlb3JkZXJpbmcgYW5kIGNhY2hpbmcgb2YgbWVtb3J5IHZhbHVlcyBhcm91bmQgVk1DUyBvcGVyYXRpb25zLCB3aGljaCBjYW4gbGVhZCB0byBzdWJ0bGUgYnVncyBpbiBLVk0gZXhlY3V0aW9uIGZsb3cuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtLVk1fSU5URUwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2bXhfdmNwdV9ydW4mIzM0OywKICAgICYjMzQ7dm14X2hhbmRsZV9leGl0JiMzNDssCiAgICAmIzM0O19fdm14X2hhbmRsZV9leGl0JiMzNDssCiAgICAmIzM0O2hhbmRsZV9lcHRfdmlvbGF0aW9uJiMzNDssCiAgICAmIzM0O2hhbmRsZV9leGNlcHRpb25fbm1pJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBcJiMzNDttZW1vcnlcJiMzNDsgY2xvYmJlciB0byBpbmxpbmUgYXNzZW1ibHkgZm9yIFZNQ1MgcmVhZHMgYW5kIHdyaXRlcyBpbiBLVk0gVk1YLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBwcmV2ZW50cyBjb21waWxlciByZW9yZGVyaW5nIGFuZCBjYWNoaW5nIG9mIG1lbW9yeSB2YWx1ZXMgYXJvdW5kIFZNQ1Mgb3BlcmF0aW9ucywgd2hpY2ggY2FuIGxlYWQgdG8gc3VidGxlIGJ1Z3MgaW4gS1ZNIGV4ZWN1dGlvbiBmbG93LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjJUMTI6MDU6MDUuODY0NzAyOTk3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzM1ODM2NjYzOTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCIsXG4gICAgXCJLVk1fSU5URUxcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2bXhfdmNwdV9ydW5cIixcbiAgICBcInZteF9oYW5kbGVfZXhpdFwiLFxuICAgIFwiX192bXhfaGFuZGxlX2V4aXRcIixcbiAgICBcImhhbmRsZV9lcHRfdmlvbGF0aW9uXCIsXG4gICAgXCJoYW5kbGVfZXhjZXB0aW9uX25taVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBcXFwibWVtb3J5XFxcIiBjbG9iYmVyIHRvIGlubGluZSBhc3NlbWJseSBmb3IgVk1DUyByZWFkcyBhbmQgd3JpdGVzIGluIEtWTSBWTVguIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHByZXZlbnRzIGNvbXBpbGVyIHJlb3JkZXJpbmcgYW5kIGNhY2hpbmcgb2YgbWVtb3J5IHZhbHVlcyBhcm91bmQgVk1DUyBvcGVyYXRpb25zLCB3aGljaCBjYW4gbGVhZCB0byBzdWJ0bGUgYnVncyBpbiBLVk0gZXhlY3V0aW9uIGZsb3cuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDEyOjA1OjA1Ljg2NDcxMTM4N1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzU5NDMyODgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNTY1ZjgyYzQ3MTZmYTJmMzVkZWQ0YzllMzgxOTgxNWEzZmI3MTZlYlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEp1bCAyMiAxMjowNTowNCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vdm14L3ZteF9vcHMuaCBiL2FyY2gveDg2L2t2bS92bXgvdm14X29wcy5oXFxuaW5kZXggODE3ODRiZWZhYWY0OTguLjlmZmUwM2EwYzIyM2M0IDEwMDY0NFxcbi0tLSBhL2FyY2gveDg2L2t2bS92bXgvdm14X29wcy5oXFxuKysrIGIvYXJjaC94ODYva3ZtL3ZteC92bXhfb3BzLmhcXG5AQCAtMTAxLDcgKzEwMSw3IEBAIHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdW5zaWduZWQgbG9uZyBfX3ZtY3NfcmVhZGwodW5zaWduZWQgbG9uZyBmaWVsZClcXG4gXFxuIFxcdFxcdFxcdCAgOiBbb3V0cHV0XSBcXFwiPXJcXFwiICh2YWx1ZSlcXG4gXFx0XFx0XFx0ICA6IFtmaWVsZF0gXFxcInJcXFwiIChmaWVsZClcXG4tXFx0XFx0XFx0ICA6IFxcXCJjY1xcXCJcXG4rXFx0XFx0XFx0ICA6IFxcXCJjY1xcXCIsIFxcXCJtZW1vcnlcXFwiXFxuIFxcdFxcdFxcdCAgOiBkb19mYWlsLCBkb19leGNlcHRpb24pO1xcbiBcXG4gXFx0cmV0dXJuIHZhbHVlO1xcbkBAIC0xNDUsNyArMTQ1LDcgQEAgc3RhdGljIF9fYWx3YXlzX2lubGluZSB1bnNpZ25lZCBsb25nIF9fdm1jc19yZWFkbCh1bnNpZ25lZCBsb25nIGZpZWxkKVxcbiBcXG4gXFx0XFx0ICAgICA6IEFTTV9DQUxMX0NPTlNUUkFJTlQsIFtvdXRwdXRdIFxcXCI9XFx1MDAyNnJcXFwiICh2YWx1ZSlcXG4gXFx0XFx0ICAgICA6IFtmaWVsZF0gXFxcInJcXFwiIChmaWVsZClcXG4tXFx0XFx0ICAgICA6IFxcXCJjY1xcXCIpO1xcbitcXHRcXHQgICAgIDogXFxcImNjXFxcIiwgXFxcIm1lbW9yeVxcXCIpO1xcbiBcXHRyZXR1cm4gdmFsdWU7XFxuIFxcbiAjZW5kaWYgLyogQ09ORklHX0NDX0hBU19BU01fR09UT19PVVRQVVQgKi9cXG5AQCAtMTkyLDcgKzE5Miw3IEBAIGRvIHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdGFzbSBnb3RvKFxcXCIxOiBcXFwiIF9fc3RyaW5naWZ5KGluc24pIFxcXCIgJTBcXFxcblxcXFx0XFxcIlxcdFxcdFxcdFxcXFxcXG4gXFx0XFx0XFx0ICBcXFwiam5hICVsW2Vycm9yXVxcXFxuXFxcXHRcXFwiXFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRcXHRcXHQgIF9BU01fRVhUQUJMRSgxYiwgJWxbZmF1bHRdKVxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0XFx0ICA6IDogb3AxIDogXFxcImNjXFxcIiA6IGVycm9yLCBmYXVsdCk7XFx0XFx0XFxcXFxcbitcXHRcXHRcXHQgIDogOiBvcDEgOiBcXFwiY2NcXFwiLCBcXFwibWVtb3J5XFxcIiA6IGVycm9yLCBmYXVsdCk7XFx0XFxcXFxcbiBcXHRyZXR1cm47XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBlcnJvcjpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdGluc3RydW1lbnRhdGlvbl9iZWdpbigpO1xcdFxcdFxcdFxcdFxcdFxcXFxcXG5AQCAtMjA4LDcgKzIwOCw3IEBAIGRvIHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdGFzbSBnb3RvKFxcXCIxOiBcXFwiICBfX3N0cmluZ2lmeShpbnNuKSBcXFwiICUxLCAlMFxcXFxuXFxcXHRcXFwiXFx0XFx0XFx0XFxcXFxcbiBcXHRcXHRcXHQgIFxcXCJqbmEgJWxbZXJyb3JdXFxcXG5cXFxcdFxcXCJcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdFxcdFxcdCAgX0FTTV9FWFRBQkxFKDFiLCAlbFtmYXVsdF0pXFx0XFx0XFx0XFxcXFxcbi1cXHRcXHRcXHQgIDogOiBvcDEsIG9wMiA6IFxcXCJjY1xcXCIgOiBlcnJvciwgZmF1bHQpO1xcdFxcdFxcXFxcXG4rXFx0XFx0XFx0ICA6IDogb3AxLCBvcDIgOiBcXFwiY2NcXFwiLCBcXFwibWVtb3J5XFxcIiA6IGVycm9yLCBmYXVsdCk7XFxcXFxcbiBcXHRyZXR1cm47XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBlcnJvcjpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdGluc3RydW1lbnRhdGlvbl9iZWdpbigpO1xcdFxcdFxcdFxcdFxcdFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTI6MDU6MDYuMjI0NzcwMTc4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MzMyMjM1OTAxNjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCIsXG4gICAgXCJLVk1fSU5URUxcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2bXhfdmNwdV9ydW5cIixcbiAgICBcInZteF9oYW5kbGVfZXhpdFwiLFxuICAgIFwiX192bXhfaGFuZGxlX2V4aXRcIixcbiAgICBcImhhbmRsZV9lcHRfdmlvbGF0aW9uXCIsXG4gICAgXCJoYW5kbGVfZXhjZXB0aW9uX25taVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBcXFwibWVtb3J5XFxcIiBjbG9iYmVyIHRvIGlubGluZSBhc3NlbWJseSBmb3IgVk1DUyByZWFkcyBhbmQgd3JpdGVzIGluIEtWTSBWTVguIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHByZXZlbnRzIGNvbXBpbGVyIHJlb3JkZXJpbmcgYW5kIGNhY2hpbmcgb2YgbWVtb3J5IHZhbHVlcyBhcm91bmQgVk1DUyBvcGVyYXRpb25zLCB3aGljaCBjYW4gbGVhZCB0byBzdWJ0bGUgYnVncyBpbiBLVk0gZXhlY3V0aW9uIGZsb3cuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNTY1ZjgyYzQ3MTZmYTJmMzVkZWQ0YzllMzgxOTgxNWEzZmI3MTZlYlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDIyIDEyOjA1OjA0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3ZteC92bXhfb3BzLmggYi9hcmNoL3g4Ni9rdm0vdm14L3ZteF9vcHMuaFxuaW5kZXggODE3ODRiZWZhYWY0OTguLjlmZmUwM2EwYzIyM2M0IDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL3ZteC92bXhfb3BzLmhcbisrKyBiL2FyY2gveDg2L2t2bS92bXgvdm14X29wcy5oXG5AQCAtMTAxLDcgKzEwMSw3IEBAIHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdW5zaWduZWQgbG9uZyBfX3ZtY3NfcmVhZGwodW5zaWduZWQgbG9uZyBmaWVsZClcbiBcbiBcdFx0XHQgIDogW291dHB1dF0gXCI9clwiICh2YWx1ZSlcbiBcdFx0XHQgIDogW2ZpZWxkXSBcInJcIiAoZmllbGQpXG4tXHRcdFx0ICA6IFwiY2NcIlxuK1x0XHRcdCAgOiBcImNjXCIsIFwibWVtb3J5XCJcbiBcdFx0XHQgIDogZG9fZmFpbCwgZG9fZXhjZXB0aW9uKTtcbiBcbiBcdHJldHVybiB2YWx1ZTtcbkBAIC0xNDUsNyArMTQ1LDcgQEAgc3RhdGljIF9fYWx3YXlzX2lubGluZSB1bnNpZ25lZCBsb25nIF9fdm1jc19yZWFkbCh1bnNpZ25lZCBsb25nIGZpZWxkKVxuIFxuIFx0XHQgICAgIDogQVNNX0NBTExfQ09OU1RSQUlOVCwgW291dHB1dF0gXCI9XHUwMDI2clwiICh2YWx1ZSlcbiBcdFx0ICAgICA6IFtmaWVsZF0gXCJyXCIgKGZpZWxkKVxuLVx0XHQgICAgIDogXCJjY1wiKTtcbitcdFx0ICAgICA6IFwiY2NcIiwgXCJtZW1vcnlcIik7XG4gXHRyZXR1cm4gdmFsdWU7XG4gXG4gI2VuZGlmIC8qIENPTkZJR19DQ19IQVNfQVNNX0dPVE9fT1VUUFVUICovXG5AQCAtMTkyLDcgKzE5Miw3IEBAIGRvIHtcdFx0XHRcdFx0XHRcdFx0XHRcXFxuIFx0YXNtIGdvdG8oXCIxOiBcIiBfX3N0cmluZ2lmeShpbnNuKSBcIiAlMFxcblxcdFwiXHRcdFx0XFxcbiBcdFx0XHQgIFwiam5hICVsW2Vycm9yXVxcblxcdFwiXHRcdFx0XHRcXFxuIFx0XHRcdCAgX0FTTV9FWFRBQkxFKDFiLCAlbFtmYXVsdF0pXHRcdFx0XFxcbi1cdFx0XHQgIDogOiBvcDEgOiBcImNjXCIgOiBlcnJvciwgZmF1bHQpO1x0XHRcXFxuK1x0XHRcdCAgOiA6IG9wMSA6IFwiY2NcIiwgXCJtZW1vcnlcIiA6IGVycm9yLCBmYXVsdCk7XHRcXFxuIFx0cmV0dXJuO1x0XHRcdFx0XHRcdFx0XHRcXFxuIGVycm9yOlx0XHRcdFx0XHRcdFx0XHRcdFxcXG4gXHRpbnN0cnVtZW50YXRpb25fYmVnaW4oKTtcdFx0XHRcdFx0XFxcbkBAIC0yMDgsNyArMjA4LDcgQEAgZG8ge1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4gXHRhc20gZ290byhcIjE6IFwiICBfX3N0cmluZ2lmeShpbnNuKSBcIiAlMSwgJTBcXG5cXHRcIlx0XHRcdFxcXG4gXHRcdFx0ICBcImpuYSAlbFtlcnJvcl1cXG5cXHRcIlx0XHRcdFx0XFxcbiBcdFx0XHQgIF9BU01fRVhUQUJMRSgxYiwgJWxbZmF1bHRdKVx0XHRcdFxcXG4tXHRcdFx0ICA6IDogb3AxLCBvcDIgOiBcImNjXCIgOiBlcnJvciwgZmF1bHQpO1x0XHRcXFxuK1x0XHRcdCAgOiA6IG9wMSwgb3AyIDogXCJjY1wiLCBcIm1lbW9yeVwiIDogZXJyb3IsIGZhdWx0KTtcXFxuIFx0cmV0dXJuO1x0XHRcdFx0XHRcdFx0XHRcXFxuIGVycm9yOlx0XHRcdFx0XHRcdFx0XHRcdFxcXG4gXHRpbnN0cnVtZW50YXRpb25fYmVnaW4oKTtcdFx0XHRcdFx0XFxcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDEyOjA1OjA2LjIyNDc3MTQzOFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwNzY4NTY4ODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBLVk0vVk1YIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHRvdWNoZXMgYGFyY2gveDg2L2t2bS92bXgvdm14X29wcy5oYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiQWgsIFZNWCBvcGVyYXRpb25zLlwiIFRoYXQgZmlsZSBpcyBjZW50cmFsIHRvIGhvdyB0aGUgS1ZNIGh5cGVydmlzb3IgaW50ZXJhY3RzIHdpdGggdGhlIGhhcmR3YXJlIHZpcnR1YWxpemF0aW9uIGV4dGVuc2lvbnMuIFNwZWNpZmljYWxseSwgaXQgc2VlbXMgbGlrZSB0aGV5J3ZlIGFkZGVkIGBcIm1lbW9yeVwiYCB0byB0aGUgY2xvYmJlciBsaXN0IHdpdGhpbiB0aGUgaW5saW5lIGFzc2VtYmx5IGZvciBgX192bWNzX3JlYWRsYCBhbmQgdGhvc2UgVk1YIGluc3RydWN0aW9uIG1hY3JvcywgbGlrZSBgdm1jc193cml0ZWxgIGFuZCB0aGVpciBpbGssIHdoaWNoIHVzZSB0aGUgYGluc24gJTBgIG9yIGBpbnNuICUxLCAlMGAgY29uc3RydWN0cy5cblxuTXkgZXhwZXJ0aXNlIHRlbGxzIG1lIHRoaXMgaXMgYWxtb3N0IGNlcnRhaW5seSBhaW1lZCBhdCBlbnN1cmluZyBwcm9wZXIgbWVtb3J5IG9yZGVyaW5nLiBXaXRoIHRoZXNlIFZNQ1MgcmVhZHMvd3JpdGVzLCB5b3UncmUgZGVhbGluZyB3aXRoIHZlcnkgc2Vuc2l0aXZlIGhhcmR3YXJlIHN0YXRlLiBDb21waWxlcnMgY2FuIGJlIGNsZXZlciwgcG90ZW50aWFsbHkgcmVvcmRlcmluZyBpbnN0cnVjdGlvbnMgb3IgY2FjaGluZyB2YWx1ZXMgaW4gd2F5cyB0aGF0IGJyZWFrIHRoZSBjcml0aWNhbCBzeW5jaHJvbml6YXRpb24gbmVlZGVkIGZvciB2aXJ0dWFsaXphdGlvbiB0byBmdW5jdGlvbiBjb3JyZWN0bHkuIEJ5IGluY2x1ZGluZyBgXCJtZW1vcnlcImAgaW4gdGhlIGNsb2JiZXIgbGlzdCwgdGhlIHBhdGNoIGlzIGVzc2VudGlhbGx5IHRlbGxpbmcgdGhlIGNvbXBpbGVyLCBcIkhleSwgZG9uJ3QgYXNzdW1lIGFueXRoaW5nIGFib3V0IHRoZSBjb250ZW50cyBvZiBtZW1vcnkgc3Vycm91bmRpbmcgdGhlc2UgaW5zdHJ1Y3Rpb25zLiBUaGV5ICptaWdodCogYmUgY2hhbmdlZCBieSB0aGUgVk1YIGluc3RydWN0aW9uLCBhbmQgeW91IG5lZWQgdG8gdHJlYXQgdGhlbSBhcyB2b2xhdGlsZS5cIiBUaGlzIG1ha2VzIHNlbnNlIHRvIG1lLiBUaGUgcGF0Y2ggaXMgcHJvYmFibHkgZml4aW5nIHBvdGVudGlhbCBjb21waWxlci1yZWxhdGVkIGJ1Z3MgcmVsYXRlZCB0byByZW9yZGVyaW5nIG9mIGluc3RydWN0aW9ucyB0aGF0IHdvdWxkIG5vcm1hbGx5IGJlIHBlcmZlY3RseSB2YWxpZCBpbiBub24tdmlydHVhbGl6ZWQgY29kZS5cblxuTm93LCBJJ2xsIGRpdmUgaW50byBgYXJjaC94ODYva3ZtL3ZteC92bXhfb3BzLmhgIGl0c2VsZiB0byBjb25maXJtIG15IHVuZGVyc3RhbmRpbmcgYW5kIHNlZSB0aGUgc3BlY2lmaWNzIG9mIHRoZSBjaGFuZ2UuIFRoaXMgYWRkaXRpb24gaXMgbGlrZWx5IHRoZSBuZWNlc3NhcnkgXCJmZW5jZVwiIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZXNlIFZNWCBpbnN0cnVjdGlvbnMgd29yayBwcm9wZXJseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjMyMCwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzMiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDEyOjA1OjExLjMwMTYzMDc0OFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTg2NDY4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX3ZtY3NfcmVhZGxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL3ZteC92bXhfb3BzLmhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL3ZteC92bXhfb3BzLmg9Nzk9c3RhdGljIF9fYWx3YXlzX2lubGluZSB2b2lkIHZtY3NfY2hlY2tsKHVuc2lnbmVkIGxvbmcgZmllbGQpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteF9vcHMuaC05MC1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteF9vcHMuaDo5MTpzdGF0aWMgX19hbHdheXNfaW5saW5lIHVuc2lnbmVkIGxvbmcgX192bWNzX3JlYWRsKHVuc2lnbmVkIGxvbmcgZmllbGQpXFxuYXJjaC94ODYva3ZtL3ZteC92bXhfb3BzLmgtOTIte1xcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXhfb3BzLmg9MTU0PXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdTE2IHZtY3NfcmVhZDE2KHVuc2lnbmVkIGxvbmcgZmllbGQpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteF9vcHMuaC0xNTgtXFx0XFx0cmV0dXJuIGV2bWNzX3JlYWQxNihmaWVsZCk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXhfb3BzLmg6MTU5OlxcdHJldHVybiBfX3ZtY3NfcmVhZGwoZmllbGQpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14X29wcy5oLTE2MC19XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteF9vcHMuaD0xNjI9c3RhdGljIF9fYWx3YXlzX2lubGluZSB1MzIgdm1jc19yZWFkMzIodW5zaWduZWQgbG9uZyBmaWVsZClcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14X29wcy5oLTE2Ni1cXHRcXHRyZXR1cm4gZXZtY3NfcmVhZDMyKGZpZWxkKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteF9vcHMuaDoxNjc6XFx0cmV0dXJuIF9fdm1jc19yZWFkbChmaWVsZCk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXhfb3BzLmgtMTY4LX1cXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14X29wcy5oPTE3MD1zdGF0aWMgX19hbHdheXNfaW5saW5lIHU2NCB2bWNzX3JlYWQ2NCh1bnNpZ25lZCBsb25nIGZpZWxkKVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXhfb3BzLmgtMTc1LSNpZmRlZiBDT05GSUdfWDg2XzY0XFxuYXJjaC94ODYva3ZtL3ZteC92bXhfb3BzLmg6MTc2OlxcdHJldHVybiBfX3ZtY3NfcmVhZGwoZmllbGQpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14X29wcy5oLTE3Ny0jZWxzZVxcbmFyY2gveDg2L2t2bS92bXgvdm14X29wcy5oOjE3ODpcXHRyZXR1cm4gX192bWNzX3JlYWRsKGZpZWxkKSB8ICgodTY0KV9fdm1jc19yZWFkbChmaWVsZCsxKSBcXHUwMDNjXFx1MDAzYyAzMik7XFxuYXJjaC94ODYva3ZtL3ZteC92bXhfb3BzLmgtMTc5LSNlbmRpZlxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXhfb3BzLmg9MTgyPXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdW5zaWduZWQgbG9uZyB2bWNzX3JlYWRsKHVuc2lnbmVkIGxvbmcgZmllbGQpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteF9vcHMuaC0xODYtXFx0XFx0cmV0dXJuIGV2bWNzX3JlYWQ2NChmaWVsZCk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXhfb3BzLmg6MTg3OlxcdHJldHVybiBfX3ZtY3NfcmVhZGwoZmllbGQpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14X29wcy5oLTE4OC19XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteF9vcHMuaD0yNjY9c3RhdGljIF9fYWx3YXlzX2lubGluZSB2b2lkIHZtY3NfY2xlYXJfYml0cyh1bnNpZ25lZCBsb25nIGZpZWxkLCB1MzIgbWFzaylcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14X29wcy5oLTI3Mi1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteF9vcHMuaDoyNzM6XFx0X192bWNzX3dyaXRlbChmaWVsZCwgX192bWNzX3JlYWRsKGZpZWxkKSBcXHUwMDI2IH5tYXNrKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteF9vcHMuaC0yNzQtfVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXhfb3BzLmg9Mjc2PXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdm9pZCB2bWNzX3NldF9iaXRzKHVuc2lnbmVkIGxvbmcgZmllbGQsIHUzMiBtYXNrKVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXhfb3BzLmgtMjgyLVxcbmFyY2gveDg2L2t2bS92bXgvdm14X29wcy5oOjI4MzpcXHRfX3ZtY3Nfd3JpdGVsKGZpZWxkLCBfX3ZtY3NfcmVhZGwoZmllbGQpIHwgbWFzayk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXhfb3BzLmgtMjg0LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTI6MDU6MTEuMzU3NDk5NTYzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTkyNjg5MjUzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEltcGFjdCBvZiB0aGUgTWVtb3J5IENsb2JiZXIgaW4gS1ZNIFZNWCBJbmxpbmUgQXNzZW1ibHkqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBgXCJtZW1vcnlcImAgY2xvYmJlciBpbnRvIHRoZSBpbmxpbmUgYXNzZW1ibHkgd2l0aGluIGBfX3ZtY3NfcmVhZGxgIGFuZCB0aGUgYHZteF9hc20xYC9gdm14X2FzbTJgIG1hY3Jvcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIG5lY2Vzc2FyeSBvbmUuIEl0IHN0b3BzIHRoZSBjb21waWxlciBmcm9tIGJlaW5nIG92ZXJseSBhZ2dyZXNzaXZlIGluIGNhY2hpbmcgbWVtb3J5IHZhbHVlcyBhY3Jvc3MgVk1DUyByZWFkcyBhbmQgd3JpdGVzLiBUaGF0J3MgY3J1Y2lhbCBmb3IgY29ycmVjdG5lc3MgaW4gdGhpcyBjb250ZXh0LiBCdXQgd2FpdOKApiBkb2VzIHRoaXMgYWN0dWFsbHkgKmNoYW5nZSogdGhlIGV4ZWN1dGlvbiBmbG93PyBUZWNobmljYWxseSwgaXQncyBhIGNvbXBpbGVyIGJlaGF2aW9yIGNoYW5nZSwgYnV0IHRoYXQgc3VidGx5IGFmZmVjdHMgaG93IHRoZSBjb2RlIGV4ZWN1dGVzLCBlc3BlY2lhbGx5IHdpdGggbWVtb3J5IGJhcnJpZXJzLiBUaGlzIHdhcnJhbnRzIGEgZGVlcGVyIGxvb2suXG5cblRoZSBuZXh0IHF1ZXN0aW9uIGlzIGZ1enppbmcuIFdvdWxkIHRoaXMgYmUgYSBnb29kIHRhcmdldD8gSXQgd29uJ3Qgc3BlY2lmaWNhbGx5IHRhcmdldCB0aGUgY2xvYmJlciBpdHNlbGYsIGJ1dCBpdOKAmXMgYSBjb3JlIGNoYW5nZSB3aXRoaW4gS1ZNIFZNWC4gV2hpbGUgZnV6emluZyBtaWdodCBub3QgaGl0IHRoZSBwcmVjaXNlIHJhY2UgY29uZGl0aW9uIG9yIGNvbXBpbGVyIHJlb3JkZXJpbmcgd2UncmUgbm93IHRyeWluZyB0byBwcmV2ZW50LCBpdCAqaXMqIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBjcml0aWNhbCBhcmVhLCBzbyBpdCdzIHByb2JhYmx5IHdvcnRoIGl0LlxuXG5BbHJpZ2h0LCBsZXQncyB0cnkgdG8gZXh0cmFjdCBzb21lIHJlbGV2YW50IHN5bWJvbHMgdG8gZm9jdXMgb24uIFRoaW5raW5nIGFib3V0IHRoZSBmdW5jdGlvbnMgaW52b2x2ZWQ6IGB2bWNzX3JlYWRsYCwgYHZtY3Nfd3JpdGVsYCwgYW5kIHRoZSBsaWtlIC0gdGhleSdyZSBhbGwgaW5saW5lLiBJIGNhbiBzZWUgdGhleSBhcmUgdXNlZCBwcmV0dHkgd2lkZWx5IHRocm91Z2hvdXQgYGFyY2gveDg2L2t2bS92bXgvYC4gSSdsbCBmb2N1cyBvbiBgYXJjaC94ODYva3ZtL3ZteC92bXguY2AgdG8gc2VlIGlmIEkgY2FuIHVuZGVyc3RhbmQgaG93IHRoZXNlIG5ldyBjbG9iYmVycyBhcmUgYmVpbmcgdXNlZCBpbiBtb3JlIGNvbmNyZXRlIGV4YW1wbGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTI4LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDEyOjA1OjE3LjI4NDM5Mzg1NVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTAxMzQyNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2bWNzX3JlYWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL3ZteC92bXguY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDUxMCBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYz01NjI9bm9pbmxpbmUgdm9pZCB2bXdyaXRlX2Vycm9yKHVuc2lnbmVkIGxvbmcgZmllbGQsIHVuc2lnbmVkIGxvbmcgdmFsdWUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTU2NC1cXHR2bXhfaW5zbl9mYWlsZWQoXFxcInZtd3JpdGUgZmFpbGVkOiBmaWVsZD0lbHggdmFsPSVseCBlcnI9JXVcXFxcblxcXCIsXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo1NjU6XFx0XFx0XFx0ZmllbGQsIHZhbHVlLCB2bWNzX3JlYWQzMihWTV9JTlNUUlVDVElPTl9FUlJPUikpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNTY2LX1cXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM9NTY4PW5vaW5saW5lIHZvaWQgdm1jbGVhcl9lcnJvcihzdHJ1Y3Qgdm1jcyAqdm1jcywgdTY0IHBoeXNfYWRkcilcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNTcwLVxcdHZteF9pbnNuX2ZhaWxlZChcXFwidm1jbGVhciBmYWlsZWQ6ICVwLyVsbHggZXJyPSV1XFxcXG5cXFwiLFxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NTcxOlxcdFxcdFxcdHZtY3MsIHBoeXNfYWRkciwgdm1jc19yZWFkMzIoVk1fSU5TVFJVQ1RJT05fRVJST1IpKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTU3Mi19XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTU3ND1ub2lubGluZSB2b2lkIHZtcHRybGRfZXJyb3Ioc3RydWN0IHZtY3MgKnZtY3MsIHU2NCBwaHlzX2FkZHIpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTU3Ni1cXHR2bXhfaW5zbl9mYWlsZWQoXFxcInZtcHRybGQgZmFpbGVkOiAlcC8lbGx4IGVycj0ldVxcXFxuXFxcIixcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjU3NzpcXHRcXHRcXHR2bWNzLCBwaHlzX2FkZHIsIHZtY3NfcmVhZDMyKFZNX0lOU1RSVUNUSU9OX0VSUk9SKSk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy01NzgtfVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYz04NjM9c3RhdGljIHUxNiB2bXhfcmVhZF9ndWVzdF9zZWdfc2VsZWN0b3Ioc3RydWN0IHZjcHVfdm14ICp2bXgsIHVuc2lnbmVkIHNlZylcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtODY3LVxcdGlmICghdm14X3NlZ21lbnRfY2FjaGVfdGVzdF9zZXQodm14LCBzZWcsIFNFR19GSUVMRF9TRUwpKVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6ODY4OlxcdFxcdCpwID0gdm1jc19yZWFkMTYoa3ZtX3ZteF9zZWdtZW50X2ZpZWxkc1tzZWddLnNlbGVjdG9yKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTg2OS1cXHRyZXR1cm4gKnA7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTg3Mj1zdGF0aWMgdWxvbmcgdm14X3JlYWRfZ3Vlc3Rfc2VnX2Jhc2Uoc3RydWN0IHZjcHVfdm14ICp2bXgsIHVuc2lnbmVkIHNlZylcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtODc2LVxcdGlmICghdm14X3NlZ21lbnRfY2FjaGVfdGVzdF9zZXQodm14LCBzZWcsIFNFR19GSUVMRF9CQVNFKSlcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjg3NzpcXHRcXHQqcCA9IHZtY3NfcmVhZGwoa3ZtX3ZteF9zZWdtZW50X2ZpZWxkc1tzZWddLmJhc2UpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtODc4LVxcdHJldHVybiAqcDtcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM9ODgxPXN0YXRpYyB1MzIgdm14X3JlYWRfZ3Vlc3Rfc2VnX2xpbWl0KHN0cnVjdCB2Y3B1X3ZteCAqdm14LCB1bnNpZ25lZCBzZWcpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTg4NS1cXHRpZiAoIXZteF9zZWdtZW50X2NhY2hlX3Rlc3Rfc2V0KHZteCwgc2VnLCBTRUdfRklFTERfTElNSVQpKVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6ODg2OlxcdFxcdCpwID0gdm1jc19yZWFkMzIoa3ZtX3ZteF9zZWdtZW50X2ZpZWxkc1tzZWddLmxpbWl0KTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTg4Ny1cXHRyZXR1cm4gKnA7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTg5MD1zdGF0aWMgdTMyIHZteF9yZWFkX2d1ZXN0X3NlZ19hcihzdHJ1Y3QgdmNwdV92bXggKnZteCwgdW5zaWduZWQgc2VnKVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy04OTQtXFx0aWYgKCF2bXhfc2VnbWVudF9jYWNoZV90ZXN0X3NldCh2bXgsIHNlZywgU0VHX0ZJRUxEX0FSKSlcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjg5NTpcXHRcXHQqcCA9IHZtY3NfcmVhZDMyKGt2bV92bXhfc2VnbWVudF9maWVsZHNbc2VnXS5hcl9ieXRlcyk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy04OTYtXFx0cmV0dXJuICpwO1xcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYz0xNjI3PXVuc2lnbmVkIGxvbmcgdm14X2dldF9yZmxhZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0xNjMzLVxcdFxcdGt2bV9yZWdpc3Rlcl9tYXJrX2F2YWlsYWJsZSh2Y3B1LCBWQ1BVX1JFR19SRkxBR1MpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6MTYzNDpcXHRcXHRyZmxhZ3MgPSB2bWNzX3JlYWRsKEdVRVNUX1JGTEFHUyk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0xNjM1LVxcdFxcdGlmICh2bXgtXFx1MDAzZXJtb2RlLnZtODZfYWN0aXZlKSB7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTE2Nzk9dTMyIHZteF9nZXRfaW50ZXJydXB0X3NoYWRvdyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0xNjgwLXtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjE2ODE6XFx0dTMyIGludGVycnVwdGliaWxpdHkgPSB2bWNzX3JlYWQzMihHVUVTVF9JTlRFUlJVUFRJQklMSVRZX0lORk8pO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMTY4Mi1cXHRpbnQgcmV0ID0gMDtcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM9MTY5Mj12b2lkIHZteF9zZXRfaW50ZXJydXB0X3NoYWRvdyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGludCBtYXNrKVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMTY5My17XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzoxNjk0OlxcdHUzMiBpbnRlcnJ1cHRpYmlsaXR5X29sZCA9IHZtY3NfcmVhZDMyKEdVRVNUX0lOVEVSUlVQVElCSUxJVFlfSU5GTyk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0xNjk1LVxcdHUzMiBpbnRlcnJ1cHRpYmlsaXR5ID0gaW50ZXJydXB0aWJpbGl0eV9vbGQ7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTE4MDQ9c3RhdGljIGludCBza2lwX2VtdWxhdGVkX2luc3RydWN0aW9uKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMTgxOS1cXHQgICAgZXhpdF9yZWFzb24uYmFzaWMgIT0gRVhJVF9SRUFTT05fRVBUX01JU0NPTkZJRykge1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6MTgyMDpcXHRcXHRpbnN0cl9sZW4gPSB2bWNzX3JlYWQzMihWTV9FWElUX0lOU1RSVUNUSU9OX0xFTik7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0xODIxLVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYz0xOTA5PXN0YXRpYyB2b2lkIHZteF9jbGVhcl9obHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0xOTE3LVxcdGlmIChrdm1faGx0X2luX2d1ZXN0KHZjcHUtXFx1MDAzZWt2bSkgXFx1MDAyNlxcdTAwMjZcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjE5MTg6XFx0XFx0XFx0dm1jc19yZWFkMzIoR1VFU1RfQUNUSVZJVFlfU1RBVEUpID09IEdVRVNUX0FDVElWSVRZX0hMVClcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTE5MTktXFx0XFx0dm1jc193cml0ZTMyKEdVRVNUX0FDVElWSVRZX1NUQVRFLCBHVUVTVF9BQ1RJVklUWV9BQ1RJVkUpO1xcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYz0xOTIyPXZvaWQgdm14X2luamVjdF9leGNlcHRpb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0xOTQzLVxcdFxcdHZtY3Nfd3JpdGVsKEdVRVNUX1BFTkRJTkdfREJHX0VYQ0VQVElPTlMsXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzoxOTQ0OlxcdFxcdFxcdCAgICB2bWNzX3JlYWRsKEdVRVNUX1BFTkRJTkdfREJHX0VYQ0VQVElPTlMpIHwgRFI2X0JTKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTE5NDUtXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTIxMjY9aW50IHZteF9nZXRfbXNyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IG1zcl9kYXRhICptc3JfaW5mbylcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMjEzNC1cXHRjYXNlIE1TUl9GU19CQVNFOlxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6MjEzNTpcXHRcXHRtc3JfaW5mby1cXHUwMDNlZGF0YSA9IHZtY3NfcmVhZGwoR1VFU1RfRlNfQkFTRSk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0yMTM2LVxcdFxcdGJyZWFrO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMjEzNy1cXHRjYXNlIE1TUl9HU19CQVNFOlxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6MjEzODpcXHRcXHRtc3JfaW5mby1cXHUwMDNlZGF0YSA9IHZtY3NfcmVhZGwoR1VFU1RfR1NfQkFTRSk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0yMTM5LVxcdFxcdGJyZWFrO1xcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0yMTY0LVxcdGNhc2UgTVNSX0lBMzJfU1lTRU5URVJfQ1M6XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzoyMTY1OlxcdFxcdG1zcl9pbmZvLVxcdTAwM2VkYXRhID0gdm1jc19yZWFkMzIoR1VFU1RfU1lTRU5URVJfQ1MpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMjE2Ni1cXHRcXHRicmVhaztcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTIxNjctXFx0Y2FzZSBNU1JfSUEzMl9TWVNFTlRFUl9FSVA6XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzoyMTY4OlxcdFxcdG1zcl9pbmZvLVxcdTAwM2VkYXRhID0gdm1jc19yZWFkbChHVUVTVF9TWVNFTlRFUl9FSVApO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMjE2OS1cXHRcXHRicmVhaztcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTIxNzAtXFx0Y2FzZSBNU1JfSUEzMl9TWVNFTlRFUl9FU1A6XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzoyMTcxOlxcdFxcdG1zcl9pbmZvLVxcdTAwM2VkYXRhID0gdm1jc19yZWFkbChHVUVTVF9TWVNFTlRFUl9FU1ApO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMjE3Mi1cXHRcXHRicmVhaztcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMjE3Ny1cXHRcXHRcXHRyZXR1cm4gMTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjIxNzg6XFx0XFx0bXNyX2luZm8tXFx1MDAzZWRhdGEgPSB2bWNzX3JlYWQ2NChHVUVTVF9CTkRDRkdTKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTIxNzktXFx0XFx0YnJlYWs7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTIyNjEtXFx0Y2FzZSBNU1JfSUEzMl9TX0NFVDpcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjIyNjI6XFx0XFx0bXNyX2luZm8tXFx1MDAzZWRhdGEgPSB2bWNzX3JlYWRsKEdVRVNUX1NfQ0VUKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTIyNjMtXFx0XFx0YnJlYWs7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0yMjY0LVxcdGNhc2UgTVNSX0tWTV9JTlRFUk5BTF9HVUVTVF9TU1A6XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzoyMjY1OlxcdFxcdG1zcl9pbmZvLVxcdTAwM2VkYXRhID0gdm1jc19yZWFkbChHVUVTVF9TU1ApO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMjI2Ni1cXHRcXHRicmVhaztcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTIyNjctXFx0Y2FzZSBNU1JfSUEzMl9JTlRfU1NQX1RBQjpcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjIyNjg6XFx0XFx0bXNyX2luZm8tXFx1MDAzZWRhdGEgPSB2bWNzX3JlYWRsKEdVRVNUX0lOVFJfU1NQX1RBQkxFKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTIyNjktXFx0XFx0YnJlYWs7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTI2MzU9dm9pZCB2bXhfY2FjaGVfcmVnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgZW51bSBrdm1fcmVnIHJlZylcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMjY0Mi1cXHRjYXNlIFZDUFVfUkVHU19SU1A6XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzoyNjQzOlxcdFxcdHZjcHUtXFx1MDAzZWFyY2gucmVnc1tWQ1BVX1JFR1NfUlNQXSA9IHZtY3NfcmVhZGwoR1VFU1RfUlNQKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTI2NDQtXFx0XFx0YnJlYWs7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0yNjQ1LVxcdGNhc2UgVkNQVV9SRUdfUklQOlxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6MjY0NjpcXHRcXHR2Y3B1LVxcdTAwM2VhcmNoLnJpcCA9IHZtY3NfcmVhZGwoR1VFU1RfUklQKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTI2NDctXFx0XFx0YnJlYWs7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTI2NTUtXFx0XFx0dmNwdS1cXHUwMDNlYXJjaC5jcjAgXFx1MDAyNj0gfmd1ZXN0X293bmVkX2JpdHM7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzoyNjU2OlxcdFxcdHZjcHUtXFx1MDAzZWFyY2guY3IwIHw9IHZtY3NfcmVhZGwoR1VFU1RfQ1IwKSBcXHUwMDI2IGd1ZXN0X293bmVkX2JpdHM7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0yNjU3LVxcdFxcdGJyZWFrO1xcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0yNjYzLVxcdFxcdGlmICghKGV4ZWNfY29udHJvbHNfZ2V0KHRvX3ZteCh2Y3B1KSkgXFx1MDAyNiBDUFVfQkFTRURfQ1IzX0xPQURfRVhJVElORykpXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzoyNjY0OlxcdFxcdFxcdHZjcHUtXFx1MDAzZWFyY2guY3IzID0gdm1jc19yZWFkbChHVUVTVF9DUjMpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMjY2NS1cXHRcXHRicmVhaztcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMjY2OS1cXHRcXHR2Y3B1LVxcdTAwM2VhcmNoLmNyNCBcXHUwMDI2PSB+Z3Vlc3Rfb3duZWRfYml0cztcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjI2NzA6XFx0XFx0dmNwdS1cXHUwMDNlYXJjaC5jcjQgfD0gdm1jc19yZWFkbChHVUVTVF9DUjQpIFxcdTAwMjYgZ3Vlc3Rfb3duZWRfYml0cztcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTI2NzEtXFx0XFx0YnJlYWs7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTMxMzE9c3RhdGljIHZvaWQgZW50ZXJfcG1vZGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0zMTUwLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6MzE1MTpcXHRmbGFncyA9IHZtY3NfcmVhZGwoR1VFU1RfUkZMQUdTKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTMxNTItXFx0ZmxhZ3MgXFx1MDAyNj0gUk1PREVfR1VFU1RfT1dORURfRUZMQUdTX0JJVFM7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTMxNTUtXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzozMTU2OlxcdHZtY3Nfd3JpdGVsKEdVRVNUX0NSNCwgKHZtY3NfcmVhZGwoR1VFU1RfQ1I0KSBcXHUwMDI2IH5YODZfQ1I0X1ZNRSkgfFxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6MzE1NzpcXHRcXHRcXHQodm1jc19yZWFkbChDUjRfUkVBRF9TSEFET1cpIFxcdTAwMjYgWDg2X0NSNF9WTUUpKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTMxNTgtXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTMyMDE9c3RhdGljIHZvaWQgZW50ZXJfcm1vZGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0zMjMxLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6MzIzMjpcXHRmbGFncyA9IHZtY3NfcmVhZGwoR1VFU1RfUkZMQUdTKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTMyMzMtXFx0dm14LVxcdTAwM2VybW9kZS5zYXZlX3JmbGFncyA9IGZsYWdzO1xcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0zMjM3LVxcdHZtY3Nfd3JpdGVsKEdVRVNUX1JGTEFHUywgZmxhZ3MpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6MzIzODpcXHR2bWNzX3dyaXRlbChHVUVTVF9DUjQsIHZtY3NfcmVhZGwoR1VFU1RfQ1I0KSB8IFg4Nl9DUjRfVk1FKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTMyMzktXFx0dm14X3VwZGF0ZV9leGNlcHRpb25fYml0bWFwKHZjcHUpO1xcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYz0zMjc0PXN0YXRpYyB2b2lkIGVudGVyX2xtb2RlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMzI3OS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjMyODA6XFx0Z3Vlc3RfdHJfYXIgPSB2bWNzX3JlYWQzMihHVUVTVF9UUl9BUl9CWVRFUyk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0zMjgxLVxcdGlmICgoZ3Vlc3RfdHJfYXIgXFx1MDAyNiBWTVhfQVJfVFlQRV9NQVNLKSAhPSBWTVhfQVJfVFlQRV9CVVNZXzY0X1RTUykge1xcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYz0zNDExPXZvaWQgZXB0X3NhdmVfcGRwdHJzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMzQxNS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjM0MTY6XFx0dmNwdS1cXHUwMDNlYXJjaC5wZHB0cnNbMF0gPSB2bWNzX3JlYWQ2NChHVUVTVF9QRFBUUjApO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6MzQxNzpcXHR2Y3B1LVxcdTAwM2VhcmNoLnBkcHRyc1sxXSA9IHZtY3NfcmVhZDY0KEdVRVNUX1BEUFRSMSk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzozNDE4OlxcdHZjcHUtXFx1MDAzZWFyY2gucGRwdHJzWzJdID0gdm1jc19yZWFkNjQoR1VFU1RfUERQVFIyKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjM0MTk6XFx0dmNwdS1cXHUwMDNlYXJjaC5wZHB0cnNbM10gPSB2bWNzX3JlYWQ2NChHVUVTVF9QRFBUUjMpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMzQyMC1cXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM9MzY5MD1zdGF0aWMgaW50IF9fdm14X2dldF9jcGwoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBib29sIG5vX2NhY2hlKVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0zNjk4LVxcdGlmIChub19jYWNoZSlcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjM2OTk6XFx0XFx0YXIgPSB2bWNzX3JlYWQzMihHVUVTVF9TU19BUl9CWVRFUyk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0zNzAwLVxcdGVsc2VcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM9Mzc4ND12b2lkIHZteF9nZXRfaWR0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGRlc2NfcHRyICpkdClcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTM3ODUte1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6Mzc4NjpcXHRkdC1cXHUwMDNlc2l6ZSA9IHZtY3NfcmVhZDMyKEdVRVNUX0lEVFJfTElNSVQpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6Mzc4NzpcXHRkdC1cXHUwMDNlYWRkcmVzcyA9IHZtY3NfcmVhZGwoR1VFU1RfSURUUl9CQVNFKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTM3ODgtfVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYz0zNzk2PXZvaWQgdm14X2dldF9nZHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgZGVzY19wdHIgKmR0KVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMzc5Ny17XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzozNzk4OlxcdGR0LVxcdTAwM2VzaXplID0gdm1jc19yZWFkMzIoR1VFU1RfR0RUUl9MSU1JVCk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzozNzk5OlxcdGR0LVxcdTAwM2VhZGRyZXNzID0gdm1jc19yZWFkbChHVUVTVF9HRFRSX0JBU0UpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMzgwMC19XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTUxMDg9dm9pZCB2bXhfZW5hYmxlX25taV93aW5kb3coc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy01MTEwLVxcdGlmICghZW5hYmxlX3ZubWkgfHxcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjUxMTE6XFx0ICAgIHZtY3NfcmVhZDMyKEdVRVNUX0lOVEVSUlVQVElCSUxJVFlfSU5GTykgXFx1MDAyNiBHVUVTVF9JTlRSX1NUQVRFX1NUSSkge1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNTExMi1cXHRcXHR2bXhfZW5hYmxlX2lycV93aW5kb3codmNwdSk7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTUxNzg9Ym9vbCB2bXhfZ2V0X25taV9tYXNrKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNTE4Ni1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo1MTg3OlxcdG1hc2tlZCA9IHZtY3NfcmVhZDMyKEdVRVNUX0lOVEVSUlVQVElCSUxJVFlfSU5GTykgXFx1MDAyNiBHVUVTVF9JTlRSX1NUQVRFX05NSTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTUxODgtXFx0dm14LVxcdTAwM2Vsb2FkZWRfdm1jcy1cXHUwMDNlbm1pX2tub3duX3VubWFza2VkID0gIW1hc2tlZDtcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM9NTIxMj1ib29sIHZteF9ubWlfYmxvY2tlZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTUyMTktXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo1MjIwOlxcdHJldHVybiAodm1jc19yZWFkMzIoR1VFU1RfSU5URVJSVVBUSUJJTElUWV9JTkZPKSBcXHUwMDI2XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy01MjIxLVxcdFxcdChHVUVTVF9JTlRSX1NUQVRFX01PVl9TUyB8IEdVRVNUX0lOVFJfU1RBVEVfU1RJIHxcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM9NTIzNz1ib29sIF9fdm14X2ludGVycnVwdF9ibG9ja2VkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNTIzOS1cXHRyZXR1cm4gISh2bXhfZ2V0X3JmbGFncyh2Y3B1KSBcXHUwMDI2IFg4Nl9FRkxBR1NfSUYpIHx8XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo1MjQwOlxcdCAgICAgICAodm1jc19yZWFkMzIoR1VFU1RfSU5URVJSVVBUSUJJTElUWV9JTkZPKSBcXHUwMDI2XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy01MjQxLVxcdFxcdChHVUVTVF9JTlRSX1NUQVRFX1NUSSB8IEdVRVNUX0lOVFJfU1RBVEVfTU9WX1NTKSk7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTUyOTY9c3RhdGljIGJvb2wgcm1vZGVfZXhjZXB0aW9uKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgaW50IHZlYylcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNTMwNC1cXHRcXHR0b192bXgodmNwdSktXFx1MDAzZXZjcHUuYXJjaC5ldmVudF9leGl0X2luc3RfbGVuID1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjUzMDU6XFx0XFx0XFx0dm1jc19yZWFkMzIoVk1fRVhJVF9JTlNUUlVDVElPTl9MRU4pO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNTMwNi1cXHRcXHRpZiAodmNwdS1cXHUwMDNlZ3Vlc3RfZGVidWcgXFx1MDAyNiBLVk1fR1VFU1REQkdfVVNFX1NXX0JQKVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYz01NDI1PXN0YXRpYyBpbnQgaGFuZGxlX2V4Y2VwdGlvbl9ubWkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy01NDcwLVxcdGlmIChpbnRyX2luZm8gXFx1MDAyNiBJTlRSX0lORk9fREVMSVZFUl9DT0RFX01BU0spXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo1NDcxOlxcdFxcdGVycm9yX2NvZGUgPSB2bWNzX3JlYWQzMihWTV9FWElUX0lOVFJfRVJST1JfQ09ERSk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy01NDcyLVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy01NTM0LVxcdFxcdGt2bV9ydW4tXFx1MDAzZWRlYnVnLmFyY2guZHI2ID0gZHI2IHwgRFI2X0FDVElWRV9MT1c7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo1NTM1OlxcdFxcdGt2bV9ydW4tXFx1MDAzZWRlYnVnLmFyY2guZHI3ID0gdm1jc19yZWFkbChHVUVTVF9EUjcpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNTUzNi1cXHRcXHRmYWxsdGhyb3VnaDtcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNTU0My1cXHRcXHR2bXgtXFx1MDAzZXZjcHUuYXJjaC5ldmVudF9leGl0X2luc3RfbGVuID1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjU1NDQ6XFx0XFx0XFx0dm1jc19yZWFkMzIoVk1fRVhJVF9JTlNUUlVDVElPTl9MRU4pO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNTU0NS1cXHRcXHRrdm1fcnVuLVxcdTAwM2VleGl0X3JlYXNvbiA9IEtWTV9FWElUX0RFQlVHO1xcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYz01NzUyPXN0YXRpYyBpbnQgaGFuZGxlX2RyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNTc2Ny1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjU3Njg6XFx0ZHI3ID0gdm1jc19yZWFkbChHVUVTVF9EUjcpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNTc2OS1cXHRpZiAoZHI3IFxcdTAwMjYgRFI3X0dEKSB7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTU4MTI9dm9pZCB2bXhfc3luY19kaXJ0eV9kZWJ1Z19yZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNTgxOC1cXHRnZXRfZGVidWdyZWcodmNwdS1cXHUwMDNlYXJjaC5kcjYsIDYpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NTgxOTpcXHR2Y3B1LVxcdTAwM2VhcmNoLmRyNyA9IHZtY3NfcmVhZGwoR1VFU1RfRFI3KTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTU4MjAtXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTU5MDk9c3RhdGljIGludCBoYW5kbGVfdGFza19zd2l0Y2goc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy01OTM5LVxcdFxcdFxcdFxcdGVycm9yX2NvZGUgPVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NTk0MDpcXHRcXHRcXHRcXHRcXHR2bWNzX3JlYWQzMihJRFRfVkVDVE9SSU5HX0VSUk9SX0NPREUpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNTk0MS1cXHRcXHRcXHR9XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTU5NjY9c3RhdGljIGludCBoYW5kbGVfZXB0X3Zpb2xhdGlvbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTU5ODEtXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo1OTgyOlxcdGdwYSA9IHZtY3NfcmVhZDY0KEdVRVNUX1BIWVNJQ0FMX0FERFJFU1MpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNTk4My1cXHR0cmFjZV9rdm1fcGFnZV9mYXVsdCh2Y3B1LCBncGEsIGV4aXRfcXVhbGlmaWNhdGlvbik7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTU5OTk9c3RhdGljIGludCBoYW5kbGVfZXB0X21pc2NvbmZpZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTYwMDktXFx0ICovXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2MDEwOlxcdGdwYSA9IHZtY3NfcmVhZDY0KEdVRVNUX1BIWVNJQ0FMX0FERFJFU1MpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjAxMS1cXHRpZiAoIWlzX2d1ZXN0X21vZGUodmNwdSkgXFx1MDAyNlxcdTAwMjZcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM9NjE0Nj1zdGF0aWMgaW50IGhhbmRsZV9pbnZwY2lkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjE2MS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjYxNjI6XFx0dm14X2luc3RydWN0aW9uX2luZm8gPSB2bWNzX3JlYWQzMihWTVhfSU5TVFJVQ1RJT05fSU5GTyk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02MTYzLVxcdGdwcl9pbmRleCA9IHZteF9nZXRfaW5zdHJfaW5mb19yZWcyKHZteF9pbnN0cnVjdGlvbl9pbmZvKTtcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM9NjMxMT1zdGF0aWMgaW50IHZteF9nZXRfbXNyX2ltbV9yZWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjMxMi17XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2MzEzOlxcdHJldHVybiB2bXhfZ2V0X2luc3RyX2luZm9fcmVnKHZtY3NfcmVhZDMyKFZNWF9JTlNUUlVDVElPTl9JTkZPKSk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02MzE0LX1cXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM9NjM5NT12b2lkIHZteF9nZXRfZXhpdF9pbmZvKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyICpyZWFzb24sXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY0MDUtXFx0XFx0aWYgKGlzX2V4Y2VwdGlvbl93aXRoX2Vycm9yX2NvZGUoKmludHJfaW5mbykpXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NDA2OlxcdFxcdFxcdCplcnJvcl9jb2RlID0gdm1jc19yZWFkMzIoVk1fRVhJVF9JTlRSX0VSUk9SX0NPREUpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjQwNy1cXHRcXHRlbHNlXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTY0MTY9dm9pZCB2bXhfZ2V0X2VudHJ5X2luZm8oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgKmludHJfaW5mbywgdTMyICplcnJvcl9jb2RlKVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjQxNy17XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NDE4OlxcdCppbnRyX2luZm8gPSB2bWNzX3JlYWQzMihWTV9FTlRSWV9JTlRSX0lORk9fRklFTEQpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjQxOS1cXHRpZiAoaXNfZXhjZXB0aW9uX3dpdGhfZXJyb3JfY29kZSgqaW50cl9pbmZvKSlcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY0MjA6XFx0XFx0KmVycm9yX2NvZGUgPSB2bWNzX3JlYWQzMihWTV9FTlRSWV9FWENFUFRJT05fRVJST1JfQ09ERSk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NDIxLVxcdGVsc2VcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM9NjQzMz1zdGF0aWMgdm9pZCB2bXhfZmx1c2hfcG1sX2J1ZmZlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY0MzktXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NDQwOlxcdHBtbF9pZHggPSB2bWNzX3JlYWQxNihHVUVTVF9QTUxfSU5ERVgpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjQ0MS1cXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM9NjQ4MT1zdGF0aWMgdm9pZCB2bXhfZHVtcF9zZWwoY2hhciAqbmFtZSwgdWludDMyX3Qgc2VsKVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NDgzLVxcdHByX2VycihcXFwiJXMgc2VsPTB4JTA0eCwgYXR0cj0weCUwNXgsIGxpbWl0PTB4JTA4eCwgYmFzZT0weCUwMTZseFxcXFxuXFxcIixcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY0ODQ6XFx0ICAgICAgIG5hbWUsIHZtY3NfcmVhZDE2KHNlbCksXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NDg1OlxcdCAgICAgICB2bWNzX3JlYWQzMihzZWwgKyBHVUVTVF9FU19BUl9CWVRFUyAtIEdVRVNUX0VTX1NFTEVDVE9SKSxcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY0ODY6XFx0ICAgICAgIHZtY3NfcmVhZDMyKHNlbCArIEdVRVNUX0VTX0xJTUlUIC0gR1VFU1RfRVNfU0VMRUNUT1IpLFxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjQ4NzpcXHQgICAgICAgdm1jc19yZWFkbChzZWwgKyBHVUVTVF9FU19CQVNFIC0gR1VFU1RfRVNfU0VMRUNUT1IpKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY0ODgtfVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYz02NDkwPXN0YXRpYyB2b2lkIHZteF9kdW1wX2R0c2VsKGNoYXIgKm5hbWUsIHVpbnQzMl90IGxpbWl0KVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NDkyLVxcdHByX2VycihcXFwiJXMgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW1pdD0weCUwOHgsIGJhc2U9MHglMDE2bHhcXFxcblxcXCIsXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NDkzOlxcdCAgICAgICBuYW1lLCB2bWNzX3JlYWQzMihsaW1pdCksXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NDk0OlxcdCAgICAgICB2bWNzX3JlYWRsKGxpbWl0ICsgR1VFU1RfR0RUUl9CQVNFIC0gR1VFU1RfR0RUUl9MSU1JVCkpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjQ5NS19XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTY1MDc9dm9pZCBkdW1wX3ZtY3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NTIwLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjUyMTpcXHR2bWVudHJ5X2N0bCA9IHZtY3NfcmVhZDMyKFZNX0VOVFJZX0NPTlRST0xTKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY1MjI6XFx0dm1leGl0X2N0bCA9IHZtY3NfcmVhZDMyKFZNX0VYSVRfQ09OVFJPTFMpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjUyMzpcXHRjcHVfYmFzZWRfZXhlY19jdHJsID0gdm1jc19yZWFkMzIoQ1BVX0JBU0VEX1ZNX0VYRUNfQ09OVFJPTCk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NTI0OlxcdHBpbl9iYXNlZF9leGVjX2N0cmwgPSB2bWNzX3JlYWQzMihQSU5fQkFTRURfVk1fRVhFQ19DT05UUk9MKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY1MjU6XFx0Y3I0ID0gdm1jc19yZWFkbChHVUVTVF9DUjQpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjUyNi1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY1MjctXFx0aWYgKGNwdV9oYXNfc2Vjb25kYXJ5X2V4ZWNfY3RybHMoKSlcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY1Mjg6XFx0XFx0c2Vjb25kYXJ5X2V4ZWNfY29udHJvbCA9IHZtY3NfcmVhZDMyKFNFQ09OREFSWV9WTV9FWEVDX0NPTlRST0wpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjUyOS1cXHRlbHNlXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY1MzItXFx0aWYgKGNwdV9oYXNfdGVydGlhcnlfZXhlY19jdHJscygpKVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjUzMzpcXHRcXHR0ZXJ0aWFyeV9leGVjX2NvbnRyb2wgPSB2bWNzX3JlYWQ2NChURVJUSUFSWV9WTV9FWEVDX0NPTlRST0wpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjUzNC1cXHRlbHNlXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY1NDAtXFx0cHJfZXJyKFxcXCJDUjA6IGFjdHVhbD0weCUwMTZseCwgc2hhZG93PTB4JTAxNmx4LCBnaF9tYXNrPSUwMTZseFxcXFxuXFxcIixcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY1NDE6XFx0ICAgICAgIHZtY3NfcmVhZGwoR1VFU1RfQ1IwKSwgdm1jc19yZWFkbChDUjBfUkVBRF9TSEFET1cpLFxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjU0MjpcXHQgICAgICAgdm1jc19yZWFkbChDUjBfR1VFU1RfSE9TVF9NQVNLKSk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NTQzLVxcdHByX2VycihcXFwiQ1I0OiBhY3R1YWw9MHglMDE2bHgsIHNoYWRvdz0weCUwMTZseCwgZ2hfbWFzaz0lMDE2bHhcXFxcblxcXCIsXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NTQ0OlxcdCAgICAgICBjcjQsIHZtY3NfcmVhZGwoQ1I0X1JFQURfU0hBRE9XKSwgdm1jc19yZWFkbChDUjRfR1VFU1RfSE9TVF9NQVNLKSk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NTQ1OlxcdHByX2VycihcXFwiQ1IzID0gMHglMDE2bHhcXFxcblxcXCIsIHZtY3NfcmVhZGwoR1VFU1RfQ1IzKSk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NTQ2LVxcdGlmIChjcHVfaGFzX3ZteF9lcHQoKSkge1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjU0Ny1cXHRcXHRwcl9lcnIoXFxcIlBEUFRSMCA9IDB4JTAxNmxseCAgUERQVFIxID0gMHglMDE2bGx4XFxcXG5cXFwiLFxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjU0ODpcXHRcXHQgICAgICAgdm1jc19yZWFkNjQoR1VFU1RfUERQVFIwKSwgdm1jc19yZWFkNjQoR1VFU1RfUERQVFIxKSk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NTQ5LVxcdFxcdHByX2VycihcXFwiUERQVFIyID0gMHglMDE2bGx4ICBQRFBUUjMgPSAweCUwMTZsbHhcXFxcblxcXCIsXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NTUwOlxcdFxcdCAgICAgICB2bWNzX3JlYWQ2NChHVUVTVF9QRFBUUjIpLCB2bWNzX3JlYWQ2NChHVUVTVF9QRFBUUjMpKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY1NTEtXFx0fVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjU1Mi1cXHRwcl9lcnIoXFxcIlJTUCA9IDB4JTAxNmx4ICBSSVAgPSAweCUwMTZseFxcXFxuXFxcIixcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY1NTM6XFx0ICAgICAgIHZtY3NfcmVhZGwoR1VFU1RfUlNQKSwgdm1jc19yZWFkbChHVUVTVF9SSVApKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY1NTQtXFx0cHJfZXJyKFxcXCJSRkxBR1M9MHglMDhseCAgICAgICAgIERSNyA9IDB4JTAxNmx4XFxcXG5cXFwiLFxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjU1NTpcXHQgICAgICAgdm1jc19yZWFkbChHVUVTVF9SRkxBR1MpLCB2bWNzX3JlYWRsKEdVRVNUX0RSNykpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjU1Ni1cXHRwcl9lcnIoXFxcIlN5c2VudGVyIFJTUD0lMDE2bHggQ1M6UklQPSUwNHg6JTAxNmx4XFxcXG5cXFwiLFxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjU1NzpcXHQgICAgICAgdm1jc19yZWFkbChHVUVTVF9TWVNFTlRFUl9FU1ApLFxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjU1ODpcXHQgICAgICAgdm1jc19yZWFkMzIoR1VFU1RfU1lTRU5URVJfQ1MpLCB2bWNzX3JlYWRsKEdVRVNUX1NZU0VOVEVSX0VJUCkpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjU1OS1cXHR2bXhfZHVtcF9zZWwoXFxcIkNTOiAgXFxcIiwgR1VFU1RfQ1NfU0VMRUNUT1IpO1xcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NTcwLVxcdGlmICh2bWVudHJ5X2N0bCBcXHUwMDI2IFZNX0VOVFJZX0xPQURfSUEzMl9FRkVSKVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjU3MTpcXHRcXHRwcl9lcnIoXFxcIkVGRVI9IDB4JTAxNmxseFxcXFxuXFxcIiwgdm1jc19yZWFkNjQoR1VFU1RfSUEzMl9FRkVSKSk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NTcyLVxcdGVsc2UgaWYgKGVmZXJfc2xvdCBcXHUwMDNlPSAwKVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NTgxLVxcdGlmICh2bWVudHJ5X2N0bCBcXHUwMDI2IFZNX0VOVFJZX0xPQURfSUEzMl9QQVQpXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NTgyOlxcdFxcdHByX2VycihcXFwiUEFUID0gMHglMDE2bGx4XFxcXG5cXFwiLCB2bWNzX3JlYWQ2NChHVUVTVF9JQTMyX1BBVCkpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjU4My1cXHRwcl9lcnIoXFxcIkRlYnVnQ3RsID0gMHglMDE2bGx4ICBEZWJ1Z0V4Y2VwdGlvbnMgPSAweCUwMTZseFxcXFxuXFxcIixcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY1ODQ6XFx0ICAgICAgIHZtY3NfcmVhZDY0KEdVRVNUX0lBMzJfREVCVUdDVEwpLFxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjU4NTpcXHQgICAgICAgdm1jc19yZWFkbChHVUVTVF9QRU5ESU5HX0RCR19FWENFUFRJT05TKSk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NTg2LVxcdGlmIChjcHVfaGFzX2xvYWRfcGVyZl9nbG9iYWxfY3RybCgpIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY1ODgtXFx0XFx0cHJfZXJyKFxcXCJQZXJmR2xvYkN0bCA9IDB4JTAxNmxseFxcXFxuXFxcIixcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY1ODk6XFx0XFx0ICAgICAgIHZtY3NfcmVhZDY0KEdVRVNUX0lBMzJfUEVSRl9HTE9CQUxfQ1RSTCkpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjU5MC1cXHRpZiAodm1lbnRyeV9jdGwgXFx1MDAyNiBWTV9FTlRSWV9MT0FEX0JORENGR1MpXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NTkxOlxcdFxcdHByX2VycihcXFwiQm5kQ2ZnUyA9IDB4JTAxNmxseFxcXFxuXFxcIiwgdm1jc19yZWFkNjQoR1VFU1RfQk5EQ0ZHUykpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjU5Mi1cXHRwcl9lcnIoXFxcIkludGVycnVwdGliaWxpdHkgPSAlMDh4ICBBY3Rpdml0eVN0YXRlID0gJTA4eFxcXFxuXFxcIixcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY1OTM6XFx0ICAgICAgIHZtY3NfcmVhZDMyKEdVRVNUX0lOVEVSUlVQVElCSUxJVFlfSU5GTyksXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NTk0OlxcdCAgICAgICB2bWNzX3JlYWQzMihHVUVTVF9BQ1RJVklUWV9TVEFURSkpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjU5NS1cXHRpZiAoc2Vjb25kYXJ5X2V4ZWNfY29udHJvbCBcXHUwMDI2IFNFQ09OREFSWV9FWEVDX1ZJUlRVQUxfSU5UUl9ERUxJVkVSWSlcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY1OTYtXFx0XFx0cHJfZXJyKFxcXCJJbnRlcnJ1cHRTdGF0dXMgPSAlMDR4XFxcXG5cXFwiLFxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjU5NzpcXHRcXHQgICAgICAgdm1jc19yZWFkMTYoR1VFU1RfSU5UUl9TVEFUVVMpKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY1OTg6XFx0aWYgKHZtY3NfcmVhZDMyKFZNX0VOVFJZX01TUl9MT0FEX0NPVU5UKSBcXHUwMDNlIDApXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NTk5LVxcdFxcdHZteF9kdW1wX21zcnMoXFxcImd1ZXN0IGF1dG9sb2FkXFxcIiwgXFx1MDAyNnZteC1cXHUwMDNlbXNyX2F1dG9sb2FkLmd1ZXN0KTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2MDA6XFx0aWYgKHZtY3NfcmVhZDMyKFZNX0VYSVRfTVNSX1NUT1JFX0NPVU5UKSBcXHUwMDNlIDApXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NjAxLVxcdFxcdHZteF9kdW1wX21zcnMoXFxcImF1dG9zdG9yZVxcXCIsIFxcdTAwMjZ2bXgtXFx1MDAzZW1zcl9hdXRvc3RvcmUpO1xcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NjA0LVxcdFxcdHByX2VycihcXFwiU19DRVQgPSAweCUwMTZseCwgU1NQID0gMHglMDE2bHgsIFNTUCBUQUJMRSA9IDB4JTAxNmx4XFxcXG5cXFwiLFxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjYwNTpcXHRcXHQgICAgICAgdm1jc19yZWFkbChHVUVTVF9TX0NFVCksIHZtY3NfcmVhZGwoR1VFU1RfU1NQKSxcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2MDY6XFx0XFx0ICAgICAgIHZtY3NfcmVhZGwoR1VFU1RfSU5UUl9TU1BfVEFCTEUpKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY2MDctXFx0cHJfZXJyKFxcXCIqKiogSG9zdCBTdGF0ZSAqKipcXFxcblxcXCIpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjYwOC1cXHRwcl9lcnIoXFxcIlJJUCA9IDB4JTAxNmx4ICBSU1AgPSAweCUwMTZseFxcXFxuXFxcIixcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2MDk6XFx0ICAgICAgIHZtY3NfcmVhZGwoSE9TVF9SSVApLCB2bWNzX3JlYWRsKEhPU1RfUlNQKSk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NjEwLVxcdHByX2VycihcXFwiQ1M9JTA0eCBTUz0lMDR4IERTPSUwNHggRVM9JTA0eCBGUz0lMDR4IEdTPSUwNHggVFI9JTA0eFxcXFxuXFxcIixcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2MTE6XFx0ICAgICAgIHZtY3NfcmVhZDE2KEhPU1RfQ1NfU0VMRUNUT1IpLCB2bWNzX3JlYWQxNihIT1NUX1NTX1NFTEVDVE9SKSxcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2MTI6XFx0ICAgICAgIHZtY3NfcmVhZDE2KEhPU1RfRFNfU0VMRUNUT1IpLCB2bWNzX3JlYWQxNihIT1NUX0VTX1NFTEVDVE9SKSxcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2MTM6XFx0ICAgICAgIHZtY3NfcmVhZDE2KEhPU1RfRlNfU0VMRUNUT1IpLCB2bWNzX3JlYWQxNihIT1NUX0dTX1NFTEVDVE9SKSxcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2MTQ6XFx0ICAgICAgIHZtY3NfcmVhZDE2KEhPU1RfVFJfU0VMRUNUT1IpKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY2MTUtXFx0cHJfZXJyKFxcXCJGU0Jhc2U9JTAxNmx4IEdTQmFzZT0lMDE2bHggVFJCYXNlPSUwMTZseFxcXFxuXFxcIixcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2MTY6XFx0ICAgICAgIHZtY3NfcmVhZGwoSE9TVF9GU19CQVNFKSwgdm1jc19yZWFkbChIT1NUX0dTX0JBU0UpLFxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjYxNzpcXHQgICAgICAgdm1jc19yZWFkbChIT1NUX1RSX0JBU0UpKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY2MTgtXFx0cHJfZXJyKFxcXCJHRFRCYXNlPSUwMTZseCBJRFRCYXNlPSUwMTZseFxcXFxuXFxcIixcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2MTk6XFx0ICAgICAgIHZtY3NfcmVhZGwoSE9TVF9HRFRSX0JBU0UpLCB2bWNzX3JlYWRsKEhPU1RfSURUUl9CQVNFKSk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NjIwLVxcdHByX2VycihcXFwiQ1IwPSUwMTZseCBDUjM9JTAxNmx4IENSND0lMDE2bHhcXFxcblxcXCIsXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NjIxOlxcdCAgICAgICB2bWNzX3JlYWRsKEhPU1RfQ1IwKSwgdm1jc19yZWFkbChIT1NUX0NSMyksXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NjIyOlxcdCAgICAgICB2bWNzX3JlYWRsKEhPU1RfQ1I0KSk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NjIzLVxcdHByX2VycihcXFwiU3lzZW50ZXIgUlNQPSUwMTZseCBDUzpSSVA9JTA0eDolMDE2bHhcXFxcblxcXCIsXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NjI0OlxcdCAgICAgICB2bWNzX3JlYWRsKEhPU1RfSUEzMl9TWVNFTlRFUl9FU1ApLFxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjYyNTpcXHQgICAgICAgdm1jc19yZWFkMzIoSE9TVF9JQTMyX1NZU0VOVEVSX0NTKSxcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2MjY6XFx0ICAgICAgIHZtY3NfcmVhZGwoSE9TVF9JQTMyX1NZU0VOVEVSX0VJUCkpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjYyNy1cXHRpZiAodm1leGl0X2N0bCBcXHUwMDI2IFZNX0VYSVRfTE9BRF9JQTMyX0VGRVIpXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NjI4OlxcdFxcdHByX2VycihcXFwiRUZFUj0gMHglMDE2bGx4XFxcXG5cXFwiLCB2bWNzX3JlYWQ2NChIT1NUX0lBMzJfRUZFUikpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjYyOS1cXHRpZiAodm1leGl0X2N0bCBcXHUwMDI2IFZNX0VYSVRfTE9BRF9JQTMyX1BBVClcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2MzA6XFx0XFx0cHJfZXJyKFxcXCJQQVQgPSAweCUwMTZsbHhcXFxcblxcXCIsIHZtY3NfcmVhZDY0KEhPU1RfSUEzMl9QQVQpKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY2MzEtXFx0aWYgKGNwdV9oYXNfbG9hZF9wZXJmX2dsb2JhbF9jdHJsKCkgXFx1MDAyNlxcdTAwMjZcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjYzMy1cXHRcXHRwcl9lcnIoXFxcIlBlcmZHbG9iQ3RsID0gMHglMDE2bGx4XFxcXG5cXFwiLFxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjYzNDpcXHRcXHQgICAgICAgdm1jc19yZWFkNjQoSE9TVF9JQTMyX1BFUkZfR0xPQkFMX0NUUkwpKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2MzU6XFx0aWYgKHZtY3NfcmVhZDMyKFZNX0VYSVRfTVNSX0xPQURfQ09VTlQpIFxcdTAwM2UgMClcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY2MzYtXFx0XFx0dm14X2R1bXBfbXNycyhcXFwiaG9zdCBhdXRvbG9hZFxcXCIsIFxcdTAwMjZ2bXgtXFx1MDAzZW1zcl9hdXRvbG9hZC5ob3N0KTtcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjYzOC1cXHRcXHRwcl9lcnIoXFxcIlNfQ0VUID0gMHglMDE2bHgsIFNTUCA9IDB4JTAxNmx4LCBTU1AgVEFCTEUgPSAweCUwMTZseFxcXFxuXFxcIixcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2Mzk6XFx0XFx0ICAgICAgIHZtY3NfcmVhZGwoSE9TVF9TX0NFVCksIHZtY3NfcmVhZGwoSE9TVF9TU1ApLFxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjY0MDpcXHRcXHQgICAgICAgdm1jc19yZWFkbChIT1NUX0lOVFJfU1NQX1RBQkxFKSk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NjQxLVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NjQ3LVxcdHByX2VycihcXFwiRXhjZXB0aW9uQml0bWFwPSUwOHggUEZFQ21hc2s9JTA4eCBQRkVDbWF0Y2g9JTA4eFxcXFxuXFxcIixcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2NDg6XFx0ICAgICAgIHZtY3NfcmVhZDMyKEVYQ0VQVElPTl9CSVRNQVApLFxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjY0OTpcXHQgICAgICAgdm1jc19yZWFkMzIoUEFHRV9GQVVMVF9FUlJPUl9DT0RFX01BU0spLFxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjY1MDpcXHQgICAgICAgdm1jc19yZWFkMzIoUEFHRV9GQVVMVF9FUlJPUl9DT0RFX01BVENIKSk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NjUxLVxcdHByX2VycihcXFwiVk1FbnRyeTogaW50cl9pbmZvPSUwOHggZXJyY29kZT0lMDh4IGlsZW49JTA4eFxcXFxuXFxcIixcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2NTI6XFx0ICAgICAgIHZtY3NfcmVhZDMyKFZNX0VOVFJZX0lOVFJfSU5GT19GSUVMRCksXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NjUzOlxcdCAgICAgICB2bWNzX3JlYWQzMihWTV9FTlRSWV9FWENFUFRJT05fRVJST1JfQ09ERSksXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NjU0OlxcdCAgICAgICB2bWNzX3JlYWQzMihWTV9FTlRSWV9JTlNUUlVDVElPTl9MRU4pKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY2NTUtXFx0cHJfZXJyKFxcXCJWTUV4aXQ6IGludHJfaW5mbz0lMDh4IGVycmNvZGU9JTA4eCBpbGVuPSUwOHhcXFxcblxcXCIsXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NjU2OlxcdCAgICAgICB2bWNzX3JlYWQzMihWTV9FWElUX0lOVFJfSU5GTyksXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NjU3OlxcdCAgICAgICB2bWNzX3JlYWQzMihWTV9FWElUX0lOVFJfRVJST1JfQ09ERSksXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NjU4OlxcdCAgICAgICB2bWNzX3JlYWQzMihWTV9FWElUX0lOU1RSVUNUSU9OX0xFTikpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjY1OS1cXHRwcl9lcnIoXFxcIiAgICAgICAgcmVhc29uPSUwOHggcXVhbGlmaWNhdGlvbj0lMDE2bHhcXFxcblxcXCIsXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NjYwOlxcdCAgICAgICB2bWNzX3JlYWQzMihWTV9FWElUX1JFQVNPTiksIHZtY3NfcmVhZGwoRVhJVF9RVUFMSUZJQ0FUSU9OKSk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NjYxLVxcdHByX2VycihcXFwiSURUVmVjdG9yaW5nOiBpbmZvPSUwOHggZXJyY29kZT0lMDh4XFxcXG5cXFwiLFxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjY2MjpcXHQgICAgICAgdm1jc19yZWFkMzIoSURUX1ZFQ1RPUklOR19JTkZPX0ZJRUxEKSxcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2NjM6XFx0ICAgICAgIHZtY3NfcmVhZDMyKElEVF9WRUNUT1JJTkdfRVJST1JfQ09ERSkpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjY2NDpcXHRwcl9lcnIoXFxcIlRTQyBPZmZzZXQgPSAweCUwMTZsbHhcXFxcblxcXCIsIHZtY3NfcmVhZDY0KFRTQ19PRkZTRVQpKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY2NjUtXFx0aWYgKHNlY29uZGFyeV9leGVjX2NvbnRyb2wgXFx1MDAyNiBTRUNPTkRBUllfRVhFQ19UU0NfU0NBTElORylcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY2NjYtXFx0XFx0cHJfZXJyKFxcXCJUU0MgTXVsdGlwbGllciA9IDB4JTAxNmxseFxcXFxuXFxcIixcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2Njc6XFx0XFx0ICAgICAgIHZtY3NfcmVhZDY0KFRTQ19NVUxUSVBMSUVSKSk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NjY4LVxcdGlmIChjcHVfYmFzZWRfZXhlY19jdHJsIFxcdTAwMjYgQ1BVX0JBU0VEX1RQUl9TSEFET1cpIHtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY2NjktXFx0XFx0aWYgKHNlY29uZGFyeV9leGVjX2NvbnRyb2wgXFx1MDAyNiBTRUNPTkRBUllfRVhFQ19WSVJUVUFMX0lOVFJfREVMSVZFUlkpIHtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2NzA6XFx0XFx0XFx0dTE2IHN0YXR1cyA9IHZtY3NfcmVhZDE2KEdVRVNUX0lOVFJfU1RBVFVTKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY2NzEtXFx0XFx0XFx0cHJfZXJyKFxcXCJTVkl8UlZJID0gJTAyeHwlMDJ4IFxcXCIsIHN0YXR1cyBcXHUwMDNlXFx1MDAzZSA4LCBzdGF0dXMgXFx1MDAyNiAweGZmKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY2NzItXFx0XFx0fVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjY3MzpcXHRcXHRwcl9jb250KFxcXCJUUFIgVGhyZXNob2xkID0gMHglMDJ4XFxcXG5cXFwiLCB2bWNzX3JlYWQzMihUUFJfVEhSRVNIT0xEKSk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02Njc0LVxcdFxcdGlmIChzZWNvbmRhcnlfZXhlY19jb250cm9sIFxcdTAwMjYgU0VDT05EQVJZX0VYRUNfVklSVFVBTElaRV9BUElDX0FDQ0VTU0VTKVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjY3NTpcXHRcXHRcXHRwcl9lcnIoXFxcIkFQSUMtYWNjZXNzIGFkZHIgPSAweCUwMTZsbHggXFxcIiwgdm1jc19yZWFkNjQoQVBJQ19BQ0NFU1NfQUREUikpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjY3NjpcXHRcXHRwcl9jb250KFxcXCJ2aXJ0LUFQSUMgYWRkciA9IDB4JTAxNmxseFxcXFxuXFxcIiwgdm1jc19yZWFkNjQoVklSVFVBTF9BUElDX1BBR0VfQUREUikpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjY3Ny1cXHR9XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02Njc4LVxcdGlmIChwaW5fYmFzZWRfZXhlY19jdHJsIFxcdTAwMjYgUElOX0JBU0VEX1BPU1RFRF9JTlRSKVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjY3OTpcXHRcXHRwcl9lcnIoXFxcIlBvc3RlZEludHJWZWMgPSAweCUwMnhcXFxcblxcXCIsIHZtY3NfcmVhZDE2KFBPU1RFRF9JTlRSX05WKSk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NjgwLVxcdGlmICgoc2Vjb25kYXJ5X2V4ZWNfY29udHJvbCBcXHUwMDI2IFNFQ09OREFSWV9FWEVDX0VOQUJMRV9FUFQpKVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjY4MTpcXHRcXHRwcl9lcnIoXFxcIkVQVCBwb2ludGVyID0gMHglMDE2bGx4XFxcXG5cXFwiLCB2bWNzX3JlYWQ2NChFUFRfUE9JTlRFUikpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjY4Mi1cXHRpZiAoc2Vjb25kYXJ5X2V4ZWNfY29udHJvbCBcXHUwMDI2IFNFQ09OREFSWV9FWEVDX1BBVVNFX0xPT1BfRVhJVElORylcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY2ODMtXFx0XFx0cHJfZXJyKFxcXCJQTEUgR2FwPSUwOHggV2luZG93PSUwOHhcXFxcblxcXCIsXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2Njg0OlxcdFxcdCAgICAgICB2bWNzX3JlYWQzMihQTEVfR0FQKSwgdm1jc19yZWFkMzIoUExFX1dJTkRPVykpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjY4NS1cXHRpZiAoc2Vjb25kYXJ5X2V4ZWNfY29udHJvbCBcXHUwMDI2IFNFQ09OREFSWV9FWEVDX0VOQUJMRV9WUElEKVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjY4Ni1cXHRcXHRwcl9lcnIoXFxcIlZpcnR1YWwgcHJvY2Vzc29yIElEID0gMHglMDR4XFxcXG5cXFwiLFxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjY4NzpcXHRcXHQgICAgICAgdm1jc19yZWFkMTYoVklSVFVBTF9QUk9DRVNTT1JfSUQpKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY2ODgtXFx0aWYgKHNlY29uZGFyeV9leGVjX2NvbnRyb2wgXFx1MDAyNiBTRUNPTkRBUllfRVhFQ19FUFRfVklPTEFUSU9OX1ZFKSB7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02Njg5LVxcdFxcdHN0cnVjdCB2bXhfdmVfaW5mb3JtYXRpb24gKnZlX2luZm8gPSB2bXgtXFx1MDAzZXZlX2luZm87XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NjkwOlxcdFxcdHU2NCB2ZV9pbmZvX3BhID0gdm1jc19yZWFkNjQoVkVfSU5GT1JNQVRJT05fQUREUkVTUyk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NjkxLVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYz02NzEyPXN0YXRpYyBpbnQgX192bXhfaGFuZGxlX2V4aXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBmYXN0cGF0aF90IGV4aXRfZmFzdHBhdGgpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY3OTktXFx0XFx0dmNwdS1cXHUwMDNlcnVuLVxcdTAwM2VmYWlsX2VudHJ5LmhhcmR3YXJlX2VudHJ5X2ZhaWx1cmVfcmVhc29uXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2ODAwOlxcdFxcdFxcdD0gdm1jc19yZWFkMzIoVk1fSU5TVFJVQ1RJT05fRVJST1IpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjgwMS1cXHRcXHR2Y3B1LVxcdTAwM2VydW4tXFx1MDAzZWZhaWxfZW50cnkuY3B1ID0gdmNwdS1cXHUwMDNlYXJjaC5sYXN0X3ZtZW50cnlfY3B1O1xcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYz03MDMwPXZvaWQgdm14X2h3YXBpY19pc3JfdXBkYXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgaW50IG1heF9pc3IpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTcwNDQtXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo3MDQ1OlxcdHN0YXR1cyA9IHZtY3NfcmVhZDE2KEdVRVNUX0lOVFJfU1RBVFVTKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTcwNDYtXFx0b2xkID0gc3RhdHVzIFxcdTAwM2VcXHUwMDNlIDg7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTcwNTQ9c3RhdGljIHZvaWQgdm14X3NldF9ydmkoaW50IHZlY3RvcilcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNzA2MS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjcwNjI6XFx0c3RhdHVzID0gdm1jc19yZWFkMTYoR1VFU1RfSU5UUl9TVEFUVVMpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNzA2My1cXHRvbGQgPSAodTgpc3RhdHVzIFxcdTAwMjYgMHhmZjtcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM9NzI0Nj1zdGF0aWMgdm9pZCB2bXhfcmVjb3Zlcl9ubWlfYmxvY2tpbmcoc3RydWN0IHZjcHVfdm14ICp2bXgpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTcyNzctXFx0XFx0XFx0dm14LVxcdTAwM2Vsb2FkZWRfdm1jcy1cXHUwMDNlbm1pX2tub3duX3VubWFza2VkID1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjcyNzg6XFx0XFx0XFx0XFx0ISh2bWNzX3JlYWQzMihHVUVTVF9JTlRFUlJVUFRJQklMSVRZX0lORk8pXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy03Mjc5LVxcdFxcdFxcdFxcdCAgXFx1MDAyNiBHVUVTVF9JTlRSX1NUQVRFX05NSSk7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTcyODY9c3RhdGljIHZvaWQgX192bXhfY29tcGxldGVfaW50ZXJydXB0cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTczMTktXFx0Y2FzZSBJTlRSX1RZUEVfU09GVF9FWENFUFRJT046XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo3MzIwOlxcdFxcdHZjcHUtXFx1MDAzZWFyY2guZXZlbnRfZXhpdF9pbnN0X2xlbiA9IHZtY3NfcmVhZDMyKGluc3RyX2xlbl9maWVsZCk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy03MzIxLVxcdFxcdGZhbGx0aHJvdWdoO1xcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy03MzI1LVxcdFxcdGlmIChpZHRfdmVjdG9yaW5nX2luZm8gXFx1MDAyNiBWRUNUT1JJTkdfSU5GT19ERUxJVkVSX0NPREVfTUFTSylcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjczMjY6XFx0XFx0XFx0ZXJyb3JfY29kZSA9IHZtY3NfcmVhZDMyKGVycm9yX2NvZGVfZmllbGQpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNzMyNy1cXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNzMzMy1cXHRjYXNlIElOVFJfVFlQRV9TT0ZUX0lOVFI6XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo3MzM0OlxcdFxcdHZjcHUtXFx1MDAzZWFyY2guZXZlbnRfZXhpdF9pbnN0X2xlbiA9IHZtY3NfcmVhZDMyKGluc3RyX2xlbl9maWVsZCk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy03MzM1LVxcdFxcdGZhbGx0aHJvdWdoO1xcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYz03MzUxPXZvaWQgdm14X2NhbmNlbF9pbmplY3Rpb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy03MzUzLVxcdF9fdm14X2NvbXBsZXRlX2ludGVycnVwdHModmNwdSxcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjczNTQ6XFx0XFx0XFx0XFx0ICB2bWNzX3JlYWQzMihWTV9FTlRSWV9JTlRSX0lORk9fRklFTEQpLFxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNzM1NS1cXHRcXHRcXHRcXHQgIFZNX0VOVFJZX0lOU1RSVUNUSU9OX0xFTixcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM9NzM4Nz1zdGF0aWMgdm9pZCB2bXhfcmVmcmVzaF9ndWVzdF9wZXJmX2dsb2JhbF9jb250cm9sKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNzQwNi1cXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTI6MDU6MTcuMzM5NDEzNjcxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTA5NTExNjIyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIENvbXBpbGVyIFJlb3JkZXJpbmcgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRhcmdldGluZyBhIHByZXR0eSBzcGVjaWZpYyBpc3N1ZTogY29tcGlsZXIgcmVvcmRlcmluZyBhcm91bmQgdGhvc2UgY3J1Y2lhbCBWTUNTIHJlYWQvd3JpdGUgb3BlcmF0aW9ucy4gVGhhdCdzIGEgY2xhc3NpYyBjYXVzZSBvZiBoYXJkLXRvLWRlYnVnIGJ1Z3MsIGVzcGVjaWFsbHkgaW4gYSBwZXJmb3JtYW5jZS1jcml0aWNhbCBhcmVhIGxpa2UgdmlydHVhbGl6YXRpb24uIEl0IGxvb2tzIGxpa2UgdGhlIGZpeCBpbnZvbHZlcyB0d2Vha2luZyBgX192bWNzX3JlYWRsYCBhbmQgdGhlIGB2bXhfYXNtMWAgLyBgdm14X2FzbTJgIG1hY3JvcyB3aXRoaW4gYGFyY2gveDg2L2t2bS92bXgvdm14X29wcy5oYC4gRnVuY3Rpb25hbGx5LCB0aGlzIHNlZW1zIHNvdW5kLiBBZGRyZXNzaW5nIHBvdGVudGlhbCBtZW1vcnkgYWNjZXNzIG9wdGltaXphdGlvbiBvciByZW9yZGVyaW5nIGlzc3VlcyBpcyBkZWZpbml0ZWx5IHRoZSByaWdodCBhcHByb2FjaCBoZXJlLiBXZSBuZWVkIHRvIGZvY3VzIGZ1enppbmcgZWZmb3J0cyBvbiB0aGUgS1ZNIFZNWCBjb21wb25lbnRzIHRvIHByb3Blcmx5IHZhbGlkYXRlIHRoaXMgZml4LlxuXG5HaXZlbiB0aGF0LCBJIHNob3VsZCBjb25jZW50cmF0ZSBvbiB0aGUga2V5IFZNWCBvcGVyYXRpb25zIGR1cmluZyBmdXp6aW5nLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBsb29rIGF0IGZ1bmN0aW9ucyBsaWtlIGB2bXhfaGFuZGxlX2V4aXRgLCBgaGFuZGxlX2V4Y2VwdGlvbl9ubWlgLCBhbmQgYGhhbmRsZV9lcHRfdmlvbGF0aW9uYC4gVGhlbiwgbGV0J3MgbmFpbCBkb3duIHRoZSBtYWluIHJ1biBsb29wLiBJdCdzIGxpa2VseSBgdm14X3ZjcHVfcnVuYCwgYnV0IEkgc2hvdWxkIHZlcmlmeSB0aGF0IGJ5IGNoZWNraW5nIGBhcmNoL3g4Ni9rdm0vdm14L3ZteC5jYC4gVGhhdCBzaG91bGQgZ2l2ZSB1cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIGNvbnN0cnVjdGluZyBlZmZlY3RpdmUgZnV6eiB0YXJnZXRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDkwNiwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxMjowNToyMi40MzQ1MzI1OFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Njc3MjU0NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2bXhfdmNwdV9ydW5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL3ZteC92bXguY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTUzNTI9c3RhdGljIGludCBoYW5kbGVfbWFjaGluZV9jaGVjayhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy01MzUzLXtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjUzNTQ6XFx0LyogaGFuZGxlZCBieSB2bXhfdmNwdV9ydW4oKSAqL1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNTM1NS1cXHRyZXR1cm4gMTtcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM9NTQyNT1zdGF0aWMgaW50IGhhbmRsZV9leGNlcHRpb25fbm1pKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNTQzNy1cXHQgKiBNYWNoaW5lIGNoZWNrcyBhcmUgaGFuZGxlZCBieSBoYW5kbGVfZXhjZXB0aW9uX2lycW9mZigpLCBvciBieVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NTQzODpcXHQgKiB2bXhfdmNwdV9ydW4oKSBpZiBhICNNQyBvY2N1cnMgb24gVk0tRW50cnkuICBOTUlzIGFyZSBoYW5kbGVkIGJ5XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy01NDM5LVxcdCAqIHZteF92Y3B1X2VudGVyX2V4aXQoKS5cXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM9NzQ4Mz1zdGF0aWMgbm9pbnN0ciB2b2lkIHZteF92Y3B1X2VudGVyX2V4aXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy03NDk2LVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NzQ5NzpcXHR2bXgtXFx1MDAzZWZhaWwgPSBfX3ZteF92Y3B1X3J1bih2bXgsIGZsYWdzKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTc0OTgtXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTc1MjAtXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo3NTIxOmZhc3RwYXRoX3Qgdm14X3ZjcHVfcnVuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IHJ1bl9mbGFncylcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTc1MjIte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxMjowNToyMi40OTEzMTA0MTVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjQzMzI3Mjc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBWTVggRXhpdCBIYW5kbGVyKipcblxuT2theSwgc28gd2UncmUgdGFsa2luZyBhYm91dCBoYW5kbGluZyBWTSBleGl0cyBpbiB0aGUgVk1YIGNvbnRleHQsIGFuZCB0aGF0IHVzdWFsbHkgbWVhbnMgYSB0cmlwIGludG8gYGFyY2gveDg2L2t2bS92bXgvdm14LmNgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIGB2bXhfaGFuZGxlX2V4aXRgLiBUaGF0J3Mgd2hlcmUgdGhlIHJ1YmJlciBtZWV0cyB0aGUgcm9hZCwgd2hlcmUgdGhlIGtlcm5lbCBqdW1wcyB0byBwcm9jZXNzIHRoZSByZWFzb25zIGZvciB0aGUgZ3Vlc3QncyBoYWx0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCAqaG93KiB0aGUgaGFyZHdhcmUgc2lnbmFsZWQgYW4gZXhpdCwgKndoeSogaXQgZGlkLCBhbmQgKndoYXQqIG5lZWRzIHRvIGJlIGRvbmUgb24gdGhlIGhvc3QgdG8gcHJvcGVybHkgZW11bGF0ZSBhbmQgdGhlbiByZXN1bWUuIFRoZSBgdm14X2hhbmRsZV9leGl0YCBmdW5jdGlvbiBpcyB0aGUgY2VudHJhbCBwaWVjZSBvZiB0aGF0IHB1enpsZS4gSXQncyB0aGUgZGlzcGF0Y2hlciwgdGhlIHRyYWZmaWMgY29udHJvbGxlciBmb3IgYWxsIHRoZXNlIHZhcmlvdXMgZXZlbnRzIHRoYXQgY2FuIG9jY3VyIGluIHRoZSBWTVggZW52aXJvbm1lbnQuIEknbSBleHBlY3RpbmcgdG8gZmluZCB0aGUgbG9naWMgdGhhdCBkZXRlcm1pbmVzIHRoZSBleGl0IHJlYXNvbiAocGFnZSBmYXVsdCwgaW50ZXJydXB0IHdpbmRvdywgbmVzdGVkIHZpcnR1YWxpemF0aW9uIGV2ZW50LCBldGMuKSBhbmQgdGhlbiBkaXNwYXRjaGVzIHRvIHRoZSBjb3JyZWN0IGhhbmRsZXIuIEknbGwgYmUgbG9va2luZyBmb3IgYW55IGhpbnRzIG9uIGhvdyB0aGUgVkNQVSBpcyBzYXZlZCBhbmQgcmVzdG9yZWQgaGVyZSB0b28sIGJlY2F1c2UgdGhlIGNvbnRleHQgc3dpdGNoIGlzIHRoZSBtYWluIGNoYWxsZW5nZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE5NTksIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxMjowNToyNi4xMzQ2NDE0NzFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzOTc5OTk2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZteF9oYW5kbGVfZXhpdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0vdm14L3ZteC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS92bXgvdm14LmM9NTQyNT1zdGF0aWMgaW50IGhhbmRsZV9leGNlcHRpb25fbm1pKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNTQ5MC1cXHQgKiBNTUlPLCBpdCBpcyBiZXR0ZXIgdG8gcmVwb3J0IGFuIGludGVybmFsIGVycm9yLlxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NTQ5MTpcXHQgKiBTZWUgdGhlIGNvbW1lbnRzIGluIHZteF9oYW5kbGVfZXhpdC5cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTU0OTItXFx0ICovXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTYyNzQ9c3RhdGljIGludCBoYW5kbGVfYnVzX2xvY2tfdm1leGl0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjI3OC1cXHQgKiBWTS1FeGl0cy4gVW5jb25kaXRpb25hbGx5IHNldCB0aGUgZmxhZyBoZXJlIGFuZCBsZWF2ZSB0aGUgaGFuZGxpbmcgdG9cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjYyNzk6XFx0ICogdm14X2hhbmRsZV9leGl0KCkuXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02MjgwLVxcdCAqL1xcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYz02NTA3PXZvaWQgZHVtcF92bWNzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjcxMS0gKi9cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY3MTI6c3RhdGljIGludCBfX3ZteF9oYW5kbGVfZXhpdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGZhc3RwYXRoX3QgZXhpdF9mYXN0cGF0aClcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY3MTMte1xcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02ODcwLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6Njg3MTppbnQgdm14X2hhbmRsZV9leGl0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgZmFzdHBhdGhfdCBleGl0X2Zhc3RwYXRoKVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjg3Mi17XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2ODczOlxcdGludCByZXQgPSBfX3ZteF9oYW5kbGVfZXhpdCh2Y3B1LCBleGl0X2Zhc3RwYXRoKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY4NzQtXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTcxODQ9c3RhdGljIHZvaWQgaGFuZGxlX2V4dGVybmFsX2ludGVycnVwdF9pcnFvZmYoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy03MTk5LVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NzIwMDp2b2lkIHZteF9oYW5kbGVfZXhpdF9pcnFvZmYoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNzIwMS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDEyOjA1OjI2LjE4ODYyNzg5N1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODkyNTU1MjQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqTXkgQW5hbHlzaXMgb2YgdGhlIEtWTS9WTVggQ29kZSBQYXRoKipcblxuUmlnaHQsIHNvIEknbSBsb29raW5nIGF0IGhvdyB0aGlzIGFsbCBmaXRzIHRvZ2V0aGVyLiBgdm14X3ZjcHVfcnVuYCwgYHZteF9oYW5kbGVfZXhpdGAsIGBfX3ZteF9oYW5kbGVfZXhpdGAsIGBoYW5kbGVfZXB0X3Zpb2xhdGlvbmAsIGFuZCBgaGFuZGxlX2V4Y2VwdGlvbl9ubWlgIGFyZSBkZWZpbml0ZWx5IGtleSBlbnRyeSBwb2ludHMgb3IgY29yZSBmdW5jdGlvbnMgSSBuZWVkIHRvIGtlZXAgaW4gbWluZC4gVGhvc2Ugc3ltYm9scyBhcmUgd2hlcmUgdGhlIHJ1YmJlciBtZWV0cyB0aGUgcm9hZCwgdGhlIGNyaXRpY2FsIGp1bmN0aW9ucyBpbiB0aGUgVk1YIGV4ZWN1dGlvbiBmbG93LiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGVpciBpbnRlcmFjdGlvbnMgaW50aW1hdGVseS5cblxuQnV0IEkgY2FuJ3QganVzdCBkaXZlIGludG8gdGhlIGNvZGUgd2l0aG91dCBjb250ZXh0LiBXaGF0IGFib3V0IHRoZSBidWlsZCBjb25maWd1cmF0aW9uPyBLY29uZmlnIGlzIHRoZSBnYXRla2VlcGVyLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEtWTSBhbmQgS1ZNX0lOVEVMIGFyZSBlbmFibGVkLiBMZXQgbWUgcHVsbCB1cCBgYXJjaC94ODYva3ZtL0tjb25maWdgIGFuZCBzZWUgd2hhdCB0aGUgYnVpbGQgc2V0dGluZ3MgYXJlIGFuZCBob3cgdGhpcyBpcyBhbGwgY29uZmlndXJlZC4gVGhhdCBzaG91bGQgdGVsbCBtZSB3aGljaCBjb2RlIHBhdGhzIGFyZSBldmVuIHJlbGV2YW50IGZvciBteSBhbmFseXNpcy4gVW5kZXJzdGFuZGluZyB0aGUgYnVpbGQgb3B0aW9ucyBpcyBjcnVjaWFsIHRvIHVuZGVyc3RhbmRpbmcgdGhlIHJlbGV2YW50IGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMDMwLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTI6MDU6MzAuMDgxMTg1NjkzWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzAyODI3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgS1ZNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L2t2bS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTktXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTV9YODZcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMS1cXHRkZWZfdHJpc3RhdGUgS1ZNIGlmIChLVk1fSU5URUwgIT0gbiB8fCBLVk1fQU1EICE9IG4pXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy01MS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo1Mjpjb25maWcgS1ZNXFxuYXJjaC94ODYva3ZtL0tjb25maWctNTMtXFx0dHJpc3RhdGUgXFxcIktlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTY4LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjY5OmNvbmZpZyBLVk1fV0VSUk9SXFxuYXJjaC94ODYva3ZtL0tjb25maWctNzAtXFx0Ym9vbCBcXFwiQ29tcGlsZSBLVk0gd2l0aCAtV2Vycm9yXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctODItXFxuYXJjaC94ODYva3ZtL0tjb25maWc6ODM6Y29uZmlnIEtWTV9TV19QUk9URUNURURfVk1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy04NC1cXHRib29sIFxcXCJFbmFibGUgc3VwcG9ydCBmb3IgS1ZNIHNvZnR3YXJlLXByb3RlY3RlZCBWTXNcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy05NS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo5Njpjb25maWcgS1ZNX0lOVEVMXFxuYXJjaC94ODYva3ZtL0tjb25maWctOTctXFx0dHJpc3RhdGUgXFxcIktWTSBmb3IgSW50ZWwgKGFuZCBjb21wYXRpYmxlKSBwcm9jZXNzb3JzIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMDYtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTA3OmNvbmZpZyBLVk1fSU5URUxfUFJPVkVfVkVcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMDgtICAgICAgICBib29sIFxcXCJDaGVjayB0aGF0IGd1ZXN0cyBkbyBub3QgcmVjZWl2ZSAjVkUgZXhjZXB0aW9uc1xcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnPTEyMj1jb25maWcgWDg2X1NHWF9LVk1cXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEzMy1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxMzQ6Y29uZmlnIEtWTV9JTlRFTF9URFhcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMzUtXFx0Ym9vbCBcXFwiSW50ZWwgVHJ1c3QgRG9tYWluIEV4dGVuc2lvbnMgKFREWCkgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0NS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNDY6Y29uZmlnIEtWTV9BTURcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDctXFx0dHJpc3RhdGUgXFxcIktWTSBmb3IgQU1EIHByb2Nlc3NvcnMgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE1NS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNTY6Y29uZmlnIEtWTV9BTURfU0VWXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTU3LVxcdGJvb2wgXFxcIkFNRCBTZWN1cmUgRW5jcnlwdGVkIFZpcnR1YWxpemF0aW9uIChTRVYpIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNzEtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTcyOmNvbmZpZyBLVk1fSU9BUElDXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTczLVxcdGJvb2wgXFxcIkkvTyBBUElDLCBQSUMsIGFuZCBQSVQgZW11bGF0aW9uXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTgxLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE4Mjpjb25maWcgS1ZNX1NNTVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE4My1cXHRib29sIFxcXCJTeXN0ZW0gTWFuYWdlbWVudCBNb2RlIGVtdWxhdGlvblxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5Mi1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxOTM6Y29uZmlnIEtWTV9IWVBFUlZcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOTQtXFx0Ym9vbCBcXFwiU3VwcG9ydCBmb3IgTWljcm9zb2Z0IEh5cGVyLVYgZW11bGF0aW9uXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjA2LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIwNzpjb25maWcgS1ZNX1hFTlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIwOC1cXHRib29sIFxcXCJTdXBwb3J0IGZvciBYZW4gaHlwZXJjYWxsIGludGVyZmFjZVxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxNS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMTY6Y29uZmlnIEtWTV9QUk9WRV9NTVVcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMTctXFx0Ym9vbCBcXFwiUHJvdmUgS1ZNIE1NVSBjb3JyZWN0bmVzc1xcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIyOC1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMjk6Y29uZmlnIEtWTV9FWFRFUk5BTF9XUklURV9UUkFDS0lOR1xcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzMC1cXHRib29sXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjMxLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIzMjpjb25maWcgS1ZNX01BWF9OUl9WQ1BVU1xcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzMy1cXHRpbnQgXFxcIk1heGltdW0gbnVtYmVyIG9mIHZDUFVzIHBlciBLVk0gZ3Vlc3RcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDEyOjA1OjMwLjEzODIxODQzOFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MjMxOTk2MTM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEZ1enppbmcgU3RyYXRlZ3kgZm9yIFRoaXMgS1ZNIFZNWCBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggdGhhdCBpbnRyb2R1Y2VzIGEgXCJtZW1vcnlcIiBjbG9iYmVyIGluIHRoZSBpbmxpbmUgYXNzZW1ibHkgZm9yIFZNQ1MgcmVhZHMgYW5kIHdyaXRlcyB3aXRoaW4gS1ZNIFZNWC4gVGhpcyBpcyBpbnRlcmVzdGluZyBiZWNhdXNlIGl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0J3MgKnNwZWNpZmljYWxseSogYWltZWQgYXQgcHJldmVudGluZyBjb21waWxlciBvcHRpbWl6YXRpb25zIHRoYXQgY291bGQgY2F1c2Ugc3VidGxlLCBoYXJkLXRvLWRlYnVnIGJ1Z3MgaW4gS1ZNIGV4ZWN1dGlvbi4gVGhhdCBzY3JlYW1zIFwiZnV6emluZyB0YXJnZXRcIiB0byBtZS5cblxuRmlyc3QsIHRoZSBjb25maWdzLiBMb29rcyBsaWtlIHdlIG5lZWQgYEtWTWAgYW5kIGBLVk1fSU5URUxgIGVuYWJsZWQuIEdvb2QuIEknbSBnb2luZyB0byBqdXN0IHJvbGwgd2l0aCBgS1ZNX0lOVEVMYCBzaW5jZSBpdCdzIHN1ZmZpY2llbnQuXG5cbk5vdywgbGV0J3MgbmFpbCBkb3duIHRoZSBjcml0aWNhbCBmdW5jdGlvbnMuIFRoaXMgcGF0Y2ggdG91Y2hlcyBWTUNTIHJlYWRzIGFuZCB3cml0ZXMsIHdoaWNoIG1lYW5zIEkgd2FudCB0byBmb2N1cyBvbiB0aGUgZW50cnkgcG9pbnRzIGFuZCB0aGUgaGFuZGxlcnMgdGhhdCBpbnRlcmFjdCB3aXRoIHRoZSBWTUNTIGRpcmVjdGx5LiBJbml0aWFsbHksIEkgd2FzIHRoaW5raW5nIGB2bXhfdmNwdV9ydW5gLCBgdm14X2hhbmRsZV9leGl0YCwgYF9fdm14X2hhbmRsZV9leGl0YCwgYGhhbmRsZV9lcHRfdmlvbGF0aW9uYCwgYW5kIGBoYW5kbGVfZXhjZXB0aW9uX25taWAgYXJlIHByaW1lIHRhcmdldHMuXG5cbmB2bXhfdmNwdV9ydW5gIHNlZW1zIGxpa2UgYSBzb2xpZCBjaG9pY2Ugc2luY2UgaXQncyB0aGUgbWFpbiBmdW5jdGlvbiB0byBlbnRlciB0aGUgVk1YIGV4ZWN1dGlvbiwgc28gSSdtIGdvaW5nIHRvIGtlZXAgaXQuIFllcywgaXQncyBgZmFzdHBhdGhfdCB2bXhfdmNwdV9ydW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgcnVuX2ZsYWdzKWAuIFxuXG5JJ3ZlIGFsc28gZ290IGB2bXhfaGFuZGxlX2V4aXRgLCBhcyBpdCB3aWxsIGhhbmRsZSBhbnkgZXhpdHMgZHVyaW5nIHRoZSBleGVjdXRpb24uXG5cbkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayBmb3IgYW55IG90aGVyIGZ1bmN0aW9ucyBpbiB0aGlzIHNwYWNlLiBBaCwgdGhlcmUgYXJlIGEgZmV3IG1vcmU6IGB2bXhfc2V0X2ludGVycnVwdF9zaGFkb3dgLCBgdm14X2dldF9yZmxhZ3NgLCBgdm14X2dldF9pbnRlcnJ1cHRfc2hhZG93YCwgYHZteF9pbmplY3RfZXhjZXB0aW9uYC4gV2hpbGUgaW50ZXJlc3RpbmcsIGB2bXhfdmNwdV9ydW5gIGFuZCBgdm14X2hhbmRsZV9leGl0YCBhcmUgdGhlIGJpZyBvbmVzLiBUaGV5IGFyZSB0aGUgY29yZSBvZiBWTVggZXhlY3V0aW9uIGFuZCBleGl0LCBhbmQgdGh1cyByZWx5IGhlYXZpbHkgb24gdGhlIFZNQ1MgcmVhZHMgYW5kIHdyaXRlcy5cblxuU28sIGxldCdzIHJlZmluZSB0aG9zZSBgRm9jdXNTeW1ib2xzYCBhZ2FpbjpcblxuKiAgIGB2bXhfdmNwdV9ydW5gXG4qICAgYHZteF9oYW5kbGVfZXhpdGBcbiogICBgX192bXhfaGFuZGxlX2V4aXRgXG4qICAgYGhhbmRsZV9lcHRfdmlvbGF0aW9uYFxuKiAgIGBoYW5kbGVfZXhjZXB0aW9uX25taWBcblxuWWVhaCwgdGhpcyBpcyBsb29raW5nIGxpa2UgYSBzb2xpZCBzZXQgdG8gc3RhcnQgd2l0aC4gSSdsbCBmbGFnIHRoaXMgYXMgXCJXb3J0aEZ1enppbmc6IHRydWVcIiBiZWNhdXNlIGNvbXBpbGVyIHJlb3JkZXJpbmcgYnVncyBhcmUgZXhhY3RseSB0aGUgdHlwZSBvZiBzdWJ0bGUgaXNzdWVzIHRoYXQgZnV6emluZyBleGNlbHMgYXQgZmluZGluZy4gVGltZSB0byBnbyBhaGVhZCBhbmQgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ1OTUsIk91dHB1dFRva2VucyI6MTQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDEyOjA1OjM5LjM3MDIxNzg3M1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc4MTM5MjI0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIixcbiAgICBcIktWTV9JTlRFTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZteF92Y3B1X3J1blwiLFxuICAgIFwidm14X2hhbmRsZV9leGl0XCIsXG4gICAgXCJfX3ZteF9oYW5kbGVfZXhpdFwiLFxuICAgIFwiaGFuZGxlX2VwdF92aW9sYXRpb25cIixcbiAgICBcImhhbmRsZV9leGNlcHRpb25fbm1pXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIFxcXCJtZW1vcnlcXFwiIGNsb2JiZXIgdG8gaW5saW5lIGFzc2VtYmx5IGZvciBWTUNTIHJlYWRzIGFuZCB3cml0ZXMgaW4gS1ZNIFZNWC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgcHJldmVudHMgY29tcGlsZXIgcmVvcmRlcmluZyBhbmQgY2FjaGluZyBvZiBtZW1vcnkgdmFsdWVzIGFyb3VuZCBWTUNTIG9wZXJhdGlvbnMsIHdoaWNoIGNhbiBsZWFkIHRvIHN1YnRsZSBidWdzIGluIEtWTSBleGVjdXRpb24gZmxvdy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIixcbiAgICBcIktWTV9JTlRFTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZteF92Y3B1X3J1blwiLFxuICAgIFwidm14X2hhbmRsZV9leGl0XCIsXG4gICAgXCJfX3ZteF9oYW5kbGVfZXhpdFwiLFxuICAgIFwiaGFuZGxlX2VwdF92aW9sYXRpb25cIixcbiAgICBcImhhbmRsZV9leGNlcHRpb25fbm1pXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIFxcXCJtZW1vcnlcXFwiIGNsb2JiZXIgdG8gaW5saW5lIGFzc2VtYmx5IGZvciBWTUNTIHJlYWRzIGFuZCB3cml0ZXMgaW4gS1ZNIFZNWC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgcHJldmVudHMgY29tcGlsZXIgcmVvcmRlcmluZyBhbmQgY2FjaGluZyBvZiBtZW1vcnkgdmFsdWVzIGFyb3VuZCBWTUNTIG9wZXJhdGlvbnMsIHdoaWNoIGNhbiBsZWFkIHRvIHN1YnRsZSBidWdzIGluIEtWTSBleGVjdXRpb24gZmxvdy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowwlmn2[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-22 11:44:22 +0000 UTC FinishedAt: 2026-07-22 12:05:41 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "a204badd8432f93b7e862e7dac6db0fe3d65f370", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM", "KVM_INTEL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "a204badd8432f93b7e862e7dac6db0fe3d65f370", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM", "KVM_INTEL" ], "series_id": "81cbd054-c7ab-49ef-adfd-82e0ba21ec76" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "vmx_vcpu_run", "vmx_handle_exit", "__vmx_handle_exit", "handle_ept_violation", "handle_exception_nmi" ], "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+CgkJCTx0ZD4yMDI2LzA3LzIyIDEyOjA1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtLVk1fSU5URUwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2bXhfdmNwdV9ydW4mIzM0OywKICAgICYjMzQ7dm14X2hhbmRsZV9leGl0JiMzNDssCiAgICAmIzM0O19fdm14X2hhbmRsZV9leGl0JiMzNDssCiAgICAmIzM0O2hhbmRsZV9lcHRfdmlvbGF0aW9uJiMzNDssCiAgICAmIzM0O2hhbmRsZV9leGNlcHRpb25fbm1pJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBcJiMzNDttZW1vcnlcJiMzNDsgY2xvYmJlciB0byBpbmxpbmUgYXNzZW1ibHkgZm9yIFZNQ1MgcmVhZHMgYW5kIHdyaXRlcyBpbiBLVk0gVk1YLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBwcmV2ZW50cyBjb21waWxlciByZW9yZGVyaW5nIGFuZCBjYWNoaW5nIG9mIG1lbW9yeSB2YWx1ZXMgYXJvdW5kIFZNQ1Mgb3BlcmF0aW9ucywgd2hpY2ggY2FuIGxlYWQgdG8gc3VidGxlIGJ1Z3MgaW4gS1ZNIGV4ZWN1dGlvbiBmbG93LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDEyOjA1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNTY1ZjgyYzQ3MTZmYTJmMzVkZWQ0YzllMzgxOTgxNWEzZmI3MTZlYlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDIyIDEyOjA1OjA0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS92bXgvdm14X29wcy5oIGIvYXJjaC94ODYva3ZtL3ZteC92bXhfb3BzLmhcbmluZGV4IDgxNzg0YmVmYWFmNDk4Li45ZmZlMDNhMGMyMjNjNCAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS92bXgvdm14X29wcy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vdm14L3ZteF9vcHMuaFxuQEAgLTEwMSw3ICYjNDM7MTAxLDcgQEAgc3RhdGljIF9fYWx3YXlzX2lubGluZSB1bnNpZ25lZCBsb25nIF9fdm1jc19yZWFkbCh1bnNpZ25lZCBsb25nIGZpZWxkKVxuIFxuIFx0XHRcdCAgOiBbb3V0cHV0XSBcJiMzNDs9clwmIzM0OyAodmFsdWUpXG4gXHRcdFx0ICA6IFtmaWVsZF0gXCYjMzQ7clwmIzM0OyAoZmllbGQpXG4tXHRcdFx0ICA6IFwmIzM0O2NjXCYjMzQ7XG4mIzQzO1x0XHRcdCAgOiBcJiMzNDtjY1wmIzM0OywgXCYjMzQ7bWVtb3J5XCYjMzQ7XG4gXHRcdFx0ICA6IGRvX2ZhaWwsIGRvX2V4Y2VwdGlvbik7XG4gXG4gXHRyZXR1cm4gdmFsdWU7XG5AQCAtMTQ1LDcgJiM0MzsxNDUsNyBAQCBzdGF0aWMgX19hbHdheXNfaW5saW5lIHVuc2lnbmVkIGxvbmcgX192bWNzX3JlYWRsKHVuc2lnbmVkIGxvbmcgZmllbGQpXG4gXG4gXHRcdCAgICAgOiBBU01fQ0FMTF9DT05TVFJBSU5ULCBbb3V0cHV0XSBcJiMzNDs9XHUwMDI2clwmIzM0OyAodmFsdWUpXG4gXHRcdCAgICAgOiBbZmllbGRdIFwmIzM0O3JcJiMzNDsgKGZpZWxkKVxuLVx0XHQgICAgIDogXCYjMzQ7Y2NcJiMzNDspO1xuJiM0MztcdFx0ICAgICA6IFwmIzM0O2NjXCYjMzQ7LCBcJiMzNDttZW1vcnlcJiMzNDspO1xuIFx0cmV0dXJuIHZhbHVlO1xuIFxuICNlbmRpZiAvKiBDT05GSUdfQ0NfSEFTX0FTTV9HT1RPX09VVFBVVCAqL1xuQEAgLTE5Miw3ICYjNDM7MTkyLDcgQEAgZG8ge1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4gXHRhc20gZ290byhcJiMzNDsxOiBcJiMzNDsgX19zdHJpbmdpZnkoaW5zbikgXCYjMzQ7ICUwXFxuXFx0XCYjMzQ7XHRcdFx0XFxcbiBcdFx0XHQgIFwmIzM0O2puYSAlbFtlcnJvcl1cXG5cXHRcJiMzNDtcdFx0XHRcdFxcXG4gXHRcdFx0ICBfQVNNX0VYVEFCTEUoMWIsICVsW2ZhdWx0XSlcdFx0XHRcXFxuLVx0XHRcdCAgOiA6IG9wMSA6IFwmIzM0O2NjXCYjMzQ7IDogZXJyb3IsIGZhdWx0KTtcdFx0XFxcbiYjNDM7XHRcdFx0ICA6IDogb3AxIDogXCYjMzQ7Y2NcJiMzNDssIFwmIzM0O21lbW9yeVwmIzM0OyA6IGVycm9yLCBmYXVsdCk7XHRcXFxuIFx0cmV0dXJuO1x0XHRcdFx0XHRcdFx0XHRcXFxuIGVycm9yOlx0XHRcdFx0XHRcdFx0XHRcdFxcXG4gXHRpbnN0cnVtZW50YXRpb25fYmVnaW4oKTtcdFx0XHRcdFx0XFxcbkBAIC0yMDgsNyAmIzQzOzIwOCw3IEBAIGRvIHtcdFx0XHRcdFx0XHRcdFx0XHRcXFxuIFx0YXNtIGdvdG8oXCYjMzQ7MTogXCYjMzQ7ICBfX3N0cmluZ2lmeShpbnNuKSBcJiMzNDsgJTEsICUwXFxuXFx0XCYjMzQ7XHRcdFx0XFxcbiBcdFx0XHQgIFwmIzM0O2puYSAlbFtlcnJvcl1cXG5cXHRcJiMzNDtcdFx0XHRcdFxcXG4gXHRcdFx0ICBfQVNNX0VYVEFCTEUoMWIsICVsW2ZhdWx0XSlcdFx0XHRcXFxuLVx0XHRcdCAgOiA6IG9wMSwgb3AyIDogXCYjMzQ7Y2NcJiMzNDsgOiBlcnJvciwgZmF1bHQpO1x0XHRcXFxuJiM0MztcdFx0XHQgIDogOiBvcDEsIG9wMiA6IFwmIzM0O2NjXCYjMzQ7LCBcJiMzNDttZW1vcnlcJiMzNDsgOiBlcnJvciwgZmF1bHQpO1xcXG4gXHRyZXR1cm47XHRcdFx0XHRcdFx0XHRcdFxcXG4gZXJyb3I6XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiBcdGluc3RydW1lbnRhdGlvbl9iZWdpbigpO1x0XHRcdFx0XHRcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDEyOjA1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OywKICAgICYjMzQ7S1ZNX0lOVEVMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dm14X3ZjcHVfcnVuJiMzNDssCiAgICAmIzM0O3ZteF9oYW5kbGVfZXhpdCYjMzQ7LAogICAgJiMzNDtfX3ZteF9oYW5kbGVfZXhpdCYjMzQ7LAogICAgJiMzNDtoYW5kbGVfZXB0X3Zpb2xhdGlvbiYjMzQ7LAogICAgJiMzNDtoYW5kbGVfZXhjZXB0aW9uX25taSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgXCYjMzQ7bWVtb3J5XCYjMzQ7IGNsb2JiZXIgdG8gaW5saW5lIGFzc2VtYmx5IGZvciBWTUNTIHJlYWRzIGFuZCB3cml0ZXMgaW4gS1ZNIFZNWC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgcHJldmVudHMgY29tcGlsZXIgcmVvcmRlcmluZyBhbmQgY2FjaGluZyBvZiBtZW1vcnkgdmFsdWVzIGFyb3VuZCBWTUNTIG9wZXJhdGlvbnMsIHdoaWNoIGNhbiBsZWFkIHRvIHN1YnRsZSBidWdzIGluIEtWTSBleGVjdXRpb24gZmxvdy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNTY1ZjgyYzQ3MTZmYTJmMzVkZWQ0YzllMzgxOTgxNWEzZmI3MTZlYgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgSnVsIDIyIDEyOjA1OjA0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3ZteC92bXhfb3BzLmggYi9hcmNoL3g4Ni9rdm0vdm14L3ZteF9vcHMuaAppbmRleCA4MTc4NGJlZmFhZjQ5OC4uOWZmZTAzYTBjMjIzYzQgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS92bXgvdm14X29wcy5oCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS92bXgvdm14X29wcy5oCkBAIC0xMDEsNyAmIzQzOzEwMSw3IEBAIHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdW5zaWduZWQgbG9uZyBfX3ZtY3NfcmVhZGwodW5zaWduZWQgbG9uZyBmaWVsZCkKIAogCQkJICA6IFtvdXRwdXRdICYjMzQ7PXImIzM0OyAodmFsdWUpCiAJCQkgIDogW2ZpZWxkXSAmIzM0O3ImIzM0OyAoZmllbGQpCi0JCQkgIDogJiMzNDtjYyYjMzQ7CiYjNDM7CQkJICA6ICYjMzQ7Y2MmIzM0OywgJiMzNDttZW1vcnkmIzM0OwogCQkJICA6IGRvX2ZhaWwsIGRvX2V4Y2VwdGlvbik7CiAKIAlyZXR1cm4gdmFsdWU7CkBAIC0xNDUsNyAmIzQzOzE0NSw3IEBAIHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdW5zaWduZWQgbG9uZyBfX3ZtY3NfcmVhZGwodW5zaWduZWQgbG9uZyBmaWVsZCkKIAogCQkgICAgIDogQVNNX0NBTExfQ09OU1RSQUlOVCwgW291dHB1dF0gJiMzNDs9JmFtcDtyJiMzNDsgKHZhbHVlKQogCQkgICAgIDogW2ZpZWxkXSAmIzM0O3ImIzM0OyAoZmllbGQpCi0JCSAgICAgOiAmIzM0O2NjJiMzNDspOwomIzQzOwkJICAgICA6ICYjMzQ7Y2MmIzM0OywgJiMzNDttZW1vcnkmIzM0Oyk7CiAJcmV0dXJuIHZhbHVlOwogCiAjZW5kaWYgLyogQ09ORklHX0NDX0hBU19BU01fR09UT19PVVRQVVQgKi8KQEAgLTE5Miw3ICYjNDM7MTkyLDcgQEAgZG8gewkJCQkJCQkJCVwKIAlhc20gZ290bygmIzM0OzE6ICYjMzQ7IF9fc3RyaW5naWZ5KGluc24pICYjMzQ7ICUwXG5cdCYjMzQ7CQkJXAogCQkJICAmIzM0O2puYSAlbFtlcnJvcl1cblx0JiMzNDsJCQkJXAogCQkJICBfQVNNX0VYVEFCTEUoMWIsICVsW2ZhdWx0XSkJCQlcCi0JCQkgIDogOiBvcDEgOiAmIzM0O2NjJiMzNDsgOiBlcnJvciwgZmF1bHQpOwkJXAomIzQzOwkJCSAgOiA6IG9wMSA6ICYjMzQ7Y2MmIzM0OywgJiMzNDttZW1vcnkmIzM0OyA6IGVycm9yLCBmYXVsdCk7CVwKIAlyZXR1cm47CQkJCQkJCQlcCiBlcnJvcjoJCQkJCQkJCQlcCiAJaW5zdHJ1bWVudGF0aW9uX2JlZ2luKCk7CQkJCQlcCkBAIC0yMDgsNyAmIzQzOzIwOCw3IEBAIGRvIHsJCQkJCQkJCQlcCiAJYXNtIGdvdG8oJiMzNDsxOiAmIzM0OyAgX19zdHJpbmdpZnkoaW5zbikgJiMzNDsgJTEsICUwXG5cdCYjMzQ7CQkJXAogCQkJICAmIzM0O2puYSAlbFtlcnJvcl1cblx0JiMzNDsJCQkJXAogCQkJICBfQVNNX0VYVEFCTEUoMWIsICVsW2ZhdWx0XSkJCQlcCi0JCQkgIDogOiBvcDEsIG9wMiA6ICYjMzQ7Y2MmIzM0OyA6IGVycm9yLCBmYXVsdCk7CQlcCiYjNDM7CQkJICA6IDogb3AxLCBvcDIgOiAmIzM0O2NjJiMzNDssICYjMzQ7bWVtb3J5JiMzNDsgOiBlcnJvciwgZmF1bHQpO1wKIAlyZXR1cm47CQkJCQkJCQlcCiBlcnJvcjoJCQkJCQkJCQlcCiAJaW5zdHJ1bWVudGF0aW9uX2JlZ2luKCk7CQkJCQlcCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDEyOjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMjAKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAxMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBLVk0vVk1YIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdG91Y2hlcyBgYXJjaC94ODYva3ZtL3ZteC92bXhfb3BzLmhgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtBaCwgVk1YIG9wZXJhdGlvbnMuJiMzNDsgVGhhdCBmaWxlIGlzIGNlbnRyYWwgdG8gaG93IHRoZSBLVk0gaHlwZXJ2aXNvciBpbnRlcmFjdHMgd2l0aCB0aGUgaGFyZHdhcmUgdmlydHVhbGl6YXRpb24gZXh0ZW5zaW9ucy4gU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyBsaWtlIHRoZXkmIzM5O3ZlIGFkZGVkIGAmIzM0O21lbW9yeSYjMzQ7YCB0byB0aGUgY2xvYmJlciBsaXN0IHdpdGhpbiB0aGUgaW5saW5lIGFzc2VtYmx5IGZvciBgX192bWNzX3JlYWRsYCBhbmQgdGhvc2UgVk1YIGluc3RydWN0aW9uIG1hY3JvcywgbGlrZSBgdm1jc193cml0ZWxgIGFuZCB0aGVpciBpbGssIHdoaWNoIHVzZSB0aGUgYGluc24gJTBgIG9yIGBpbnNuICUxLCAlMGAgY29uc3RydWN0cy4KCk15IGV4cGVydGlzZSB0ZWxscyBtZSB0aGlzIGlzIGFsbW9zdCBjZXJ0YWlubHkgYWltZWQgYXQgZW5zdXJpbmcgcHJvcGVyIG1lbW9yeSBvcmRlcmluZy4gV2l0aCB0aGVzZSBWTUNTIHJlYWRzL3dyaXRlcywgeW91JiMzOTtyZSBkZWFsaW5nIHdpdGggdmVyeSBzZW5zaXRpdmUgaGFyZHdhcmUgc3RhdGUuIENvbXBpbGVycyBjYW4gYmUgY2xldmVyLCBwb3RlbnRpYWxseSByZW9yZGVyaW5nIGluc3RydWN0aW9ucyBvciBjYWNoaW5nIHZhbHVlcyBpbiB3YXlzIHRoYXQgYnJlYWsgdGhlIGNyaXRpY2FsIHN5bmNocm9uaXphdGlvbiBuZWVkZWQgZm9yIHZpcnR1YWxpemF0aW9uIHRvIGZ1bmN0aW9uIGNvcnJlY3RseS4gQnkgaW5jbHVkaW5nIGAmIzM0O21lbW9yeSYjMzQ7YCBpbiB0aGUgY2xvYmJlciBsaXN0LCB0aGUgcGF0Y2ggaXMgZXNzZW50aWFsbHkgdGVsbGluZyB0aGUgY29tcGlsZXIsICYjMzQ7SGV5LCBkb24mIzM5O3QgYXNzdW1lIGFueXRoaW5nIGFib3V0IHRoZSBjb250ZW50cyBvZiBtZW1vcnkgc3Vycm91bmRpbmcgdGhlc2UgaW5zdHJ1Y3Rpb25zLiBUaGV5ICptaWdodCogYmUgY2hhbmdlZCBieSB0aGUgVk1YIGluc3RydWN0aW9uLCBhbmQgeW91IG5lZWQgdG8gdHJlYXQgdGhlbSBhcyB2b2xhdGlsZS4mIzM0OyBUaGlzIG1ha2VzIHNlbnNlIHRvIG1lLiBUaGUgcGF0Y2ggaXMgcHJvYmFibHkgZml4aW5nIHBvdGVudGlhbCBjb21waWxlci1yZWxhdGVkIGJ1Z3MgcmVsYXRlZCB0byByZW9yZGVyaW5nIG9mIGluc3RydWN0aW9ucyB0aGF0IHdvdWxkIG5vcm1hbGx5IGJlIHBlcmZlY3RseSB2YWxpZCBpbiBub24tdmlydHVhbGl6ZWQgY29kZS4KCk5vdywgSSYjMzk7bGwgZGl2ZSBpbnRvIGBhcmNoL3g4Ni9rdm0vdm14L3ZteF9vcHMuaGAgaXRzZWxmIHRvIGNvbmZpcm0gbXkgdW5kZXJzdGFuZGluZyBhbmQgc2VlIHRoZSBzcGVjaWZpY3Mgb2YgdGhlIGNoYW5nZS4gVGhpcyBhZGRpdGlvbiBpcyBsaWtlbHkgdGhlIG5lY2Vzc2FyeSAmIzM0O2ZlbmNlJiMzNDsgdG8gbWFrZSBzdXJlIHRoYXQgdGhlc2UgVk1YIGluc3RydWN0aW9ucyB3b3JrIHByb3Blcmx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDEyOjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fdm1jc19yZWFkbCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS92bXgvdm14X29wcy5oJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS92bXgvdm14X29wcy5oPTc5PXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdm9pZCB2bWNzX2NoZWNrbCh1bnNpZ25lZCBsb25nIGZpZWxkKVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14X29wcy5oLTkwLVxuYXJjaC94ODYva3ZtL3ZteC92bXhfb3BzLmg6OTE6c3RhdGljIF9fYWx3YXlzX2lubGluZSB1bnNpZ25lZCBsb25nIF9fdm1jc19yZWFkbCh1bnNpZ25lZCBsb25nIGZpZWxkKVxuYXJjaC94ODYva3ZtL3ZteC92bXhfb3BzLmgtOTIte1xuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14X29wcy5oPTE1ND1zdGF0aWMgX19hbHdheXNfaW5saW5lIHUxNiB2bWNzX3JlYWQxNih1bnNpZ25lZCBsb25nIGZpZWxkKVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14X29wcy5oLTE1OC1cdFx0cmV0dXJuIGV2bWNzX3JlYWQxNihmaWVsZCk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteF9vcHMuaDoxNTk6XHRyZXR1cm4gX192bWNzX3JlYWRsKGZpZWxkKTtcbmFyY2gveDg2L2t2bS92bXgvdm14X29wcy5oLTE2MC19XG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXhfb3BzLmg9MTYyPXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdTMyIHZtY3NfcmVhZDMyKHVuc2lnbmVkIGxvbmcgZmllbGQpXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXhfb3BzLmgtMTY2LVx0XHRyZXR1cm4gZXZtY3NfcmVhZDMyKGZpZWxkKTtcbmFyY2gveDg2L2t2bS92bXgvdm14X29wcy5oOjE2NzpcdHJldHVybiBfX3ZtY3NfcmVhZGwoZmllbGQpO1xuYXJjaC94ODYva3ZtL3ZteC92bXhfb3BzLmgtMTY4LX1cbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteF9vcHMuaD0xNzA9c3RhdGljIF9fYWx3YXlzX2lubGluZSB1NjQgdm1jc19yZWFkNjQodW5zaWduZWQgbG9uZyBmaWVsZClcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteF9vcHMuaC0xNzUtI2lmZGVmIENPTkZJR19YODZfNjRcbmFyY2gveDg2L2t2bS92bXgvdm14X29wcy5oOjE3NjpcdHJldHVybiBfX3ZtY3NfcmVhZGwoZmllbGQpO1xuYXJjaC94ODYva3ZtL3ZteC92bXhfb3BzLmgtMTc3LSNlbHNlXG5hcmNoL3g4Ni9rdm0vdm14L3ZteF9vcHMuaDoxNzg6XHRyZXR1cm4gX192bWNzX3JlYWRsKGZpZWxkKSB8ICgodTY0KV9fdm1jc19yZWFkbChmaWVsZCYjNDM7MSkgXHUwMDNjXHUwMDNjIDMyKTtcbmFyY2gveDg2L2t2bS92bXgvdm14X29wcy5oLTE3OS0jZW5kaWZcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteF9vcHMuaD0xODI9c3RhdGljIF9fYWx3YXlzX2lubGluZSB1bnNpZ25lZCBsb25nIHZtY3NfcmVhZGwodW5zaWduZWQgbG9uZyBmaWVsZClcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteF9vcHMuaC0xODYtXHRcdHJldHVybiBldm1jc19yZWFkNjQoZmllbGQpO1xuYXJjaC94ODYva3ZtL3ZteC92bXhfb3BzLmg6MTg3Olx0cmV0dXJuIF9fdm1jc19yZWFkbChmaWVsZCk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteF9vcHMuaC0xODgtfVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14X29wcy5oPTI2Nj1zdGF0aWMgX19hbHdheXNfaW5saW5lIHZvaWQgdm1jc19jbGVhcl9iaXRzKHVuc2lnbmVkIGxvbmcgZmllbGQsIHUzMiBtYXNrKVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14X29wcy5oLTI3Mi1cbmFyY2gveDg2L2t2bS92bXgvdm14X29wcy5oOjI3MzpcdF9fdm1jc193cml0ZWwoZmllbGQsIF9fdm1jc19yZWFkbChmaWVsZCkgXHUwMDI2IH5tYXNrKTtcbmFyY2gveDg2L2t2bS92bXgvdm14X29wcy5oLTI3NC19XG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXhfb3BzLmg9Mjc2PXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdm9pZCB2bWNzX3NldF9iaXRzKHVuc2lnbmVkIGxvbmcgZmllbGQsIHUzMiBtYXNrKVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14X29wcy5oLTI4Mi1cbmFyY2gveDg2L2t2bS92bXgvdm14X29wcy5oOjI4MzpcdF9fdm1jc193cml0ZWwoZmllbGQsIF9fdm1jc19yZWFkbChmaWVsZCkgfCBtYXNrKTtcbmFyY2gveDg2L2t2bS92bXgvdm14X29wcy5oLTI4NC19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTI6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzkyOAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDI0OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEltcGFjdCBvZiB0aGUgTWVtb3J5IENsb2JiZXIgaW4gS1ZNIFZNWCBJbmxpbmUgQXNzZW1ibHkqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgYCYjMzQ7bWVtb3J5JiMzNDtgIGNsb2JiZXIgaW50byB0aGUgaW5saW5lIGFzc2VtYmx5IHdpdGhpbiBgX192bWNzX3JlYWRsYCBhbmQgdGhlIGB2bXhfYXNtMWAvYHZteF9hc20yYCBtYWNyb3MuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSBuZWNlc3Nhcnkgb25lLiBJdCBzdG9wcyB0aGUgY29tcGlsZXIgZnJvbSBiZWluZyBvdmVybHkgYWdncmVzc2l2ZSBpbiBjYWNoaW5nIG1lbW9yeSB2YWx1ZXMgYWNyb3NzIFZNQ1MgcmVhZHMgYW5kIHdyaXRlcy4gVGhhdCYjMzk7cyBjcnVjaWFsIGZvciBjb3JyZWN0bmVzcyBpbiB0aGlzIGNvbnRleHQuIEJ1dCB3YWl04oCmIGRvZXMgdGhpcyBhY3R1YWxseSAqY2hhbmdlKiB0aGUgZXhlY3V0aW9uIGZsb3c/IFRlY2huaWNhbGx5LCBpdCYjMzk7cyBhIGNvbXBpbGVyIGJlaGF2aW9yIGNoYW5nZSwgYnV0IHRoYXQgc3VidGx5IGFmZmVjdHMgaG93IHRoZSBjb2RlIGV4ZWN1dGVzLCBlc3BlY2lhbGx5IHdpdGggbWVtb3J5IGJhcnJpZXJzLiBUaGlzIHdhcnJhbnRzIGEgZGVlcGVyIGxvb2suCgpUaGUgbmV4dCBxdWVzdGlvbiBpcyBmdXp6aW5nLiBXb3VsZCB0aGlzIGJlIGEgZ29vZCB0YXJnZXQ/IEl0IHdvbiYjMzk7dCBzcGVjaWZpY2FsbHkgdGFyZ2V0IHRoZSBjbG9iYmVyIGl0c2VsZiwgYnV0IGl04oCZcyBhIGNvcmUgY2hhbmdlIHdpdGhpbiBLVk0gVk1YLiBXaGlsZSBmdXp6aW5nIG1pZ2h0IG5vdCBoaXQgdGhlIHByZWNpc2UgcmFjZSBjb25kaXRpb24gb3IgY29tcGlsZXIgcmVvcmRlcmluZyB3ZSYjMzk7cmUgbm93IHRyeWluZyB0byBwcmV2ZW50LCBpdCAqaXMqIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBjcml0aWNhbCBhcmVhLCBzbyBpdCYjMzk7cyBwcm9iYWJseSB3b3J0aCBpdC4KCkFscmlnaHQsIGxldCYjMzk7cyB0cnkgdG8gZXh0cmFjdCBzb21lIHJlbGV2YW50IHN5bWJvbHMgdG8gZm9jdXMgb24uIFRoaW5raW5nIGFib3V0IHRoZSBmdW5jdGlvbnMgaW52b2x2ZWQ6IGB2bWNzX3JlYWRsYCwgYHZtY3Nfd3JpdGVsYCwgYW5kIHRoZSBsaWtlIC0gdGhleSYjMzk7cmUgYWxsIGlubGluZS4gSSBjYW4gc2VlIHRoZXkgYXJlIHVzZWQgcHJldHR5IHdpZGVseSB0aHJvdWdob3V0IGBhcmNoL3g4Ni9rdm0vdm14L2AuIEkmIzM5O2xsIGZvY3VzIG9uIGBhcmNoL3g4Ni9rdm0vdm14L3ZteC5jYCB0byBzZWUgaWYgSSBjYW4gdW5kZXJzdGFuZCBob3cgdGhlc2UgbmV3IGNsb2JiZXJzIGFyZSBiZWluZyB1c2VkIGluIG1vcmUgY29uY3JldGUgZXhhbXBsZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTI6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dm1jc19yZWFkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3ZteC92bXguYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNTEwIGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTU2Mj1ub2lubGluZSB2b2lkIHZtd3JpdGVfZXJyb3IodW5zaWduZWQgbG9uZyBmaWVsZCwgdW5zaWduZWQgbG9uZyB2YWx1ZSlcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTU2NC1cdHZteF9pbnNuX2ZhaWxlZChcJiMzNDt2bXdyaXRlIGZhaWxlZDogZmllbGQ9JWx4IHZhbD0lbHggZXJyPSV1XFxuXCYjMzQ7LFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo1NjU6XHRcdFx0ZmllbGQsIHZhbHVlLCB2bWNzX3JlYWQzMihWTV9JTlNUUlVDVElPTl9FUlJPUikpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy01NjYtfVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM9NTY4PW5vaW5saW5lIHZvaWQgdm1jbGVhcl9lcnJvcihzdHJ1Y3Qgdm1jcyAqdm1jcywgdTY0IHBoeXNfYWRkcilcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTU3MC1cdHZteF9pbnNuX2ZhaWxlZChcJiMzNDt2bWNsZWFyIGZhaWxlZDogJXAvJWxseCBlcnI9JXVcXG5cJiMzNDssXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjU3MTpcdFx0XHR2bWNzLCBwaHlzX2FkZHIsIHZtY3NfcmVhZDMyKFZNX0lOU1RSVUNUSU9OX0VSUk9SKSk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTU3Mi19XG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYz01NzQ9bm9pbmxpbmUgdm9pZCB2bXB0cmxkX2Vycm9yKHN0cnVjdCB2bWNzICp2bWNzLCB1NjQgcGh5c19hZGRyKVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNTc2LVx0dm14X2luc25fZmFpbGVkKFwmIzM0O3ZtcHRybGQgZmFpbGVkOiAlcC8lbGx4IGVycj0ldVxcblwmIzM0OyxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NTc3Olx0XHRcdHZtY3MsIHBoeXNfYWRkciwgdm1jc19yZWFkMzIoVk1fSU5TVFJVQ1RJT05fRVJST1IpKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNTc4LX1cbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTg2Mz1zdGF0aWMgdTE2IHZteF9yZWFkX2d1ZXN0X3NlZ19zZWxlY3RvcihzdHJ1Y3QgdmNwdV92bXggKnZteCwgdW5zaWduZWQgc2VnKVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmMtODY3LVx0aWYgKCF2bXhfc2VnbWVudF9jYWNoZV90ZXN0X3NldCh2bXgsIHNlZywgU0VHX0ZJRUxEX1NFTCkpXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjg2ODpcdFx0KnAgPSB2bWNzX3JlYWQxNihrdm1fdm14X3NlZ21lbnRfZmllbGRzW3NlZ10uc2VsZWN0b3IpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy04NjktXHRyZXR1cm4gKnA7XG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYz04NzI9c3RhdGljIHVsb25nIHZteF9yZWFkX2d1ZXN0X3NlZ19iYXNlKHN0cnVjdCB2Y3B1X3ZteCAqdm14LCB1bnNpZ25lZCBzZWcpXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy04NzYtXHRpZiAoIXZteF9zZWdtZW50X2NhY2hlX3Rlc3Rfc2V0KHZteCwgc2VnLCBTRUdfRklFTERfQkFTRSkpXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjg3NzpcdFx0KnAgPSB2bWNzX3JlYWRsKGt2bV92bXhfc2VnbWVudF9maWVsZHNbc2VnXS5iYXNlKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtODc4LVx0cmV0dXJuICpwO1xuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM9ODgxPXN0YXRpYyB1MzIgdm14X3JlYWRfZ3Vlc3Rfc2VnX2xpbWl0KHN0cnVjdCB2Y3B1X3ZteCAqdm14LCB1bnNpZ25lZCBzZWcpXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy04ODUtXHRpZiAoIXZteF9zZWdtZW50X2NhY2hlX3Rlc3Rfc2V0KHZteCwgc2VnLCBTRUdfRklFTERfTElNSVQpKVxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo4ODY6XHRcdCpwID0gdm1jc19yZWFkMzIoa3ZtX3ZteF9zZWdtZW50X2ZpZWxkc1tzZWddLmxpbWl0KTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtODg3LVx0cmV0dXJuICpwO1xuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM9ODkwPXN0YXRpYyB1MzIgdm14X3JlYWRfZ3Vlc3Rfc2VnX2FyKHN0cnVjdCB2Y3B1X3ZteCAqdm14LCB1bnNpZ25lZCBzZWcpXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy04OTQtXHRpZiAoIXZteF9zZWdtZW50X2NhY2hlX3Rlc3Rfc2V0KHZteCwgc2VnLCBTRUdfRklFTERfQVIpKVxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo4OTU6XHRcdCpwID0gdm1jc19yZWFkMzIoa3ZtX3ZteF9zZWdtZW50X2ZpZWxkc1tzZWddLmFyX2J5dGVzKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtODk2LVx0cmV0dXJuICpwO1xuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM9MTYyNz11bnNpZ25lZCBsb25nIHZteF9nZXRfcmZsYWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTE2MzMtXHRcdGt2bV9yZWdpc3Rlcl9tYXJrX2F2YWlsYWJsZSh2Y3B1LCBWQ1BVX1JFR19SRkxBR1MpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYzoxNjM0Olx0XHRyZmxhZ3MgPSB2bWNzX3JlYWRsKEdVRVNUX1JGTEFHUyk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTE2MzUtXHRcdGlmICh2bXgtXHUwMDNlcm1vZGUudm04Nl9hY3RpdmUpIHtcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTE2Nzk9dTMyIHZteF9nZXRfaW50ZXJydXB0X3NoYWRvdyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTE2ODAte1xuYXJjaC94ODYva3ZtL3ZteC92bXguYzoxNjgxOlx0dTMyIGludGVycnVwdGliaWxpdHkgPSB2bWNzX3JlYWQzMihHVUVTVF9JTlRFUlJVUFRJQklMSVRZX0lORk8pO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy0xNjgyLVx0aW50IHJldCA9IDA7XG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYz0xNjkyPXZvaWQgdm14X3NldF9pbnRlcnJ1cHRfc2hhZG93KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgaW50IG1hc2spXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTE2OTMte1xuYXJjaC94ODYva3ZtL3ZteC92bXguYzoxNjk0Olx0dTMyIGludGVycnVwdGliaWxpdHlfb2xkID0gdm1jc19yZWFkMzIoR1VFU1RfSU5URVJSVVBUSUJJTElUWV9JTkZPKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMTY5NS1cdHUzMiBpbnRlcnJ1cHRpYmlsaXR5ID0gaW50ZXJydXB0aWJpbGl0eV9vbGQ7XG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYz0xODA0PXN0YXRpYyBpbnQgc2tpcF9lbXVsYXRlZF9pbnN0cnVjdGlvbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0xODE5LVx0ICAgIGV4aXRfcmVhc29uLmJhc2ljICE9IEVYSVRfUkVBU09OX0VQVF9NSVNDT05GSUcpIHtcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6MTgyMDpcdFx0aW5zdHJfbGVuID0gdm1jc19yZWFkMzIoVk1fRVhJVF9JTlNUUlVDVElPTl9MRU4pO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy0xODIxLVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM9MTkwOT1zdGF0aWMgdm9pZCB2bXhfY2xlYXJfaGx0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTE5MTctXHRpZiAoa3ZtX2hsdF9pbl9ndWVzdCh2Y3B1LVx1MDAzZWt2bSkgXHUwMDI2XHUwMDI2XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjE5MTg6XHRcdFx0dm1jc19yZWFkMzIoR1VFU1RfQUNUSVZJVFlfU1RBVEUpID09IEdVRVNUX0FDVElWSVRZX0hMVClcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMTkxOS1cdFx0dm1jc193cml0ZTMyKEdVRVNUX0FDVElWSVRZX1NUQVRFLCBHVUVTVF9BQ1RJVklUWV9BQ1RJVkUpO1xuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM9MTkyMj12b2lkIHZteF9pbmplY3RfZXhjZXB0aW9uKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTE5NDMtXHRcdHZtY3Nfd3JpdGVsKEdVRVNUX1BFTkRJTkdfREJHX0VYQ0VQVElPTlMsXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjE5NDQ6XHRcdFx0ICAgIHZtY3NfcmVhZGwoR1VFU1RfUEVORElOR19EQkdfRVhDRVBUSU9OUykgfCBEUjZfQlMpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy0xOTQ1LVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM9MjEyNj1pbnQgdm14X2dldF9tc3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgbXNyX2RhdGEgKm1zcl9pbmZvKVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMjEzNC1cdGNhc2UgTVNSX0ZTX0JBU0U6XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjIxMzU6XHRcdG1zcl9pbmZvLVx1MDAzZWRhdGEgPSB2bWNzX3JlYWRsKEdVRVNUX0ZTX0JBU0UpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy0yMTM2LVx0XHRicmVhaztcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMjEzNy1cdGNhc2UgTVNSX0dTX0JBU0U6XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjIxMzg6XHRcdG1zcl9pbmZvLVx1MDAzZWRhdGEgPSB2bWNzX3JlYWRsKEdVRVNUX0dTX0JBU0UpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy0yMTM5LVx0XHRicmVhaztcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTIxNjQtXHRjYXNlIE1TUl9JQTMyX1NZU0VOVEVSX0NTOlxuYXJjaC94ODYva3ZtL3ZteC92bXguYzoyMTY1Olx0XHRtc3JfaW5mby1cdTAwM2VkYXRhID0gdm1jc19yZWFkMzIoR1VFU1RfU1lTRU5URVJfQ1MpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy0yMTY2LVx0XHRicmVhaztcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMjE2Ny1cdGNhc2UgTVNSX0lBMzJfU1lTRU5URVJfRUlQOlxuYXJjaC94ODYva3ZtL3ZteC92bXguYzoyMTY4Olx0XHRtc3JfaW5mby1cdTAwM2VkYXRhID0gdm1jc19yZWFkbChHVUVTVF9TWVNFTlRFUl9FSVApO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy0yMTY5LVx0XHRicmVhaztcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMjE3MC1cdGNhc2UgTVNSX0lBMzJfU1lTRU5URVJfRVNQOlxuYXJjaC94ODYva3ZtL3ZteC92bXguYzoyMTcxOlx0XHRtc3JfaW5mby1cdTAwM2VkYXRhID0gdm1jc19yZWFkbChHVUVTVF9TWVNFTlRFUl9FU1ApO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy0yMTcyLVx0XHRicmVhaztcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTIxNzctXHRcdFx0cmV0dXJuIDE7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjIxNzg6XHRcdG1zcl9pbmZvLVx1MDAzZWRhdGEgPSB2bWNzX3JlYWQ2NChHVUVTVF9CTkRDRkdTKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMjE3OS1cdFx0YnJlYWs7XG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0yMjYxLVx0Y2FzZSBNU1JfSUEzMl9TX0NFVDpcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6MjI2MjpcdFx0bXNyX2luZm8tXHUwMDNlZGF0YSA9IHZtY3NfcmVhZGwoR1VFU1RfU19DRVQpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy0yMjYzLVx0XHRicmVhaztcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMjI2NC1cdGNhc2UgTVNSX0tWTV9JTlRFUk5BTF9HVUVTVF9TU1A6XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjIyNjU6XHRcdG1zcl9pbmZvLVx1MDAzZWRhdGEgPSB2bWNzX3JlYWRsKEdVRVNUX1NTUCk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTIyNjYtXHRcdGJyZWFrO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy0yMjY3LVx0Y2FzZSBNU1JfSUEzMl9JTlRfU1NQX1RBQjpcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6MjI2ODpcdFx0bXNyX2luZm8tXHUwMDNlZGF0YSA9IHZtY3NfcmVhZGwoR1VFU1RfSU5UUl9TU1BfVEFCTEUpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy0yMjY5LVx0XHRicmVhaztcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTI2MzU9dm9pZCB2bXhfY2FjaGVfcmVnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgZW51bSBrdm1fcmVnIHJlZylcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTI2NDItXHRjYXNlIFZDUFVfUkVHU19SU1A6XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjI2NDM6XHRcdHZjcHUtXHUwMDNlYXJjaC5yZWdzW1ZDUFVfUkVHU19SU1BdID0gdm1jc19yZWFkbChHVUVTVF9SU1ApO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy0yNjQ0LVx0XHRicmVhaztcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMjY0NS1cdGNhc2UgVkNQVV9SRUdfUklQOlxuYXJjaC94ODYva3ZtL3ZteC92bXguYzoyNjQ2Olx0XHR2Y3B1LVx1MDAzZWFyY2gucmlwID0gdm1jc19yZWFkbChHVUVTVF9SSVApO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy0yNjQ3LVx0XHRicmVhaztcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTI2NTUtXHRcdHZjcHUtXHUwMDNlYXJjaC5jcjAgXHUwMDI2PSB+Z3Vlc3Rfb3duZWRfYml0cztcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6MjY1NjpcdFx0dmNwdS1cdTAwM2VhcmNoLmNyMCB8PSB2bWNzX3JlYWRsKEdVRVNUX0NSMCkgXHUwMDI2IGd1ZXN0X293bmVkX2JpdHM7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTI2NTctXHRcdGJyZWFrO1xuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMjY2My1cdFx0aWYgKCEoZXhlY19jb250cm9sc19nZXQodG9fdm14KHZjcHUpKSBcdTAwMjYgQ1BVX0JBU0VEX0NSM19MT0FEX0VYSVRJTkcpKVxuYXJjaC94ODYva3ZtL3ZteC92bXguYzoyNjY0Olx0XHRcdHZjcHUtXHUwMDNlYXJjaC5jcjMgPSB2bWNzX3JlYWRsKEdVRVNUX0NSMyk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTI2NjUtXHRcdGJyZWFrO1xuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMjY2OS1cdFx0dmNwdS1cdTAwM2VhcmNoLmNyNCBcdTAwMjY9IH5ndWVzdF9vd25lZF9iaXRzO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYzoyNjcwOlx0XHR2Y3B1LVx1MDAzZWFyY2guY3I0IHw9IHZtY3NfcmVhZGwoR1VFU1RfQ1I0KSBcdTAwMjYgZ3Vlc3Rfb3duZWRfYml0cztcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMjY3MS1cdFx0YnJlYWs7XG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYz0zMTMxPXN0YXRpYyB2b2lkIGVudGVyX3Btb2RlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTMxNTAtXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjMxNTE6XHRmbGFncyA9IHZtY3NfcmVhZGwoR1VFU1RfUkZMQUdTKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMzE1Mi1cdGZsYWdzIFx1MDAyNj0gUk1PREVfR1VFU1RfT1dORURfRUZMQUdTX0JJVFM7XG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0zMTU1LVxuYXJjaC94ODYva3ZtL3ZteC92bXguYzozMTU2Olx0dm1jc193cml0ZWwoR1VFU1RfQ1I0LCAodm1jc19yZWFkbChHVUVTVF9DUjQpIFx1MDAyNiB+WDg2X0NSNF9WTUUpIHxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6MzE1NzpcdFx0XHQodm1jc19yZWFkbChDUjRfUkVBRF9TSEFET1cpIFx1MDAyNiBYODZfQ1I0X1ZNRSkpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy0zMTU4LVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM9MzIwMT1zdGF0aWMgdm9pZCBlbnRlcl9ybW9kZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0zMjMxLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYzozMjMyOlx0ZmxhZ3MgPSB2bWNzX3JlYWRsKEdVRVNUX1JGTEFHUyk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTMyMzMtXHR2bXgtXHUwMDNlcm1vZGUuc2F2ZV9yZmxhZ3MgPSBmbGFncztcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTMyMzctXHR2bWNzX3dyaXRlbChHVUVTVF9SRkxBR1MsIGZsYWdzKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6MzIzODpcdHZtY3Nfd3JpdGVsKEdVRVNUX0NSNCwgdm1jc19yZWFkbChHVUVTVF9DUjQpIHwgWDg2X0NSNF9WTUUpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy0zMjM5LVx0dm14X3VwZGF0ZV9leGNlcHRpb25fYml0bWFwKHZjcHUpO1xuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM9MzI3ND1zdGF0aWMgdm9pZCBlbnRlcl9sbW9kZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0zMjc5LVxuYXJjaC94ODYva3ZtL3ZteC92bXguYzozMjgwOlx0Z3Vlc3RfdHJfYXIgPSB2bWNzX3JlYWQzMihHVUVTVF9UUl9BUl9CWVRFUyk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTMyODEtXHRpZiAoKGd1ZXN0X3RyX2FyIFx1MDAyNiBWTVhfQVJfVFlQRV9NQVNLKSAhPSBWTVhfQVJfVFlQRV9CVVNZXzY0X1RTUykge1xuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM9MzQxMT12b2lkIGVwdF9zYXZlX3BkcHRycyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0zNDE1LVxuYXJjaC94ODYva3ZtL3ZteC92bXguYzozNDE2Olx0dmNwdS1cdTAwM2VhcmNoLnBkcHRyc1swXSA9IHZtY3NfcmVhZDY0KEdVRVNUX1BEUFRSMCk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjM0MTc6XHR2Y3B1LVx1MDAzZWFyY2gucGRwdHJzWzFdID0gdm1jc19yZWFkNjQoR1VFU1RfUERQVFIxKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6MzQxODpcdHZjcHUtXHUwMDNlYXJjaC5wZHB0cnNbMl0gPSB2bWNzX3JlYWQ2NChHVUVTVF9QRFBUUjIpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYzozNDE5Olx0dmNwdS1cdTAwM2VhcmNoLnBkcHRyc1szXSA9IHZtY3NfcmVhZDY0KEdVRVNUX1BEUFRSMyk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTM0MjAtXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYz0zNjkwPXN0YXRpYyBpbnQgX192bXhfZ2V0X2NwbChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGJvb2wgbm9fY2FjaGUpXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0zNjk4LVx0aWYgKG5vX2NhY2hlKVxuYXJjaC94ODYva3ZtL3ZteC92bXguYzozNjk5Olx0XHRhciA9IHZtY3NfcmVhZDMyKEdVRVNUX1NTX0FSX0JZVEVTKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMzcwMC1cdGVsc2Vcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTM3ODQ9dm9pZCB2bXhfZ2V0X2lkdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBkZXNjX3B0ciAqZHQpXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTM3ODUte1xuYXJjaC94ODYva3ZtL3ZteC92bXguYzozNzg2Olx0ZHQtXHUwMDNlc2l6ZSA9IHZtY3NfcmVhZDMyKEdVRVNUX0lEVFJfTElNSVQpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYzozNzg3Olx0ZHQtXHUwMDNlYWRkcmVzcyA9IHZtY3NfcmVhZGwoR1VFU1RfSURUUl9CQVNFKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMzc4OC19XG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYz0zNzk2PXZvaWQgdm14X2dldF9nZHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgZGVzY19wdHIgKmR0KVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0zNzk3LXtcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6Mzc5ODpcdGR0LVx1MDAzZXNpemUgPSB2bWNzX3JlYWQzMihHVUVTVF9HRFRSX0xJTUlUKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6Mzc5OTpcdGR0LVx1MDAzZWFkZHJlc3MgPSB2bWNzX3JlYWRsKEdVRVNUX0dEVFJfQkFTRSk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTM4MDAtfVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM9NTEwOD12b2lkIHZteF9lbmFibGVfbm1pX3dpbmRvdyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy01MTEwLVx0aWYgKCFlbmFibGVfdm5taSB8fFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo1MTExOlx0ICAgIHZtY3NfcmVhZDMyKEdVRVNUX0lOVEVSUlVQVElCSUxJVFlfSU5GTykgXHUwMDI2IEdVRVNUX0lOVFJfU1RBVEVfU1RJKSB7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTUxMTItXHRcdHZteF9lbmFibGVfaXJxX3dpbmRvdyh2Y3B1KTtcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTUxNzg9Ym9vbCB2bXhfZ2V0X25taV9tYXNrKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTUxODYtXHRcdHJldHVybiBmYWxzZTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NTE4NzpcdG1hc2tlZCA9IHZtY3NfcmVhZDMyKEdVRVNUX0lOVEVSUlVQVElCSUxJVFlfSU5GTykgXHUwMDI2IEdVRVNUX0lOVFJfU1RBVEVfTk1JO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy01MTg4LVx0dm14LVx1MDAzZWxvYWRlZF92bWNzLVx1MDAzZW5taV9rbm93bl91bm1hc2tlZCA9ICFtYXNrZWQ7XG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYz01MjEyPWJvb2wgdm14X25taV9ibG9ja2VkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTUyMTktXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjUyMjA6XHRyZXR1cm4gKHZtY3NfcmVhZDMyKEdVRVNUX0lOVEVSUlVQVElCSUxJVFlfSU5GTykgXHUwMDI2XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTUyMjEtXHRcdChHVUVTVF9JTlRSX1NUQVRFX01PVl9TUyB8IEdVRVNUX0lOVFJfU1RBVEVfU1RJIHxcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTUyMzc9Ym9vbCBfX3ZteF9pbnRlcnJ1cHRfYmxvY2tlZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy01MjM5LVx0cmV0dXJuICEodm14X2dldF9yZmxhZ3ModmNwdSkgXHUwMDI2IFg4Nl9FRkxBR1NfSUYpIHx8XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjUyNDA6XHQgICAgICAgKHZtY3NfcmVhZDMyKEdVRVNUX0lOVEVSUlVQVElCSUxJVFlfSU5GTykgXHUwMDI2XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTUyNDEtXHRcdChHVUVTVF9JTlRSX1NUQVRFX1NUSSB8IEdVRVNUX0lOVFJfU1RBVEVfTU9WX1NTKSk7XG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYz01Mjk2PXN0YXRpYyBib29sIHJtb2RlX2V4Y2VwdGlvbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGludCB2ZWMpXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy01MzA0LVx0XHR0b192bXgodmNwdSktXHUwMDNldmNwdS5hcmNoLmV2ZW50X2V4aXRfaW5zdF9sZW4gPVxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo1MzA1Olx0XHRcdHZtY3NfcmVhZDMyKFZNX0VYSVRfSU5TVFJVQ1RJT05fTEVOKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNTMwNi1cdFx0aWYgKHZjcHUtXHUwMDNlZ3Vlc3RfZGVidWcgXHUwMDI2IEtWTV9HVUVTVERCR19VU0VfU1dfQlApXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYz01NDI1PXN0YXRpYyBpbnQgaGFuZGxlX2V4Y2VwdGlvbl9ubWkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNTQ3MC1cdGlmIChpbnRyX2luZm8gXHUwMDI2IElOVFJfSU5GT19ERUxJVkVSX0NPREVfTUFTSylcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NTQ3MTpcdFx0ZXJyb3JfY29kZSA9IHZtY3NfcmVhZDMyKFZNX0VYSVRfSU5UUl9FUlJPUl9DT0RFKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNTQ3Mi1cbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTU1MzQtXHRcdGt2bV9ydW4tXHUwMDNlZGVidWcuYXJjaC5kcjYgPSBkcjYgfCBEUjZfQUNUSVZFX0xPVztcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NTUzNTpcdFx0a3ZtX3J1bi1cdTAwM2VkZWJ1Zy5hcmNoLmRyNyA9IHZtY3NfcmVhZGwoR1VFU1RfRFI3KTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNTUzNi1cdFx0ZmFsbHRocm91Z2g7XG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy01NTQzLVx0XHR2bXgtXHUwMDNldmNwdS5hcmNoLmV2ZW50X2V4aXRfaW5zdF9sZW4gPVxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo1NTQ0Olx0XHRcdHZtY3NfcmVhZDMyKFZNX0VYSVRfSU5TVFJVQ1RJT05fTEVOKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNTU0NS1cdFx0a3ZtX3J1bi1cdTAwM2VleGl0X3JlYXNvbiA9IEtWTV9FWElUX0RFQlVHO1xuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM9NTc1Mj1zdGF0aWMgaW50IGhhbmRsZV9kcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy01NzY3LVxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo1NzY4Olx0ZHI3ID0gdm1jc19yZWFkbChHVUVTVF9EUjcpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy01NzY5LVx0aWYgKGRyNyBcdTAwMjYgRFI3X0dEKSB7XG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYz01ODEyPXZvaWQgdm14X3N5bmNfZGlydHlfZGVidWdfcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy01ODE4LVx0Z2V0X2RlYnVncmVnKHZjcHUtXHUwMDNlYXJjaC5kcjYsIDYpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYzo1ODE5Olx0dmNwdS1cdTAwM2VhcmNoLmRyNyA9IHZtY3NfcmVhZGwoR1VFU1RfRFI3KTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNTgyMC1cbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTU5MDk9c3RhdGljIGludCBoYW5kbGVfdGFza19zd2l0Y2goc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNTkzOS1cdFx0XHRcdGVycm9yX2NvZGUgPVxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo1OTQwOlx0XHRcdFx0XHR2bWNzX3JlYWQzMihJRFRfVkVDVE9SSU5HX0VSUk9SX0NPREUpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy01OTQxLVx0XHRcdH1cbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTU5NjY9c3RhdGljIGludCBoYW5kbGVfZXB0X3Zpb2xhdGlvbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy01OTgxLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo1OTgyOlx0Z3BhID0gdm1jc19yZWFkNjQoR1VFU1RfUEhZU0lDQUxfQUREUkVTUyk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTU5ODMtXHR0cmFjZV9rdm1fcGFnZV9mYXVsdCh2Y3B1LCBncGEsIGV4aXRfcXVhbGlmaWNhdGlvbik7XG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYz01OTk5PXN0YXRpYyBpbnQgaGFuZGxlX2VwdF9taXNjb25maWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjAwOS1cdCAqL1xuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2MDEwOlx0Z3BhID0gdm1jc19yZWFkNjQoR1VFU1RfUEhZU0lDQUxfQUREUkVTUyk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTYwMTEtXHRpZiAoIWlzX2d1ZXN0X21vZGUodmNwdSkgXHUwMDI2XHUwMDI2XG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYz02MTQ2PXN0YXRpYyBpbnQgaGFuZGxlX2ludnBjaWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjE2MS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjE2MjpcdHZteF9pbnN0cnVjdGlvbl9pbmZvID0gdm1jc19yZWFkMzIoVk1YX0lOU1RSVUNUSU9OX0lORk8pO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy02MTYzLVx0Z3ByX2luZGV4ID0gdm14X2dldF9pbnN0cl9pbmZvX3JlZzIodm14X2luc3RydWN0aW9uX2luZm8pO1xuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM9NjMxMT1zdGF0aWMgaW50IHZteF9nZXRfbXNyX2ltbV9yZWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02MzEyLXtcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjMxMzpcdHJldHVybiB2bXhfZ2V0X2luc3RyX2luZm9fcmVnKHZtY3NfcmVhZDMyKFZNWF9JTlNUUlVDVElPTl9JTkZPKSk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTYzMTQtfVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM9NjM5NT12b2lkIHZteF9nZXRfZXhpdF9pbmZvKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyICpyZWFzb24sXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NDA1LVx0XHRpZiAoaXNfZXhjZXB0aW9uX3dpdGhfZXJyb3JfY29kZSgqaW50cl9pbmZvKSlcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjQwNjpcdFx0XHQqZXJyb3JfY29kZSA9IHZtY3NfcmVhZDMyKFZNX0VYSVRfSU5UUl9FUlJPUl9DT0RFKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjQwNy1cdFx0ZWxzZVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM9NjQxNj12b2lkIHZteF9nZXRfZW50cnlfaW5mbyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiAqaW50cl9pbmZvLCB1MzIgKmVycm9yX2NvZGUpXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY0MTcte1xuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NDE4Olx0KmludHJfaW5mbyA9IHZtY3NfcmVhZDMyKFZNX0VOVFJZX0lOVFJfSU5GT19GSUVMRCk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY0MTktXHRpZiAoaXNfZXhjZXB0aW9uX3dpdGhfZXJyb3JfY29kZSgqaW50cl9pbmZvKSlcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjQyMDpcdFx0KmVycm9yX2NvZGUgPSB2bWNzX3JlYWQzMihWTV9FTlRSWV9FWENFUFRJT05fRVJST1JfQ09ERSk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY0MjEtXHRlbHNlXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYz02NDMzPXN0YXRpYyB2b2lkIHZteF9mbHVzaF9wbWxfYnVmZmVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY0MzktXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY0NDA6XHRwbWxfaWR4ID0gdm1jc19yZWFkMTYoR1VFU1RfUE1MX0lOREVYKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjQ0MS1cbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTY0ODE9c3RhdGljIHZvaWQgdm14X2R1bXBfc2VsKGNoYXIgKm5hbWUsIHVpbnQzMl90IHNlbClcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY0ODMtXHRwcl9lcnIoXCYjMzQ7JXMgc2VsPTB4JTA0eCwgYXR0cj0weCUwNXgsIGxpbWl0PTB4JTA4eCwgYmFzZT0weCUwMTZseFxcblwmIzM0OyxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjQ4NDpcdCAgICAgICBuYW1lLCB2bWNzX3JlYWQxNihzZWwpLFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NDg1Olx0ICAgICAgIHZtY3NfcmVhZDMyKHNlbCAmIzQzOyBHVUVTVF9FU19BUl9CWVRFUyAtIEdVRVNUX0VTX1NFTEVDVE9SKSxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjQ4NjpcdCAgICAgICB2bWNzX3JlYWQzMihzZWwgJiM0MzsgR1VFU1RfRVNfTElNSVQgLSBHVUVTVF9FU19TRUxFQ1RPUiksXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY0ODc6XHQgICAgICAgdm1jc19yZWFkbChzZWwgJiM0MzsgR1VFU1RfRVNfQkFTRSAtIEdVRVNUX0VTX1NFTEVDVE9SKSk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY0ODgtfVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM9NjQ5MD1zdGF0aWMgdm9pZCB2bXhfZHVtcF9kdHNlbChjaGFyICpuYW1lLCB1aW50MzJfdCBsaW1pdClcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY0OTItXHRwcl9lcnIoXCYjMzQ7JXMgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW1pdD0weCUwOHgsIGJhc2U9MHglMDE2bHhcXG5cJiMzNDssXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY0OTM6XHQgICAgICAgbmFtZSwgdm1jc19yZWFkMzIobGltaXQpLFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NDk0Olx0ICAgICAgIHZtY3NfcmVhZGwobGltaXQgJiM0MzsgR1VFU1RfR0RUUl9CQVNFIC0gR1VFU1RfR0RUUl9MSU1JVCkpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NDk1LX1cbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTY1MDc9dm9pZCBkdW1wX3ZtY3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjUyMC1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjUyMTpcdHZtZW50cnlfY3RsID0gdm1jc19yZWFkMzIoVk1fRU5UUllfQ09OVFJPTFMpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NTIyOlx0dm1leGl0X2N0bCA9IHZtY3NfcmVhZDMyKFZNX0VYSVRfQ09OVFJPTFMpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NTIzOlx0Y3B1X2Jhc2VkX2V4ZWNfY3RybCA9IHZtY3NfcmVhZDMyKENQVV9CQVNFRF9WTV9FWEVDX0NPTlRST0wpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NTI0Olx0cGluX2Jhc2VkX2V4ZWNfY3RybCA9IHZtY3NfcmVhZDMyKFBJTl9CQVNFRF9WTV9FWEVDX0NPTlRST0wpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NTI1Olx0Y3I0ID0gdm1jc19yZWFkbChHVUVTVF9DUjQpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NTI2LVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NTI3LVx0aWYgKGNwdV9oYXNfc2Vjb25kYXJ5X2V4ZWNfY3RybHMoKSlcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjUyODpcdFx0c2Vjb25kYXJ5X2V4ZWNfY29udHJvbCA9IHZtY3NfcmVhZDMyKFNFQ09OREFSWV9WTV9FWEVDX0NPTlRST0wpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NTI5LVx0ZWxzZVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjUzMi1cdGlmIChjcHVfaGFzX3RlcnRpYXJ5X2V4ZWNfY3RybHMoKSlcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjUzMzpcdFx0dGVydGlhcnlfZXhlY19jb250cm9sID0gdm1jc19yZWFkNjQoVEVSVElBUllfVk1fRVhFQ19DT05UUk9MKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjUzNC1cdGVsc2Vcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY1NDAtXHRwcl9lcnIoXCYjMzQ7Q1IwOiBhY3R1YWw9MHglMDE2bHgsIHNoYWRvdz0weCUwMTZseCwgZ2hfbWFzaz0lMDE2bHhcXG5cJiMzNDssXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY1NDE6XHQgICAgICAgdm1jc19yZWFkbChHVUVTVF9DUjApLCB2bWNzX3JlYWRsKENSMF9SRUFEX1NIQURPVyksXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY1NDI6XHQgICAgICAgdm1jc19yZWFkbChDUjBfR1VFU1RfSE9TVF9NQVNLKSk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY1NDMtXHRwcl9lcnIoXCYjMzQ7Q1I0OiBhY3R1YWw9MHglMDE2bHgsIHNoYWRvdz0weCUwMTZseCwgZ2hfbWFzaz0lMDE2bHhcXG5cJiMzNDssXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY1NDQ6XHQgICAgICAgY3I0LCB2bWNzX3JlYWRsKENSNF9SRUFEX1NIQURPVyksIHZtY3NfcmVhZGwoQ1I0X0dVRVNUX0hPU1RfTUFTSykpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NTQ1Olx0cHJfZXJyKFwmIzM0O0NSMyA9IDB4JTAxNmx4XFxuXCYjMzQ7LCB2bWNzX3JlYWRsKEdVRVNUX0NSMykpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NTQ2LVx0aWYgKGNwdV9oYXNfdm14X2VwdCgpKSB7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY1NDctXHRcdHByX2VycihcJiMzNDtQRFBUUjAgPSAweCUwMTZsbHggIFBEUFRSMSA9IDB4JTAxNmxseFxcblwmIzM0OyxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjU0ODpcdFx0ICAgICAgIHZtY3NfcmVhZDY0KEdVRVNUX1BEUFRSMCksIHZtY3NfcmVhZDY0KEdVRVNUX1BEUFRSMSkpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NTQ5LVx0XHRwcl9lcnIoXCYjMzQ7UERQVFIyID0gMHglMDE2bGx4ICBQRFBUUjMgPSAweCUwMTZsbHhcXG5cJiMzNDssXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY1NTA6XHRcdCAgICAgICB2bWNzX3JlYWQ2NChHVUVTVF9QRFBUUjIpLCB2bWNzX3JlYWQ2NChHVUVTVF9QRFBUUjMpKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjU1MS1cdH1cbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjU1Mi1cdHByX2VycihcJiMzNDtSU1AgPSAweCUwMTZseCAgUklQID0gMHglMDE2bHhcXG5cJiMzNDssXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY1NTM6XHQgICAgICAgdm1jc19yZWFkbChHVUVTVF9SU1ApLCB2bWNzX3JlYWRsKEdVRVNUX1JJUCkpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NTU0LVx0cHJfZXJyKFwmIzM0O1JGTEFHUz0weCUwOGx4ICAgICAgICAgRFI3ID0gMHglMDE2bHhcXG5cJiMzNDssXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY1NTU6XHQgICAgICAgdm1jc19yZWFkbChHVUVTVF9SRkxBR1MpLCB2bWNzX3JlYWRsKEdVRVNUX0RSNykpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NTU2LVx0cHJfZXJyKFwmIzM0O1N5c2VudGVyIFJTUD0lMDE2bHggQ1M6UklQPSUwNHg6JTAxNmx4XFxuXCYjMzQ7LFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NTU3Olx0ICAgICAgIHZtY3NfcmVhZGwoR1VFU1RfU1lTRU5URVJfRVNQKSxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjU1ODpcdCAgICAgICB2bWNzX3JlYWQzMihHVUVTVF9TWVNFTlRFUl9DUyksIHZtY3NfcmVhZGwoR1VFU1RfU1lTRU5URVJfRUlQKSk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY1NTktXHR2bXhfZHVtcF9zZWwoXCYjMzQ7Q1M6ICBcJiMzNDssIEdVRVNUX0NTX1NFTEVDVE9SKTtcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY1NzAtXHRpZiAodm1lbnRyeV9jdGwgXHUwMDI2IFZNX0VOVFJZX0xPQURfSUEzMl9FRkVSKVxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NTcxOlx0XHRwcl9lcnIoXCYjMzQ7RUZFUj0gMHglMDE2bGx4XFxuXCYjMzQ7LCB2bWNzX3JlYWQ2NChHVUVTVF9JQTMyX0VGRVIpKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjU3Mi1cdGVsc2UgaWYgKGVmZXJfc2xvdCBcdTAwM2U9IDApXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NTgxLVx0aWYgKHZtZW50cnlfY3RsIFx1MDAyNiBWTV9FTlRSWV9MT0FEX0lBMzJfUEFUKVxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NTgyOlx0XHRwcl9lcnIoXCYjMzQ7UEFUID0gMHglMDE2bGx4XFxuXCYjMzQ7LCB2bWNzX3JlYWQ2NChHVUVTVF9JQTMyX1BBVCkpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NTgzLVx0cHJfZXJyKFwmIzM0O0RlYnVnQ3RsID0gMHglMDE2bGx4ICBEZWJ1Z0V4Y2VwdGlvbnMgPSAweCUwMTZseFxcblwmIzM0OyxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjU4NDpcdCAgICAgICB2bWNzX3JlYWQ2NChHVUVTVF9JQTMyX0RFQlVHQ1RMKSxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjU4NTpcdCAgICAgICB2bWNzX3JlYWRsKEdVRVNUX1BFTkRJTkdfREJHX0VYQ0VQVElPTlMpKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjU4Ni1cdGlmIChjcHVfaGFzX2xvYWRfcGVyZl9nbG9iYWxfY3RybCgpIFx1MDAyNlx1MDAyNlxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjU4OC1cdFx0cHJfZXJyKFwmIzM0O1BlcmZHbG9iQ3RsID0gMHglMDE2bGx4XFxuXCYjMzQ7LFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NTg5Olx0XHQgICAgICAgdm1jc19yZWFkNjQoR1VFU1RfSUEzMl9QRVJGX0dMT0JBTF9DVFJMKSk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY1OTAtXHRpZiAodm1lbnRyeV9jdGwgXHUwMDI2IFZNX0VOVFJZX0xPQURfQk5EQ0ZHUylcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjU5MTpcdFx0cHJfZXJyKFwmIzM0O0JuZENmZ1MgPSAweCUwMTZsbHhcXG5cJiMzNDssIHZtY3NfcmVhZDY0KEdVRVNUX0JORENGR1MpKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjU5Mi1cdHByX2VycihcJiMzNDtJbnRlcnJ1cHRpYmlsaXR5ID0gJTA4eCAgQWN0aXZpdHlTdGF0ZSA9ICUwOHhcXG5cJiMzNDssXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY1OTM6XHQgICAgICAgdm1jc19yZWFkMzIoR1VFU1RfSU5URVJSVVBUSUJJTElUWV9JTkZPKSxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjU5NDpcdCAgICAgICB2bWNzX3JlYWQzMihHVUVTVF9BQ1RJVklUWV9TVEFURSkpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NTk1LVx0aWYgKHNlY29uZGFyeV9leGVjX2NvbnRyb2wgXHUwMDI2IFNFQ09OREFSWV9FWEVDX1ZJUlRVQUxfSU5UUl9ERUxJVkVSWSlcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjU5Ni1cdFx0cHJfZXJyKFwmIzM0O0ludGVycnVwdFN0YXR1cyA9ICUwNHhcXG5cJiMzNDssXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY1OTc6XHRcdCAgICAgICB2bWNzX3JlYWQxNihHVUVTVF9JTlRSX1NUQVRVUykpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NTk4Olx0aWYgKHZtY3NfcmVhZDMyKFZNX0VOVFJZX01TUl9MT0FEX0NPVU5UKSBcdTAwM2UgMClcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjU5OS1cdFx0dm14X2R1bXBfbXNycyhcJiMzNDtndWVzdCBhdXRvbG9hZFwmIzM0OywgXHUwMDI2dm14LVx1MDAzZW1zcl9hdXRvbG9hZC5ndWVzdCk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2MDA6XHRpZiAodm1jc19yZWFkMzIoVk1fRVhJVF9NU1JfU1RPUkVfQ09VTlQpIFx1MDAzZSAwKVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NjAxLVx0XHR2bXhfZHVtcF9tc3JzKFwmIzM0O2F1dG9zdG9yZVwmIzM0OywgXHUwMDI2dm14LVx1MDAzZW1zcl9hdXRvc3RvcmUpO1xuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjYwNC1cdFx0cHJfZXJyKFwmIzM0O1NfQ0VUID0gMHglMDE2bHgsIFNTUCA9IDB4JTAxNmx4LCBTU1AgVEFCTEUgPSAweCUwMTZseFxcblwmIzM0OyxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjYwNTpcdFx0ICAgICAgIHZtY3NfcmVhZGwoR1VFU1RfU19DRVQpLCB2bWNzX3JlYWRsKEdVRVNUX1NTUCksXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2MDY6XHRcdCAgICAgICB2bWNzX3JlYWRsKEdVRVNUX0lOVFJfU1NQX1RBQkxFKSk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY2MDctXHRwcl9lcnIoXCYjMzQ7KioqIEhvc3QgU3RhdGUgKioqXFxuXCYjMzQ7KTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjYwOC1cdHByX2VycihcJiMzNDtSSVAgPSAweCUwMTZseCAgUlNQID0gMHglMDE2bHhcXG5cJiMzNDssXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2MDk6XHQgICAgICAgdm1jc19yZWFkbChIT1NUX1JJUCksIHZtY3NfcmVhZGwoSE9TVF9SU1ApKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjYxMC1cdHByX2VycihcJiMzNDtDUz0lMDR4IFNTPSUwNHggRFM9JTA0eCBFUz0lMDR4IEZTPSUwNHggR1M9JTA0eCBUUj0lMDR4XFxuXCYjMzQ7LFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NjExOlx0ICAgICAgIHZtY3NfcmVhZDE2KEhPU1RfQ1NfU0VMRUNUT1IpLCB2bWNzX3JlYWQxNihIT1NUX1NTX1NFTEVDVE9SKSxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjYxMjpcdCAgICAgICB2bWNzX3JlYWQxNihIT1NUX0RTX1NFTEVDVE9SKSwgdm1jc19yZWFkMTYoSE9TVF9FU19TRUxFQ1RPUiksXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2MTM6XHQgICAgICAgdm1jc19yZWFkMTYoSE9TVF9GU19TRUxFQ1RPUiksIHZtY3NfcmVhZDE2KEhPU1RfR1NfU0VMRUNUT1IpLFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NjE0Olx0ICAgICAgIHZtY3NfcmVhZDE2KEhPU1RfVFJfU0VMRUNUT1IpKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjYxNS1cdHByX2VycihcJiMzNDtGU0Jhc2U9JTAxNmx4IEdTQmFzZT0lMDE2bHggVFJCYXNlPSUwMTZseFxcblwmIzM0OyxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjYxNjpcdCAgICAgICB2bWNzX3JlYWRsKEhPU1RfRlNfQkFTRSksIHZtY3NfcmVhZGwoSE9TVF9HU19CQVNFKSxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjYxNzpcdCAgICAgICB2bWNzX3JlYWRsKEhPU1RfVFJfQkFTRSkpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NjE4LVx0cHJfZXJyKFwmIzM0O0dEVEJhc2U9JTAxNmx4IElEVEJhc2U9JTAxNmx4XFxuXCYjMzQ7LFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NjE5Olx0ICAgICAgIHZtY3NfcmVhZGwoSE9TVF9HRFRSX0JBU0UpLCB2bWNzX3JlYWRsKEhPU1RfSURUUl9CQVNFKSk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY2MjAtXHRwcl9lcnIoXCYjMzQ7Q1IwPSUwMTZseCBDUjM9JTAxNmx4IENSND0lMDE2bHhcXG5cJiMzNDssXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2MjE6XHQgICAgICAgdm1jc19yZWFkbChIT1NUX0NSMCksIHZtY3NfcmVhZGwoSE9TVF9DUjMpLFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NjIyOlx0ICAgICAgIHZtY3NfcmVhZGwoSE9TVF9DUjQpKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjYyMy1cdHByX2VycihcJiMzNDtTeXNlbnRlciBSU1A9JTAxNmx4IENTOlJJUD0lMDR4OiUwMTZseFxcblwmIzM0OyxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjYyNDpcdCAgICAgICB2bWNzX3JlYWRsKEhPU1RfSUEzMl9TWVNFTlRFUl9FU1ApLFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NjI1Olx0ICAgICAgIHZtY3NfcmVhZDMyKEhPU1RfSUEzMl9TWVNFTlRFUl9DUyksXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2MjY6XHQgICAgICAgdm1jc19yZWFkbChIT1NUX0lBMzJfU1lTRU5URVJfRUlQKSk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY2MjctXHRpZiAodm1leGl0X2N0bCBcdTAwMjYgVk1fRVhJVF9MT0FEX0lBMzJfRUZFUilcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjYyODpcdFx0cHJfZXJyKFwmIzM0O0VGRVI9IDB4JTAxNmxseFxcblwmIzM0Oywgdm1jc19yZWFkNjQoSE9TVF9JQTMyX0VGRVIpKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjYyOS1cdGlmICh2bWV4aXRfY3RsIFx1MDAyNiBWTV9FWElUX0xPQURfSUEzMl9QQVQpXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2MzA6XHRcdHByX2VycihcJiMzNDtQQVQgPSAweCUwMTZsbHhcXG5cJiMzNDssIHZtY3NfcmVhZDY0KEhPU1RfSUEzMl9QQVQpKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjYzMS1cdGlmIChjcHVfaGFzX2xvYWRfcGVyZl9nbG9iYWxfY3RybCgpIFx1MDAyNlx1MDAyNlxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjYzMy1cdFx0cHJfZXJyKFwmIzM0O1BlcmZHbG9iQ3RsID0gMHglMDE2bGx4XFxuXCYjMzQ7LFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NjM0Olx0XHQgICAgICAgdm1jc19yZWFkNjQoSE9TVF9JQTMyX1BFUkZfR0xPQkFMX0NUUkwpKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjYzNTpcdGlmICh2bWNzX3JlYWQzMihWTV9FWElUX01TUl9MT0FEX0NPVU5UKSBcdTAwM2UgMClcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjYzNi1cdFx0dm14X2R1bXBfbXNycyhcJiMzNDtob3N0IGF1dG9sb2FkXCYjMzQ7LCBcdTAwMjZ2bXgtXHUwMDNlbXNyX2F1dG9sb2FkLmhvc3QpO1xuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjYzOC1cdFx0cHJfZXJyKFwmIzM0O1NfQ0VUID0gMHglMDE2bHgsIFNTUCA9IDB4JTAxNmx4LCBTU1AgVEFCTEUgPSAweCUwMTZseFxcblwmIzM0OyxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjYzOTpcdFx0ICAgICAgIHZtY3NfcmVhZGwoSE9TVF9TX0NFVCksIHZtY3NfcmVhZGwoSE9TVF9TU1ApLFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NjQwOlx0XHQgICAgICAgdm1jc19yZWFkbChIT1NUX0lOVFJfU1NQX1RBQkxFKSk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY2NDEtXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NjQ3LVx0cHJfZXJyKFwmIzM0O0V4Y2VwdGlvbkJpdG1hcD0lMDh4IFBGRUNtYXNrPSUwOHggUEZFQ21hdGNoPSUwOHhcXG5cJiMzNDssXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2NDg6XHQgICAgICAgdm1jc19yZWFkMzIoRVhDRVBUSU9OX0JJVE1BUCksXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2NDk6XHQgICAgICAgdm1jc19yZWFkMzIoUEFHRV9GQVVMVF9FUlJPUl9DT0RFX01BU0spLFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NjUwOlx0ICAgICAgIHZtY3NfcmVhZDMyKFBBR0VfRkFVTFRfRVJST1JfQ09ERV9NQVRDSCkpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NjUxLVx0cHJfZXJyKFwmIzM0O1ZNRW50cnk6IGludHJfaW5mbz0lMDh4IGVycmNvZGU9JTA4eCBpbGVuPSUwOHhcXG5cJiMzNDssXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2NTI6XHQgICAgICAgdm1jc19yZWFkMzIoVk1fRU5UUllfSU5UUl9JTkZPX0ZJRUxEKSxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjY1MzpcdCAgICAgICB2bWNzX3JlYWQzMihWTV9FTlRSWV9FWENFUFRJT05fRVJST1JfQ09ERSksXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2NTQ6XHQgICAgICAgdm1jc19yZWFkMzIoVk1fRU5UUllfSU5TVFJVQ1RJT05fTEVOKSk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY2NTUtXHRwcl9lcnIoXCYjMzQ7Vk1FeGl0OiBpbnRyX2luZm89JTA4eCBlcnJjb2RlPSUwOHggaWxlbj0lMDh4XFxuXCYjMzQ7LFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NjU2Olx0ICAgICAgIHZtY3NfcmVhZDMyKFZNX0VYSVRfSU5UUl9JTkZPKSxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjY1NzpcdCAgICAgICB2bWNzX3JlYWQzMihWTV9FWElUX0lOVFJfRVJST1JfQ09ERSksXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2NTg6XHQgICAgICAgdm1jc19yZWFkMzIoVk1fRVhJVF9JTlNUUlVDVElPTl9MRU4pKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjY1OS1cdHByX2VycihcJiMzNDsgICAgICAgIHJlYXNvbj0lMDh4IHF1YWxpZmljYXRpb249JTAxNmx4XFxuXCYjMzQ7LFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NjYwOlx0ICAgICAgIHZtY3NfcmVhZDMyKFZNX0VYSVRfUkVBU09OKSwgdm1jc19yZWFkbChFWElUX1FVQUxJRklDQVRJT04pKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjY2MS1cdHByX2VycihcJiMzNDtJRFRWZWN0b3Jpbmc6IGluZm89JTA4eCBlcnJjb2RlPSUwOHhcXG5cJiMzNDssXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2NjI6XHQgICAgICAgdm1jc19yZWFkMzIoSURUX1ZFQ1RPUklOR19JTkZPX0ZJRUxEKSxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjY2MzpcdCAgICAgICB2bWNzX3JlYWQzMihJRFRfVkVDVE9SSU5HX0VSUk9SX0NPREUpKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjY2NDpcdHByX2VycihcJiMzNDtUU0MgT2Zmc2V0ID0gMHglMDE2bGx4XFxuXCYjMzQ7LCB2bWNzX3JlYWQ2NChUU0NfT0ZGU0VUKSk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY2NjUtXHRpZiAoc2Vjb25kYXJ5X2V4ZWNfY29udHJvbCBcdTAwMjYgU0VDT05EQVJZX0VYRUNfVFNDX1NDQUxJTkcpXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY2NjYtXHRcdHByX2VycihcJiMzNDtUU0MgTXVsdGlwbGllciA9IDB4JTAxNmxseFxcblwmIzM0OyxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjY2NzpcdFx0ICAgICAgIHZtY3NfcmVhZDY0KFRTQ19NVUxUSVBMSUVSKSk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY2NjgtXHRpZiAoY3B1X2Jhc2VkX2V4ZWNfY3RybCBcdTAwMjYgQ1BVX0JBU0VEX1RQUl9TSEFET1cpIHtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjY2OS1cdFx0aWYgKHNlY29uZGFyeV9leGVjX2NvbnRyb2wgXHUwMDI2IFNFQ09OREFSWV9FWEVDX1ZJUlRVQUxfSU5UUl9ERUxJVkVSWSkge1xuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NjcwOlx0XHRcdHUxNiBzdGF0dXMgPSB2bWNzX3JlYWQxNihHVUVTVF9JTlRSX1NUQVRVUyk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY2NzEtXHRcdFx0cHJfZXJyKFwmIzM0O1NWSXxSVkkgPSAlMDJ4fCUwMnggXCYjMzQ7LCBzdGF0dXMgXHUwMDNlXHUwMDNlIDgsIHN0YXR1cyBcdTAwMjYgMHhmZik7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY2NzItXHRcdH1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjY3MzpcdFx0cHJfY29udChcJiMzNDtUUFIgVGhyZXNob2xkID0gMHglMDJ4XFxuXCYjMzQ7LCB2bWNzX3JlYWQzMihUUFJfVEhSRVNIT0xEKSk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY2NzQtXHRcdGlmIChzZWNvbmRhcnlfZXhlY19jb250cm9sIFx1MDAyNiBTRUNPTkRBUllfRVhFQ19WSVJUVUFMSVpFX0FQSUNfQUNDRVNTRVMpXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2NzU6XHRcdFx0cHJfZXJyKFwmIzM0O0FQSUMtYWNjZXNzIGFkZHIgPSAweCUwMTZsbHggXCYjMzQ7LCB2bWNzX3JlYWQ2NChBUElDX0FDQ0VTU19BRERSKSk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2NzY6XHRcdHByX2NvbnQoXCYjMzQ7dmlydC1BUElDIGFkZHIgPSAweCUwMTZsbHhcXG5cJiMzNDssIHZtY3NfcmVhZDY0KFZJUlRVQUxfQVBJQ19QQUdFX0FERFIpKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjY3Ny1cdH1cbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjY3OC1cdGlmIChwaW5fYmFzZWRfZXhlY19jdHJsIFx1MDAyNiBQSU5fQkFTRURfUE9TVEVEX0lOVFIpXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2Nzk6XHRcdHByX2VycihcJiMzNDtQb3N0ZWRJbnRyVmVjID0gMHglMDJ4XFxuXCYjMzQ7LCB2bWNzX3JlYWQxNihQT1NURURfSU5UUl9OVikpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NjgwLVx0aWYgKChzZWNvbmRhcnlfZXhlY19jb250cm9sIFx1MDAyNiBTRUNPTkRBUllfRVhFQ19FTkFCTEVfRVBUKSlcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjY4MTpcdFx0cHJfZXJyKFwmIzM0O0VQVCBwb2ludGVyID0gMHglMDE2bGx4XFxuXCYjMzQ7LCB2bWNzX3JlYWQ2NChFUFRfUE9JTlRFUikpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NjgyLVx0aWYgKHNlY29uZGFyeV9leGVjX2NvbnRyb2wgXHUwMDI2IFNFQ09OREFSWV9FWEVDX1BBVVNFX0xPT1BfRVhJVElORylcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjY4My1cdFx0cHJfZXJyKFwmIzM0O1BMRSBHYXA9JTA4eCBXaW5kb3c9JTA4eFxcblwmIzM0OyxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjY4NDpcdFx0ICAgICAgIHZtY3NfcmVhZDMyKFBMRV9HQVApLCB2bWNzX3JlYWQzMihQTEVfV0lORE9XKSk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY2ODUtXHRpZiAoc2Vjb25kYXJ5X2V4ZWNfY29udHJvbCBcdTAwMjYgU0VDT05EQVJZX0VYRUNfRU5BQkxFX1ZQSUQpXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY2ODYtXHRcdHByX2VycihcJiMzNDtWaXJ0dWFsIHByb2Nlc3NvciBJRCA9IDB4JTA0eFxcblwmIzM0OyxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjY4NzpcdFx0ICAgICAgIHZtY3NfcmVhZDE2KFZJUlRVQUxfUFJPQ0VTU09SX0lEKSk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY2ODgtXHRpZiAoc2Vjb25kYXJ5X2V4ZWNfY29udHJvbCBcdTAwMjYgU0VDT05EQVJZX0VYRUNfRVBUX1ZJT0xBVElPTl9WRSkge1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy02Njg5LVx0XHRzdHJ1Y3Qgdm14X3ZlX2luZm9ybWF0aW9uICp2ZV9pbmZvID0gdm14LVx1MDAzZXZlX2luZm87XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2OTA6XHRcdHU2NCB2ZV9pbmZvX3BhID0gdm1jc19yZWFkNjQoVkVfSU5GT1JNQVRJT05fQUREUkVTUyk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY2OTEtXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYz02NzEyPXN0YXRpYyBpbnQgX192bXhfaGFuZGxlX2V4aXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBmYXN0cGF0aF90IGV4aXRfZmFzdHBhdGgpXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02Nzk5LVx0XHR2Y3B1LVx1MDAzZXJ1bi1cdTAwM2VmYWlsX2VudHJ5LmhhcmR3YXJlX2VudHJ5X2ZhaWx1cmVfcmVhc29uXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY4MDA6XHRcdFx0PSB2bWNzX3JlYWQzMihWTV9JTlNUUlVDVElPTl9FUlJPUik7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY4MDEtXHRcdHZjcHUtXHUwMDNlcnVuLVx1MDAzZWZhaWxfZW50cnkuY3B1ID0gdmNwdS1cdTAwM2VhcmNoLmxhc3Rfdm1lbnRyeV9jcHU7XG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYz03MDMwPXZvaWQgdm14X2h3YXBpY19pc3JfdXBkYXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgaW50IG1heF9pc3IpXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy03MDQ0LVxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo3MDQ1Olx0c3RhdHVzID0gdm1jc19yZWFkMTYoR1VFU1RfSU5UUl9TVEFUVVMpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYy03MDQ2LVx0b2xkID0gc3RhdHVzIFx1MDAzZVx1MDAzZSA4O1xuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM9NzA1ND1zdGF0aWMgdm9pZCB2bXhfc2V0X3J2aShpbnQgdmVjdG9yKVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNzA2MS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NzA2MjpcdHN0YXR1cyA9IHZtY3NfcmVhZDE2KEdVRVNUX0lOVFJfU1RBVFVTKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNzA2My1cdG9sZCA9ICh1OClzdGF0dXMgXHUwMDI2IDB4ZmY7XG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYz03MjQ2PXN0YXRpYyB2b2lkIHZteF9yZWNvdmVyX25taV9ibG9ja2luZyhzdHJ1Y3QgdmNwdV92bXggKnZteClcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTcyNzctXHRcdFx0dm14LVx1MDAzZWxvYWRlZF92bWNzLVx1MDAzZW5taV9rbm93bl91bm1hc2tlZCA9XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjcyNzg6XHRcdFx0XHQhKHZtY3NfcmVhZDMyKEdVRVNUX0lOVEVSUlVQVElCSUxJVFlfSU5GTylcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNzI3OS1cdFx0XHRcdCAgXHUwMDI2IEdVRVNUX0lOVFJfU1RBVEVfTk1JKTtcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTcyODY9c3RhdGljIHZvaWQgX192bXhfY29tcGxldGVfaW50ZXJydXB0cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy03MzE5LVx0Y2FzZSBJTlRSX1RZUEVfU09GVF9FWENFUFRJT046XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjczMjA6XHRcdHZjcHUtXHUwMDNlYXJjaC5ldmVudF9leGl0X2luc3RfbGVuID0gdm1jc19yZWFkMzIoaW5zdHJfbGVuX2ZpZWxkKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNzMyMS1cdFx0ZmFsbHRocm91Z2g7XG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy03MzI1LVx0XHRpZiAoaWR0X3ZlY3RvcmluZ19pbmZvIFx1MDAyNiBWRUNUT1JJTkdfSU5GT19ERUxJVkVSX0NPREVfTUFTSylcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NzMyNjpcdFx0XHRlcnJvcl9jb2RlID0gdm1jc19yZWFkMzIoZXJyb3JfY29kZV9maWVsZCk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTczMjctXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy03MzMzLVx0Y2FzZSBJTlRSX1RZUEVfU09GVF9JTlRSOlxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo3MzM0Olx0XHR2Y3B1LVx1MDAzZWFyY2guZXZlbnRfZXhpdF9pbnN0X2xlbiA9IHZtY3NfcmVhZDMyKGluc3RyX2xlbl9maWVsZCk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTczMzUtXHRcdGZhbGx0aHJvdWdoO1xuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM9NzM1MT12b2lkIHZteF9jYW5jZWxfaW5qZWN0aW9uKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTczNTMtXHRfX3ZteF9jb21wbGV0ZV9pbnRlcnJ1cHRzKHZjcHUsXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjczNTQ6XHRcdFx0XHQgIHZtY3NfcmVhZDMyKFZNX0VOVFJZX0lOVFJfSU5GT19GSUVMRCksXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTczNTUtXHRcdFx0XHQgIFZNX0VOVFJZX0lOU1RSVUNUSU9OX0xFTixcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTczODc9c3RhdGljIHZvaWQgdm14X3JlZnJlc2hfZ3Vlc3RfcGVyZl9nbG9iYWxfY29udHJvbChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy03NDA2LVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTI6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA5MDYKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAxODkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBDb21waWxlciBSZW9yZGVyaW5nIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdGFyZ2V0aW5nIGEgcHJldHR5IHNwZWNpZmljIGlzc3VlOiBjb21waWxlciByZW9yZGVyaW5nIGFyb3VuZCB0aG9zZSBjcnVjaWFsIFZNQ1MgcmVhZC93cml0ZSBvcGVyYXRpb25zLiBUaGF0JiMzOTtzIGEgY2xhc3NpYyBjYXVzZSBvZiBoYXJkLXRvLWRlYnVnIGJ1Z3MsIGVzcGVjaWFsbHkgaW4gYSBwZXJmb3JtYW5jZS1jcml0aWNhbCBhcmVhIGxpa2UgdmlydHVhbGl6YXRpb24uIEl0IGxvb2tzIGxpa2UgdGhlIGZpeCBpbnZvbHZlcyB0d2Vha2luZyBgX192bWNzX3JlYWRsYCBhbmQgdGhlIGB2bXhfYXNtMWAgLyBgdm14X2FzbTJgIG1hY3JvcyB3aXRoaW4gYGFyY2gveDg2L2t2bS92bXgvdm14X29wcy5oYC4gRnVuY3Rpb25hbGx5LCB0aGlzIHNlZW1zIHNvdW5kLiBBZGRyZXNzaW5nIHBvdGVudGlhbCBtZW1vcnkgYWNjZXNzIG9wdGltaXphdGlvbiBvciByZW9yZGVyaW5nIGlzc3VlcyBpcyBkZWZpbml0ZWx5IHRoZSByaWdodCBhcHByb2FjaCBoZXJlLiBXZSBuZWVkIHRvIGZvY3VzIGZ1enppbmcgZWZmb3J0cyBvbiB0aGUgS1ZNIFZNWCBjb21wb25lbnRzIHRvIHByb3Blcmx5IHZhbGlkYXRlIHRoaXMgZml4LgoKR2l2ZW4gdGhhdCwgSSBzaG91bGQgY29uY2VudHJhdGUgb24gdGhlIGtleSBWTVggb3BlcmF0aW9ucyBkdXJpbmcgZnV6emluZy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gbG9vayBhdCBmdW5jdGlvbnMgbGlrZSBgdm14X2hhbmRsZV9leGl0YCwgYGhhbmRsZV9leGNlcHRpb25fbm1pYCwgYW5kIGBoYW5kbGVfZXB0X3Zpb2xhdGlvbmAuIFRoZW4sIGxldCYjMzk7cyBuYWlsIGRvd24gdGhlIG1haW4gcnVuIGxvb3AuIEl0JiMzOTtzIGxpa2VseSBgdm14X3ZjcHVfcnVuYCwgYnV0IEkgc2hvdWxkIHZlcmlmeSB0aGF0IGJ5IGNoZWNraW5nIGBhcmNoL3g4Ni9rdm0vdm14L3ZteC5jYC4gVGhhdCBzaG91bGQgZ2l2ZSB1cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIGNvbnN0cnVjdGluZyBlZmZlY3RpdmUgZnV6eiB0YXJnZXRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDEyOjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZteF92Y3B1X3J1biYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS92bXgvdm14LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3ZteC92bXguYz01MzUyPXN0YXRpYyBpbnQgaGFuZGxlX21hY2hpbmVfY2hlY2soc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy01MzUzLXtcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NTM1NDpcdC8qIGhhbmRsZWQgYnkgdm14X3ZjcHVfcnVuKCkgKi9cbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNTM1NS1cdHJldHVybiAxO1xuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM9NTQyNT1zdGF0aWMgaW50IGhhbmRsZV9leGNlcHRpb25fbm1pKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTU0MzctXHQgKiBNYWNoaW5lIGNoZWNrcyBhcmUgaGFuZGxlZCBieSBoYW5kbGVfZXhjZXB0aW9uX2lycW9mZigpLCBvciBieVxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo1NDM4Olx0ICogdm14X3ZjcHVfcnVuKCkgaWYgYSAjTUMgb2NjdXJzIG9uIFZNLUVudHJ5LiAgTk1JcyBhcmUgaGFuZGxlZCBieVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy01NDM5LVx0ICogdm14X3ZjcHVfZW50ZXJfZXhpdCgpLlxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM9NzQ4Mz1zdGF0aWMgbm9pbnN0ciB2b2lkIHZteF92Y3B1X2VudGVyX2V4aXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNzQ5Ni1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NzQ5NzpcdHZteC1cdTAwM2VmYWlsID0gX192bXhfdmNwdV9ydW4odm14LCBmbGFncyk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTc0OTgtXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy03NTIwLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo3NTIxOmZhc3RwYXRoX3Qgdm14X3ZjcHVfcnVuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IHJ1bl9mbGFncylcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNzUyMi17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTI6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE5NTkKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKkRpdmluZyBpbnRvIHRoZSBWTVggRXhpdCBIYW5kbGVyKioKCk9rYXksIHNvIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGhhbmRsaW5nIFZNIGV4aXRzIGluIHRoZSBWTVggY29udGV4dCwgYW5kIHRoYXQgdXN1YWxseSBtZWFucyBhIHRyaXAgaW50byBgYXJjaC94ODYva3ZtL3ZteC92bXguY2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gYHZteF9oYW5kbGVfZXhpdGAuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIHJ1YmJlciBtZWV0cyB0aGUgcm9hZCwgd2hlcmUgdGhlIGtlcm5lbCBqdW1wcyB0byBwcm9jZXNzIHRoZSByZWFzb25zIGZvciB0aGUgZ3Vlc3QmIzM5O3MgaGFsdC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgKmhvdyogdGhlIGhhcmR3YXJlIHNpZ25hbGVkIGFuIGV4aXQsICp3aHkqIGl0IGRpZCwgYW5kICp3aGF0KiBuZWVkcyB0byBiZSBkb25lIG9uIHRoZSBob3N0IHRvIHByb3Blcmx5IGVtdWxhdGUgYW5kIHRoZW4gcmVzdW1lLiBUaGUgYHZteF9oYW5kbGVfZXhpdGAgZnVuY3Rpb24gaXMgdGhlIGNlbnRyYWwgcGllY2Ugb2YgdGhhdCBwdXp6bGUuIEl0JiMzOTtzIHRoZSBkaXNwYXRjaGVyLCB0aGUgdHJhZmZpYyBjb250cm9sbGVyIGZvciBhbGwgdGhlc2UgdmFyaW91cyBldmVudHMgdGhhdCBjYW4gb2NjdXIgaW4gdGhlIFZNWCBlbnZpcm9ubWVudC4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCB0aGUgbG9naWMgdGhhdCBkZXRlcm1pbmVzIHRoZSBleGl0IHJlYXNvbiAocGFnZSBmYXVsdCwgaW50ZXJydXB0IHdpbmRvdywgbmVzdGVkIHZpcnR1YWxpemF0aW9uIGV2ZW50LCBldGMuKSBhbmQgdGhlbiBkaXNwYXRjaGVzIHRvIHRoZSBjb3JyZWN0IGhhbmRsZXIuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGFueSBoaW50cyBvbiBob3cgdGhlIFZDUFUgaXMgc2F2ZWQgYW5kIHJlc3RvcmVkIGhlcmUgdG9vLCBiZWNhdXNlIHRoZSBjb250ZXh0IHN3aXRjaCBpcyB0aGUgbWFpbiBjaGFsbGVuZ2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDEyOjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZteF9oYW5kbGVfZXhpdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS92bXgvdm14LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3ZteC92bXguYz01NDI1PXN0YXRpYyBpbnQgaGFuZGxlX2V4Y2VwdGlvbl9ubWkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNTQ5MC1cdCAqIE1NSU8sIGl0IGlzIGJldHRlciB0byByZXBvcnQgYW4gaW50ZXJuYWwgZXJyb3IuXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjU0OTE6XHQgKiBTZWUgdGhlIGNvbW1lbnRzIGluIHZteF9oYW5kbGVfZXhpdC5cbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNTQ5Mi1cdCAqL1xuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM9NjI3ND1zdGF0aWMgaW50IGhhbmRsZV9idXNfbG9ja192bWV4aXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjI3OC1cdCAqIFZNLUV4aXRzLiBVbmNvbmRpdGlvbmFsbHkgc2V0IHRoZSBmbGFnIGhlcmUgYW5kIGxlYXZlIHRoZSBoYW5kbGluZyB0b1xuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2Mjc5Olx0ICogdm14X2hhbmRsZV9leGl0KCkuXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTYyODAtXHQgKi9cbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTY1MDc9dm9pZCBkdW1wX3ZtY3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjcxMS0gKi9cbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjcxMjpzdGF0aWMgaW50IF9fdm14X2hhbmRsZV9leGl0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgZmFzdHBhdGhfdCBleGl0X2Zhc3RwYXRoKVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NzEzLXtcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY4NzAtXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY4NzE6aW50IHZteF9oYW5kbGVfZXhpdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGZhc3RwYXRoX3QgZXhpdF9mYXN0cGF0aClcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjg3Mi17XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY4NzM6XHRpbnQgcmV0ID0gX192bXhfaGFuZGxlX2V4aXQodmNwdSwgZXhpdF9mYXN0cGF0aCk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY4NzQtXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYz03MTg0PXN0YXRpYyB2b2lkIGhhbmRsZV9leHRlcm5hbF9pbnRlcnJ1cHRfaXJxb2ZmKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTcxOTktXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjcyMDA6dm9pZCB2bXhfaGFuZGxlX2V4aXRfaXJxb2ZmKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNzIwMS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDEyOjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMDMwCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogODgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKk15IEFuYWx5c2lzIG9mIHRoZSBLVk0vVk1YIENvZGUgUGF0aCoqCgpSaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyB0aGlzIGFsbCBmaXRzIHRvZ2V0aGVyLiBgdm14X3ZjcHVfcnVuYCwgYHZteF9oYW5kbGVfZXhpdGAsIGBfX3ZteF9oYW5kbGVfZXhpdGAsIGBoYW5kbGVfZXB0X3Zpb2xhdGlvbmAsIGFuZCBgaGFuZGxlX2V4Y2VwdGlvbl9ubWlgIGFyZSBkZWZpbml0ZWx5IGtleSBlbnRyeSBwb2ludHMgb3IgY29yZSBmdW5jdGlvbnMgSSBuZWVkIHRvIGtlZXAgaW4gbWluZC4gVGhvc2Ugc3ltYm9scyBhcmUgd2hlcmUgdGhlIHJ1YmJlciBtZWV0cyB0aGUgcm9hZCwgdGhlIGNyaXRpY2FsIGp1bmN0aW9ucyBpbiB0aGUgVk1YIGV4ZWN1dGlvbiBmbG93LiBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlaXIgaW50ZXJhY3Rpb25zIGludGltYXRlbHkuCgpCdXQgSSBjYW4mIzM5O3QganVzdCBkaXZlIGludG8gdGhlIGNvZGUgd2l0aG91dCBjb250ZXh0LiBXaGF0IGFib3V0IHRoZSBidWlsZCBjb25maWd1cmF0aW9uPyBLY29uZmlnIGlzIHRoZSBnYXRla2VlcGVyLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEtWTSBhbmQgS1ZNX0lOVEVMIGFyZSBlbmFibGVkLiBMZXQgbWUgcHVsbCB1cCBgYXJjaC94ODYva3ZtL0tjb25maWdgIGFuZCBzZWUgd2hhdCB0aGUgYnVpbGQgc2V0dGluZ3MgYXJlIGFuZCBob3cgdGhpcyBpcyBhbGwgY29uZmlndXJlZC4gVGhhdCBzaG91bGQgdGVsbCBtZSB3aGljaCBjb2RlIHBhdGhzIGFyZSBldmVuIHJlbGV2YW50IGZvciBteSBhbmFseXNpcy4gVW5kZXJzdGFuZGluZyB0aGUgYnVpbGQgb3B0aW9ucyBpcyBjcnVjaWFsIHRvIHVuZGVyc3RhbmRpbmcgdGhlIHJlbGV2YW50IGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDEyOjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBLVk0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxuYXJjaC94ODYva3ZtL0tjb25maWctMTktXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNX1g4NlxuYXJjaC94ODYva3ZtL0tjb25maWctMjEtXHRkZWZfdHJpc3RhdGUgS1ZNIGlmIChLVk1fSU5URUwgIT0gbiB8fCBLVk1fQU1EICE9IG4pXG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctNTEtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo1Mjpjb25maWcgS1ZNXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy01My1cdHRyaXN0YXRlIFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTY4LVxuYXJjaC94ODYva3ZtL0tjb25maWc6Njk6Y29uZmlnIEtWTV9XRVJST1JcbmFyY2gveDg2L2t2bS9LY29uZmlnLTcwLVx0Ym9vbCBcJiMzNDtDb21waWxlIEtWTSB3aXRoIC1XZXJyb3JcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy04Mi1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjgzOmNvbmZpZyBLVk1fU1dfUFJPVEVDVEVEX1ZNXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy04NC1cdGJvb2wgXCYjMzQ7RW5hYmxlIHN1cHBvcnQgZm9yIEtWTSBzb2Z0d2FyZS1wcm90ZWN0ZWQgVk1zXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctOTUtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo5Njpjb25maWcgS1ZNX0lOVEVMXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy05Ny1cdHRyaXN0YXRlIFwmIzM0O0tWTSBmb3IgSW50ZWwgKGFuZCBjb21wYXRpYmxlKSBwcm9jZXNzb3JzIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMDYtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxMDc6Y29uZmlnIEtWTV9JTlRFTF9QUk9WRV9WRVxuYXJjaC94ODYva3ZtL0tjb25maWctMTA4LSAgICAgICAgYm9vbCBcJiMzNDtDaGVjayB0aGF0IGd1ZXN0cyBkbyBub3QgcmVjZWl2ZSAjVkUgZXhjZXB0aW9uc1wmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnPTEyMj1jb25maWcgWDg2X1NHWF9LVk1cbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMzMtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxMzQ6Y29uZmlnIEtWTV9JTlRFTF9URFhcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEzNS1cdGJvb2wgXCYjMzQ7SW50ZWwgVHJ1c3QgRG9tYWluIEV4dGVuc2lvbnMgKFREWCkgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0NS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjE0Njpjb25maWcgS1ZNX0FNRFxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ3LVx0dHJpc3RhdGUgXCYjMzQ7S1ZNIGZvciBBTUQgcHJvY2Vzc29ycyBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTU1LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTU2OmNvbmZpZyBLVk1fQU1EX1NFVlxuYXJjaC94ODYva3ZtL0tjb25maWctMTU3LVx0Ym9vbCBcJiMzNDtBTUQgU2VjdXJlIEVuY3J5cHRlZCBWaXJ0dWFsaXphdGlvbiAoU0VWKSBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTcxLVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTcyOmNvbmZpZyBLVk1fSU9BUElDXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNzMtXHRib29sIFwmIzM0O0kvTyBBUElDLCBQSUMsIGFuZCBQSVQgZW11bGF0aW9uXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTgxLVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTgyOmNvbmZpZyBLVk1fU01NXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xODMtXHRib29sIFwmIzM0O1N5c3RlbSBNYW5hZ2VtZW50IE1vZGUgZW11bGF0aW9uXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTkyLVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTkzOmNvbmZpZyBLVk1fSFlQRVJWXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOTQtXHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIE1pY3Jvc29mdCBIeXBlci1WIGVtdWxhdGlvblwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTIwNi1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjIwNzpjb25maWcgS1ZNX1hFTlxuYXJjaC94ODYva3ZtL0tjb25maWctMjA4LVx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZvciBYZW4gaHlwZXJjYWxsIGludGVyZmFjZVwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxNS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjIxNjpjb25maWcgS1ZNX1BST1ZFX01NVVxuYXJjaC94ODYva3ZtL0tjb25maWctMjE3LVx0Ym9vbCBcJiMzNDtQcm92ZSBLVk0gTU1VIGNvcnJlY3RuZXNzXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMjI4LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MjI5OmNvbmZpZyBLVk1fRVhURVJOQUxfV1JJVEVfVFJBQ0tJTkdcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzMC1cdGJvb2xcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzMS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjIzMjpjb25maWcgS1ZNX01BWF9OUl9WQ1BVU1xuYXJjaC94ODYva3ZtL0tjb25maWctMjMzLVx0aW50IFwmIzM0O01heGltdW0gbnVtYmVyIG9mIHZDUFVzIHBlciBLVk0gZ3Vlc3RcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTI6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQ1OTUKCQkJCQkJCW91dHB1dDogMTQ2CgkJCQkJCQl0aG91Z2h0czogNDYwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEZ1enppbmcgU3RyYXRlZ3kgZm9yIFRoaXMgS1ZNIFZNWCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCB0aGF0IGludHJvZHVjZXMgYSAmIzM0O21lbW9yeSYjMzQ7IGNsb2JiZXIgaW4gdGhlIGlubGluZSBhc3NlbWJseSBmb3IgVk1DUyByZWFkcyBhbmQgd3JpdGVzIHdpdGhpbiBLVk0gVk1YLiBUaGlzIGlzIGludGVyZXN0aW5nIGJlY2F1c2UgaXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0JiMzOTtzICpzcGVjaWZpY2FsbHkqIGFpbWVkIGF0IHByZXZlbnRpbmcgY29tcGlsZXIgb3B0aW1pemF0aW9ucyB0aGF0IGNvdWxkIGNhdXNlIHN1YnRsZSwgaGFyZC10by1kZWJ1ZyBidWdzIGluIEtWTSBleGVjdXRpb24uIFRoYXQgc2NyZWFtcyAmIzM0O2Z1enppbmcgdGFyZ2V0JiMzNDsgdG8gbWUuCgpGaXJzdCwgdGhlIGNvbmZpZ3MuIExvb2tzIGxpa2Ugd2UgbmVlZCBgS1ZNYCBhbmQgYEtWTV9JTlRFTGAgZW5hYmxlZC4gR29vZC4gSSYjMzk7bSBnb2luZyB0byBqdXN0IHJvbGwgd2l0aCBgS1ZNX0lOVEVMYCBzaW5jZSBpdCYjMzk7cyBzdWZmaWNpZW50LgoKTm93LCBsZXQmIzM5O3MgbmFpbCBkb3duIHRoZSBjcml0aWNhbCBmdW5jdGlvbnMuIFRoaXMgcGF0Y2ggdG91Y2hlcyBWTUNTIHJlYWRzIGFuZCB3cml0ZXMsIHdoaWNoIG1lYW5zIEkgd2FudCB0byBmb2N1cyBvbiB0aGUgZW50cnkgcG9pbnRzIGFuZCB0aGUgaGFuZGxlcnMgdGhhdCBpbnRlcmFjdCB3aXRoIHRoZSBWTUNTIGRpcmVjdGx5LiBJbml0aWFsbHksIEkgd2FzIHRoaW5raW5nIGB2bXhfdmNwdV9ydW5gLCBgdm14X2hhbmRsZV9leGl0YCwgYF9fdm14X2hhbmRsZV9leGl0YCwgYGhhbmRsZV9lcHRfdmlvbGF0aW9uYCwgYW5kIGBoYW5kbGVfZXhjZXB0aW9uX25taWAgYXJlIHByaW1lIHRhcmdldHMuCgpgdm14X3ZjcHVfcnVuYCBzZWVtcyBsaWtlIGEgc29saWQgY2hvaWNlIHNpbmNlIGl0JiMzOTtzIHRoZSBtYWluIGZ1bmN0aW9uIHRvIGVudGVyIHRoZSBWTVggZXhlY3V0aW9uLCBzbyBJJiMzOTttIGdvaW5nIHRvIGtlZXAgaXQuIFllcywgaXQmIzM5O3MgYGZhc3RwYXRoX3Qgdm14X3ZjcHVfcnVuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IHJ1bl9mbGFncylgLiAKCkkmIzM5O3ZlIGFsc28gZ290IGB2bXhfaGFuZGxlX2V4aXRgLCBhcyBpdCB3aWxsIGhhbmRsZSBhbnkgZXhpdHMgZHVyaW5nIHRoZSBleGVjdXRpb24uCgpMZXQgbWUganVzdCBkb3VibGUtY2hlY2sgZm9yIGFueSBvdGhlciBmdW5jdGlvbnMgaW4gdGhpcyBzcGFjZS4gQWgsIHRoZXJlIGFyZSBhIGZldyBtb3JlOiBgdm14X3NldF9pbnRlcnJ1cHRfc2hhZG93YCwgYHZteF9nZXRfcmZsYWdzYCwgYHZteF9nZXRfaW50ZXJydXB0X3NoYWRvd2AsIGB2bXhfaW5qZWN0X2V4Y2VwdGlvbmAuIFdoaWxlIGludGVyZXN0aW5nLCBgdm14X3ZjcHVfcnVuYCBhbmQgYHZteF9oYW5kbGVfZXhpdGAgYXJlIHRoZSBiaWcgb25lcy4gVGhleSBhcmUgdGhlIGNvcmUgb2YgVk1YIGV4ZWN1dGlvbiBhbmQgZXhpdCwgYW5kIHRodXMgcmVseSBoZWF2aWx5IG9uIHRoZSBWTUNTIHJlYWRzIGFuZCB3cml0ZXMuCgpTbywgbGV0JiMzOTtzIHJlZmluZSB0aG9zZSBgRm9jdXNTeW1ib2xzYCBhZ2FpbjoKCiogICBgdm14X3ZjcHVfcnVuYAoqICAgYHZteF9oYW5kbGVfZXhpdGAKKiAgIGBfX3ZteF9oYW5kbGVfZXhpdGAKKiAgIGBoYW5kbGVfZXB0X3Zpb2xhdGlvbmAKKiAgIGBoYW5kbGVfZXhjZXB0aW9uX25taWAKClllYWgsIHRoaXMgaXMgbG9va2luZyBsaWtlIGEgc29saWQgc2V0IHRvIHN0YXJ0IHdpdGguIEkmIzM5O2xsIGZsYWcgdGhpcyBhcyAmIzM0O1dvcnRoRnV6emluZzogdHJ1ZSYjMzQ7IGJlY2F1c2UgY29tcGlsZXIgcmVvcmRlcmluZyBidWdzIGFyZSBleGFjdGx5IHRoZSB0eXBlIG9mIHN1YnRsZSBpc3N1ZXMgdGhhdCBmdXp6aW5nIGV4Y2VscyBhdCBmaW5kaW5nLiBUaW1lIHRvIGdvIGFoZWFkIGFuZCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxMjowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDssCiAgICAmIzM0O0tWTV9JTlRFTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ZteF92Y3B1X3J1biYjMzQ7LAogICAgJiMzNDt2bXhfaGFuZGxlX2V4aXQmIzM0OywKICAgICYjMzQ7X192bXhfaGFuZGxlX2V4aXQmIzM0OywKICAgICYjMzQ7aGFuZGxlX2VwdF92aW9sYXRpb24mIzM0OywKICAgICYjMzQ7aGFuZGxlX2V4Y2VwdGlvbl9ubWkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIFwmIzM0O21lbW9yeVwmIzM0OyBjbG9iYmVyIHRvIGlubGluZSBhc3NlbWJseSBmb3IgVk1DUyByZWFkcyBhbmQgd3JpdGVzIGluIEtWTSBWTVguIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHByZXZlbnRzIGNvbXBpbGVyIHJlb3JkZXJpbmcgYW5kIGNhY2hpbmcgb2YgbWVtb3J5IHZhbHVlcyBhcm91bmQgVk1DUyBvcGVyYXRpb25zLCB3aGljaCBjYW4gbGVhZCB0byBzdWJ0bGUgYnVncyBpbiBLVk0gZXhlY3V0aW9uIGZsb3cuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtLVk1fSU5URUwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2bXhfdmNwdV9ydW4mIzM0OywKICAgICYjMzQ7dm14X2hhbmRsZV9leGl0JiMzNDssCiAgICAmIzM0O19fdm14X2hhbmRsZV9leGl0JiMzNDssCiAgICAmIzM0O2hhbmRsZV9lcHRfdmlvbGF0aW9uJiMzNDssCiAgICAmIzM0O2hhbmRsZV9leGNlcHRpb25fbm1pJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBcJiMzNDttZW1vcnlcJiMzNDsgY2xvYmJlciB0byBpbmxpbmUgYXNzZW1ibHkgZm9yIFZNQ1MgcmVhZHMgYW5kIHdyaXRlcyBpbiBLVk0gVk1YLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBwcmV2ZW50cyBjb21waWxlciByZW9yZGVyaW5nIGFuZCBjYWNoaW5nIG9mIG1lbW9yeSB2YWx1ZXMgYXJvdW5kIFZNQ1Mgb3BlcmF0aW9ucywgd2hpY2ggY2FuIGxlYWQgdG8gc3VidGxlIGJ1Z3MgaW4gS1ZNIGV4ZWN1dGlvbiBmbG93LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjJUMTI6MDU6MDUuODY0NzAyOTk3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzM1ODM2NjYzOTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCIsXG4gICAgXCJLVk1fSU5URUxcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2bXhfdmNwdV9ydW5cIixcbiAgICBcInZteF9oYW5kbGVfZXhpdFwiLFxuICAgIFwiX192bXhfaGFuZGxlX2V4aXRcIixcbiAgICBcImhhbmRsZV9lcHRfdmlvbGF0aW9uXCIsXG4gICAgXCJoYW5kbGVfZXhjZXB0aW9uX25taVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBcXFwibWVtb3J5XFxcIiBjbG9iYmVyIHRvIGlubGluZSBhc3NlbWJseSBmb3IgVk1DUyByZWFkcyBhbmQgd3JpdGVzIGluIEtWTSBWTVguIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHByZXZlbnRzIGNvbXBpbGVyIHJlb3JkZXJpbmcgYW5kIGNhY2hpbmcgb2YgbWVtb3J5IHZhbHVlcyBhcm91bmQgVk1DUyBvcGVyYXRpb25zLCB3aGljaCBjYW4gbGVhZCB0byBzdWJ0bGUgYnVncyBpbiBLVk0gZXhlY3V0aW9uIGZsb3cuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDEyOjA1OjA1Ljg2NDcxMTM4N1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzU5NDMyODgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNTY1ZjgyYzQ3MTZmYTJmMzVkZWQ0YzllMzgxOTgxNWEzZmI3MTZlYlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEp1bCAyMiAxMjowNTowNCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vdm14L3ZteF9vcHMuaCBiL2FyY2gveDg2L2t2bS92bXgvdm14X29wcy5oXFxuaW5kZXggODE3ODRiZWZhYWY0OTguLjlmZmUwM2EwYzIyM2M0IDEwMDY0NFxcbi0tLSBhL2FyY2gveDg2L2t2bS92bXgvdm14X29wcy5oXFxuKysrIGIvYXJjaC94ODYva3ZtL3ZteC92bXhfb3BzLmhcXG5AQCAtMTAxLDcgKzEwMSw3IEBAIHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdW5zaWduZWQgbG9uZyBfX3ZtY3NfcmVhZGwodW5zaWduZWQgbG9uZyBmaWVsZClcXG4gXFxuIFxcdFxcdFxcdCAgOiBbb3V0cHV0XSBcXFwiPXJcXFwiICh2YWx1ZSlcXG4gXFx0XFx0XFx0ICA6IFtmaWVsZF0gXFxcInJcXFwiIChmaWVsZClcXG4tXFx0XFx0XFx0ICA6IFxcXCJjY1xcXCJcXG4rXFx0XFx0XFx0ICA6IFxcXCJjY1xcXCIsIFxcXCJtZW1vcnlcXFwiXFxuIFxcdFxcdFxcdCAgOiBkb19mYWlsLCBkb19leGNlcHRpb24pO1xcbiBcXG4gXFx0cmV0dXJuIHZhbHVlO1xcbkBAIC0xNDUsNyArMTQ1LDcgQEAgc3RhdGljIF9fYWx3YXlzX2lubGluZSB1bnNpZ25lZCBsb25nIF9fdm1jc19yZWFkbCh1bnNpZ25lZCBsb25nIGZpZWxkKVxcbiBcXG4gXFx0XFx0ICAgICA6IEFTTV9DQUxMX0NPTlNUUkFJTlQsIFtvdXRwdXRdIFxcXCI9XFx1MDAyNnJcXFwiICh2YWx1ZSlcXG4gXFx0XFx0ICAgICA6IFtmaWVsZF0gXFxcInJcXFwiIChmaWVsZClcXG4tXFx0XFx0ICAgICA6IFxcXCJjY1xcXCIpO1xcbitcXHRcXHQgICAgIDogXFxcImNjXFxcIiwgXFxcIm1lbW9yeVxcXCIpO1xcbiBcXHRyZXR1cm4gdmFsdWU7XFxuIFxcbiAjZW5kaWYgLyogQ09ORklHX0NDX0hBU19BU01fR09UT19PVVRQVVQgKi9cXG5AQCAtMTkyLDcgKzE5Miw3IEBAIGRvIHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdGFzbSBnb3RvKFxcXCIxOiBcXFwiIF9fc3RyaW5naWZ5KGluc24pIFxcXCIgJTBcXFxcblxcXFx0XFxcIlxcdFxcdFxcdFxcXFxcXG4gXFx0XFx0XFx0ICBcXFwiam5hICVsW2Vycm9yXVxcXFxuXFxcXHRcXFwiXFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRcXHRcXHQgIF9BU01fRVhUQUJMRSgxYiwgJWxbZmF1bHRdKVxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0XFx0ICA6IDogb3AxIDogXFxcImNjXFxcIiA6IGVycm9yLCBmYXVsdCk7XFx0XFx0XFxcXFxcbitcXHRcXHRcXHQgIDogOiBvcDEgOiBcXFwiY2NcXFwiLCBcXFwibWVtb3J5XFxcIiA6IGVycm9yLCBmYXVsdCk7XFx0XFxcXFxcbiBcXHRyZXR1cm47XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBlcnJvcjpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdGluc3RydW1lbnRhdGlvbl9iZWdpbigpO1xcdFxcdFxcdFxcdFxcdFxcXFxcXG5AQCAtMjA4LDcgKzIwOCw3IEBAIGRvIHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdGFzbSBnb3RvKFxcXCIxOiBcXFwiICBfX3N0cmluZ2lmeShpbnNuKSBcXFwiICUxLCAlMFxcXFxuXFxcXHRcXFwiXFx0XFx0XFx0XFxcXFxcbiBcXHRcXHRcXHQgIFxcXCJqbmEgJWxbZXJyb3JdXFxcXG5cXFxcdFxcXCJcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdFxcdFxcdCAgX0FTTV9FWFRBQkxFKDFiLCAlbFtmYXVsdF0pXFx0XFx0XFx0XFxcXFxcbi1cXHRcXHRcXHQgIDogOiBvcDEsIG9wMiA6IFxcXCJjY1xcXCIgOiBlcnJvciwgZmF1bHQpO1xcdFxcdFxcXFxcXG4rXFx0XFx0XFx0ICA6IDogb3AxLCBvcDIgOiBcXFwiY2NcXFwiLCBcXFwibWVtb3J5XFxcIiA6IGVycm9yLCBmYXVsdCk7XFxcXFxcbiBcXHRyZXR1cm47XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBlcnJvcjpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdGluc3RydW1lbnRhdGlvbl9iZWdpbigpO1xcdFxcdFxcdFxcdFxcdFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTI6MDU6MDYuMjI0NzcwMTc4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MzMyMjM1OTAxNjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCIsXG4gICAgXCJLVk1fSU5URUxcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2bXhfdmNwdV9ydW5cIixcbiAgICBcInZteF9oYW5kbGVfZXhpdFwiLFxuICAgIFwiX192bXhfaGFuZGxlX2V4aXRcIixcbiAgICBcImhhbmRsZV9lcHRfdmlvbGF0aW9uXCIsXG4gICAgXCJoYW5kbGVfZXhjZXB0aW9uX25taVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBcXFwibWVtb3J5XFxcIiBjbG9iYmVyIHRvIGlubGluZSBhc3NlbWJseSBmb3IgVk1DUyByZWFkcyBhbmQgd3JpdGVzIGluIEtWTSBWTVguIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHByZXZlbnRzIGNvbXBpbGVyIHJlb3JkZXJpbmcgYW5kIGNhY2hpbmcgb2YgbWVtb3J5IHZhbHVlcyBhcm91bmQgVk1DUyBvcGVyYXRpb25zLCB3aGljaCBjYW4gbGVhZCB0byBzdWJ0bGUgYnVncyBpbiBLVk0gZXhlY3V0aW9uIGZsb3cuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNTY1ZjgyYzQ3MTZmYTJmMzVkZWQ0YzllMzgxOTgxNWEzZmI3MTZlYlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDIyIDEyOjA1OjA0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3ZteC92bXhfb3BzLmggYi9hcmNoL3g4Ni9rdm0vdm14L3ZteF9vcHMuaFxuaW5kZXggODE3ODRiZWZhYWY0OTguLjlmZmUwM2EwYzIyM2M0IDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL3ZteC92bXhfb3BzLmhcbisrKyBiL2FyY2gveDg2L2t2bS92bXgvdm14X29wcy5oXG5AQCAtMTAxLDcgKzEwMSw3IEBAIHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdW5zaWduZWQgbG9uZyBfX3ZtY3NfcmVhZGwodW5zaWduZWQgbG9uZyBmaWVsZClcbiBcbiBcdFx0XHQgIDogW291dHB1dF0gXCI9clwiICh2YWx1ZSlcbiBcdFx0XHQgIDogW2ZpZWxkXSBcInJcIiAoZmllbGQpXG4tXHRcdFx0ICA6IFwiY2NcIlxuK1x0XHRcdCAgOiBcImNjXCIsIFwibWVtb3J5XCJcbiBcdFx0XHQgIDogZG9fZmFpbCwgZG9fZXhjZXB0aW9uKTtcbiBcbiBcdHJldHVybiB2YWx1ZTtcbkBAIC0xNDUsNyArMTQ1LDcgQEAgc3RhdGljIF9fYWx3YXlzX2lubGluZSB1bnNpZ25lZCBsb25nIF9fdm1jc19yZWFkbCh1bnNpZ25lZCBsb25nIGZpZWxkKVxuIFxuIFx0XHQgICAgIDogQVNNX0NBTExfQ09OU1RSQUlOVCwgW291dHB1dF0gXCI9XHUwMDI2clwiICh2YWx1ZSlcbiBcdFx0ICAgICA6IFtmaWVsZF0gXCJyXCIgKGZpZWxkKVxuLVx0XHQgICAgIDogXCJjY1wiKTtcbitcdFx0ICAgICA6IFwiY2NcIiwgXCJtZW1vcnlcIik7XG4gXHRyZXR1cm4gdmFsdWU7XG4gXG4gI2VuZGlmIC8qIENPTkZJR19DQ19IQVNfQVNNX0dPVE9fT1VUUFVUICovXG5AQCAtMTkyLDcgKzE5Miw3IEBAIGRvIHtcdFx0XHRcdFx0XHRcdFx0XHRcXFxuIFx0YXNtIGdvdG8oXCIxOiBcIiBfX3N0cmluZ2lmeShpbnNuKSBcIiAlMFxcblxcdFwiXHRcdFx0XFxcbiBcdFx0XHQgIFwiam5hICVsW2Vycm9yXVxcblxcdFwiXHRcdFx0XHRcXFxuIFx0XHRcdCAgX0FTTV9FWFRBQkxFKDFiLCAlbFtmYXVsdF0pXHRcdFx0XFxcbi1cdFx0XHQgIDogOiBvcDEgOiBcImNjXCIgOiBlcnJvciwgZmF1bHQpO1x0XHRcXFxuK1x0XHRcdCAgOiA6IG9wMSA6IFwiY2NcIiwgXCJtZW1vcnlcIiA6IGVycm9yLCBmYXVsdCk7XHRcXFxuIFx0cmV0dXJuO1x0XHRcdFx0XHRcdFx0XHRcXFxuIGVycm9yOlx0XHRcdFx0XHRcdFx0XHRcdFxcXG4gXHRpbnN0cnVtZW50YXRpb25fYmVnaW4oKTtcdFx0XHRcdFx0XFxcbkBAIC0yMDgsNyArMjA4LDcgQEAgZG8ge1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4gXHRhc20gZ290byhcIjE6IFwiICBfX3N0cmluZ2lmeShpbnNuKSBcIiAlMSwgJTBcXG5cXHRcIlx0XHRcdFxcXG4gXHRcdFx0ICBcImpuYSAlbFtlcnJvcl1cXG5cXHRcIlx0XHRcdFx0XFxcbiBcdFx0XHQgIF9BU01fRVhUQUJMRSgxYiwgJWxbZmF1bHRdKVx0XHRcdFxcXG4tXHRcdFx0ICA6IDogb3AxLCBvcDIgOiBcImNjXCIgOiBlcnJvciwgZmF1bHQpO1x0XHRcXFxuK1x0XHRcdCAgOiA6IG9wMSwgb3AyIDogXCJjY1wiLCBcIm1lbW9yeVwiIDogZXJyb3IsIGZhdWx0KTtcXFxuIFx0cmV0dXJuO1x0XHRcdFx0XHRcdFx0XHRcXFxuIGVycm9yOlx0XHRcdFx0XHRcdFx0XHRcdFxcXG4gXHRpbnN0cnVtZW50YXRpb25fYmVnaW4oKTtcdFx0XHRcdFx0XFxcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDEyOjA1OjA2LjIyNDc3MTQzOFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwNzY4NTY4ODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBLVk0vVk1YIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHRvdWNoZXMgYGFyY2gveDg2L2t2bS92bXgvdm14X29wcy5oYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiQWgsIFZNWCBvcGVyYXRpb25zLlwiIFRoYXQgZmlsZSBpcyBjZW50cmFsIHRvIGhvdyB0aGUgS1ZNIGh5cGVydmlzb3IgaW50ZXJhY3RzIHdpdGggdGhlIGhhcmR3YXJlIHZpcnR1YWxpemF0aW9uIGV4dGVuc2lvbnMuIFNwZWNpZmljYWxseSwgaXQgc2VlbXMgbGlrZSB0aGV5J3ZlIGFkZGVkIGBcIm1lbW9yeVwiYCB0byB0aGUgY2xvYmJlciBsaXN0IHdpdGhpbiB0aGUgaW5saW5lIGFzc2VtYmx5IGZvciBgX192bWNzX3JlYWRsYCBhbmQgdGhvc2UgVk1YIGluc3RydWN0aW9uIG1hY3JvcywgbGlrZSBgdm1jc193cml0ZWxgIGFuZCB0aGVpciBpbGssIHdoaWNoIHVzZSB0aGUgYGluc24gJTBgIG9yIGBpbnNuICUxLCAlMGAgY29uc3RydWN0cy5cblxuTXkgZXhwZXJ0aXNlIHRlbGxzIG1lIHRoaXMgaXMgYWxtb3N0IGNlcnRhaW5seSBhaW1lZCBhdCBlbnN1cmluZyBwcm9wZXIgbWVtb3J5IG9yZGVyaW5nLiBXaXRoIHRoZXNlIFZNQ1MgcmVhZHMvd3JpdGVzLCB5b3UncmUgZGVhbGluZyB3aXRoIHZlcnkgc2Vuc2l0aXZlIGhhcmR3YXJlIHN0YXRlLiBDb21waWxlcnMgY2FuIGJlIGNsZXZlciwgcG90ZW50aWFsbHkgcmVvcmRlcmluZyBpbnN0cnVjdGlvbnMgb3IgY2FjaGluZyB2YWx1ZXMgaW4gd2F5cyB0aGF0IGJyZWFrIHRoZSBjcml0aWNhbCBzeW5jaHJvbml6YXRpb24gbmVlZGVkIGZvciB2aXJ0dWFsaXphdGlvbiB0byBmdW5jdGlvbiBjb3JyZWN0bHkuIEJ5IGluY2x1ZGluZyBgXCJtZW1vcnlcImAgaW4gdGhlIGNsb2JiZXIgbGlzdCwgdGhlIHBhdGNoIGlzIGVzc2VudGlhbGx5IHRlbGxpbmcgdGhlIGNvbXBpbGVyLCBcIkhleSwgZG9uJ3QgYXNzdW1lIGFueXRoaW5nIGFib3V0IHRoZSBjb250ZW50cyBvZiBtZW1vcnkgc3Vycm91bmRpbmcgdGhlc2UgaW5zdHJ1Y3Rpb25zLiBUaGV5ICptaWdodCogYmUgY2hhbmdlZCBieSB0aGUgVk1YIGluc3RydWN0aW9uLCBhbmQgeW91IG5lZWQgdG8gdHJlYXQgdGhlbSBhcyB2b2xhdGlsZS5cIiBUaGlzIG1ha2VzIHNlbnNlIHRvIG1lLiBUaGUgcGF0Y2ggaXMgcHJvYmFibHkgZml4aW5nIHBvdGVudGlhbCBjb21waWxlci1yZWxhdGVkIGJ1Z3MgcmVsYXRlZCB0byByZW9yZGVyaW5nIG9mIGluc3RydWN0aW9ucyB0aGF0IHdvdWxkIG5vcm1hbGx5IGJlIHBlcmZlY3RseSB2YWxpZCBpbiBub24tdmlydHVhbGl6ZWQgY29kZS5cblxuTm93LCBJJ2xsIGRpdmUgaW50byBgYXJjaC94ODYva3ZtL3ZteC92bXhfb3BzLmhgIGl0c2VsZiB0byBjb25maXJtIG15IHVuZGVyc3RhbmRpbmcgYW5kIHNlZSB0aGUgc3BlY2lmaWNzIG9mIHRoZSBjaGFuZ2UuIFRoaXMgYWRkaXRpb24gaXMgbGlrZWx5IHRoZSBuZWNlc3NhcnkgXCJmZW5jZVwiIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZXNlIFZNWCBpbnN0cnVjdGlvbnMgd29yayBwcm9wZXJseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjMyMCwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzMiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDEyOjA1OjExLjMwMTYzMDc0OFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTg2NDY4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX3ZtY3NfcmVhZGxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL3ZteC92bXhfb3BzLmhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL3ZteC92bXhfb3BzLmg9Nzk9c3RhdGljIF9fYWx3YXlzX2lubGluZSB2b2lkIHZtY3NfY2hlY2tsKHVuc2lnbmVkIGxvbmcgZmllbGQpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteF9vcHMuaC05MC1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteF9vcHMuaDo5MTpzdGF0aWMgX19hbHdheXNfaW5saW5lIHVuc2lnbmVkIGxvbmcgX192bWNzX3JlYWRsKHVuc2lnbmVkIGxvbmcgZmllbGQpXFxuYXJjaC94ODYva3ZtL3ZteC92bXhfb3BzLmgtOTIte1xcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXhfb3BzLmg9MTU0PXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdTE2IHZtY3NfcmVhZDE2KHVuc2lnbmVkIGxvbmcgZmllbGQpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteF9vcHMuaC0xNTgtXFx0XFx0cmV0dXJuIGV2bWNzX3JlYWQxNihmaWVsZCk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXhfb3BzLmg6MTU5OlxcdHJldHVybiBfX3ZtY3NfcmVhZGwoZmllbGQpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14X29wcy5oLTE2MC19XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteF9vcHMuaD0xNjI9c3RhdGljIF9fYWx3YXlzX2lubGluZSB1MzIgdm1jc19yZWFkMzIodW5zaWduZWQgbG9uZyBmaWVsZClcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14X29wcy5oLTE2Ni1cXHRcXHRyZXR1cm4gZXZtY3NfcmVhZDMyKGZpZWxkKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteF9vcHMuaDoxNjc6XFx0cmV0dXJuIF9fdm1jc19yZWFkbChmaWVsZCk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXhfb3BzLmgtMTY4LX1cXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14X29wcy5oPTE3MD1zdGF0aWMgX19hbHdheXNfaW5saW5lIHU2NCB2bWNzX3JlYWQ2NCh1bnNpZ25lZCBsb25nIGZpZWxkKVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXhfb3BzLmgtMTc1LSNpZmRlZiBDT05GSUdfWDg2XzY0XFxuYXJjaC94ODYva3ZtL3ZteC92bXhfb3BzLmg6MTc2OlxcdHJldHVybiBfX3ZtY3NfcmVhZGwoZmllbGQpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14X29wcy5oLTE3Ny0jZWxzZVxcbmFyY2gveDg2L2t2bS92bXgvdm14X29wcy5oOjE3ODpcXHRyZXR1cm4gX192bWNzX3JlYWRsKGZpZWxkKSB8ICgodTY0KV9fdm1jc19yZWFkbChmaWVsZCsxKSBcXHUwMDNjXFx1MDAzYyAzMik7XFxuYXJjaC94ODYva3ZtL3ZteC92bXhfb3BzLmgtMTc5LSNlbmRpZlxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXhfb3BzLmg9MTgyPXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdW5zaWduZWQgbG9uZyB2bWNzX3JlYWRsKHVuc2lnbmVkIGxvbmcgZmllbGQpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteF9vcHMuaC0xODYtXFx0XFx0cmV0dXJuIGV2bWNzX3JlYWQ2NChmaWVsZCk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXhfb3BzLmg6MTg3OlxcdHJldHVybiBfX3ZtY3NfcmVhZGwoZmllbGQpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14X29wcy5oLTE4OC19XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteF9vcHMuaD0yNjY9c3RhdGljIF9fYWx3YXlzX2lubGluZSB2b2lkIHZtY3NfY2xlYXJfYml0cyh1bnNpZ25lZCBsb25nIGZpZWxkLCB1MzIgbWFzaylcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14X29wcy5oLTI3Mi1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteF9vcHMuaDoyNzM6XFx0X192bWNzX3dyaXRlbChmaWVsZCwgX192bWNzX3JlYWRsKGZpZWxkKSBcXHUwMDI2IH5tYXNrKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteF9vcHMuaC0yNzQtfVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXhfb3BzLmg9Mjc2PXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdm9pZCB2bWNzX3NldF9iaXRzKHVuc2lnbmVkIGxvbmcgZmllbGQsIHUzMiBtYXNrKVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXhfb3BzLmgtMjgyLVxcbmFyY2gveDg2L2t2bS92bXgvdm14X29wcy5oOjI4MzpcXHRfX3ZtY3Nfd3JpdGVsKGZpZWxkLCBfX3ZtY3NfcmVhZGwoZmllbGQpIHwgbWFzayk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXhfb3BzLmgtMjg0LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTI6MDU6MTEuMzU3NDk5NTYzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTkyNjg5MjUzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEltcGFjdCBvZiB0aGUgTWVtb3J5IENsb2JiZXIgaW4gS1ZNIFZNWCBJbmxpbmUgQXNzZW1ibHkqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBgXCJtZW1vcnlcImAgY2xvYmJlciBpbnRvIHRoZSBpbmxpbmUgYXNzZW1ibHkgd2l0aGluIGBfX3ZtY3NfcmVhZGxgIGFuZCB0aGUgYHZteF9hc20xYC9gdm14X2FzbTJgIG1hY3Jvcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIG5lY2Vzc2FyeSBvbmUuIEl0IHN0b3BzIHRoZSBjb21waWxlciBmcm9tIGJlaW5nIG92ZXJseSBhZ2dyZXNzaXZlIGluIGNhY2hpbmcgbWVtb3J5IHZhbHVlcyBhY3Jvc3MgVk1DUyByZWFkcyBhbmQgd3JpdGVzLiBUaGF0J3MgY3J1Y2lhbCBmb3IgY29ycmVjdG5lc3MgaW4gdGhpcyBjb250ZXh0LiBCdXQgd2FpdOKApiBkb2VzIHRoaXMgYWN0dWFsbHkgKmNoYW5nZSogdGhlIGV4ZWN1dGlvbiBmbG93PyBUZWNobmljYWxseSwgaXQncyBhIGNvbXBpbGVyIGJlaGF2aW9yIGNoYW5nZSwgYnV0IHRoYXQgc3VidGx5IGFmZmVjdHMgaG93IHRoZSBjb2RlIGV4ZWN1dGVzLCBlc3BlY2lhbGx5IHdpdGggbWVtb3J5IGJhcnJpZXJzLiBUaGlzIHdhcnJhbnRzIGEgZGVlcGVyIGxvb2suXG5cblRoZSBuZXh0IHF1ZXN0aW9uIGlzIGZ1enppbmcuIFdvdWxkIHRoaXMgYmUgYSBnb29kIHRhcmdldD8gSXQgd29uJ3Qgc3BlY2lmaWNhbGx5IHRhcmdldCB0aGUgY2xvYmJlciBpdHNlbGYsIGJ1dCBpdOKAmXMgYSBjb3JlIGNoYW5nZSB3aXRoaW4gS1ZNIFZNWC4gV2hpbGUgZnV6emluZyBtaWdodCBub3QgaGl0IHRoZSBwcmVjaXNlIHJhY2UgY29uZGl0aW9uIG9yIGNvbXBpbGVyIHJlb3JkZXJpbmcgd2UncmUgbm93IHRyeWluZyB0byBwcmV2ZW50LCBpdCAqaXMqIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBjcml0aWNhbCBhcmVhLCBzbyBpdCdzIHByb2JhYmx5IHdvcnRoIGl0LlxuXG5BbHJpZ2h0LCBsZXQncyB0cnkgdG8gZXh0cmFjdCBzb21lIHJlbGV2YW50IHN5bWJvbHMgdG8gZm9jdXMgb24uIFRoaW5raW5nIGFib3V0IHRoZSBmdW5jdGlvbnMgaW52b2x2ZWQ6IGB2bWNzX3JlYWRsYCwgYHZtY3Nfd3JpdGVsYCwgYW5kIHRoZSBsaWtlIC0gdGhleSdyZSBhbGwgaW5saW5lLiBJIGNhbiBzZWUgdGhleSBhcmUgdXNlZCBwcmV0dHkgd2lkZWx5IHRocm91Z2hvdXQgYGFyY2gveDg2L2t2bS92bXgvYC4gSSdsbCBmb2N1cyBvbiBgYXJjaC94ODYva3ZtL3ZteC92bXguY2AgdG8gc2VlIGlmIEkgY2FuIHVuZGVyc3RhbmQgaG93IHRoZXNlIG5ldyBjbG9iYmVycyBhcmUgYmVpbmcgdXNlZCBpbiBtb3JlIGNvbmNyZXRlIGV4YW1wbGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTI4LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDEyOjA1OjE3LjI4NDM5Mzg1NVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTAxMzQyNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2bWNzX3JlYWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL3ZteC92bXguY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDUxMCBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYz01NjI9bm9pbmxpbmUgdm9pZCB2bXdyaXRlX2Vycm9yKHVuc2lnbmVkIGxvbmcgZmllbGQsIHVuc2lnbmVkIGxvbmcgdmFsdWUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTU2NC1cXHR2bXhfaW5zbl9mYWlsZWQoXFxcInZtd3JpdGUgZmFpbGVkOiBmaWVsZD0lbHggdmFsPSVseCBlcnI9JXVcXFxcblxcXCIsXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo1NjU6XFx0XFx0XFx0ZmllbGQsIHZhbHVlLCB2bWNzX3JlYWQzMihWTV9JTlNUUlVDVElPTl9FUlJPUikpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNTY2LX1cXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM9NTY4PW5vaW5saW5lIHZvaWQgdm1jbGVhcl9lcnJvcihzdHJ1Y3Qgdm1jcyAqdm1jcywgdTY0IHBoeXNfYWRkcilcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNTcwLVxcdHZteF9pbnNuX2ZhaWxlZChcXFwidm1jbGVhciBmYWlsZWQ6ICVwLyVsbHggZXJyPSV1XFxcXG5cXFwiLFxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NTcxOlxcdFxcdFxcdHZtY3MsIHBoeXNfYWRkciwgdm1jc19yZWFkMzIoVk1fSU5TVFJVQ1RJT05fRVJST1IpKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTU3Mi19XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTU3ND1ub2lubGluZSB2b2lkIHZtcHRybGRfZXJyb3Ioc3RydWN0IHZtY3MgKnZtY3MsIHU2NCBwaHlzX2FkZHIpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTU3Ni1cXHR2bXhfaW5zbl9mYWlsZWQoXFxcInZtcHRybGQgZmFpbGVkOiAlcC8lbGx4IGVycj0ldVxcXFxuXFxcIixcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjU3NzpcXHRcXHRcXHR2bWNzLCBwaHlzX2FkZHIsIHZtY3NfcmVhZDMyKFZNX0lOU1RSVUNUSU9OX0VSUk9SKSk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy01NzgtfVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYz04NjM9c3RhdGljIHUxNiB2bXhfcmVhZF9ndWVzdF9zZWdfc2VsZWN0b3Ioc3RydWN0IHZjcHVfdm14ICp2bXgsIHVuc2lnbmVkIHNlZylcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtODY3LVxcdGlmICghdm14X3NlZ21lbnRfY2FjaGVfdGVzdF9zZXQodm14LCBzZWcsIFNFR19GSUVMRF9TRUwpKVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6ODY4OlxcdFxcdCpwID0gdm1jc19yZWFkMTYoa3ZtX3ZteF9zZWdtZW50X2ZpZWxkc1tzZWddLnNlbGVjdG9yKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTg2OS1cXHRyZXR1cm4gKnA7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTg3Mj1zdGF0aWMgdWxvbmcgdm14X3JlYWRfZ3Vlc3Rfc2VnX2Jhc2Uoc3RydWN0IHZjcHVfdm14ICp2bXgsIHVuc2lnbmVkIHNlZylcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtODc2LVxcdGlmICghdm14X3NlZ21lbnRfY2FjaGVfdGVzdF9zZXQodm14LCBzZWcsIFNFR19GSUVMRF9CQVNFKSlcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjg3NzpcXHRcXHQqcCA9IHZtY3NfcmVhZGwoa3ZtX3ZteF9zZWdtZW50X2ZpZWxkc1tzZWddLmJhc2UpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtODc4LVxcdHJldHVybiAqcDtcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM9ODgxPXN0YXRpYyB1MzIgdm14X3JlYWRfZ3Vlc3Rfc2VnX2xpbWl0KHN0cnVjdCB2Y3B1X3ZteCAqdm14LCB1bnNpZ25lZCBzZWcpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTg4NS1cXHRpZiAoIXZteF9zZWdtZW50X2NhY2hlX3Rlc3Rfc2V0KHZteCwgc2VnLCBTRUdfRklFTERfTElNSVQpKVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6ODg2OlxcdFxcdCpwID0gdm1jc19yZWFkMzIoa3ZtX3ZteF9zZWdtZW50X2ZpZWxkc1tzZWddLmxpbWl0KTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTg4Ny1cXHRyZXR1cm4gKnA7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTg5MD1zdGF0aWMgdTMyIHZteF9yZWFkX2d1ZXN0X3NlZ19hcihzdHJ1Y3QgdmNwdV92bXggKnZteCwgdW5zaWduZWQgc2VnKVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy04OTQtXFx0aWYgKCF2bXhfc2VnbWVudF9jYWNoZV90ZXN0X3NldCh2bXgsIHNlZywgU0VHX0ZJRUxEX0FSKSlcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjg5NTpcXHRcXHQqcCA9IHZtY3NfcmVhZDMyKGt2bV92bXhfc2VnbWVudF9maWVsZHNbc2VnXS5hcl9ieXRlcyk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy04OTYtXFx0cmV0dXJuICpwO1xcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYz0xNjI3PXVuc2lnbmVkIGxvbmcgdm14X2dldF9yZmxhZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0xNjMzLVxcdFxcdGt2bV9yZWdpc3Rlcl9tYXJrX2F2YWlsYWJsZSh2Y3B1LCBWQ1BVX1JFR19SRkxBR1MpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6MTYzNDpcXHRcXHRyZmxhZ3MgPSB2bWNzX3JlYWRsKEdVRVNUX1JGTEFHUyk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0xNjM1LVxcdFxcdGlmICh2bXgtXFx1MDAzZXJtb2RlLnZtODZfYWN0aXZlKSB7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTE2Nzk9dTMyIHZteF9nZXRfaW50ZXJydXB0X3NoYWRvdyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0xNjgwLXtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjE2ODE6XFx0dTMyIGludGVycnVwdGliaWxpdHkgPSB2bWNzX3JlYWQzMihHVUVTVF9JTlRFUlJVUFRJQklMSVRZX0lORk8pO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMTY4Mi1cXHRpbnQgcmV0ID0gMDtcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM9MTY5Mj12b2lkIHZteF9zZXRfaW50ZXJydXB0X3NoYWRvdyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGludCBtYXNrKVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMTY5My17XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzoxNjk0OlxcdHUzMiBpbnRlcnJ1cHRpYmlsaXR5X29sZCA9IHZtY3NfcmVhZDMyKEdVRVNUX0lOVEVSUlVQVElCSUxJVFlfSU5GTyk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0xNjk1LVxcdHUzMiBpbnRlcnJ1cHRpYmlsaXR5ID0gaW50ZXJydXB0aWJpbGl0eV9vbGQ7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTE4MDQ9c3RhdGljIGludCBza2lwX2VtdWxhdGVkX2luc3RydWN0aW9uKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMTgxOS1cXHQgICAgZXhpdF9yZWFzb24uYmFzaWMgIT0gRVhJVF9SRUFTT05fRVBUX01JU0NPTkZJRykge1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6MTgyMDpcXHRcXHRpbnN0cl9sZW4gPSB2bWNzX3JlYWQzMihWTV9FWElUX0lOU1RSVUNUSU9OX0xFTik7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0xODIxLVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYz0xOTA5PXN0YXRpYyB2b2lkIHZteF9jbGVhcl9obHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0xOTE3LVxcdGlmIChrdm1faGx0X2luX2d1ZXN0KHZjcHUtXFx1MDAzZWt2bSkgXFx1MDAyNlxcdTAwMjZcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjE5MTg6XFx0XFx0XFx0dm1jc19yZWFkMzIoR1VFU1RfQUNUSVZJVFlfU1RBVEUpID09IEdVRVNUX0FDVElWSVRZX0hMVClcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTE5MTktXFx0XFx0dm1jc193cml0ZTMyKEdVRVNUX0FDVElWSVRZX1NUQVRFLCBHVUVTVF9BQ1RJVklUWV9BQ1RJVkUpO1xcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYz0xOTIyPXZvaWQgdm14X2luamVjdF9leGNlcHRpb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0xOTQzLVxcdFxcdHZtY3Nfd3JpdGVsKEdVRVNUX1BFTkRJTkdfREJHX0VYQ0VQVElPTlMsXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzoxOTQ0OlxcdFxcdFxcdCAgICB2bWNzX3JlYWRsKEdVRVNUX1BFTkRJTkdfREJHX0VYQ0VQVElPTlMpIHwgRFI2X0JTKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTE5NDUtXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTIxMjY9aW50IHZteF9nZXRfbXNyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IG1zcl9kYXRhICptc3JfaW5mbylcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMjEzNC1cXHRjYXNlIE1TUl9GU19CQVNFOlxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6MjEzNTpcXHRcXHRtc3JfaW5mby1cXHUwMDNlZGF0YSA9IHZtY3NfcmVhZGwoR1VFU1RfRlNfQkFTRSk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0yMTM2LVxcdFxcdGJyZWFrO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMjEzNy1cXHRjYXNlIE1TUl9HU19CQVNFOlxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6MjEzODpcXHRcXHRtc3JfaW5mby1cXHUwMDNlZGF0YSA9IHZtY3NfcmVhZGwoR1VFU1RfR1NfQkFTRSk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0yMTM5LVxcdFxcdGJyZWFrO1xcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0yMTY0LVxcdGNhc2UgTVNSX0lBMzJfU1lTRU5URVJfQ1M6XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzoyMTY1OlxcdFxcdG1zcl9pbmZvLVxcdTAwM2VkYXRhID0gdm1jc19yZWFkMzIoR1VFU1RfU1lTRU5URVJfQ1MpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMjE2Ni1cXHRcXHRicmVhaztcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTIxNjctXFx0Y2FzZSBNU1JfSUEzMl9TWVNFTlRFUl9FSVA6XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzoyMTY4OlxcdFxcdG1zcl9pbmZvLVxcdTAwM2VkYXRhID0gdm1jc19yZWFkbChHVUVTVF9TWVNFTlRFUl9FSVApO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMjE2OS1cXHRcXHRicmVhaztcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTIxNzAtXFx0Y2FzZSBNU1JfSUEzMl9TWVNFTlRFUl9FU1A6XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzoyMTcxOlxcdFxcdG1zcl9pbmZvLVxcdTAwM2VkYXRhID0gdm1jc19yZWFkbChHVUVTVF9TWVNFTlRFUl9FU1ApO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMjE3Mi1cXHRcXHRicmVhaztcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMjE3Ny1cXHRcXHRcXHRyZXR1cm4gMTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjIxNzg6XFx0XFx0bXNyX2luZm8tXFx1MDAzZWRhdGEgPSB2bWNzX3JlYWQ2NChHVUVTVF9CTkRDRkdTKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTIxNzktXFx0XFx0YnJlYWs7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTIyNjEtXFx0Y2FzZSBNU1JfSUEzMl9TX0NFVDpcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjIyNjI6XFx0XFx0bXNyX2luZm8tXFx1MDAzZWRhdGEgPSB2bWNzX3JlYWRsKEdVRVNUX1NfQ0VUKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTIyNjMtXFx0XFx0YnJlYWs7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0yMjY0LVxcdGNhc2UgTVNSX0tWTV9JTlRFUk5BTF9HVUVTVF9TU1A6XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzoyMjY1OlxcdFxcdG1zcl9pbmZvLVxcdTAwM2VkYXRhID0gdm1jc19yZWFkbChHVUVTVF9TU1ApO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMjI2Ni1cXHRcXHRicmVhaztcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTIyNjctXFx0Y2FzZSBNU1JfSUEzMl9JTlRfU1NQX1RBQjpcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjIyNjg6XFx0XFx0bXNyX2luZm8tXFx1MDAzZWRhdGEgPSB2bWNzX3JlYWRsKEdVRVNUX0lOVFJfU1NQX1RBQkxFKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTIyNjktXFx0XFx0YnJlYWs7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTI2MzU9dm9pZCB2bXhfY2FjaGVfcmVnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgZW51bSBrdm1fcmVnIHJlZylcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMjY0Mi1cXHRjYXNlIFZDUFVfUkVHU19SU1A6XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzoyNjQzOlxcdFxcdHZjcHUtXFx1MDAzZWFyY2gucmVnc1tWQ1BVX1JFR1NfUlNQXSA9IHZtY3NfcmVhZGwoR1VFU1RfUlNQKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTI2NDQtXFx0XFx0YnJlYWs7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0yNjQ1LVxcdGNhc2UgVkNQVV9SRUdfUklQOlxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6MjY0NjpcXHRcXHR2Y3B1LVxcdTAwM2VhcmNoLnJpcCA9IHZtY3NfcmVhZGwoR1VFU1RfUklQKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTI2NDctXFx0XFx0YnJlYWs7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTI2NTUtXFx0XFx0dmNwdS1cXHUwMDNlYXJjaC5jcjAgXFx1MDAyNj0gfmd1ZXN0X293bmVkX2JpdHM7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzoyNjU2OlxcdFxcdHZjcHUtXFx1MDAzZWFyY2guY3IwIHw9IHZtY3NfcmVhZGwoR1VFU1RfQ1IwKSBcXHUwMDI2IGd1ZXN0X293bmVkX2JpdHM7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0yNjU3LVxcdFxcdGJyZWFrO1xcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0yNjYzLVxcdFxcdGlmICghKGV4ZWNfY29udHJvbHNfZ2V0KHRvX3ZteCh2Y3B1KSkgXFx1MDAyNiBDUFVfQkFTRURfQ1IzX0xPQURfRVhJVElORykpXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzoyNjY0OlxcdFxcdFxcdHZjcHUtXFx1MDAzZWFyY2guY3IzID0gdm1jc19yZWFkbChHVUVTVF9DUjMpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMjY2NS1cXHRcXHRicmVhaztcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMjY2OS1cXHRcXHR2Y3B1LVxcdTAwM2VhcmNoLmNyNCBcXHUwMDI2PSB+Z3Vlc3Rfb3duZWRfYml0cztcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjI2NzA6XFx0XFx0dmNwdS1cXHUwMDNlYXJjaC5jcjQgfD0gdm1jc19yZWFkbChHVUVTVF9DUjQpIFxcdTAwMjYgZ3Vlc3Rfb3duZWRfYml0cztcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTI2NzEtXFx0XFx0YnJlYWs7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTMxMzE9c3RhdGljIHZvaWQgZW50ZXJfcG1vZGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0zMTUwLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6MzE1MTpcXHRmbGFncyA9IHZtY3NfcmVhZGwoR1VFU1RfUkZMQUdTKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTMxNTItXFx0ZmxhZ3MgXFx1MDAyNj0gUk1PREVfR1VFU1RfT1dORURfRUZMQUdTX0JJVFM7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTMxNTUtXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzozMTU2OlxcdHZtY3Nfd3JpdGVsKEdVRVNUX0NSNCwgKHZtY3NfcmVhZGwoR1VFU1RfQ1I0KSBcXHUwMDI2IH5YODZfQ1I0X1ZNRSkgfFxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6MzE1NzpcXHRcXHRcXHQodm1jc19yZWFkbChDUjRfUkVBRF9TSEFET1cpIFxcdTAwMjYgWDg2X0NSNF9WTUUpKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTMxNTgtXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTMyMDE9c3RhdGljIHZvaWQgZW50ZXJfcm1vZGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0zMjMxLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6MzIzMjpcXHRmbGFncyA9IHZtY3NfcmVhZGwoR1VFU1RfUkZMQUdTKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTMyMzMtXFx0dm14LVxcdTAwM2VybW9kZS5zYXZlX3JmbGFncyA9IGZsYWdzO1xcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0zMjM3LVxcdHZtY3Nfd3JpdGVsKEdVRVNUX1JGTEFHUywgZmxhZ3MpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6MzIzODpcXHR2bWNzX3dyaXRlbChHVUVTVF9DUjQsIHZtY3NfcmVhZGwoR1VFU1RfQ1I0KSB8IFg4Nl9DUjRfVk1FKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTMyMzktXFx0dm14X3VwZGF0ZV9leGNlcHRpb25fYml0bWFwKHZjcHUpO1xcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYz0zMjc0PXN0YXRpYyB2b2lkIGVudGVyX2xtb2RlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMzI3OS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjMyODA6XFx0Z3Vlc3RfdHJfYXIgPSB2bWNzX3JlYWQzMihHVUVTVF9UUl9BUl9CWVRFUyk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0zMjgxLVxcdGlmICgoZ3Vlc3RfdHJfYXIgXFx1MDAyNiBWTVhfQVJfVFlQRV9NQVNLKSAhPSBWTVhfQVJfVFlQRV9CVVNZXzY0X1RTUykge1xcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYz0zNDExPXZvaWQgZXB0X3NhdmVfcGRwdHJzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMzQxNS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjM0MTY6XFx0dmNwdS1cXHUwMDNlYXJjaC5wZHB0cnNbMF0gPSB2bWNzX3JlYWQ2NChHVUVTVF9QRFBUUjApO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6MzQxNzpcXHR2Y3B1LVxcdTAwM2VhcmNoLnBkcHRyc1sxXSA9IHZtY3NfcmVhZDY0KEdVRVNUX1BEUFRSMSk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzozNDE4OlxcdHZjcHUtXFx1MDAzZWFyY2gucGRwdHJzWzJdID0gdm1jc19yZWFkNjQoR1VFU1RfUERQVFIyKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjM0MTk6XFx0dmNwdS1cXHUwMDNlYXJjaC5wZHB0cnNbM10gPSB2bWNzX3JlYWQ2NChHVUVTVF9QRFBUUjMpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMzQyMC1cXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM9MzY5MD1zdGF0aWMgaW50IF9fdm14X2dldF9jcGwoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBib29sIG5vX2NhY2hlKVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0zNjk4LVxcdGlmIChub19jYWNoZSlcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjM2OTk6XFx0XFx0YXIgPSB2bWNzX3JlYWQzMihHVUVTVF9TU19BUl9CWVRFUyk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0zNzAwLVxcdGVsc2VcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM9Mzc4ND12b2lkIHZteF9nZXRfaWR0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGRlc2NfcHRyICpkdClcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTM3ODUte1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6Mzc4NjpcXHRkdC1cXHUwMDNlc2l6ZSA9IHZtY3NfcmVhZDMyKEdVRVNUX0lEVFJfTElNSVQpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6Mzc4NzpcXHRkdC1cXHUwMDNlYWRkcmVzcyA9IHZtY3NfcmVhZGwoR1VFU1RfSURUUl9CQVNFKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTM3ODgtfVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYz0zNzk2PXZvaWQgdm14X2dldF9nZHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgZGVzY19wdHIgKmR0KVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMzc5Ny17XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzozNzk4OlxcdGR0LVxcdTAwM2VzaXplID0gdm1jc19yZWFkMzIoR1VFU1RfR0RUUl9MSU1JVCk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzozNzk5OlxcdGR0LVxcdTAwM2VhZGRyZXNzID0gdm1jc19yZWFkbChHVUVTVF9HRFRSX0JBU0UpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMzgwMC19XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTUxMDg9dm9pZCB2bXhfZW5hYmxlX25taV93aW5kb3coc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy01MTEwLVxcdGlmICghZW5hYmxlX3ZubWkgfHxcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjUxMTE6XFx0ICAgIHZtY3NfcmVhZDMyKEdVRVNUX0lOVEVSUlVQVElCSUxJVFlfSU5GTykgXFx1MDAyNiBHVUVTVF9JTlRSX1NUQVRFX1NUSSkge1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNTExMi1cXHRcXHR2bXhfZW5hYmxlX2lycV93aW5kb3codmNwdSk7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTUxNzg9Ym9vbCB2bXhfZ2V0X25taV9tYXNrKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNTE4Ni1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo1MTg3OlxcdG1hc2tlZCA9IHZtY3NfcmVhZDMyKEdVRVNUX0lOVEVSUlVQVElCSUxJVFlfSU5GTykgXFx1MDAyNiBHVUVTVF9JTlRSX1NUQVRFX05NSTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTUxODgtXFx0dm14LVxcdTAwM2Vsb2FkZWRfdm1jcy1cXHUwMDNlbm1pX2tub3duX3VubWFza2VkID0gIW1hc2tlZDtcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM9NTIxMj1ib29sIHZteF9ubWlfYmxvY2tlZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTUyMTktXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo1MjIwOlxcdHJldHVybiAodm1jc19yZWFkMzIoR1VFU1RfSU5URVJSVVBUSUJJTElUWV9JTkZPKSBcXHUwMDI2XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy01MjIxLVxcdFxcdChHVUVTVF9JTlRSX1NUQVRFX01PVl9TUyB8IEdVRVNUX0lOVFJfU1RBVEVfU1RJIHxcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM9NTIzNz1ib29sIF9fdm14X2ludGVycnVwdF9ibG9ja2VkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNTIzOS1cXHRyZXR1cm4gISh2bXhfZ2V0X3JmbGFncyh2Y3B1KSBcXHUwMDI2IFg4Nl9FRkxBR1NfSUYpIHx8XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo1MjQwOlxcdCAgICAgICAodm1jc19yZWFkMzIoR1VFU1RfSU5URVJSVVBUSUJJTElUWV9JTkZPKSBcXHUwMDI2XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy01MjQxLVxcdFxcdChHVUVTVF9JTlRSX1NUQVRFX1NUSSB8IEdVRVNUX0lOVFJfU1RBVEVfTU9WX1NTKSk7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTUyOTY9c3RhdGljIGJvb2wgcm1vZGVfZXhjZXB0aW9uKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgaW50IHZlYylcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNTMwNC1cXHRcXHR0b192bXgodmNwdSktXFx1MDAzZXZjcHUuYXJjaC5ldmVudF9leGl0X2luc3RfbGVuID1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjUzMDU6XFx0XFx0XFx0dm1jc19yZWFkMzIoVk1fRVhJVF9JTlNUUlVDVElPTl9MRU4pO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNTMwNi1cXHRcXHRpZiAodmNwdS1cXHUwMDNlZ3Vlc3RfZGVidWcgXFx1MDAyNiBLVk1fR1VFU1REQkdfVVNFX1NXX0JQKVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYz01NDI1PXN0YXRpYyBpbnQgaGFuZGxlX2V4Y2VwdGlvbl9ubWkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy01NDcwLVxcdGlmIChpbnRyX2luZm8gXFx1MDAyNiBJTlRSX0lORk9fREVMSVZFUl9DT0RFX01BU0spXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo1NDcxOlxcdFxcdGVycm9yX2NvZGUgPSB2bWNzX3JlYWQzMihWTV9FWElUX0lOVFJfRVJST1JfQ09ERSk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy01NDcyLVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy01NTM0LVxcdFxcdGt2bV9ydW4tXFx1MDAzZWRlYnVnLmFyY2guZHI2ID0gZHI2IHwgRFI2X0FDVElWRV9MT1c7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo1NTM1OlxcdFxcdGt2bV9ydW4tXFx1MDAzZWRlYnVnLmFyY2guZHI3ID0gdm1jc19yZWFkbChHVUVTVF9EUjcpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNTUzNi1cXHRcXHRmYWxsdGhyb3VnaDtcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNTU0My1cXHRcXHR2bXgtXFx1MDAzZXZjcHUuYXJjaC5ldmVudF9leGl0X2luc3RfbGVuID1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjU1NDQ6XFx0XFx0XFx0dm1jc19yZWFkMzIoVk1fRVhJVF9JTlNUUlVDVElPTl9MRU4pO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNTU0NS1cXHRcXHRrdm1fcnVuLVxcdTAwM2VleGl0X3JlYXNvbiA9IEtWTV9FWElUX0RFQlVHO1xcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYz01NzUyPXN0YXRpYyBpbnQgaGFuZGxlX2RyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNTc2Ny1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjU3Njg6XFx0ZHI3ID0gdm1jc19yZWFkbChHVUVTVF9EUjcpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNTc2OS1cXHRpZiAoZHI3IFxcdTAwMjYgRFI3X0dEKSB7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTU4MTI9dm9pZCB2bXhfc3luY19kaXJ0eV9kZWJ1Z19yZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNTgxOC1cXHRnZXRfZGVidWdyZWcodmNwdS1cXHUwMDNlYXJjaC5kcjYsIDYpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NTgxOTpcXHR2Y3B1LVxcdTAwM2VhcmNoLmRyNyA9IHZtY3NfcmVhZGwoR1VFU1RfRFI3KTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTU4MjAtXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTU5MDk9c3RhdGljIGludCBoYW5kbGVfdGFza19zd2l0Y2goc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy01OTM5LVxcdFxcdFxcdFxcdGVycm9yX2NvZGUgPVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NTk0MDpcXHRcXHRcXHRcXHRcXHR2bWNzX3JlYWQzMihJRFRfVkVDVE9SSU5HX0VSUk9SX0NPREUpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNTk0MS1cXHRcXHRcXHR9XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTU5NjY9c3RhdGljIGludCBoYW5kbGVfZXB0X3Zpb2xhdGlvbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTU5ODEtXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo1OTgyOlxcdGdwYSA9IHZtY3NfcmVhZDY0KEdVRVNUX1BIWVNJQ0FMX0FERFJFU1MpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNTk4My1cXHR0cmFjZV9rdm1fcGFnZV9mYXVsdCh2Y3B1LCBncGEsIGV4aXRfcXVhbGlmaWNhdGlvbik7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTU5OTk9c3RhdGljIGludCBoYW5kbGVfZXB0X21pc2NvbmZpZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTYwMDktXFx0ICovXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2MDEwOlxcdGdwYSA9IHZtY3NfcmVhZDY0KEdVRVNUX1BIWVNJQ0FMX0FERFJFU1MpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjAxMS1cXHRpZiAoIWlzX2d1ZXN0X21vZGUodmNwdSkgXFx1MDAyNlxcdTAwMjZcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM9NjE0Nj1zdGF0aWMgaW50IGhhbmRsZV9pbnZwY2lkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjE2MS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjYxNjI6XFx0dm14X2luc3RydWN0aW9uX2luZm8gPSB2bWNzX3JlYWQzMihWTVhfSU5TVFJVQ1RJT05fSU5GTyk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02MTYzLVxcdGdwcl9pbmRleCA9IHZteF9nZXRfaW5zdHJfaW5mb19yZWcyKHZteF9pbnN0cnVjdGlvbl9pbmZvKTtcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM9NjMxMT1zdGF0aWMgaW50IHZteF9nZXRfbXNyX2ltbV9yZWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjMxMi17XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2MzEzOlxcdHJldHVybiB2bXhfZ2V0X2luc3RyX2luZm9fcmVnKHZtY3NfcmVhZDMyKFZNWF9JTlNUUlVDVElPTl9JTkZPKSk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02MzE0LX1cXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM9NjM5NT12b2lkIHZteF9nZXRfZXhpdF9pbmZvKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyICpyZWFzb24sXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY0MDUtXFx0XFx0aWYgKGlzX2V4Y2VwdGlvbl93aXRoX2Vycm9yX2NvZGUoKmludHJfaW5mbykpXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NDA2OlxcdFxcdFxcdCplcnJvcl9jb2RlID0gdm1jc19yZWFkMzIoVk1fRVhJVF9JTlRSX0VSUk9SX0NPREUpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjQwNy1cXHRcXHRlbHNlXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTY0MTY9dm9pZCB2bXhfZ2V0X2VudHJ5X2luZm8oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgKmludHJfaW5mbywgdTMyICplcnJvcl9jb2RlKVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjQxNy17XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NDE4OlxcdCppbnRyX2luZm8gPSB2bWNzX3JlYWQzMihWTV9FTlRSWV9JTlRSX0lORk9fRklFTEQpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjQxOS1cXHRpZiAoaXNfZXhjZXB0aW9uX3dpdGhfZXJyb3JfY29kZSgqaW50cl9pbmZvKSlcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY0MjA6XFx0XFx0KmVycm9yX2NvZGUgPSB2bWNzX3JlYWQzMihWTV9FTlRSWV9FWENFUFRJT05fRVJST1JfQ09ERSk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NDIxLVxcdGVsc2VcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM9NjQzMz1zdGF0aWMgdm9pZCB2bXhfZmx1c2hfcG1sX2J1ZmZlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY0MzktXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NDQwOlxcdHBtbF9pZHggPSB2bWNzX3JlYWQxNihHVUVTVF9QTUxfSU5ERVgpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjQ0MS1cXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM9NjQ4MT1zdGF0aWMgdm9pZCB2bXhfZHVtcF9zZWwoY2hhciAqbmFtZSwgdWludDMyX3Qgc2VsKVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NDgzLVxcdHByX2VycihcXFwiJXMgc2VsPTB4JTA0eCwgYXR0cj0weCUwNXgsIGxpbWl0PTB4JTA4eCwgYmFzZT0weCUwMTZseFxcXFxuXFxcIixcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY0ODQ6XFx0ICAgICAgIG5hbWUsIHZtY3NfcmVhZDE2KHNlbCksXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NDg1OlxcdCAgICAgICB2bWNzX3JlYWQzMihzZWwgKyBHVUVTVF9FU19BUl9CWVRFUyAtIEdVRVNUX0VTX1NFTEVDVE9SKSxcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY0ODY6XFx0ICAgICAgIHZtY3NfcmVhZDMyKHNlbCArIEdVRVNUX0VTX0xJTUlUIC0gR1VFU1RfRVNfU0VMRUNUT1IpLFxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjQ4NzpcXHQgICAgICAgdm1jc19yZWFkbChzZWwgKyBHVUVTVF9FU19CQVNFIC0gR1VFU1RfRVNfU0VMRUNUT1IpKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY0ODgtfVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYz02NDkwPXN0YXRpYyB2b2lkIHZteF9kdW1wX2R0c2VsKGNoYXIgKm5hbWUsIHVpbnQzMl90IGxpbWl0KVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NDkyLVxcdHByX2VycihcXFwiJXMgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW1pdD0weCUwOHgsIGJhc2U9MHglMDE2bHhcXFxcblxcXCIsXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NDkzOlxcdCAgICAgICBuYW1lLCB2bWNzX3JlYWQzMihsaW1pdCksXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NDk0OlxcdCAgICAgICB2bWNzX3JlYWRsKGxpbWl0ICsgR1VFU1RfR0RUUl9CQVNFIC0gR1VFU1RfR0RUUl9MSU1JVCkpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjQ5NS19XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTY1MDc9dm9pZCBkdW1wX3ZtY3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NTIwLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjUyMTpcXHR2bWVudHJ5X2N0bCA9IHZtY3NfcmVhZDMyKFZNX0VOVFJZX0NPTlRST0xTKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY1MjI6XFx0dm1leGl0X2N0bCA9IHZtY3NfcmVhZDMyKFZNX0VYSVRfQ09OVFJPTFMpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjUyMzpcXHRjcHVfYmFzZWRfZXhlY19jdHJsID0gdm1jc19yZWFkMzIoQ1BVX0JBU0VEX1ZNX0VYRUNfQ09OVFJPTCk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NTI0OlxcdHBpbl9iYXNlZF9leGVjX2N0cmwgPSB2bWNzX3JlYWQzMihQSU5fQkFTRURfVk1fRVhFQ19DT05UUk9MKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY1MjU6XFx0Y3I0ID0gdm1jc19yZWFkbChHVUVTVF9DUjQpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjUyNi1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY1MjctXFx0aWYgKGNwdV9oYXNfc2Vjb25kYXJ5X2V4ZWNfY3RybHMoKSlcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY1Mjg6XFx0XFx0c2Vjb25kYXJ5X2V4ZWNfY29udHJvbCA9IHZtY3NfcmVhZDMyKFNFQ09OREFSWV9WTV9FWEVDX0NPTlRST0wpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjUyOS1cXHRlbHNlXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY1MzItXFx0aWYgKGNwdV9oYXNfdGVydGlhcnlfZXhlY19jdHJscygpKVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjUzMzpcXHRcXHR0ZXJ0aWFyeV9leGVjX2NvbnRyb2wgPSB2bWNzX3JlYWQ2NChURVJUSUFSWV9WTV9FWEVDX0NPTlRST0wpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjUzNC1cXHRlbHNlXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY1NDAtXFx0cHJfZXJyKFxcXCJDUjA6IGFjdHVhbD0weCUwMTZseCwgc2hhZG93PTB4JTAxNmx4LCBnaF9tYXNrPSUwMTZseFxcXFxuXFxcIixcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY1NDE6XFx0ICAgICAgIHZtY3NfcmVhZGwoR1VFU1RfQ1IwKSwgdm1jc19yZWFkbChDUjBfUkVBRF9TSEFET1cpLFxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjU0MjpcXHQgICAgICAgdm1jc19yZWFkbChDUjBfR1VFU1RfSE9TVF9NQVNLKSk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NTQzLVxcdHByX2VycihcXFwiQ1I0OiBhY3R1YWw9MHglMDE2bHgsIHNoYWRvdz0weCUwMTZseCwgZ2hfbWFzaz0lMDE2bHhcXFxcblxcXCIsXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NTQ0OlxcdCAgICAgICBjcjQsIHZtY3NfcmVhZGwoQ1I0X1JFQURfU0hBRE9XKSwgdm1jc19yZWFkbChDUjRfR1VFU1RfSE9TVF9NQVNLKSk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NTQ1OlxcdHByX2VycihcXFwiQ1IzID0gMHglMDE2bHhcXFxcblxcXCIsIHZtY3NfcmVhZGwoR1VFU1RfQ1IzKSk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NTQ2LVxcdGlmIChjcHVfaGFzX3ZteF9lcHQoKSkge1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjU0Ny1cXHRcXHRwcl9lcnIoXFxcIlBEUFRSMCA9IDB4JTAxNmxseCAgUERQVFIxID0gMHglMDE2bGx4XFxcXG5cXFwiLFxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjU0ODpcXHRcXHQgICAgICAgdm1jc19yZWFkNjQoR1VFU1RfUERQVFIwKSwgdm1jc19yZWFkNjQoR1VFU1RfUERQVFIxKSk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NTQ5LVxcdFxcdHByX2VycihcXFwiUERQVFIyID0gMHglMDE2bGx4ICBQRFBUUjMgPSAweCUwMTZsbHhcXFxcblxcXCIsXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NTUwOlxcdFxcdCAgICAgICB2bWNzX3JlYWQ2NChHVUVTVF9QRFBUUjIpLCB2bWNzX3JlYWQ2NChHVUVTVF9QRFBUUjMpKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY1NTEtXFx0fVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjU1Mi1cXHRwcl9lcnIoXFxcIlJTUCA9IDB4JTAxNmx4ICBSSVAgPSAweCUwMTZseFxcXFxuXFxcIixcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY1NTM6XFx0ICAgICAgIHZtY3NfcmVhZGwoR1VFU1RfUlNQKSwgdm1jc19yZWFkbChHVUVTVF9SSVApKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY1NTQtXFx0cHJfZXJyKFxcXCJSRkxBR1M9MHglMDhseCAgICAgICAgIERSNyA9IDB4JTAxNmx4XFxcXG5cXFwiLFxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjU1NTpcXHQgICAgICAgdm1jc19yZWFkbChHVUVTVF9SRkxBR1MpLCB2bWNzX3JlYWRsKEdVRVNUX0RSNykpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjU1Ni1cXHRwcl9lcnIoXFxcIlN5c2VudGVyIFJTUD0lMDE2bHggQ1M6UklQPSUwNHg6JTAxNmx4XFxcXG5cXFwiLFxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjU1NzpcXHQgICAgICAgdm1jc19yZWFkbChHVUVTVF9TWVNFTlRFUl9FU1ApLFxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjU1ODpcXHQgICAgICAgdm1jc19yZWFkMzIoR1VFU1RfU1lTRU5URVJfQ1MpLCB2bWNzX3JlYWRsKEdVRVNUX1NZU0VOVEVSX0VJUCkpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjU1OS1cXHR2bXhfZHVtcF9zZWwoXFxcIkNTOiAgXFxcIiwgR1VFU1RfQ1NfU0VMRUNUT1IpO1xcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NTcwLVxcdGlmICh2bWVudHJ5X2N0bCBcXHUwMDI2IFZNX0VOVFJZX0xPQURfSUEzMl9FRkVSKVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjU3MTpcXHRcXHRwcl9lcnIoXFxcIkVGRVI9IDB4JTAxNmxseFxcXFxuXFxcIiwgdm1jc19yZWFkNjQoR1VFU1RfSUEzMl9FRkVSKSk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NTcyLVxcdGVsc2UgaWYgKGVmZXJfc2xvdCBcXHUwMDNlPSAwKVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NTgxLVxcdGlmICh2bWVudHJ5X2N0bCBcXHUwMDI2IFZNX0VOVFJZX0xPQURfSUEzMl9QQVQpXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NTgyOlxcdFxcdHByX2VycihcXFwiUEFUID0gMHglMDE2bGx4XFxcXG5cXFwiLCB2bWNzX3JlYWQ2NChHVUVTVF9JQTMyX1BBVCkpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjU4My1cXHRwcl9lcnIoXFxcIkRlYnVnQ3RsID0gMHglMDE2bGx4ICBEZWJ1Z0V4Y2VwdGlvbnMgPSAweCUwMTZseFxcXFxuXFxcIixcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY1ODQ6XFx0ICAgICAgIHZtY3NfcmVhZDY0KEdVRVNUX0lBMzJfREVCVUdDVEwpLFxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjU4NTpcXHQgICAgICAgdm1jc19yZWFkbChHVUVTVF9QRU5ESU5HX0RCR19FWENFUFRJT05TKSk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NTg2LVxcdGlmIChjcHVfaGFzX2xvYWRfcGVyZl9nbG9iYWxfY3RybCgpIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY1ODgtXFx0XFx0cHJfZXJyKFxcXCJQZXJmR2xvYkN0bCA9IDB4JTAxNmxseFxcXFxuXFxcIixcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY1ODk6XFx0XFx0ICAgICAgIHZtY3NfcmVhZDY0KEdVRVNUX0lBMzJfUEVSRl9HTE9CQUxfQ1RSTCkpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjU5MC1cXHRpZiAodm1lbnRyeV9jdGwgXFx1MDAyNiBWTV9FTlRSWV9MT0FEX0JORENGR1MpXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NTkxOlxcdFxcdHByX2VycihcXFwiQm5kQ2ZnUyA9IDB4JTAxNmxseFxcXFxuXFxcIiwgdm1jc19yZWFkNjQoR1VFU1RfQk5EQ0ZHUykpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjU5Mi1cXHRwcl9lcnIoXFxcIkludGVycnVwdGliaWxpdHkgPSAlMDh4ICBBY3Rpdml0eVN0YXRlID0gJTA4eFxcXFxuXFxcIixcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY1OTM6XFx0ICAgICAgIHZtY3NfcmVhZDMyKEdVRVNUX0lOVEVSUlVQVElCSUxJVFlfSU5GTyksXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NTk0OlxcdCAgICAgICB2bWNzX3JlYWQzMihHVUVTVF9BQ1RJVklUWV9TVEFURSkpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjU5NS1cXHRpZiAoc2Vjb25kYXJ5X2V4ZWNfY29udHJvbCBcXHUwMDI2IFNFQ09OREFSWV9FWEVDX1ZJUlRVQUxfSU5UUl9ERUxJVkVSWSlcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY1OTYtXFx0XFx0cHJfZXJyKFxcXCJJbnRlcnJ1cHRTdGF0dXMgPSAlMDR4XFxcXG5cXFwiLFxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjU5NzpcXHRcXHQgICAgICAgdm1jc19yZWFkMTYoR1VFU1RfSU5UUl9TVEFUVVMpKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY1OTg6XFx0aWYgKHZtY3NfcmVhZDMyKFZNX0VOVFJZX01TUl9MT0FEX0NPVU5UKSBcXHUwMDNlIDApXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NTk5LVxcdFxcdHZteF9kdW1wX21zcnMoXFxcImd1ZXN0IGF1dG9sb2FkXFxcIiwgXFx1MDAyNnZteC1cXHUwMDNlbXNyX2F1dG9sb2FkLmd1ZXN0KTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2MDA6XFx0aWYgKHZtY3NfcmVhZDMyKFZNX0VYSVRfTVNSX1NUT1JFX0NPVU5UKSBcXHUwMDNlIDApXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NjAxLVxcdFxcdHZteF9kdW1wX21zcnMoXFxcImF1dG9zdG9yZVxcXCIsIFxcdTAwMjZ2bXgtXFx1MDAzZW1zcl9hdXRvc3RvcmUpO1xcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NjA0LVxcdFxcdHByX2VycihcXFwiU19DRVQgPSAweCUwMTZseCwgU1NQID0gMHglMDE2bHgsIFNTUCBUQUJMRSA9IDB4JTAxNmx4XFxcXG5cXFwiLFxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjYwNTpcXHRcXHQgICAgICAgdm1jc19yZWFkbChHVUVTVF9TX0NFVCksIHZtY3NfcmVhZGwoR1VFU1RfU1NQKSxcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2MDY6XFx0XFx0ICAgICAgIHZtY3NfcmVhZGwoR1VFU1RfSU5UUl9TU1BfVEFCTEUpKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY2MDctXFx0cHJfZXJyKFxcXCIqKiogSG9zdCBTdGF0ZSAqKipcXFxcblxcXCIpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjYwOC1cXHRwcl9lcnIoXFxcIlJJUCA9IDB4JTAxNmx4ICBSU1AgPSAweCUwMTZseFxcXFxuXFxcIixcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2MDk6XFx0ICAgICAgIHZtY3NfcmVhZGwoSE9TVF9SSVApLCB2bWNzX3JlYWRsKEhPU1RfUlNQKSk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NjEwLVxcdHByX2VycihcXFwiQ1M9JTA0eCBTUz0lMDR4IERTPSUwNHggRVM9JTA0eCBGUz0lMDR4IEdTPSUwNHggVFI9JTA0eFxcXFxuXFxcIixcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2MTE6XFx0ICAgICAgIHZtY3NfcmVhZDE2KEhPU1RfQ1NfU0VMRUNUT1IpLCB2bWNzX3JlYWQxNihIT1NUX1NTX1NFTEVDVE9SKSxcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2MTI6XFx0ICAgICAgIHZtY3NfcmVhZDE2KEhPU1RfRFNfU0VMRUNUT1IpLCB2bWNzX3JlYWQxNihIT1NUX0VTX1NFTEVDVE9SKSxcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2MTM6XFx0ICAgICAgIHZtY3NfcmVhZDE2KEhPU1RfRlNfU0VMRUNUT1IpLCB2bWNzX3JlYWQxNihIT1NUX0dTX1NFTEVDVE9SKSxcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2MTQ6XFx0ICAgICAgIHZtY3NfcmVhZDE2KEhPU1RfVFJfU0VMRUNUT1IpKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY2MTUtXFx0cHJfZXJyKFxcXCJGU0Jhc2U9JTAxNmx4IEdTQmFzZT0lMDE2bHggVFJCYXNlPSUwMTZseFxcXFxuXFxcIixcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2MTY6XFx0ICAgICAgIHZtY3NfcmVhZGwoSE9TVF9GU19CQVNFKSwgdm1jc19yZWFkbChIT1NUX0dTX0JBU0UpLFxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjYxNzpcXHQgICAgICAgdm1jc19yZWFkbChIT1NUX1RSX0JBU0UpKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY2MTgtXFx0cHJfZXJyKFxcXCJHRFRCYXNlPSUwMTZseCBJRFRCYXNlPSUwMTZseFxcXFxuXFxcIixcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2MTk6XFx0ICAgICAgIHZtY3NfcmVhZGwoSE9TVF9HRFRSX0JBU0UpLCB2bWNzX3JlYWRsKEhPU1RfSURUUl9CQVNFKSk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NjIwLVxcdHByX2VycihcXFwiQ1IwPSUwMTZseCBDUjM9JTAxNmx4IENSND0lMDE2bHhcXFxcblxcXCIsXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NjIxOlxcdCAgICAgICB2bWNzX3JlYWRsKEhPU1RfQ1IwKSwgdm1jc19yZWFkbChIT1NUX0NSMyksXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NjIyOlxcdCAgICAgICB2bWNzX3JlYWRsKEhPU1RfQ1I0KSk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NjIzLVxcdHByX2VycihcXFwiU3lzZW50ZXIgUlNQPSUwMTZseCBDUzpSSVA9JTA0eDolMDE2bHhcXFxcblxcXCIsXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NjI0OlxcdCAgICAgICB2bWNzX3JlYWRsKEhPU1RfSUEzMl9TWVNFTlRFUl9FU1ApLFxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjYyNTpcXHQgICAgICAgdm1jc19yZWFkMzIoSE9TVF9JQTMyX1NZU0VOVEVSX0NTKSxcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2MjY6XFx0ICAgICAgIHZtY3NfcmVhZGwoSE9TVF9JQTMyX1NZU0VOVEVSX0VJUCkpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjYyNy1cXHRpZiAodm1leGl0X2N0bCBcXHUwMDI2IFZNX0VYSVRfTE9BRF9JQTMyX0VGRVIpXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NjI4OlxcdFxcdHByX2VycihcXFwiRUZFUj0gMHglMDE2bGx4XFxcXG5cXFwiLCB2bWNzX3JlYWQ2NChIT1NUX0lBMzJfRUZFUikpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjYyOS1cXHRpZiAodm1leGl0X2N0bCBcXHUwMDI2IFZNX0VYSVRfTE9BRF9JQTMyX1BBVClcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2MzA6XFx0XFx0cHJfZXJyKFxcXCJQQVQgPSAweCUwMTZsbHhcXFxcblxcXCIsIHZtY3NfcmVhZDY0KEhPU1RfSUEzMl9QQVQpKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY2MzEtXFx0aWYgKGNwdV9oYXNfbG9hZF9wZXJmX2dsb2JhbF9jdHJsKCkgXFx1MDAyNlxcdTAwMjZcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjYzMy1cXHRcXHRwcl9lcnIoXFxcIlBlcmZHbG9iQ3RsID0gMHglMDE2bGx4XFxcXG5cXFwiLFxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjYzNDpcXHRcXHQgICAgICAgdm1jc19yZWFkNjQoSE9TVF9JQTMyX1BFUkZfR0xPQkFMX0NUUkwpKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2MzU6XFx0aWYgKHZtY3NfcmVhZDMyKFZNX0VYSVRfTVNSX0xPQURfQ09VTlQpIFxcdTAwM2UgMClcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY2MzYtXFx0XFx0dm14X2R1bXBfbXNycyhcXFwiaG9zdCBhdXRvbG9hZFxcXCIsIFxcdTAwMjZ2bXgtXFx1MDAzZW1zcl9hdXRvbG9hZC5ob3N0KTtcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjYzOC1cXHRcXHRwcl9lcnIoXFxcIlNfQ0VUID0gMHglMDE2bHgsIFNTUCA9IDB4JTAxNmx4LCBTU1AgVEFCTEUgPSAweCUwMTZseFxcXFxuXFxcIixcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2Mzk6XFx0XFx0ICAgICAgIHZtY3NfcmVhZGwoSE9TVF9TX0NFVCksIHZtY3NfcmVhZGwoSE9TVF9TU1ApLFxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjY0MDpcXHRcXHQgICAgICAgdm1jc19yZWFkbChIT1NUX0lOVFJfU1NQX1RBQkxFKSk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NjQxLVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NjQ3LVxcdHByX2VycihcXFwiRXhjZXB0aW9uQml0bWFwPSUwOHggUEZFQ21hc2s9JTA4eCBQRkVDbWF0Y2g9JTA4eFxcXFxuXFxcIixcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2NDg6XFx0ICAgICAgIHZtY3NfcmVhZDMyKEVYQ0VQVElPTl9CSVRNQVApLFxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjY0OTpcXHQgICAgICAgdm1jc19yZWFkMzIoUEFHRV9GQVVMVF9FUlJPUl9DT0RFX01BU0spLFxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjY1MDpcXHQgICAgICAgdm1jc19yZWFkMzIoUEFHRV9GQVVMVF9FUlJPUl9DT0RFX01BVENIKSk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NjUxLVxcdHByX2VycihcXFwiVk1FbnRyeTogaW50cl9pbmZvPSUwOHggZXJyY29kZT0lMDh4IGlsZW49JTA4eFxcXFxuXFxcIixcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2NTI6XFx0ICAgICAgIHZtY3NfcmVhZDMyKFZNX0VOVFJZX0lOVFJfSU5GT19GSUVMRCksXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NjUzOlxcdCAgICAgICB2bWNzX3JlYWQzMihWTV9FTlRSWV9FWENFUFRJT05fRVJST1JfQ09ERSksXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NjU0OlxcdCAgICAgICB2bWNzX3JlYWQzMihWTV9FTlRSWV9JTlNUUlVDVElPTl9MRU4pKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY2NTUtXFx0cHJfZXJyKFxcXCJWTUV4aXQ6IGludHJfaW5mbz0lMDh4IGVycmNvZGU9JTA4eCBpbGVuPSUwOHhcXFxcblxcXCIsXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NjU2OlxcdCAgICAgICB2bWNzX3JlYWQzMihWTV9FWElUX0lOVFJfSU5GTyksXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NjU3OlxcdCAgICAgICB2bWNzX3JlYWQzMihWTV9FWElUX0lOVFJfRVJST1JfQ09ERSksXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NjU4OlxcdCAgICAgICB2bWNzX3JlYWQzMihWTV9FWElUX0lOU1RSVUNUSU9OX0xFTikpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjY1OS1cXHRwcl9lcnIoXFxcIiAgICAgICAgcmVhc29uPSUwOHggcXVhbGlmaWNhdGlvbj0lMDE2bHhcXFxcblxcXCIsXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NjYwOlxcdCAgICAgICB2bWNzX3JlYWQzMihWTV9FWElUX1JFQVNPTiksIHZtY3NfcmVhZGwoRVhJVF9RVUFMSUZJQ0FUSU9OKSk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NjYxLVxcdHByX2VycihcXFwiSURUVmVjdG9yaW5nOiBpbmZvPSUwOHggZXJyY29kZT0lMDh4XFxcXG5cXFwiLFxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjY2MjpcXHQgICAgICAgdm1jc19yZWFkMzIoSURUX1ZFQ1RPUklOR19JTkZPX0ZJRUxEKSxcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2NjM6XFx0ICAgICAgIHZtY3NfcmVhZDMyKElEVF9WRUNUT1JJTkdfRVJST1JfQ09ERSkpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjY2NDpcXHRwcl9lcnIoXFxcIlRTQyBPZmZzZXQgPSAweCUwMTZsbHhcXFxcblxcXCIsIHZtY3NfcmVhZDY0KFRTQ19PRkZTRVQpKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY2NjUtXFx0aWYgKHNlY29uZGFyeV9leGVjX2NvbnRyb2wgXFx1MDAyNiBTRUNPTkRBUllfRVhFQ19UU0NfU0NBTElORylcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY2NjYtXFx0XFx0cHJfZXJyKFxcXCJUU0MgTXVsdGlwbGllciA9IDB4JTAxNmxseFxcXFxuXFxcIixcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2Njc6XFx0XFx0ICAgICAgIHZtY3NfcmVhZDY0KFRTQ19NVUxUSVBMSUVSKSk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NjY4LVxcdGlmIChjcHVfYmFzZWRfZXhlY19jdHJsIFxcdTAwMjYgQ1BVX0JBU0VEX1RQUl9TSEFET1cpIHtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY2NjktXFx0XFx0aWYgKHNlY29uZGFyeV9leGVjX2NvbnRyb2wgXFx1MDAyNiBTRUNPTkRBUllfRVhFQ19WSVJUVUFMX0lOVFJfREVMSVZFUlkpIHtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY2NzA6XFx0XFx0XFx0dTE2IHN0YXR1cyA9IHZtY3NfcmVhZDE2KEdVRVNUX0lOVFJfU1RBVFVTKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY2NzEtXFx0XFx0XFx0cHJfZXJyKFxcXCJTVkl8UlZJID0gJTAyeHwlMDJ4IFxcXCIsIHN0YXR1cyBcXHUwMDNlXFx1MDAzZSA4LCBzdGF0dXMgXFx1MDAyNiAweGZmKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY2NzItXFx0XFx0fVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjY3MzpcXHRcXHRwcl9jb250KFxcXCJUUFIgVGhyZXNob2xkID0gMHglMDJ4XFxcXG5cXFwiLCB2bWNzX3JlYWQzMihUUFJfVEhSRVNIT0xEKSk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02Njc0LVxcdFxcdGlmIChzZWNvbmRhcnlfZXhlY19jb250cm9sIFxcdTAwMjYgU0VDT05EQVJZX0VYRUNfVklSVFVBTElaRV9BUElDX0FDQ0VTU0VTKVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjY3NTpcXHRcXHRcXHRwcl9lcnIoXFxcIkFQSUMtYWNjZXNzIGFkZHIgPSAweCUwMTZsbHggXFxcIiwgdm1jc19yZWFkNjQoQVBJQ19BQ0NFU1NfQUREUikpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjY3NjpcXHRcXHRwcl9jb250KFxcXCJ2aXJ0LUFQSUMgYWRkciA9IDB4JTAxNmxseFxcXFxuXFxcIiwgdm1jc19yZWFkNjQoVklSVFVBTF9BUElDX1BBR0VfQUREUikpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjY3Ny1cXHR9XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02Njc4LVxcdGlmIChwaW5fYmFzZWRfZXhlY19jdHJsIFxcdTAwMjYgUElOX0JBU0VEX1BPU1RFRF9JTlRSKVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjY3OTpcXHRcXHRwcl9lcnIoXFxcIlBvc3RlZEludHJWZWMgPSAweCUwMnhcXFxcblxcXCIsIHZtY3NfcmVhZDE2KFBPU1RFRF9JTlRSX05WKSk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NjgwLVxcdGlmICgoc2Vjb25kYXJ5X2V4ZWNfY29udHJvbCBcXHUwMDI2IFNFQ09OREFSWV9FWEVDX0VOQUJMRV9FUFQpKVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjY4MTpcXHRcXHRwcl9lcnIoXFxcIkVQVCBwb2ludGVyID0gMHglMDE2bGx4XFxcXG5cXFwiLCB2bWNzX3JlYWQ2NChFUFRfUE9JTlRFUikpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjY4Mi1cXHRpZiAoc2Vjb25kYXJ5X2V4ZWNfY29udHJvbCBcXHUwMDI2IFNFQ09OREFSWV9FWEVDX1BBVVNFX0xPT1BfRVhJVElORylcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY2ODMtXFx0XFx0cHJfZXJyKFxcXCJQTEUgR2FwPSUwOHggV2luZG93PSUwOHhcXFxcblxcXCIsXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2Njg0OlxcdFxcdCAgICAgICB2bWNzX3JlYWQzMihQTEVfR0FQKSwgdm1jc19yZWFkMzIoUExFX1dJTkRPVykpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjY4NS1cXHRpZiAoc2Vjb25kYXJ5X2V4ZWNfY29udHJvbCBcXHUwMDI2IFNFQ09OREFSWV9FWEVDX0VOQUJMRV9WUElEKVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjY4Ni1cXHRcXHRwcl9lcnIoXFxcIlZpcnR1YWwgcHJvY2Vzc29yIElEID0gMHglMDR4XFxcXG5cXFwiLFxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NjY4NzpcXHRcXHQgICAgICAgdm1jc19yZWFkMTYoVklSVFVBTF9QUk9DRVNTT1JfSUQpKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY2ODgtXFx0aWYgKHNlY29uZGFyeV9leGVjX2NvbnRyb2wgXFx1MDAyNiBTRUNPTkRBUllfRVhFQ19FUFRfVklPTEFUSU9OX1ZFKSB7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02Njg5LVxcdFxcdHN0cnVjdCB2bXhfdmVfaW5mb3JtYXRpb24gKnZlX2luZm8gPSB2bXgtXFx1MDAzZXZlX2luZm87XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2NjkwOlxcdFxcdHU2NCB2ZV9pbmZvX3BhID0gdm1jc19yZWFkNjQoVkVfSU5GT1JNQVRJT05fQUREUkVTUyk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02NjkxLVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYz02NzEyPXN0YXRpYyBpbnQgX192bXhfaGFuZGxlX2V4aXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBmYXN0cGF0aF90IGV4aXRfZmFzdHBhdGgpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY3OTktXFx0XFx0dmNwdS1cXHUwMDNlcnVuLVxcdTAwM2VmYWlsX2VudHJ5LmhhcmR3YXJlX2VudHJ5X2ZhaWx1cmVfcmVhc29uXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2ODAwOlxcdFxcdFxcdD0gdm1jc19yZWFkMzIoVk1fSU5TVFJVQ1RJT05fRVJST1IpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjgwMS1cXHRcXHR2Y3B1LVxcdTAwM2VydW4tXFx1MDAzZWZhaWxfZW50cnkuY3B1ID0gdmNwdS1cXHUwMDNlYXJjaC5sYXN0X3ZtZW50cnlfY3B1O1xcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYz03MDMwPXZvaWQgdm14X2h3YXBpY19pc3JfdXBkYXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgaW50IG1heF9pc3IpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTcwNDQtXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo3MDQ1OlxcdHN0YXR1cyA9IHZtY3NfcmVhZDE2KEdVRVNUX0lOVFJfU1RBVFVTKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTcwNDYtXFx0b2xkID0gc3RhdHVzIFxcdTAwM2VcXHUwMDNlIDg7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTcwNTQ9c3RhdGljIHZvaWQgdm14X3NldF9ydmkoaW50IHZlY3RvcilcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNzA2MS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjcwNjI6XFx0c3RhdHVzID0gdm1jc19yZWFkMTYoR1VFU1RfSU5UUl9TVEFUVVMpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNzA2My1cXHRvbGQgPSAodTgpc3RhdHVzIFxcdTAwMjYgMHhmZjtcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM9NzI0Nj1zdGF0aWMgdm9pZCB2bXhfcmVjb3Zlcl9ubWlfYmxvY2tpbmcoc3RydWN0IHZjcHVfdm14ICp2bXgpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTcyNzctXFx0XFx0XFx0dm14LVxcdTAwM2Vsb2FkZWRfdm1jcy1cXHUwMDNlbm1pX2tub3duX3VubWFza2VkID1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjcyNzg6XFx0XFx0XFx0XFx0ISh2bWNzX3JlYWQzMihHVUVTVF9JTlRFUlJVUFRJQklMSVRZX0lORk8pXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy03Mjc5LVxcdFxcdFxcdFxcdCAgXFx1MDAyNiBHVUVTVF9JTlRSX1NUQVRFX05NSSk7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTcyODY9c3RhdGljIHZvaWQgX192bXhfY29tcGxldGVfaW50ZXJydXB0cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTczMTktXFx0Y2FzZSBJTlRSX1RZUEVfU09GVF9FWENFUFRJT046XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo3MzIwOlxcdFxcdHZjcHUtXFx1MDAzZWFyY2guZXZlbnRfZXhpdF9pbnN0X2xlbiA9IHZtY3NfcmVhZDMyKGluc3RyX2xlbl9maWVsZCk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy03MzIxLVxcdFxcdGZhbGx0aHJvdWdoO1xcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy03MzI1LVxcdFxcdGlmIChpZHRfdmVjdG9yaW5nX2luZm8gXFx1MDAyNiBWRUNUT1JJTkdfSU5GT19ERUxJVkVSX0NPREVfTUFTSylcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjczMjY6XFx0XFx0XFx0ZXJyb3JfY29kZSA9IHZtY3NfcmVhZDMyKGVycm9yX2NvZGVfZmllbGQpO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNzMyNy1cXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNzMzMy1cXHRjYXNlIElOVFJfVFlQRV9TT0ZUX0lOVFI6XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo3MzM0OlxcdFxcdHZjcHUtXFx1MDAzZWFyY2guZXZlbnRfZXhpdF9pbnN0X2xlbiA9IHZtY3NfcmVhZDMyKGluc3RyX2xlbl9maWVsZCk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy03MzM1LVxcdFxcdGZhbGx0aHJvdWdoO1xcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYz03MzUxPXZvaWQgdm14X2NhbmNlbF9pbmplY3Rpb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy03MzUzLVxcdF9fdm14X2NvbXBsZXRlX2ludGVycnVwdHModmNwdSxcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjczNTQ6XFx0XFx0XFx0XFx0ICB2bWNzX3JlYWQzMihWTV9FTlRSWV9JTlRSX0lORk9fRklFTEQpLFxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNzM1NS1cXHRcXHRcXHRcXHQgIFZNX0VOVFJZX0lOU1RSVUNUSU9OX0xFTixcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM9NzM4Nz1zdGF0aWMgdm9pZCB2bXhfcmVmcmVzaF9ndWVzdF9wZXJmX2dsb2JhbF9jb250cm9sKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNzQwNi1cXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTI6MDU6MTcuMzM5NDEzNjcxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTA5NTExNjIyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIENvbXBpbGVyIFJlb3JkZXJpbmcgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRhcmdldGluZyBhIHByZXR0eSBzcGVjaWZpYyBpc3N1ZTogY29tcGlsZXIgcmVvcmRlcmluZyBhcm91bmQgdGhvc2UgY3J1Y2lhbCBWTUNTIHJlYWQvd3JpdGUgb3BlcmF0aW9ucy4gVGhhdCdzIGEgY2xhc3NpYyBjYXVzZSBvZiBoYXJkLXRvLWRlYnVnIGJ1Z3MsIGVzcGVjaWFsbHkgaW4gYSBwZXJmb3JtYW5jZS1jcml0aWNhbCBhcmVhIGxpa2UgdmlydHVhbGl6YXRpb24uIEl0IGxvb2tzIGxpa2UgdGhlIGZpeCBpbnZvbHZlcyB0d2Vha2luZyBgX192bWNzX3JlYWRsYCBhbmQgdGhlIGB2bXhfYXNtMWAgLyBgdm14X2FzbTJgIG1hY3JvcyB3aXRoaW4gYGFyY2gveDg2L2t2bS92bXgvdm14X29wcy5oYC4gRnVuY3Rpb25hbGx5LCB0aGlzIHNlZW1zIHNvdW5kLiBBZGRyZXNzaW5nIHBvdGVudGlhbCBtZW1vcnkgYWNjZXNzIG9wdGltaXphdGlvbiBvciByZW9yZGVyaW5nIGlzc3VlcyBpcyBkZWZpbml0ZWx5IHRoZSByaWdodCBhcHByb2FjaCBoZXJlLiBXZSBuZWVkIHRvIGZvY3VzIGZ1enppbmcgZWZmb3J0cyBvbiB0aGUgS1ZNIFZNWCBjb21wb25lbnRzIHRvIHByb3Blcmx5IHZhbGlkYXRlIHRoaXMgZml4LlxuXG5HaXZlbiB0aGF0LCBJIHNob3VsZCBjb25jZW50cmF0ZSBvbiB0aGUga2V5IFZNWCBvcGVyYXRpb25zIGR1cmluZyBmdXp6aW5nLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBsb29rIGF0IGZ1bmN0aW9ucyBsaWtlIGB2bXhfaGFuZGxlX2V4aXRgLCBgaGFuZGxlX2V4Y2VwdGlvbl9ubWlgLCBhbmQgYGhhbmRsZV9lcHRfdmlvbGF0aW9uYC4gVGhlbiwgbGV0J3MgbmFpbCBkb3duIHRoZSBtYWluIHJ1biBsb29wLiBJdCdzIGxpa2VseSBgdm14X3ZjcHVfcnVuYCwgYnV0IEkgc2hvdWxkIHZlcmlmeSB0aGF0IGJ5IGNoZWNraW5nIGBhcmNoL3g4Ni9rdm0vdm14L3ZteC5jYC4gVGhhdCBzaG91bGQgZ2l2ZSB1cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIGNvbnN0cnVjdGluZyBlZmZlY3RpdmUgZnV6eiB0YXJnZXRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDkwNiwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxMjowNToyMi40MzQ1MzI1OFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Njc3MjU0NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2bXhfdmNwdV9ydW5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL3ZteC92bXguY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTUzNTI9c3RhdGljIGludCBoYW5kbGVfbWFjaGluZV9jaGVjayhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy01MzUzLXtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjUzNTQ6XFx0LyogaGFuZGxlZCBieSB2bXhfdmNwdV9ydW4oKSAqL1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNTM1NS1cXHRyZXR1cm4gMTtcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM9NTQyNT1zdGF0aWMgaW50IGhhbmRsZV9leGNlcHRpb25fbm1pKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNTQzNy1cXHQgKiBNYWNoaW5lIGNoZWNrcyBhcmUgaGFuZGxlZCBieSBoYW5kbGVfZXhjZXB0aW9uX2lycW9mZigpLCBvciBieVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NTQzODpcXHQgKiB2bXhfdmNwdV9ydW4oKSBpZiBhICNNQyBvY2N1cnMgb24gVk0tRW50cnkuICBOTUlzIGFyZSBoYW5kbGVkIGJ5XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy01NDM5LVxcdCAqIHZteF92Y3B1X2VudGVyX2V4aXQoKS5cXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM9NzQ4Mz1zdGF0aWMgbm9pbnN0ciB2b2lkIHZteF92Y3B1X2VudGVyX2V4aXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy03NDk2LVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NzQ5NzpcXHR2bXgtXFx1MDAzZWZhaWwgPSBfX3ZteF92Y3B1X3J1bih2bXgsIGZsYWdzKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTc0OTgtXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTc1MjAtXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo3NTIxOmZhc3RwYXRoX3Qgdm14X3ZjcHVfcnVuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IHJ1bl9mbGFncylcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTc1MjIte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxMjowNToyMi40OTEzMTA0MTVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjQzMzI3Mjc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBWTVggRXhpdCBIYW5kbGVyKipcblxuT2theSwgc28gd2UncmUgdGFsa2luZyBhYm91dCBoYW5kbGluZyBWTSBleGl0cyBpbiB0aGUgVk1YIGNvbnRleHQsIGFuZCB0aGF0IHVzdWFsbHkgbWVhbnMgYSB0cmlwIGludG8gYGFyY2gveDg2L2t2bS92bXgvdm14LmNgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIGB2bXhfaGFuZGxlX2V4aXRgLiBUaGF0J3Mgd2hlcmUgdGhlIHJ1YmJlciBtZWV0cyB0aGUgcm9hZCwgd2hlcmUgdGhlIGtlcm5lbCBqdW1wcyB0byBwcm9jZXNzIHRoZSByZWFzb25zIGZvciB0aGUgZ3Vlc3QncyBoYWx0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCAqaG93KiB0aGUgaGFyZHdhcmUgc2lnbmFsZWQgYW4gZXhpdCwgKndoeSogaXQgZGlkLCBhbmQgKndoYXQqIG5lZWRzIHRvIGJlIGRvbmUgb24gdGhlIGhvc3QgdG8gcHJvcGVybHkgZW11bGF0ZSBhbmQgdGhlbiByZXN1bWUuIFRoZSBgdm14X2hhbmRsZV9leGl0YCBmdW5jdGlvbiBpcyB0aGUgY2VudHJhbCBwaWVjZSBvZiB0aGF0IHB1enpsZS4gSXQncyB0aGUgZGlzcGF0Y2hlciwgdGhlIHRyYWZmaWMgY29udHJvbGxlciBmb3IgYWxsIHRoZXNlIHZhcmlvdXMgZXZlbnRzIHRoYXQgY2FuIG9jY3VyIGluIHRoZSBWTVggZW52aXJvbm1lbnQuIEknbSBleHBlY3RpbmcgdG8gZmluZCB0aGUgbG9naWMgdGhhdCBkZXRlcm1pbmVzIHRoZSBleGl0IHJlYXNvbiAocGFnZSBmYXVsdCwgaW50ZXJydXB0IHdpbmRvdywgbmVzdGVkIHZpcnR1YWxpemF0aW9uIGV2ZW50LCBldGMuKSBhbmQgdGhlbiBkaXNwYXRjaGVzIHRvIHRoZSBjb3JyZWN0IGhhbmRsZXIuIEknbGwgYmUgbG9va2luZyBmb3IgYW55IGhpbnRzIG9uIGhvdyB0aGUgVkNQVSBpcyBzYXZlZCBhbmQgcmVzdG9yZWQgaGVyZSB0b28sIGJlY2F1c2UgdGhlIGNvbnRleHQgc3dpdGNoIGlzIHRoZSBtYWluIGNoYWxsZW5nZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE5NTksIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxMjowNToyNi4xMzQ2NDE0NzFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzOTc5OTk2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZteF9oYW5kbGVfZXhpdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0vdm14L3ZteC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS92bXgvdm14LmM9NTQyNT1zdGF0aWMgaW50IGhhbmRsZV9leGNlcHRpb25fbm1pKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNTQ5MC1cXHQgKiBNTUlPLCBpdCBpcyBiZXR0ZXIgdG8gcmVwb3J0IGFuIGludGVybmFsIGVycm9yLlxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NTQ5MTpcXHQgKiBTZWUgdGhlIGNvbW1lbnRzIGluIHZteF9oYW5kbGVfZXhpdC5cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTU0OTItXFx0ICovXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTYyNzQ9c3RhdGljIGludCBoYW5kbGVfYnVzX2xvY2tfdm1leGl0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjI3OC1cXHQgKiBWTS1FeGl0cy4gVW5jb25kaXRpb25hbGx5IHNldCB0aGUgZmxhZyBoZXJlIGFuZCBsZWF2ZSB0aGUgaGFuZGxpbmcgdG9cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjYyNzk6XFx0ICogdm14X2hhbmRsZV9leGl0KCkuXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02MjgwLVxcdCAqL1xcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYz02NTA3PXZvaWQgZHVtcF92bWNzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjcxMS0gKi9cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjY3MTI6c3RhdGljIGludCBfX3ZteF9oYW5kbGVfZXhpdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGZhc3RwYXRoX3QgZXhpdF9mYXN0cGF0aClcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY3MTMte1xcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02ODcwLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6Njg3MTppbnQgdm14X2hhbmRsZV9leGl0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgZmFzdHBhdGhfdCBleGl0X2Zhc3RwYXRoKVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjg3Mi17XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2ODczOlxcdGludCByZXQgPSBfX3ZteF9oYW5kbGVfZXhpdCh2Y3B1LCBleGl0X2Zhc3RwYXRoKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTY4NzQtXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTcxODQ9c3RhdGljIHZvaWQgaGFuZGxlX2V4dGVybmFsX2ludGVycnVwdF9pcnFvZmYoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy03MTk5LVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NzIwMDp2b2lkIHZteF9oYW5kbGVfZXhpdF9pcnFvZmYoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNzIwMS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDEyOjA1OjI2LjE4ODYyNzg5N1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODkyNTU1MjQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqTXkgQW5hbHlzaXMgb2YgdGhlIEtWTS9WTVggQ29kZSBQYXRoKipcblxuUmlnaHQsIHNvIEknbSBsb29raW5nIGF0IGhvdyB0aGlzIGFsbCBmaXRzIHRvZ2V0aGVyLiBgdm14X3ZjcHVfcnVuYCwgYHZteF9oYW5kbGVfZXhpdGAsIGBfX3ZteF9oYW5kbGVfZXhpdGAsIGBoYW5kbGVfZXB0X3Zpb2xhdGlvbmAsIGFuZCBgaGFuZGxlX2V4Y2VwdGlvbl9ubWlgIGFyZSBkZWZpbml0ZWx5IGtleSBlbnRyeSBwb2ludHMgb3IgY29yZSBmdW5jdGlvbnMgSSBuZWVkIHRvIGtlZXAgaW4gbWluZC4gVGhvc2Ugc3ltYm9scyBhcmUgd2hlcmUgdGhlIHJ1YmJlciBtZWV0cyB0aGUgcm9hZCwgdGhlIGNyaXRpY2FsIGp1bmN0aW9ucyBpbiB0aGUgVk1YIGV4ZWN1dGlvbiBmbG93LiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGVpciBpbnRlcmFjdGlvbnMgaW50aW1hdGVseS5cblxuQnV0IEkgY2FuJ3QganVzdCBkaXZlIGludG8gdGhlIGNvZGUgd2l0aG91dCBjb250ZXh0LiBXaGF0IGFib3V0IHRoZSBidWlsZCBjb25maWd1cmF0aW9uPyBLY29uZmlnIGlzIHRoZSBnYXRla2VlcGVyLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEtWTSBhbmQgS1ZNX0lOVEVMIGFyZSBlbmFibGVkLiBMZXQgbWUgcHVsbCB1cCBgYXJjaC94ODYva3ZtL0tjb25maWdgIGFuZCBzZWUgd2hhdCB0aGUgYnVpbGQgc2V0dGluZ3MgYXJlIGFuZCBob3cgdGhpcyBpcyBhbGwgY29uZmlndXJlZC4gVGhhdCBzaG91bGQgdGVsbCBtZSB3aGljaCBjb2RlIHBhdGhzIGFyZSBldmVuIHJlbGV2YW50IGZvciBteSBhbmFseXNpcy4gVW5kZXJzdGFuZGluZyB0aGUgYnVpbGQgb3B0aW9ucyBpcyBjcnVjaWFsIHRvIHVuZGVyc3RhbmRpbmcgdGhlIHJlbGV2YW50IGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMDMwLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTI6MDU6MzAuMDgxMTg1NjkzWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzAyODI3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgS1ZNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L2t2bS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTktXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTV9YODZcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMS1cXHRkZWZfdHJpc3RhdGUgS1ZNIGlmIChLVk1fSU5URUwgIT0gbiB8fCBLVk1fQU1EICE9IG4pXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy01MS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo1Mjpjb25maWcgS1ZNXFxuYXJjaC94ODYva3ZtL0tjb25maWctNTMtXFx0dHJpc3RhdGUgXFxcIktlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTY4LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjY5OmNvbmZpZyBLVk1fV0VSUk9SXFxuYXJjaC94ODYva3ZtL0tjb25maWctNzAtXFx0Ym9vbCBcXFwiQ29tcGlsZSBLVk0gd2l0aCAtV2Vycm9yXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctODItXFxuYXJjaC94ODYva3ZtL0tjb25maWc6ODM6Y29uZmlnIEtWTV9TV19QUk9URUNURURfVk1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy04NC1cXHRib29sIFxcXCJFbmFibGUgc3VwcG9ydCBmb3IgS1ZNIHNvZnR3YXJlLXByb3RlY3RlZCBWTXNcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy05NS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo5Njpjb25maWcgS1ZNX0lOVEVMXFxuYXJjaC94ODYva3ZtL0tjb25maWctOTctXFx0dHJpc3RhdGUgXFxcIktWTSBmb3IgSW50ZWwgKGFuZCBjb21wYXRpYmxlKSBwcm9jZXNzb3JzIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMDYtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTA3OmNvbmZpZyBLVk1fSU5URUxfUFJPVkVfVkVcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMDgtICAgICAgICBib29sIFxcXCJDaGVjayB0aGF0IGd1ZXN0cyBkbyBub3QgcmVjZWl2ZSAjVkUgZXhjZXB0aW9uc1xcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnPTEyMj1jb25maWcgWDg2X1NHWF9LVk1cXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEzMy1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxMzQ6Y29uZmlnIEtWTV9JTlRFTF9URFhcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMzUtXFx0Ym9vbCBcXFwiSW50ZWwgVHJ1c3QgRG9tYWluIEV4dGVuc2lvbnMgKFREWCkgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0NS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNDY6Y29uZmlnIEtWTV9BTURcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDctXFx0dHJpc3RhdGUgXFxcIktWTSBmb3IgQU1EIHByb2Nlc3NvcnMgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE1NS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNTY6Y29uZmlnIEtWTV9BTURfU0VWXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTU3LVxcdGJvb2wgXFxcIkFNRCBTZWN1cmUgRW5jcnlwdGVkIFZpcnR1YWxpemF0aW9uIChTRVYpIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNzEtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTcyOmNvbmZpZyBLVk1fSU9BUElDXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTczLVxcdGJvb2wgXFxcIkkvTyBBUElDLCBQSUMsIGFuZCBQSVQgZW11bGF0aW9uXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTgxLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE4Mjpjb25maWcgS1ZNX1NNTVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE4My1cXHRib29sIFxcXCJTeXN0ZW0gTWFuYWdlbWVudCBNb2RlIGVtdWxhdGlvblxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5Mi1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxOTM6Y29uZmlnIEtWTV9IWVBFUlZcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOTQtXFx0Ym9vbCBcXFwiU3VwcG9ydCBmb3IgTWljcm9zb2Z0IEh5cGVyLVYgZW11bGF0aW9uXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjA2LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIwNzpjb25maWcgS1ZNX1hFTlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIwOC1cXHRib29sIFxcXCJTdXBwb3J0IGZvciBYZW4gaHlwZXJjYWxsIGludGVyZmFjZVxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxNS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMTY6Y29uZmlnIEtWTV9QUk9WRV9NTVVcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMTctXFx0Ym9vbCBcXFwiUHJvdmUgS1ZNIE1NVSBjb3JyZWN0bmVzc1xcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIyOC1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMjk6Y29uZmlnIEtWTV9FWFRFUk5BTF9XUklURV9UUkFDS0lOR1xcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzMC1cXHRib29sXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjMxLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIzMjpjb25maWcgS1ZNX01BWF9OUl9WQ1BVU1xcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzMy1cXHRpbnQgXFxcIk1heGltdW0gbnVtYmVyIG9mIHZDUFVzIHBlciBLVk0gZ3Vlc3RcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDEyOjA1OjMwLjEzODIxODQzOFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MjMxOTk2MTM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEZ1enppbmcgU3RyYXRlZ3kgZm9yIFRoaXMgS1ZNIFZNWCBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggdGhhdCBpbnRyb2R1Y2VzIGEgXCJtZW1vcnlcIiBjbG9iYmVyIGluIHRoZSBpbmxpbmUgYXNzZW1ibHkgZm9yIFZNQ1MgcmVhZHMgYW5kIHdyaXRlcyB3aXRoaW4gS1ZNIFZNWC4gVGhpcyBpcyBpbnRlcmVzdGluZyBiZWNhdXNlIGl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0J3MgKnNwZWNpZmljYWxseSogYWltZWQgYXQgcHJldmVudGluZyBjb21waWxlciBvcHRpbWl6YXRpb25zIHRoYXQgY291bGQgY2F1c2Ugc3VidGxlLCBoYXJkLXRvLWRlYnVnIGJ1Z3MgaW4gS1ZNIGV4ZWN1dGlvbi4gVGhhdCBzY3JlYW1zIFwiZnV6emluZyB0YXJnZXRcIiB0byBtZS5cblxuRmlyc3QsIHRoZSBjb25maWdzLiBMb29rcyBsaWtlIHdlIG5lZWQgYEtWTWAgYW5kIGBLVk1fSU5URUxgIGVuYWJsZWQuIEdvb2QuIEknbSBnb2luZyB0byBqdXN0IHJvbGwgd2l0aCBgS1ZNX0lOVEVMYCBzaW5jZSBpdCdzIHN1ZmZpY2llbnQuXG5cbk5vdywgbGV0J3MgbmFpbCBkb3duIHRoZSBjcml0aWNhbCBmdW5jdGlvbnMuIFRoaXMgcGF0Y2ggdG91Y2hlcyBWTUNTIHJlYWRzIGFuZCB3cml0ZXMsIHdoaWNoIG1lYW5zIEkgd2FudCB0byBmb2N1cyBvbiB0aGUgZW50cnkgcG9pbnRzIGFuZCB0aGUgaGFuZGxlcnMgdGhhdCBpbnRlcmFjdCB3aXRoIHRoZSBWTUNTIGRpcmVjdGx5LiBJbml0aWFsbHksIEkgd2FzIHRoaW5raW5nIGB2bXhfdmNwdV9ydW5gLCBgdm14X2hhbmRsZV9leGl0YCwgYF9fdm14X2hhbmRsZV9leGl0YCwgYGhhbmRsZV9lcHRfdmlvbGF0aW9uYCwgYW5kIGBoYW5kbGVfZXhjZXB0aW9uX25taWAgYXJlIHByaW1lIHRhcmdldHMuXG5cbmB2bXhfdmNwdV9ydW5gIHNlZW1zIGxpa2UgYSBzb2xpZCBjaG9pY2Ugc2luY2UgaXQncyB0aGUgbWFpbiBmdW5jdGlvbiB0byBlbnRlciB0aGUgVk1YIGV4ZWN1dGlvbiwgc28gSSdtIGdvaW5nIHRvIGtlZXAgaXQuIFllcywgaXQncyBgZmFzdHBhdGhfdCB2bXhfdmNwdV9ydW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgcnVuX2ZsYWdzKWAuIFxuXG5JJ3ZlIGFsc28gZ290IGB2bXhfaGFuZGxlX2V4aXRgLCBhcyBpdCB3aWxsIGhhbmRsZSBhbnkgZXhpdHMgZHVyaW5nIHRoZSBleGVjdXRpb24uXG5cbkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayBmb3IgYW55IG90aGVyIGZ1bmN0aW9ucyBpbiB0aGlzIHNwYWNlLiBBaCwgdGhlcmUgYXJlIGEgZmV3IG1vcmU6IGB2bXhfc2V0X2ludGVycnVwdF9zaGFkb3dgLCBgdm14X2dldF9yZmxhZ3NgLCBgdm14X2dldF9pbnRlcnJ1cHRfc2hhZG93YCwgYHZteF9pbmplY3RfZXhjZXB0aW9uYC4gV2hpbGUgaW50ZXJlc3RpbmcsIGB2bXhfdmNwdV9ydW5gIGFuZCBgdm14X2hhbmRsZV9leGl0YCBhcmUgdGhlIGJpZyBvbmVzLiBUaGV5IGFyZSB0aGUgY29yZSBvZiBWTVggZXhlY3V0aW9uIGFuZCBleGl0LCBhbmQgdGh1cyByZWx5IGhlYXZpbHkgb24gdGhlIFZNQ1MgcmVhZHMgYW5kIHdyaXRlcy5cblxuU28sIGxldCdzIHJlZmluZSB0aG9zZSBgRm9jdXNTeW1ib2xzYCBhZ2FpbjpcblxuKiAgIGB2bXhfdmNwdV9ydW5gXG4qICAgYHZteF9oYW5kbGVfZXhpdGBcbiogICBgX192bXhfaGFuZGxlX2V4aXRgXG4qICAgYGhhbmRsZV9lcHRfdmlvbGF0aW9uYFxuKiAgIGBoYW5kbGVfZXhjZXB0aW9uX25taWBcblxuWWVhaCwgdGhpcyBpcyBsb29raW5nIGxpa2UgYSBzb2xpZCBzZXQgdG8gc3RhcnQgd2l0aC4gSSdsbCBmbGFnIHRoaXMgYXMgXCJXb3J0aEZ1enppbmc6IHRydWVcIiBiZWNhdXNlIGNvbXBpbGVyIHJlb3JkZXJpbmcgYnVncyBhcmUgZXhhY3RseSB0aGUgdHlwZSBvZiBzdWJ0bGUgaXNzdWVzIHRoYXQgZnV6emluZyBleGNlbHMgYXQgZmluZGluZy4gVGltZSB0byBnbyBhaGVhZCBhbmQgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ1OTUsIk91dHB1dFRva2VucyI6MTQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDEyOjA1OjM5LjM3MDIxNzg3M1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc4MTM5MjI0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIixcbiAgICBcIktWTV9JTlRFTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZteF92Y3B1X3J1blwiLFxuICAgIFwidm14X2hhbmRsZV9leGl0XCIsXG4gICAgXCJfX3ZteF9oYW5kbGVfZXhpdFwiLFxuICAgIFwiaGFuZGxlX2VwdF92aW9sYXRpb25cIixcbiAgICBcImhhbmRsZV9leGNlcHRpb25fbm1pXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIFxcXCJtZW1vcnlcXFwiIGNsb2JiZXIgdG8gaW5saW5lIGFzc2VtYmx5IGZvciBWTUNTIHJlYWRzIGFuZCB3cml0ZXMgaW4gS1ZNIFZNWC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgcHJldmVudHMgY29tcGlsZXIgcmVvcmRlcmluZyBhbmQgY2FjaGluZyBvZiBtZW1vcnkgdmFsdWVzIGFyb3VuZCBWTUNTIG9wZXJhdGlvbnMsIHdoaWNoIGNhbiBsZWFkIHRvIHN1YnRsZSBidWdzIGluIEtWTSBleGVjdXRpb24gZmxvdy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIixcbiAgICBcIktWTV9JTlRFTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZteF92Y3B1X3J1blwiLFxuICAgIFwidm14X2hhbmRsZV9leGl0XCIsXG4gICAgXCJfX3ZteF9oYW5kbGVfZXhpdFwiLFxuICAgIFwiaGFuZGxlX2VwdF92aW9sYXRpb25cIixcbiAgICBcImhhbmRsZV9leGNlcHRpb25fbm1pXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIFxcXCJtZW1vcnlcXFwiIGNsb2JiZXIgdG8gaW5saW5lIGFzc2VtYmx5IGZvciBWTUNTIHJlYWRzIGFuZCB3cml0ZXMgaW4gS1ZNIFZNWC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgcHJldmVudHMgY29tcGlsZXIgcmVvcmRlcmluZyBhbmQgY2FjaGluZyBvZiBtZW1vcnkgdmFsdWVzIGFyb3VuZCBWTUNTIG9wZXJhdGlvbnMsIHdoaWNoIGNhbiBsZWFkIHRvIHN1YnRsZSBidWdzIGluIEtWTSBleGVjdXRpb24gZmxvdy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowwlmn2[1] Phase: Succeeded StartedAt: 2026-07-22 12:05:51 +0000 UTC FinishedAt: 2026-07-22 12:05:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwlmn2[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-22 12:05:51 +0000 UTC FinishedAt: 2026-07-22 12:05:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwlmn2[2] Phase: Succeeded StartedAt: 2026-07-22 12:05:51 +0000 UTC FinishedAt: 2026-07-22 13:25:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwlmn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vmx_vcpu_run","vmx_handle_exit","__vmx_handle_exit","handle_ept_violation","handle_exception_nmi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL"],"series_id":"81cbd054-c7ab-49ef-adfd-82e0ba21ec76","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-22 12:05:51 +0000 UTC FinishedAt: 2026-07-22 13:25:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vmx_vcpu_run","vmx_handle_exit","__vmx_handle_exit","handle_ept_violation","handle_exception_nmi"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL"],"series_id":"81cbd054-c7ab-49ef-adfd-82e0ba21ec76","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowwlmn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vmx_vcpu_run","vmx_handle_exit","__vmx_handle_exit","handle_ept_violation","handle_exception_nmi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL"],"series_id":"81cbd054-c7ab-49ef-adfd-82e0ba21ec76","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-22 12:05:51 +0000 UTC FinishedAt: 2026-07-22 12:06:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwlmn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vmx_vcpu_run","vmx_handle_exit","__vmx_handle_exit","handle_ept_violation","handle_exception_nmi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL"],"series_id":"81cbd054-c7ab-49ef-adfd-82e0ba21ec76","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-22 12:05:51 +0000 UTC FinishedAt: 2026-07-22 12:05:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},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-workflowwlmn2/series-workflowwlmn2-convert-artifact-1739200033/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwlmn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vmx_vcpu_run","vmx_handle_exit","__vmx_handle_exit","handle_ept_violation","handle_exception_nmi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL"],"series_id":"81cbd054-c7ab-49ef-adfd-82e0ba21ec76","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-22 12:06:01 +0000 UTC FinishedAt: 2026-07-22 12:37:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwlmn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vmx_vcpu_run","vmx_handle_exit","__vmx_handle_exit","handle_ept_violation","handle_exception_nmi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL"],"series_id":"81cbd054-c7ab-49ef-adfd-82e0ba21ec76","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-22 12:06:01 +0000 UTC FinishedAt: 2026-07-22 12:37:49 +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:*e0ff3b08-4e10-4777-80f7-8dd605f3d428,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-workflowwlmn2/series-workflowwlmn2-convert-artifact-1739200033/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": "f904b340-c679-44db-936f-b6850ba25cf5", "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-workflowwlmn2/series-workflowwlmn2-build-action-1210772815/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwlmn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vmx_vcpu_run","vmx_handle_exit","__vmx_handle_exit","handle_ept_violation","handle_exception_nmi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL"],"series_id":"81cbd054-c7ab-49ef-adfd-82e0ba21ec76","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-22 12:06:01 +0000 UTC FinishedAt: 2026-07-22 12:37:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*e0ff3b08-4e10-4777-80f7-8dd605f3d428,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-workflowwlmn2/series-workflowwlmn2-convert-artifact-1739200033/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": "f904b340-c679-44db-936f-b6850ba25cf5", "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-workflowwlmn2/series-workflowwlmn2-build-action-1210772815/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwlmn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vmx_vcpu_run","vmx_handle_exit","__vmx_handle_exit","handle_ept_violation","handle_exception_nmi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL"],"series_id":"81cbd054-c7ab-49ef-adfd-82e0ba21ec76","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-22 12:37:49 +0000 UTC FinishedAt: 2026-07-22 12:37:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwlmn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vmx_vcpu_run","vmx_handle_exit","__vmx_handle_exit","handle_ept_violation","handle_exception_nmi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL"],"series_id":"81cbd054-c7ab-49ef-adfd-82e0ba21ec76","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-22 12:37:49 +0000 UTC FinishedAt: 2026-07-22 12:37:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwlmn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vmx_vcpu_run","vmx_handle_exit","__vmx_handle_exit","handle_ept_violation","handle_exception_nmi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL"],"series_id":"81cbd054-c7ab-49ef-adfd-82e0ba21ec76","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-22 12:37:49 +0000 UTC FinishedAt: 2026-07-22 12:38:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwlmn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vmx_vcpu_run","vmx_handle_exit","__vmx_handle_exit","handle_ept_violation","handle_exception_nmi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL"],"series_id":"81cbd054-c7ab-49ef-adfd-82e0ba21ec76","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-22 12:37:49 +0000 UTC FinishedAt: 2026-07-22 12:37:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL"],"series_id":"81cbd054-c7ab-49ef-adfd-82e0ba21ec76","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},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-workflowwlmn2/series-workflowwlmn2-convert-artifact-195731316/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwlmn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vmx_vcpu_run","vmx_handle_exit","__vmx_handle_exit","handle_ept_violation","handle_exception_nmi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL"],"series_id":"81cbd054-c7ab-49ef-adfd-82e0ba21ec76","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-22 12:38:00 +0000 UTC FinishedAt: 2026-07-22 12:39:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwlmn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vmx_vcpu_run","vmx_handle_exit","__vmx_handle_exit","handle_ept_violation","handle_exception_nmi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL"],"series_id":"81cbd054-c7ab-49ef-adfd-82e0ba21ec76","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-22 12:38:00 +0000 UTC FinishedAt: 2026-07-22 12:39:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*f904b340-c679-44db-936f-b6850ba25cf5,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-workflowwlmn2/series-workflowwlmn2-build-action-1210772815/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-workflowwlmn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vmx_vcpu_run","vmx_handle_exit","__vmx_handle_exit","handle_ept_violation","handle_exception_nmi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL"],"series_id":"81cbd054-c7ab-49ef-adfd-82e0ba21ec76","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-22 12:39:53 +0000 UTC FinishedAt: 2026-07-22 12:39:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwlmn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vmx_vcpu_run","vmx_handle_exit","__vmx_handle_exit","handle_ept_violation","handle_exception_nmi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL"],"series_id":"81cbd054-c7ab-49ef-adfd-82e0ba21ec76","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-22 12:39:53 +0000 UTC FinishedAt: 2026-07-22 12:39:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwlmn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vmx_vcpu_run","vmx_handle_exit","__vmx_handle_exit","handle_ept_violation","handle_exception_nmi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL"],"series_id":"81cbd054-c7ab-49ef-adfd-82e0ba21ec76","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-22 12:39:53 +0000 UTC FinishedAt: 2026-07-22 13:20:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwlmn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vmx_vcpu_run","vmx_handle_exit","__vmx_handle_exit","handle_ept_violation","handle_exception_nmi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL"],"series_id":"81cbd054-c7ab-49ef-adfd-82e0ba21ec76","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-22 12:39:53 +0000 UTC FinishedAt: 2026-07-22 13:20:37 +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:*e0ff3b08-4e10-4777-80f7-8dd605f3d428,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-workflowwlmn2/series-workflowwlmn2-convert-artifact-195731316/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": "78b6dbed-73c5-4a10-a2fb-9754a45de595", "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-workflowwlmn2/series-workflowwlmn2-build-action-3219772480/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwlmn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vmx_vcpu_run","vmx_handle_exit","__vmx_handle_exit","handle_ept_violation","handle_exception_nmi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL"],"series_id":"81cbd054-c7ab-49ef-adfd-82e0ba21ec76","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-22 12:39:53 +0000 UTC FinishedAt: 2026-07-22 13:20:27 +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:*e0ff3b08-4e10-4777-80f7-8dd605f3d428,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-workflowwlmn2/series-workflowwlmn2-convert-artifact-195731316/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": "78b6dbed-73c5-4a10-a2fb-9754a45de595", "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-workflowwlmn2/series-workflowwlmn2-build-action-3219772480/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwlmn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vmx_vcpu_run","vmx_handle_exit","__vmx_handle_exit","handle_ept_violation","handle_exception_nmi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL"],"series_id":"81cbd054-c7ab-49ef-adfd-82e0ba21ec76","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-22 13:20:37 +0000 UTC FinishedAt: 2026-07-22 13:20:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwlmn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vmx_vcpu_run","vmx_handle_exit","__vmx_handle_exit","handle_ept_violation","handle_exception_nmi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL"],"series_id":"81cbd054-c7ab-49ef-adfd-82e0ba21ec76","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-22 13:20:37 +0000 UTC FinishedAt: 2026-07-22 13:20:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwlmn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vmx_vcpu_run","vmx_handle_exit","__vmx_handle_exit","handle_ept_violation","handle_exception_nmi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL"],"series_id":"81cbd054-c7ab-49ef-adfd-82e0ba21ec76","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-22 13:20:37 +0000 UTC FinishedAt: 2026-07-22 13:22:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwlmn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vmx_vcpu_run","vmx_handle_exit","__vmx_handle_exit","handle_ept_violation","handle_exception_nmi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL"],"series_id":"81cbd054-c7ab-49ef-adfd-82e0ba21ec76","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-22 13:20:37 +0000 UTC FinishedAt: 2026-07-22 13:22:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*78b6dbed-73c5-4a10-a2fb-9754a45de595,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-workflowwlmn2/series-workflowwlmn2-build-action-3219772480/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-workflowwlmn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vmx_vcpu_run","vmx_handle_exit","__vmx_handle_exit","handle_ept_violation","handle_exception_nmi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL"],"series_id":"81cbd054-c7ab-49ef-adfd-82e0ba21ec76","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-22 13:22:38 +0000 UTC FinishedAt: 2026-07-22 13:25:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwlmn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vmx_vcpu_run","vmx_handle_exit","__vmx_handle_exit","handle_ept_violation","handle_exception_nmi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL"],"series_id":"81cbd054-c7ab-49ef-adfd-82e0ba21ec76","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-22 13:22:38 +0000 UTC FinishedAt: 2026-07-22 13:25:25 +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":["kvm"],"focus_symbols":["vmx_vcpu_run","vmx_handle_exit","__vmx_handle_exit","handle_ept_violation","handle_exception_nmi"],"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:*f904b340-c679-44db-936f-b6850ba25cf5,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*78b6dbed-73c5-4a10-a2fb-9754a45de595,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-workflowwlmn2/series-workflowwlmn2-build-action-1210772815/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-workflowwlmn2/series-workflowwlmn2-build-action-3219772480/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowwlmn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vmx_vcpu_run","vmx_handle_exit","__vmx_handle_exit","handle_ept_violation","handle_exception_nmi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL"],"series_id":"81cbd054-c7ab-49ef-adfd-82e0ba21ec76","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-22 13:22:38 +0000 UTC FinishedAt: 2026-07-22 13:22:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwlmn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vmx_vcpu_run","vmx_handle_exit","__vmx_handle_exit","handle_ept_violation","handle_exception_nmi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL"],"series_id":"81cbd054-c7ab-49ef-adfd-82e0ba21ec76","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-22 13:22:38 +0000 UTC FinishedAt: 2026-07-22 13:22:42 +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":["kvm"],"focus_symbols":["vmx_vcpu_run","vmx_handle_exit","__vmx_handle_exit","handle_ept_violation","handle_exception_nmi"],"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-workflowwlmn2/series-workflowwlmn2-convert-artifact-24384157/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwlmn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vmx_vcpu_run","vmx_handle_exit","__vmx_handle_exit","handle_ept_violation","handle_exception_nmi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL"],"series_id":"81cbd054-c7ab-49ef-adfd-82e0ba21ec76","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-22 13:22:38 +0000 UTC FinishedAt: 2026-07-22 13:22:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwlmn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vmx_vcpu_run","vmx_handle_exit","__vmx_handle_exit","handle_ept_violation","handle_exception_nmi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL"],"series_id":"81cbd054-c7ab-49ef-adfd-82e0ba21ec76","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-22 13:22:38 +0000 UTC FinishedAt: 2026-07-22 13:22:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwlmn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vmx_vcpu_run","vmx_handle_exit","__vmx_handle_exit","handle_ept_violation","handle_exception_nmi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL"],"series_id":"81cbd054-c7ab-49ef-adfd-82e0ba21ec76","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-22 13:22:38 +0000 UTC FinishedAt: 2026-07-22 13:22:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwlmn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vmx_vcpu_run","vmx_handle_exit","__vmx_handle_exit","handle_ept_violation","handle_exception_nmi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL"],"series_id":"81cbd054-c7ab-49ef-adfd-82e0ba21ec76","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-22 13:22:48 +0000 UTC FinishedAt: 2026-07-22 13:25:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwlmn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vmx_vcpu_run","vmx_handle_exit","__vmx_handle_exit","handle_ept_violation","handle_exception_nmi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL"],"series_id":"81cbd054-c7ab-49ef-adfd-82e0ba21ec76","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-22 13:22:48 +0000 UTC FinishedAt: 2026-07-22 13:25:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*f904b340-c679-44db-936f-b6850ba25cf5,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*78b6dbed-73c5-4a10-a2fb-9754a45de595,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-workflowwlmn2/series-workflowwlmn2-build-action-1210772815/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-workflowwlmn2/series-workflowwlmn2-build-action-3219772480/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-workflowwlmn2/series-workflowwlmn2-convert-artifact-24384157/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,}