Name: series-workflowb7d78 Phase: Failed StartedAt: 2026-08-31 07:55:14 +0000 UTC FinishedAt: 2026-08-31 07:58:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb7d78[0] Phase: Succeeded StartedAt: 2026-08-31 07:55:14 +0000 UTC FinishedAt: 2026-08-31 07:58:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb7d78[0].run-triage Phase: Succeeded StartedAt: 2026-08-31 07:55:14 +0000 UTC FinishedAt: 2026-08-31 07:58:12 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA3OjU3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgbW9kaWZpY2F0aW9ucyBhcmUgaW4gdGhlIE5YUCBXaUZpIGRyaXZlciAoZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY2ZnODAyMTEuYyksIHdoaWNoIGlzIGFuIFNESU8tYmFzZWQgd2lyZWxlc3MgbmV0d29yayBkcml2ZXIgKENPTkZJR19OWFBXSUZJIC8gQ09ORklHX05YUFdJRklfU0RJTykgcmVxdWlyaW5nIHBoeXNpY2FsIE5YUCBJVzYxeCBoYXJkd2FyZS4gVGhlIGRyaXZlciBjYW5ub3QgYmUgaW5zdGFudGlhdGVkIG9yIHJlYWNoZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0Ugd2l0aG91dCBkZWRpY2F0ZWQgcGh5c2ljYWwgaGFyZHdhcmUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA3OjU3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYWIxZjJmYWY3YmJlMWVhMGExZmRiZDdkNTZiOTc1ZmFjYWFlMjY2ZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDMxIDA3OjU2OjU5IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jZmc4MDIxMS5jXG5pbmRleCA1Y2M4Y2RmNTk0ZDNlLi4zMzUyMjFjNGYxN2QxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY2ZnODAyMTEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY2ZnODAyMTEuY1xuQEAgLTg0NCw4ICYjNDM7ODQ0LDcgQEAgbnhwd2lmaV9jaGFuZ2VfdmlmX3RvX3N0YShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0dXBkYXRlX3ZpZl90eXBlX2NvdW50ZXIoYWRhcHRlciwgdHlwZSwgMSk7XG4gXHRkZXYtXHUwMDNlaWVlZTgwMjExX3B0ci1cdTAwM2VpZnR5cGUgPSB0eXBlO1xuIFxuLVx0aWYgKG54cHdpZmlfc2V0X2Jzc19tb2RlKHByaXYpKVxuLVx0XHRyZXR1cm4gLTE7XG4mIzQzO1x0cmV0ID0gbnhwd2lmaV9zZXRfYnNzX21vZGUocHJpdik7XG4gXG4gXHRpZiAocmV0KVxuIFx0XHRnb3RvIGRvbmU7XG5AQCAtODg4LDggJiM0Mzs4ODcsNyBAQCBueHB3aWZpX2NoYW5nZV92aWZfdG9fYXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdHVwZGF0ZV92aWZfdHlwZV9jb3VudGVyKGFkYXB0ZXIsIHR5cGUsIDEpO1xuIFx0ZGV2LVx1MDAzZWllZWU4MDIxMV9wdHItXHUwMDNlaWZ0eXBlID0gdHlwZTtcbiBcbi1cdGlmIChueHB3aWZpX3NldF9ic3NfbW9kZShwcml2KSlcbi1cdFx0cmV0dXJuIC0xO1xuJiM0MztcdHJldCA9IG54cHdpZmlfc2V0X2Jzc19tb2RlKHByaXYpO1xuIFxuIFx0aWYgKHJldClcbiBcdFx0Z290byBkb25lO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA3OjU3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIG1vZGlmaWNhdGlvbnMgYXJlIGluIHRoZSBOWFAgV2lGaSBkcml2ZXIgKGRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NmZzgwMjExLmMpLCB3aGljaCBpcyBhbiBTRElPLWJhc2VkIHdpcmVsZXNzIG5ldHdvcmsgZHJpdmVyIChDT05GSUdfTlhQV0lGSSAvIENPTkZJR19OWFBXSUZJX1NESU8pIHJlcXVpcmluZyBwaHlzaWNhbCBOWFAgSVc2MXggaGFyZHdhcmUuIFRoZSBkcml2ZXIgY2Fubm90IGJlIGluc3RhbnRpYXRlZCBvciByZWFjaGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFIHdpdGhvdXQgZGVkaWNhdGVkIHBoeXNpY2FsIGhhcmR3YXJlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGFiMWYyZmFmN2JiZTFlYTBhMWZkYmQ3ZDU2Yjk3NWZhY2FhZTI2NmYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEF1ZyAzMSAwNzo1Njo1OSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jZmc4MDIxMS5jCmluZGV4IDVjYzhjZGY1OTRkM2UuLjMzNTIyMWM0ZjE3ZDEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NmZzgwMjExLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY2ZnODAyMTEuYwpAQCAtODQ0LDggJiM0Mzs4NDQsNyBAQCBueHB3aWZpX2NoYW5nZV92aWZfdG9fc3RhKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJdXBkYXRlX3ZpZl90eXBlX2NvdW50ZXIoYWRhcHRlciwgdHlwZSwgMSk7CiAJZGV2LSZndDtpZWVlODAyMTFfcHRyLSZndDtpZnR5cGUgPSB0eXBlOwogCi0JaWYgKG54cHdpZmlfc2V0X2Jzc19tb2RlKHByaXYpKQotCQlyZXR1cm4gLTE7CiYjNDM7CXJldCA9IG54cHdpZmlfc2V0X2Jzc19tb2RlKHByaXYpOwogCiAJaWYgKHJldCkKIAkJZ290byBkb25lOwpAQCAtODg4LDggJiM0Mzs4ODcsNyBAQCBueHB3aWZpX2NoYW5nZV92aWZfdG9fYXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAl1cGRhdGVfdmlmX3R5cGVfY291bnRlcihhZGFwdGVyLCB0eXBlLCAxKTsKIAlkZXYtJmd0O2llZWU4MDIxMV9wdHItJmd0O2lmdHlwZSA9IHR5cGU7CiAKLQlpZiAobnhwd2lmaV9zZXRfYnNzX21vZGUocHJpdikpCi0JCXJldHVybiAtMTsKJiM0MzsJcmV0ID0gbnhwd2lmaV9zZXRfYnNzX21vZGUocHJpdik7CiAKIAlpZiAocmV0KQogCQlnb3RvIGRvbmU7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA3OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNjEKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxNDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgV2lyZWxlc3MgRHJpdmVyIFBhdGNoKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBwYXRjaC4gVGhlIGtleSBmaWxlIGhlcmUgaXMgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NmZzgwMjExLmNgLCB3aGljaCBpbW1lZGlhdGVseSBzdWdnZXN0cyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIHRoZSBOWFAgV2lGaSBkcml2ZXIuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gdW5kZXJzdGFuZCB0aGUgYnVzIGludGVyYWN0aW9uLiBJcyB0aGlzIGEgVVNCLWJhc2VkIGRldmljZSwgU0RJTywgb3IgcGVyaGFwcyBQQ0llPyBUaGlzIGlzIGNydWNpYWwgZm9yIGRldGVybWluaW5nIGhvdyB3ZSBjYW4gZWZmZWN0aXZlbHkgZnV6eiBpdC4gSWYgaXQmIzM5O3MgVVNCLCBjYW4gd2UgbGV2ZXJhZ2UgVVNCIGdhZGdldCBtb2RlcyBvciByYXcgZ2FkZ2V0IGFwcHJvYWNoZXM/IE9yIHBlcmhhcHMgZXZlbiBlbXVsYXRlIHRoZSBkZXZpY2U/IE9mIGNvdXJzZSwgaWYgaXQmIzM5O3MgU0RJTyBvciBQQ0llLCB0aGF0IGNoYW5nZXMgdGhlIGdhbWUuCgpUbyB1bmRlcnN0YW5kIHRoZSBkcml2ZXImIzM5O3MgaW50ZXJuYWxzIGEgYml0IGJldHRlciwgSSYjMzk7bGwgbmVlZCB0byBleHBsb3JlIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvYCBkaXJlY3RvcnkgbW9yZSBjbG9zZWx5LiBJJiMzOTtsbCBsaWtlbHkgdXNlIGBjb2Rlc2VhcmNoLWRpci1pbmRleGAgb3IgYHJlYWQtZmlsZWAgb3IgYGdyZXBwZXJgIHRvIHF1aWNrbHkgZ2V0IGFuIG92ZXJ2aWV3IG9mIHRoZSBjb2RlIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUsIGlmIHBvc3NpYmxlLiBUaGlzIHNob3VsZCBoZWxwIGNsYXJpZnkgdGhlIGJ1cyBpbnRlcmZhY2UgYW5kIHBvdGVudGlhbCBmdXp6aW5nIHZlY3RvcnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDc6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5jb2Rlc2VhcmNoLWRpci1pbmRleDwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RGlyJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZXMmIzM0OzogWwogICAgJiMzNDsxMWFjLmMmIzM0OywKICAgICYjMzQ7MTFhYy5oJiMzNDssCiAgICAmIzM0OzExYXguYyYjMzQ7LAogICAgJiMzNDsxMWF4LmgmIzM0OywKICAgICYjMzQ7MTFoLmMmIzM0OywKICAgICYjMzQ7MTFuLmMmIzM0OywKICAgICYjMzQ7MTFuLmgmIzM0OywKICAgICYjMzQ7MTFuX2FnZ3IuYyYjMzQ7LAogICAgJiMzNDsxMW5fYWdnci5oJiMzNDssCiAgICAmIzM0OzExbl9yeHJlb3JkZXIuYyYjMzQ7LAogICAgJiMzNDsxMW5fcnhyZW9yZGVyLmgmIzM0OywKICAgICYjMzQ7Y2ZnLmgmIzM0OywKICAgICYjMzQ7Y2ZnODAyMTEuYyYjMzQ7LAogICAgJiMzNDtjZmc4MDIxMS5oJiMzNDssCiAgICAmIzM0O2NmcC5jJiMzNDssCiAgICAmIzM0O2NtZGV2dC5jJiMzNDssCiAgICAmIzM0O2NtZGV2dC5oJiMzNDssCiAgICAmIzM0O2RlYnVnZnMuYyYjMzQ7LAogICAgJiMzNDtldGh0b29sLmMmIzM0OywKICAgICYjMzQ7ZncuaCYjMzQ7LAogICAgJiMzNDtpZS5jJiMzNDssCiAgICAmIzM0O2luaXQuYyYjMzQ7LAogICAgJiMzNDtqb2luLmMmIzM0OywKICAgICYjMzQ7bWFpbi5jJiMzNDssCiAgICAmIzM0O21haW4uaCYjMzQ7LAogICAgJiMzNDtzY2FuLmMmIzM0OywKICAgICYjMzQ7c2Rpby5jJiMzNDssCiAgICAmIzM0O3NkaW8uaCYjMzQ7LAogICAgJiMzNDtzdGFfY2ZnLmMmIzM0OywKICAgICYjMzQ7c3RhX2NtZC5jJiMzNDssCiAgICAmIzM0O3N0YV9ldmVudC5jJiMzNDssCiAgICAmIzM0O3N0YV9yeC5jJiMzNDssCiAgICAmIzM0O3N0YV90eC5jJiMzNDssCiAgICAmIzM0O3R4cnguYyYjMzQ7LAogICAgJiMzNDt1YXBfY21kLmMmIzM0OywKICAgICYjMzQ7dWFwX2V2ZW50LmMmIzM0OywKICAgICYjMzQ7dWFwX3R4cnguYyYjMzQ7LAogICAgJiMzNDt1dGlsLmMmIzM0OywKICAgICYjMzQ7dXRpbC5oJiMzNDssCiAgICAmIzM0O3dtbS5jJiMzNDssCiAgICAmIzM0O3dtbS5oJiMzNDsKICBdLAogICYjMzQ7U3ViZGlycyYjMzQ7OiBudWxsCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwNzo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDAyCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogNTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqS2NvbmZpZyBIdW50aW5nIGZvciBueHB3aWZpKioKCk9rYXksIHRpbWUgdG8gdHJhY2sgZG93biB0aGUgS2NvbmZpZyBlbnRyaWVzIHJlbGF0ZWQgdG8gYG54cHdpZmlgLiBXaGVyZSBhcmUgdGhleSBoaWRpbmc/IE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHVzZSBgZ3JlcGAgYW5kIHNlYXJjaCBmb3IgdGhlIHN0cmluZyBgbnhwd2lmaWAuIFRoYXQgc2hvdWxkIGJlIGEgcXVpY2sgd2F5IHRvIGxvY2F0ZSBhbnkgbWVudGlvbnMgd2l0aGluIHRoZSBidWlsZCBzeXN0ZW0uIEFsdGVybmF0aXZlbHksIEkga25vdyBJIGNhbiBvZnRlbiBmaW5kIGRyaXZlcnMgd2l0aGluIGBkcml2ZXJzL25ldC93aXJlbGVzc2Agd2hpY2ggbWlnaHQgY29udGFpbiBhIGRlZGljYXRlZCBgbnhwYCBkaXJlY3RvcnkgYW5kIHRoZW4gYSBgS2NvbmZpZ2AgZmlsZS4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL0tjb25maWdgIGFuZCBhbHNvIHRoZSBtb3JlIGdlbmVyYWwgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWdgIHRvIGJlIHRob3JvdWdoLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhlIEtjb25maWcgZmlsZXMgcmV2ZWFsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA3OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O254cHdpZmkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTUxNzIgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9LY29uZmlnPTEzPWlmIFdMQU5fVkVORE9SX05YUFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL0tjb25maWctMTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvS2NvbmZpZzoxNTpzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL0tjb25maWctMTYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL01ha2VmaWxlLTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvTWFrZWZpbGU6MzpvYmotJChDT05GSUdfTlhQV0lGSSlcdCYjNDM7PSBueHB3aWZpL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0yLS8qXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MzogKiBueHB3aWZpIDgwMi4xMWFjIGhlbHBlcnNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy00LSAqIENvcHlyaWdodCAyMDExLTIwMjQgTlhQXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jPTM2PXN0YXRpYyB1MTZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzozNzpueHB3aWZpX2NvbnZlcnRfbWNzbWFwX3RvX21heHJhdGUoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0zOC1cdFx0XHRcdCAgdTE2IGJhbmRzLCB1MTYgbWNzX21hcClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtNDItXHR1MzIgdXNyX3ZodF9jYXBfaW5mbyA9IDA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6NDM6XHRzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cdTAwM2VhZGFwdGVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTQ0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYz03OT1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjgwOm54cHdpZmlfZmlsbF92aHRfY2FwX2luZm8oc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy04MS1cdFx0XHQgIHN0cnVjdCBpZWVlODAyMTFfdmh0X2NhcCAqdmh0X2NhcCwgdTE2IGJhbmRzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTgyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzo4MzpcdHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIgPSBwcml2LVx1MDAzZWFkYXB0ZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtODQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jPTkzPXZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzo5NDpueHB3aWZpX2ZpbGxfdmh0X2NhcF90bHYoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy05NS1cdFx0XHQgc3RydWN0IGllZWU4MDIxMV92aHRfY2FwICp2aHRfY2FwLCB1MTYgYmFuZHMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtOTYte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjk3Olx0c3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtXHUwMDNlYWRhcHRlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy05OC1cdHUxNiBtY3NfbWFwX3VzZXIsIG1jc19tYXBfcmVzcCwgbWNzX21hcF9yZXN1bHQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTEwMS1cdC8qIEZpbGwgVkhUIGNhcGFiaWxpdHkgaW5mby4gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxMDI6XHRueHB3aWZpX2ZpbGxfdmh0X2NhcF9pbmZvKHByaXYsIHZodF9jYXAsIGJhbmRzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xMDMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTEyMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxMjQ6XHR0bXAgPSBueHB3aWZpX2NvbnZlcnRfbWNzbWFwX3RvX21heHJhdGUocHJpdiwgYmFuZHMsIG1jc19tYXBfcmVzdWx0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xMjUtXHR2aHRfY2FwLVx1MDAzZXN1cHBfbWNzLnJ4X2hpZ2hlc3QgPSBjcHVfdG9fbGUxNih0bXApO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTQ2Olx0dG1wID0gbnhwd2lmaV9jb252ZXJ0X21jc21hcF90b19tYXhyYXRlKHByaXYsIGJhbmRzLCBtY3NfbWFwX3Jlc3VsdCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTQ3LVx0dmh0X2NhcC1cdTAwM2VzdXBwX21jcy50eF9oaWdoZXN0ID0gY3B1X3RvX2xlMTYodG1wKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTQ5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE1MDppbnQgbnhwd2lmaV9jbWRfYXBwZW5kXzExYWNfdGx2KHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTUxOlx0XHRcdFx0c3RydWN0IG54cHdpZmlfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTUyLVx0XHRcdFx0dTggKipidWZmZXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTUzLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxNTQ6XHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc192aHRjYXAgKnZodF9jYXA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTU1Olx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfb3Blcl9tb2RlX250ZiAqb3Blcl9udGY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTU2LVx0c3RydWN0IGllZWVfdHlwZXNfb3Blcl9tb2RlX250ZiAqaWVlZV9vcGVyX250ZjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxNTc6XHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc192aHRfb3BlciAqdmh0X29wO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE1ODpcdHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIgPSBwcml2LVx1MDAzZWFkYXB0ZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTU5LVx0dTggc3VwcF9jaHdkX3NldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTY5LVx0aWYgKGJzc19kZXNjLVx1MDAzZWJjbl92aHRfY2FwKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTcwOlx0XHR2aHRfY2FwID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX3ZodGNhcCAqKSpidWZmZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTcxLVx0XHRtZW1zZXQodmh0X2NhcCwgMCwgc2l6ZW9mKCp2aHRfY2FwKSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE3NC1cdFx0XHRjcHVfdG9fbGUxNihzaXplb2Yoc3RydWN0IGllZWU4MDIxMV92aHRfY2FwKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTc1Olx0XHRtZW1jcHkoKHU4ICopdmh0X2NhcCAmIzQzOyBzaXplb2Yoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVhZGVyKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNzYtXHRcdCAgICAgICAodTggKilic3NfZGVzYy1cdTAwM2ViY25fdmh0X2NhcCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTc4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE3OTpcdFx0bnhwd2lmaV9maWxsX3ZodF9jYXBfdGx2KHByaXYsIFx1MDAyNnZodF9jYXAtXHUwMDNldmh0X2NhcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xODAtXHRcdFx0XHRcdCBic3NfZGVzYy1cdTAwM2Vic3NfYmFuZCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE4Ny1cdFx0aWYgKHByaXYtXHUwMDNlYnNzX21vZGUgPT0gTkw4MDIxMV9JRlRZUEVfU1RBVElPTikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE4ODpcdFx0XHR2aHRfb3AgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfdmh0X29wZXIgKikqYnVmZmVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE4OS1cdFx0XHRtZW1zZXQodmh0X29wLCAwLCBzaXplb2YoKnZodF9vcCkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xOTItXHRcdFx0dmh0X29wLVx1MDAzZWhlYWRlci5sZW4gID0gY3B1X3RvX2xlMTYoc2l6ZW9mKCp2aHRfb3ApIC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxOTM6XHRcdFx0XHRzaXplb2Yoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVhZGVyKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTk0LVx0XHRcdG1lbWNweSgodTggKil2aHRfb3AgJiM0MztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxOTU6XHRcdFx0XHRzaXplb2Yoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVhZGVyKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xOTYtXHRcdFx0ICAgICAgICh1OCAqKWJzc19kZXNjLVx1MDAzZWJjbl92aHRfb3Blcixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMjQ0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjI0NTppbnQgbnhwd2lmaV9jbWRfMTFhY19jZmcoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0yNDYtXHRcdFx0IHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpjbWQsIHUxNiBjbWRfYWN0aW9uLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjI0NzpcdFx0XHQgc3RydWN0IG54cHdpZmlfMTFhY192aHRfY2ZnICpjZmcpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMjQ4LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMjY0LS8qIEluaXRpYWxpemUgQmxvY2tBY2sgcGFyYW1ldGVycyBmb3IgMTFhYy4gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoyNjU6dm9pZCBueHB3aWZpX3NldF8xMWFjX2JhX3BhcmFtcyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTI2Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5oLTItLypcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuaDozOiAqIG54cHdpZmk6IDgwMi4xMWFjIChWSFQpIGRlZmluaXRpb25zXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmgtNC0gKlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuaD0xND1lbnVtIHZodF9jZmdfbWlzY19jb25maWcge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuaC0yNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuaDoyNTppbnQgbnhwd2lmaV9jbWRfYXBwZW5kXzExYWNfdGx2KHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmg6MjY6XHRcdFx0XHRzdHJ1Y3Qgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuaC0yNy1cdFx0XHRcdHU4ICoqYnVmZmVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuaDoyODppbnQgbnhwd2lmaV9jbWRfMTFhY19jZmcoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuaC0yOS1cdFx0XHQgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCwgdTE2IGNtZF9hY3Rpb24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmg6MzA6XHRcdFx0IHN0cnVjdCBueHB3aWZpXzExYWNfdmh0X2NmZyAqY2ZnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuaDozMTp2b2lkIG54cHdpZmlfZmlsbF92aHRfY2FwX3RsdihzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5oLTMyLVx0XHRcdCAgICAgIHN0cnVjdCBpZWVlODAyMTFfdmh0X2NhcCAqdmh0X2NhcCwgdTE2IGJhbmRzKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMS0vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjovKiBueHB3aWZpOiA4MDIuMTFheCAoSEUpIHN1cHBvcnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDI0IE5YUFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxMTp2b2lkIG54cHdpZmlfdXBkYXRlXzExYXhfY2FwKHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTItXHRcdFx0ICAgICBzdHJ1Y3QgaHdfc3BlY19leHRlbnNpb24gKmh3X2hlX2NhcClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMy17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTQ6XHRzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE1Olx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICpoZV9jYXAgPSBOVUxMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE2Olx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICp1c2VyX2hlX2NhcCA9IE5VTEw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTc6XHR1OCBoZWFkZXJfbGVuID0gc2l6ZW9mKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlYWRlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTgtXHR1MTYgZGF0YV9sZW4gPSBsZTE2X3RvX2NwdShod19oZV9jYXAtXHUwMDNlaGVhZGVyLmxlbik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTIyLVx0aWYgKChkYXRhX2xlbiAmIzQzOyBoZWFkZXJfbGVuKSBcdTAwM2Ugc2l6ZW9mKGFkYXB0ZXItXHUwMDNlaHdfaGVfY2FwKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjIzOlx0XHRueHB3aWZpX2RiZyhhZGFwdGVyLCBFUlJPUixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yNC1cdFx0XHQgICAgXCYjMzQ7aHdfaGVfY2FwIHRvbyBiaWcsIGxlbj0lZFxcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6Mjk6XHRoZV9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICopaHdfaGVfY2FwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTMwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zNy1cdFx0aGVfY2FwXzJnID0gdHJ1ZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozODpcdFx0bnhwd2lmaV9kYmdfZHVtcChhZGFwdGVyLCBDTURfRCwgXCYjMzQ7Mi40RyBIRSBjYXBhYmlsaXR5IGVsZW1lbnQgXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM5LVx0XHRcdFx0IGFkYXB0ZXItXHUwMDNlaHdfMmdfaGVfY2FwLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00NS1cdFx0YWRhcHRlci1cdTAwM2Vmd19iYW5kcyB8PSBCQU5EX0FBWDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0NjpcdFx0bnhwd2lmaV9kYmdfZHVtcChhZGFwdGVyLCBDTURfRCwgXCYjMzQ7NUcgSEUgY2FwYWJpbGl0eSBlbGVtZW50IFwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00Ny1cdFx0XHRcdCBhZGFwdGVyLVx1MDAzZWh3X2hlX2NhcCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTctXHRcdFx0ICAgICAgIHNpemVvZihhZGFwdGVyLVx1MDAzZWh3XzJnX2hlX2NhcCkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU4Olx0XHRcdHVzZXJfaGVfY2FwID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU5LVx0XHRcdFx0cHJpdi1cdTAwM2V1c2VyXzJnX2hlX2NhcDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNjMtXHRcdFx0ICAgICAgIHNpemVvZihhZGFwdGVyLVx1MDAzZWh3X2hlX2NhcCkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjY0Olx0XHRcdHVzZXJfaGVfY2FwID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTY1LVx0XHRcdFx0cHJpdi1cdTAwM2V1c2VyX2hlX2NhcDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6Nzk6Ym9vbCBueHB3aWZpXzExYXhfYmFuZGNvbmZpZ19hbGxvd2VkKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6ODA6XHRcdFx0XHQgICAgIHN0cnVjdCBueHB3aWZpX2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTgxLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtOTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6OTU6aW50IG54cHdpZmlfZmlsbF9oZV9jYXBfdGx2KHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6OTY6XHRcdFx0ICAgIHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqaGVfY2FwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTk3LVx0XHRcdCAgICB1MTYgYmFuZHMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtOTgte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjk5Olx0c3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtXHUwMDNlYWRhcHRlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxMDA6XHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKmh3X2hlX2NhcCA9IE5VTEw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTAxLVx0dTE2IHJ4X25zcywgdHhfbnNzO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMDgtXHRcdG1lbWNweShoZV9jYXAsIHByaXYtXHUwMDNldXNlcl9oZV9jYXAsIHByaXYtXHUwMDNldXNlcl9oZV9jYXBfbGVuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxMDk6XHRcdGh3X2hlX2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKilhZGFwdGVyLVx1MDAzZWh3X2hlX2NhcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMTAtXHRcdHJldF9sZW4gPSBwcml2LVx1MDAzZXVzZXJfaGVfY2FwX2xlbjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTEyLVx0XHRtZW1jcHkoaGVfY2FwLCBwcml2LVx1MDAzZXVzZXJfMmdfaGVfY2FwLCBwcml2LVx1MDAzZXVzZXJfMmdfaGVfY2FwX2xlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTEzOlx0XHRod19oZV9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICopYWRhcHRlci1cdTAwM2Vod18yZ19oZV9jYXA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTE0LVx0XHRyZXRfbGVuID0gcHJpdi1cdTAwM2V1c2VyXzJnX2hlX2NhcF9sZW47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTEyNS1cdGZvciAobnNzID0gMTsgbnNzIFx1MDAzYz0gODsgbnNzJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjEyNjpcdFx0Y2ZnX3ZhbHVlID0gbnhwd2lmaV9nZXRfaGVfbnNzX21jcyhoZV9jYXAtXHUwMDNlcnhfbWNzXzgwLCBuc3MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjEyNzpcdFx0aHdfdmFsdWUgPSBueHB3aWZpX2dldF9oZV9uc3NfbWNzKGh3X2hlX2NhcC1cdTAwM2VyeF9tY3NfODAsIG5zcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTI4LVx0XHRpZiAocnhfbnNzICE9IDAgXHUwMDI2XHUwMDI2IG5zcyBcdTAwM2UgcnhfbnNzKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMzAtXHRcdGlmIChod192YWx1ZSA9PSBOT19OU1NfU1VQUE9SVCB8fCBjZmdfdmFsdWUgPT0gTk9fTlNTX1NVUFBPUlQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTMxOlx0XHRcdG54cHdpZmlfc2V0X2hlX25zc19tY3MoXHUwMDI2aGVfY2FwLVx1MDAzZXJ4X21jc184MCwgbnNzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTEzMi1cdFx0XHRcdFx0ICAgICAgIE5PX05TU19TVVBQT1JUKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMzMtXHRcdGVsc2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxMzQ6XHRcdFx0bnhwd2lmaV9zZXRfaGVfbnNzX21jcyhcdTAwMjZoZV9jYXAtXHUwMDNlcnhfbWNzXzgwLCBuc3MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTM1LVx0XHRcdFx0XHQgICAgICAgbWluKGNmZ192YWx1ZSwgaHdfdmFsdWUpKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTM4LVx0Zm9yIChuc3MgPSAxOyBuc3MgXHUwMDNjPSA4OyBuc3MmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTM5Olx0XHRjZmdfdmFsdWUgPSBueHB3aWZpX2dldF9oZV9uc3NfbWNzKGhlX2NhcC1cdTAwM2V0eF9tY3NfODAsIG5zcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTQwOlx0XHRod192YWx1ZSA9IG54cHdpZmlfZ2V0X2hlX25zc19tY3MoaHdfaGVfY2FwLVx1MDAzZXR4X21jc184MCwgbnNzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNDEtXHRcdGlmICh0eF9uc3MgIT0gMCBcdTAwMjZcdTAwMjYgbnNzIFx1MDAzZSB0eF9uc3MpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE0My1cdFx0aWYgKGh3X3ZhbHVlID09IE5PX05TU19TVVBQT1JUIHx8IGNmZ192YWx1ZSA9PSBOT19OU1NfU1VQUE9SVClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNDQ6XHRcdFx0bnhwd2lmaV9zZXRfaGVfbnNzX21jcyhcdTAwMjZoZV9jYXAtXHUwMDNldHhfbWNzXzgwLCBuc3MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTQ1LVx0XHRcdFx0XHQgICAgICAgTk9fTlNTX1NVUFBPUlQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE0Ni1cdFx0ZWxzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE0NzpcdFx0XHRueHB3aWZpX3NldF9oZV9uc3NfbWNzKFx1MDAyNmhlX2NhcC1cdTAwM2V0eF9tY3NfODAsIG5zcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNDgtXHRcdFx0XHRcdCAgICAgICBtaW4oY2ZnX3ZhbHVlLCBod192YWx1ZSkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTU0OmludCBueHB3aWZpX2NtZF9hcHBlbmRfMTFheF90bHYoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNTU6XHRcdFx0XHRzdHJ1Y3Qgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNTYtXHRcdFx0XHR1OCAqKmJ1ZmZlcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNTcte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE1ODpcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqaGVfY2FwID0gTlVMTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNTktXHRpbnQgcmV0X2xlbjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTYzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE2NDpcdGhlX2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKikqYnVmZmVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE2NTpcdHJldF9sZW4gPSBueHB3aWZpX2ZpbGxfaGVfY2FwX3Rsdihwcml2LCBoZV9jYXAsIGJzc19kZXNjLVx1MDAzZWJzc19iYW5kKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNjYtXHQqYnVmZmVyICYjNDM7PSByZXRfbGVuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTcxOmludCBueHB3aWZpX2NtZF8xMWF4X2NmZyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE3Mi1cdFx0XHQgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCwgdTE2IGNtZF9hY3Rpb24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTczOlx0XHRcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2hlX2NmZyAqYXhfY2ZnKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE3NC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE3Ni1cdHUxNiBjbWRfc2l6ZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNzc6XHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZWFkZXIgKmhlYWRlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNzgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE4Ni1cdCAgICBheF9jZmctXHUwMDNlaGVfY2FwX2NmZy5leHRfaWQgPT0gV0xBTl9FSURfRVhUX0hFX0NBUEFCSUxJVFkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxODc6XHRcdGhlYWRlciA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZWFkZXIgKiloZV9jZmctXHUwMDNldGx2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE4OC1cdFx0aGVhZGVyLVx1MDAzZXR5cGUgPSBjcHVfdG9fbGUxNihheF9jZmctXHUwMDNlaGVfY2FwX2NmZy5pZCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTIwMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyMDE6aW50IG54cHdpZmlfcmV0XzExYXhfY2ZnKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjAyLVx0XHRcdCBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqcmVzcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyMDM6XHRcdFx0IHN0cnVjdCBueHB3aWZpXzExYXhfaGVfY2ZnICpheF9jZmcpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjA0LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yMDUtXHRzdHJ1Y3QgaG9zdF9jbWRfMTFheF9jZmcgKmhlX2NmZyA9IFx1MDAyNnJlc3AtXHUwMDNlcGFyYW1zLmF4X2NmZztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyMDY6XHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZWFkZXIgKmhlYWRlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yMDctXHR1MTYgbGVmdF9sZW4sIHRsdl90eXBlLCB0bHZfbGVuO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTIwOC1cdHU4IGV4dF9pZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyMDk6XHRzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2hlX2NhcF9jZmcgKmhlX2NhcCA9IFx1MDAyNmF4X2NmZy1cdTAwM2VoZV9jYXBfY2ZnO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTIxMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yMTEtXHRsZWZ0X2xlbiA9IGxlMTZfdG9fY3B1KHJlc3AtXHUwMDNlc2l6ZSkgLSBzaXplb2YoKmhlX2NmZykgLSBTX0RTX0dFTjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyMTI6XHRoZWFkZXIgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVhZGVyICopaGVfY2ZnLVx1MDAzZXRsdjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yMTMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI0Mi1cdFx0bGVmdF9sZW4gLT0gKHNpemVvZigqaGVhZGVyKSAmIzQzOyB0bHZfbGVuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNDM6XHRcdGhlYWRlciA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZWFkZXIgKikoKHU4ICopaGVhZGVyICYjNDM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjQ0LVx0XHRcdFx0XHRcdFx0ICAgIHNpemVvZigqaGVhZGVyKSAmIzQzO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yNTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjUxOmludCBueHB3aWZpX2NtZF8xMWF4X2NtZChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI1Mi1cdFx0XHQgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCwgdTE2IGNtZF9hY3Rpb24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjUzOlx0XHRcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2NtZF9jZmcgKmF4X2NtZClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yNTQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI1NTpcdHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIgPSBwcml2LVx1MDAzZWFkYXB0ZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjU2LVx0c3RydWN0IGhvc3RfY21kXzExYXhfY21kICpoZV9jbWQgPSBcdTAwMjZjbWQtXHUwMDNlcGFyYW1zLmF4X2NtZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yNTctXHR1MTYgY21kX3NpemU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjU4Olx0c3RydWN0IG54cHdpZmlfMTFheF9zcl9jbWQgKnNyX2NtZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNTk6XHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19kYXRhICp0bHY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjYwOlx0c3RydWN0IG54cHdpZmlfMTFheF9iZWFtX2NtZCAqYmVhbV9jbWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjYxOlx0c3RydWN0IG54cHdpZmlfMTFheF9odGNfY21kICpodGNfY21kO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI2MjpcdHN0cnVjdCBueHB3aWZpXzExYXhfdHhvbWlfY21kICp0eG1vaV9jbWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjYzOlx0c3RydWN0IG54cHdpZmlfMTFheF90b2x0aW1lX2NtZCAqdG9sdGltZV9jbWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjY0Olx0c3RydWN0IG54cHdpZmlfMTFheF90eG9wX2NtZCAqdHhvcF9jbWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjY1Olx0c3RydWN0IG54cHdpZmlfMTFheF9zZXRfYnNycF9jbWQgKnNldF9ic3JwX2NtZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNjY6XHRzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2xsZGVfY21kICpsbGRlX2NtZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yNjctXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI3NS1cdGNhc2UgTlhQV0lGSV8xMUFYQ01EX1NSX1NVQklEOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI3NjpcdFx0c3JfY21kID0gKHN0cnVjdCBueHB3aWZpXzExYXhfc3JfY21kICopXHUwMDI2YXhfY21kLVx1MDAzZXBhcmFtO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI3Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNzg6XHRcdHRsdiA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19kYXRhICopaGVfY21kLVx1MDAzZXZhbDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yNzktXHRcdHRsdi1cdTAwM2VoZWFkZXIudHlwZSA9IGNwdV90b19sZTE2KHNyX2NtZC1cdTAwM2V0eXBlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjg1LVx0Y2FzZSBOWFBXSUZJXzExQVhDTURfQkVBTV9TVUJJRDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyODY6XHRcdGJlYW1fY21kID0gKHN0cnVjdCBueHB3aWZpXzExYXhfYmVhbV9jbWQgKilcdTAwMjZheF9jbWQtXHUwMDNlcGFyYW07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjg3LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yOTEtXHRjYXNlIE5YUFdJRklfMTFBWENNRF9IVENfU1VCSUQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjkyOlx0XHRodGNfY21kID0gKHN0cnVjdCBueHB3aWZpXzExYXhfaHRjX2NtZCAqKVx1MDAyNmF4X2NtZC1cdTAwM2VwYXJhbTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yOTMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI5Ny1cdGNhc2UgTlhQV0lGSV8xMUFYQ01EX1RYT01JX1NVQklEOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI5ODpcdFx0dHhtb2lfY21kID1cdChzdHJ1Y3Qgbnhwd2lmaV8xMWF4X3R4b21pX2NtZCAqKVx1MDAyNmF4X2NtZC1cdTAwM2VwYXJhbTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yOTktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTMwMy1cdGNhc2UgTlhQV0lGSV8xMUFYQ01EX09CU1NfVE9MVElNRV9TVUJJRDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozMDQ6XHRcdHRvbHRpbWVfY21kID0gKHN0cnVjdCBueHB3aWZpXzExYXhfdG9sdGltZV9jbWQgKilcdTAwMjZheF9jbWQtXHUwMDNlcGFyYW07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzA1LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zMTAtXHRjYXNlIE5YUFdJRklfMTFBWENNRF9UWE9QUlRTX1NVQklEOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjMxMTpcdFx0dHhvcF9jbWQgPSAoc3RydWN0IG54cHdpZmlfMTFheF90eG9wX2NtZCAqKVx1MDAyNmF4X2NtZC1cdTAwM2VwYXJhbTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zMTItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTMxNy1cdGNhc2UgTlhQV0lGSV8xMUFYQ01EX1NFVF9CU1JQX1NVQklEOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjMxODpcdFx0c2V0X2JzcnBfY21kID0gKHN0cnVjdCBueHB3aWZpXzExYXhfc2V0X2JzcnBfY21kICopXHUwMDI2YXhfY21kLVx1MDAzZXBhcmFtO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTMxOS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzIzLVx0Y2FzZSBOWFBXSUZJXzExQVhDTURfTExERV9TVUJJRDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozMjQ6XHRcdGxsZGVfY21kID0gKHN0cnVjdCBueHB3aWZpXzExYXhfbGxkZV9jbWQgKilcdTAwMjZheF9jbWQtXHUwMDNlcGFyYW07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzI1LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zMjktXHRkZWZhdWx0OlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjMzMDpcdFx0bnhwd2lmaV9kYmcoYWRhcHRlciwgRVJST1IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzMxLVx0XHRcdCAgICBcJiMzNDslczogVW5rbm93biBzdWIgY29tbWFuZDogJWRcXG5cJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM0MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozNDE6aW50IG54cHdpZmlfcmV0XzExYXhfY21kKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzQyLVx0XHRcdCBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqcmVzcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozNDM6XHRcdFx0IHN0cnVjdCBueHB3aWZpXzExYXhfY21kX2NmZyAqYXhfY21kKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM0NC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MzQ1Olx0c3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtXHUwMDNlYWRhcHRlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zNDYtXHRzdHJ1Y3QgaG9zdF9jbWRfMTFheF9jbWQgKmhlX2NtZCA9IFx1MDAyNnJlc3AtXHUwMDNlcGFyYW1zLmF4X2NtZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozNDc6XHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19kYXRhICp0bHY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzQ4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zNTItXHRjYXNlIE5YUFdJRklfMTFBWENNRF9TUl9TVUJJRDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozNTM6XHRcdHRsdiA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19kYXRhICopaGVfY21kLVx1MDAzZXZhbDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zNTQtXHRcdG1lbWNweShheF9jbWQtXHUwMDNlcGFyYW0uc3JfY2ZnLnBhcmFtLm9ic3NfcGRfb2Zmc2V0Lm9mZnNldCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzgzLVx0ZGVmYXVsdDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozODQ6XHRcdG54cHdpZmlfZGJnKGFkYXB0ZXIsIEVSUk9SLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM4NS1cdFx0XHQgICAgXCYjMzQ7JXM6IFVua25vd24gc3ViIGNvbW1hbmQ6ICVkXFxuXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zOTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MzkzOnN0YXRpYyB1OCBueHB3aWZpX2lzX2FwXzExYXhfdHd0X3N1cHBvcnRlZChzdHJ1Y3Qgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zOTQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDEwOmJvb2wgbnhwd2lmaV9pc18xMWF4X3R3dF9zdXBwb3J0ZWQoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0MTE6XHRcdFx0XHQgICBzdHJ1Y3Qgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MTIte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQxMzpcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqdXNlcl9oZV9jYXA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDE0Olx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICpod19oZV9jYXA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDE1LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDE5Olx0aWYgKCFueHB3aWZpX2lzX2FwXzExYXhfdHd0X3N1cHBvcnRlZChic3NfZGVzYykpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0MjA6XHRcdG54cHdpZmlfZGJnKHByaXYtXHUwMDNlYWRhcHRlciwgTVNHLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQyMS1cdFx0XHQgICAgXCYjMzQ7QVAgZG9uJiMzOTt0IHN1cHBvcnQgdHd0IGZlYXR1cmVcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MjUtXHRpZiAoYnNzX2Rlc2MtXHUwMDNlYnNzX2JhbmQgXHUwMDI2IEJBTkRfQSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQyNjpcdFx0aHdfaGVfY2FwID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQyNy1cdFx0XHRwcml2LVx1MDAzZWFkYXB0ZXItXHUwMDNlaHdfaGVfY2FwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQyODpcdFx0dXNlcl9oZV9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICopXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDI5LVx0XHRcdHByaXYtXHUwMDNldXNlcl9oZV9jYXA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDMwLVx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0MzE6XHRcdGh3X2hlX2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MzItXHRcdFx0cHJpdi1cdTAwM2VhZGFwdGVyLVx1MDAzZWh3XzJnX2hlX2NhcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0MzM6XHRcdHVzZXJfaGVfY2FwID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQzNC1cdFx0XHRwcml2LVx1MDAzZXVzZXJfMmdfaGVfY2FwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MzctXHRpZiAoIShod19oZV9jYXAtXHUwMDNlaGVfbWFjX2NhcFswXSBcdTAwMjYgSEVfTUFDX0NBUF9UV1RfUkVRX1NVUFBPUlQpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDM4Olx0XHRueHB3aWZpX2RiZyhwcml2LVx1MDAzZWFkYXB0ZXIsIE1TRyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MzktXHRcdFx0ICAgIFwmIzM0O0ZXIGRvbiYjMzk7dCBzdXBwb3J0IFRXVFxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ0My1cdGlmICghKHVzZXJfaGVfY2FwLVx1MDAzZWhlX21hY19jYXBbMF0gXHUwMDI2IEhFX01BQ19DQVBfVFdUX1JFUV9TVVBQT1JUKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ0NDpcdFx0bnhwd2lmaV9kYmcocHJpdi1cdTAwM2VhZGFwdGVyLCBNU0csXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDQ1LVx0XHRcdCAgICBcJiMzNDtVU0VSIEhFX01BQ19DQVAgZG9uJiMzOTt0IHN1cHBvcnQgVFdUXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDUxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ1Mjp1OCBueHB3aWZpX2lzX3N0YV8xMWF4X3R3dF9yZXFfc3VwcG9ydGVkKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDUzLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0NTQ6XHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKnVzZXJfaGVfY2FwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ1NS1cdHU4IHJldCA9IDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ1OS1cdFx0aWYgKHByaXYtXHUwMDNlY29uZmlnX2JhbmRzIFx1MDAyNiBCQU5EX0FBWClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0NjA6XHRcdFx0dXNlcl9oZV9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICopcHJpdi1cdTAwM2V1c2VyX2hlX2NhcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00NjEtXHRcdGVsc2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0NjI6XHRcdFx0dXNlcl9oZV9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICopcHJpdi1cdTAwM2V1c2VyXzJnX2hlX2NhcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00NjMtXHRcdHJldCA9IHVzZXJfaGVfY2FwLVx1MDAzZWhlX21hY19jYXBbMF0gXHUwMDI2IEhFX01BQ19DQVBfVFdUX1JFUV9TVVBQT1JUO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00NjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDY5OmludCBueHB3aWZpX2NtZF90d3RfY2ZnKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDcwLVx0XHRcdHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpjbWQsIHUxNiBjbWRfYWN0aW9uLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ3MTpcdFx0XHRzdHJ1Y3Qgbnhwd2lmaV90d3RfY2ZnICp0d3RfY2ZnKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ3Mi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDczOlx0c3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtXHUwMDNlYWRhcHRlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00NzQtXHRzdHJ1Y3QgaG9zdF9jbWRfdHd0X2NmZyAqdHd0X2NmZ19jbWQgPSBcdTAwMjZjbWQtXHUwMDNlcGFyYW1zLnR3dF9jZmc7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDc1Olx0c3RydWN0IG54cHdpZmlfdHd0X3NldHVwICp0d3Rfc2V0dXA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDc2Olx0c3RydWN0IG54cHdpZmlfdHd0X3RlYXJkb3duICp0d3RfdGVhcmRvd247XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDc3Olx0c3RydWN0IG54cHdpZmlfdHd0X3JlcG9ydCAqdHd0X3JlcG9ydDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0Nzg6XHRzdHJ1Y3Qgbnhwd2lmaV90d3RfaW5mb3JtYXRpb24gKnR3dF9pbmZvcm1hdGlvbjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0Nzk6XHRzdHJ1Y3Qgbnhwd2lmaV9idHd0X2FwX2NvbmZpZyAqYnR3dF9hcF9jb25maWc7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDgwLVx0dTggaTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDkwLVx0Y2FzZSBOWFBXSUZJXzExQVhfVFdUX1NFVFVQX1NVQklEOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ5MTpcdFx0dHd0X3NldHVwID0gKHN0cnVjdCBueHB3aWZpX3R3dF9zZXR1cCAqKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ5Mi1cdFx0XHR0d3RfY2ZnX2NtZC1cdTAwM2V2YWw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDkzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ5NDpcdFx0bWVtc2V0KHR3dF9zZXR1cCwgMHgwMCwgc2l6ZW9mKHN0cnVjdCBueHB3aWZpX3R3dF9zZXR1cCkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ5NS1cdFx0dHd0X3NldHVwLVx1MDAzZWltcGxpY2l0ID0gdHd0X2NmZy1cdTAwM2VwYXJhbS50d3Rfc2V0dXAuaW1wbGljaXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUwNy1cdFx0dHd0X3NldHVwLVx1MDAzZWJjbl9taXNzX3RocmVzaG9sZCA9IHR3dF9jZmctXHUwMDNlcGFyYW0udHd0X3NldHVwLmJjbl9taXNzX3RocmVzaG9sZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1MDg6XHRcdGNtZF9zaXplICYjNDM7PSBzaXplb2Yoc3RydWN0IG54cHdpZmlfdHd0X3NldHVwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MDktXHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUxMC1cdGNhc2UgTlhQV0lGSV8xMUFYX1RXVF9URUFSRE9XTl9TVUJJRDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1MTE6XHRcdHR3dF90ZWFyZG93biA9IChzdHJ1Y3Qgbnhwd2lmaV90d3RfdGVhcmRvd24gKilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MTItXHRcdFx0dHd0X2NmZ19jbWQtXHUwMDNldmFsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUxMy1cdFx0bWVtc2V0KHR3dF90ZWFyZG93biwgMHgwMCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1MTQ6XHRcdCAgICAgICBzaXplb2Yoc3RydWN0IG54cHdpZmlfdHd0X3RlYXJkb3duKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTE1LVx0XHR0d3RfdGVhcmRvd24tXHUwMDNlZmxvd19pZGVudGlmaWVyID1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTIwLVx0XHRcdHR3dF9jZmctXHUwMDNlcGFyYW0udHd0X3RlYXJkb3duLnRlYXJkb3duX2FsbF90d3Q7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTIxOlx0XHRjbWRfc2l6ZSAmIzQzOz0gc2l6ZW9mKHN0cnVjdCBueHB3aWZpX3R3dF90ZWFyZG93bik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTIyLVx0XHRicmVhaztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MjMtXHRjYXNlIE5YUFdJRklfMTFBWF9UV1RfUkVQT1JUX1NVQklEOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjUyNDpcdFx0dHd0X3JlcG9ydCA9IChzdHJ1Y3Qgbnhwd2lmaV90d3RfcmVwb3J0ICopXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTI1LVx0XHRcdHR3dF9jZmdfY21kLVx1MDAzZXZhbDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1MjY6XHRcdG1lbXNldCh0d3RfcmVwb3J0LCAweDAwLCBzaXplb2Yoc3RydWN0IG54cHdpZmlfdHd0X3JlcG9ydCkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUyNy1cdFx0dHd0X3JlcG9ydC1cdTAwM2V0eXBlID0gdHd0X2NmZy1cdTAwM2VwYXJhbS50d3RfcmVwb3J0LnR5cGU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTI4Olx0XHRjbWRfc2l6ZSAmIzQzOz0gc2l6ZW9mKHN0cnVjdCBueHB3aWZpX3R3dF9yZXBvcnQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUyOS1cdFx0YnJlYWs7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTMwLVx0Y2FzZSBOWFBXSUZJXzExQVhfVFdUX0lORk9STUFUSU9OX1NVQklEOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjUzMTpcdFx0dHd0X2luZm9ybWF0aW9uID0gKHN0cnVjdCBueHB3aWZpX3R3dF9pbmZvcm1hdGlvbiAqKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUzMi1cdFx0XHR0d3RfY2ZnX2NtZC1cdTAwM2V2YWw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTMzLVx0XHRtZW1zZXQodHd0X2luZm9ybWF0aW9uLCAweDAwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjUzNDpcdFx0ICAgICAgIHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV90d3RfaW5mb3JtYXRpb24pKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MzUtXHRcdHR3dF9pbmZvcm1hdGlvbi1cdTAwM2VmbG93X2lkZW50aWZpZXIgPVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MzgtXHRcdFx0dHd0X2NmZy1cdTAwM2VwYXJhbS50d3RfaW5mb3JtYXRpb24uc3VzcGVuZF9kdXJhdGlvbjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1Mzk6XHRcdGNtZF9zaXplICYjNDM7PSBzaXplb2Yoc3RydWN0IG54cHdpZmlfdHd0X2luZm9ybWF0aW9uKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NDAtXHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU0MS1cdGNhc2UgTlhQV0lGSV8xMUFYX0JUV1RfQVBfQ09ORklHX1NVQklEOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU0MjpcdFx0YnR3dF9hcF9jb25maWcgPSAoc3RydWN0IG54cHdpZmlfYnR3dF9hcF9jb25maWcgKilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NDMtXHRcdFx0XHQgdHd0X2NmZ19jbWQtXHUwMDNldmFsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU0NC1cdFx0bWVtc2V0KGJ0d3RfYXBfY29uZmlnLCAweDAwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU0NTpcdFx0ICAgICAgIHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV9idHd0X2FwX2NvbmZpZykpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU0Ni1cdFx0YnR3dF9hcF9jb25maWctXHUwMDNlYXBfYmNhc3RfYmV0X3N0YV93YWl0ID1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTY0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU2NTpcdFx0Y21kX3NpemUgJiM0Mzs9IHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV9idHd0X2FwX2NvbmZpZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTY2LVx0XHRicmVhaztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NjctXHRkZWZhdWx0OlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU2ODpcdFx0bnhwd2lmaV9kYmcoYWRhcHRlciwgRVJST1IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTY5LVx0XHRcdCAgICBcJiMzNDtVbmtub3duIHN1YiBpZDogJWRcXG5cJiMzNDssIHR3dF9jZmctXHUwMDNlc3ViX2lkKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTc3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU3ODppbnQgbnhwd2lmaV9yZXRfdHd0X2NmZyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU3OS1cdFx0XHRzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqcmVzcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1ODA6XHRcdFx0c3RydWN0IG54cHdpZmlfdHd0X2NmZyAqdHd0X2NmZylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01ODEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01ODktXHQgICAgdHd0X2NmZy1cdTAwM2VzdWJfaWQgPT0gTlhQV0lGSV8xMUFYX1RXVF9SRVBPUlRfU1VCSUQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1OTA6XHRcdHN0cnVjdCBueHB3aWZpX3R3dF9yZXBvcnQgKnR3dF9yZXBvcnQgPVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU5MTpcdFx0XHQoc3RydWN0IG54cHdpZmlfdHd0X3JlcG9ydCAqKXR3dF9jZmdfY21kLVx1MDAzZXZhbDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01OTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTkzOlx0XHRtZW1jcHkoXHUwMDI2dHd0X2NmZy1cdTAwM2VwYXJhbS50d3RfcmVwb3J0LCB0d3RfcmVwb3J0LCBzaXplb2Yoc3RydWN0IG54cHdpZmlfdHd0X3JlcG9ydCkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU5NC1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtMi0vKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjM6ICogbnhwd2lmaTogODAyLjExYXggc3VwcG9ydFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTQtICpcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg9MTc9c3RhdGljIGlubGluZSB1MTZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDoxODpueHB3aWZpX2dldF9oZV9uc3NfbWNzKF9fbGUxNiBtY3NfbWFwX3NldCwgaW50IG5zcykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTE5LVx0cmV0dXJuICgobGUxNl90b19jcHUobWNzX21hcF9zZXQpIFx1MDAzZVx1MDAzZSAoMiAqIChuc3MgLSAxKSkpIFx1MDAyNiAweDMpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaD0yMj1zdGF0aWMgaW5saW5lIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDoyMzpueHB3aWZpX3NldF9oZV9uc3NfbWNzKF9fbGUxNiAqbWNzX21hcF9zZXQsIGludCBuc3MsIGludCB2YWx1ZSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTI0LVx0dTE2IHRlbXA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTMwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjMxOmJvb2wgbnhwd2lmaV9pc18xMWF4X3R3dF9zdXBwb3J0ZWQoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDozMjpcdFx0XHRcdCAgIHN0cnVjdCAgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtMzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6MzQ6dm9pZCBueHB3aWZpX3VwZGF0ZV8xMWF4X2NhcChzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTM1LVx0XHRcdCAgICAgc3RydWN0IGh3X3NwZWNfZXh0ZW5zaW9uICpod19oZV9jYXApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTM2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjM3OmJvb2wgbnhwd2lmaV8xMWF4X2JhbmRjb25maWdfYWxsb3dlZChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjM4Olx0XHRcdFx0ICAgICBzdHJ1Y3Qgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtMzktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NDA6aW50IG54cHdpZmlfY21kX2FwcGVuZF8xMWF4X3RsdihzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjQxOlx0XHRcdFx0c3RydWN0IG54cHdpZmlfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNDItXHRcdFx0XHR1OCAqKmJ1ZmZlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NDQ6aW50IG54cHdpZmlfZmlsbF9oZV9jYXBfdGx2KHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NDU6XHRcdFx0ICAgIHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqaGVfY2FwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTQ2LVx0XHRcdCAgICB1MTYgYmFuZHMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjQ3OmludCBueHB3aWZpX2NtZF8xMWF4X2NmZyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTQ4LVx0XHRcdCBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqY21kLCB1MTYgY21kX2FjdGlvbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDo0OTpcdFx0XHQgc3RydWN0IG54cHdpZmlfMTFheF9oZV9jZmcgKmF4X2NmZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NTE6aW50IG54cHdpZmlfcmV0XzExYXhfY2ZnKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNTItXHRcdFx0IHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpyZXNwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjUzOlx0XHRcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2hlX2NmZyAqYXhfY2ZnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC01NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDo1NTppbnQgbnhwd2lmaV9jbWRfMTFheF9jbWQoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC01Ni1cdFx0XHQgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCwgdTE2IGNtZF9hY3Rpb24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NTc6XHRcdFx0IHN0cnVjdCBueHB3aWZpXzExYXhfY21kX2NmZyAqYXhfY21kKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC01OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDo1OTppbnQgbnhwd2lmaV9yZXRfMTFheF9jbWQoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC02MC1cdFx0XHQgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3AsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NjE6XHRcdFx0IHN0cnVjdCBueHB3aWZpXzExYXhfY21kX2NmZyAqYXhfY21kKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC02Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDo2MzppbnQgbnhwd2lmaV9jbWRfdHd0X2NmZyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTY0LVx0XHRcdHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpjbWQsIHUxNiBjbWRfYWN0aW9uLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjY1Olx0XHRcdHN0cnVjdCBueHB3aWZpX3R3dF9jZmcgKnR3dF9jZmcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTY2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjY3OmludCBueHB3aWZpX3JldF90d3RfY2ZnKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNjgtXHRcdFx0c3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3AsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6Njk6XHRcdFx0c3RydWN0IG54cHdpZmlfdHd0X2NmZyAqdHd0X2NmZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NzE6dTggbnhwd2lmaV9pc19zdGFfMTFheF90d3RfcmVxX3N1cHBvcnRlZChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC03Mi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYy0yLS8qXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYzozOiAqIG54cHdpZmk6IDgwMi4xMWggaGVscGVyc1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmMtNC0gKlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExaC5jLTEyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmM6MTM6dm9pZCBueHB3aWZpX2luaXRfMTFoX3BhcmFtcyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmMtMTQte1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDc6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk0NTMKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiA1MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aGlua2luZyBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgbnhwd2lmaSBNb2R1bGUgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBgbnhwd2lmaWAgZHJpdmVyLiBNeSBmaXJzdCBzdGVwIGlzIHRvIGNyYWNrIG9wZW4gdGhlIGBLY29uZmlnYCBhbmQgYE1ha2VmaWxlYCBmaWxlcy4gVGhvc2UgYXJlIGFsd2F5cyB0aGUga2V5IHN0YXJ0aW5nIHBvaW50cy4gVGhlIGBLY29uZmlnYCBzaG91bGQgcmV2ZWFsIGFsbCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zOiB0aGluZ3MgbGlrZSBzdXBwb3J0ZWQgY2hpcHNldHMsIGZlYXR1cmUgZmxhZ3MsIGFueSBkZXBlbmRlbmNpZXMgb24gb3RoZXIgbW9kdWxlcywgYW5kIGhvdyB0aGUgZHJpdmVyIHByZXNlbnRzIGl0c2VsZiB0byB0aGUgdXNlci4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIHRoYXQgZGVmaW5lIHNwZWNpZmljIGhhcmR3YXJlIGZlYXR1cmVzIG9yIG1vZGVzIG9mIG9wZXJhdGlvbiDigJMgdGhpcyB3aWxsIGdpdmUgbWUgdGhlIGJ1aWxkaW5nIGJsb2NrcyBvZiB1bmRlcnN0YW5kaW5nIHdoYXQmIzM5O3MgcG9zc2libGUuCgpUaGVuLCBJJiMzOTtsbCBtb3ZlIG92ZXIgdG8gdGhlIGBNYWtlZmlsZWAuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIHJ1YmJlciByZWFsbHkgaGl0cyB0aGUgcm9hZC4gSXQgd2lsbCBzaG93IHRoZSBjb21waWxhdGlvbiBwcm9jZXNzLCB0aGUgc291cmNlIGZpbGVzIGludm9sdmVkLCBhbmQgaW1wb3J0YW50bHksIHRoZSBoYXJkd2FyZSBpbnRlcmZhY2VzIGl0JiMzOTtzIHRhcmdldGluZy4gQXJlIHdlIHRhbGtpbmcgU1BJLCBTRElPLCBvciBQQ0llPyBXaGljaCBzcGVjaWZpYyBoYXJkd2FyZSB2YXJpYW50cyBhcmUgc3VwcG9ydGVkLCBhbmQgaG93IGlzIHRoZSBtb2R1bGUgc3RydWN0dXJlZCB0byBoYW5kbGUgdGhvc2UgZGlmZmVyaW5nIHBsYXRmb3Jtcz8gVGhlIE1ha2VmaWxlIHNob3VsZCBpbGx1bWluYXRlIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHRoZSBvdmVyYWxsIGJ1aWxkIGVudmlyb25tZW50IGZvciB0aGUgZHJpdmVyLiBJIGV4cGVjdCBhIGdvb2QgTWFrZWZpbGUgd2lsbCBjbGVhcmx5IG91dGxpbmUgdGhlIG1vZHVsZXMsIGFuZCBpbmNsdWRlIGZpbGVzLgoKVW5kZXJzdGFuZGluZyB0aGVzZSB0d28gZmlsZXMgd2lsbCBiZSBlc3NlbnRpYWwgZm9yIGFueSBkZWVwZXIgYW5hbHlzaXMgb3IgcG90ZW50aWFsIG1vZGlmaWNhdGlvbnMuIEl0JiMzOTtzIHRoZSBncm91bmR3b3JrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA3OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBOWFBXSUZJXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtOWFAgV2lGaSBEcml2ZXJcJiMzNDsgaWYgQ09NUElMRV9URVNUXG4gICA0Olx0XHRkZXBlbmRzIG9uIENGRzgwMjExXG4gICA1Olx0XHRoZWxwXG4gICA2Olx0XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciB3aXJlbGVzcyBhZGFwdGVycyBiYXNlZCBvbiBOWFBcbiAgIDc6XHRcdCAgODAyLjExbi9hYyBjaGlwc2V0cy5cbiAgIDg6XHRcbiAgIDk6XHRcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBpdCBhcyBhIG1vZHVsZSwgaXQgd2lsbCBiZSBjYWxsZWRcbiAgMTA6XHRcdCAgbnhwd2lmaS5cbiAgMTE6XHRcbiAgMTI6XHRjb25maWcgTlhQV0lGSV9TRElPXG4gIDEzOlx0XHR0cmlzdGF0ZSBcJiMzNDtOWFAgV2lGaSBEcml2ZXIgZm9yIElXNjF4XCYjMzQ7XG4gIDE0Olx0XHRkZXBlbmRzIG9uIENGRzgwMjExIFx1MDAyNlx1MDAyNiBNTUNcbiAgMTU6XHRcdHNlbGVjdCBOWFBXSUZJXG4gIDE2Olx0XHRzZWxlY3QgRldfTE9BREVSXG4gIDE3Olx0XHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcbiAgMTg6XHRcdGhlbHBcbiAgMTk6XHRcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIHdpcmVsZXNzIGFkYXB0ZXJzIGJhc2VkIG9uIE5YUFxuICAyMDpcdFx0ICBJVzYxeCBpbnRlcmZhY2UuXG4gIDIxOlx0XG4gIDIyOlx0XHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXG4gIDIzOlx0XHQgIG54cHdpZmlfc2Rpby5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwNzo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDEyOAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRGl2aW5nIGludG8gdGhlIE1ha2VmaWxlKioKCk9rYXksIHNvIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IHRoZSBOWFAgV2ktRmkgZHJpdmVyLCBhbmQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGJ1aWxkIHByb2Nlc3MuIExldCYjMzk7cyBzZWUuLi4gKm54cHdpZmkvTWFrZWZpbGUqIGlzIHdoZXJlIHRoZSBhY3Rpb24gaXMuIFRoaXMgaXMgd2hlcmUgSSYjMzk7bGwgZ2V0IHRoZSBsYXkgb2YgdGhlIGxhbmQsIHNlZSBob3cgdGhlIHNvdXJjZSBmaWxlcyBhcmUgY29tcGlsZWQsIGxpbmtlZCwgYW5kIGludGVncmF0ZWQgaW50byB0aGUgb3ZlcmFsbCBrZXJuZWwgYnVpbGQuIEkmIzM5O20gZXhwZWN0aW5nIHRvIGZpbmQgdGhlIHVzdWFsIHN1c3BlY3RzOiBvYmplY3QgZmlsZSB0YXJnZXRzLCBkZXBlbmRlbmN5IHJ1bGVzLCBmbGFncyBmb3IgdGhlIGNvbXBpbGVyIChnY2MsIGxpa2VseSksIHBlcmhhcHMgc29tZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBiYXNlZCBvbiBwbGF0Zm9ybSBvciBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGNsdWVzIG9uIGhvdyB0aGV5IGhhbmRsZSBmaXJtd2FyZSBsb2FkaW5nLCBhbnkgc3BlY2lmaWMgYm9hcmQtbGV2ZWwgZGVwZW5kZW5jaWVzLCBhbmQgaG93IHRoZXkgbWFuYWdlIG1vZHVsZXMgaWYgaXQmIzM5O3MgbW9kdWxhci4gSSYjMzk7bGwgYmUgbWVudGFsbHkgdHJhY2luZyB0aGUgZmxvdyBvZiBjb21waWxhdGlvbiB0byBnZXQgYSBnb29kIGhhbmRsZSBvbiBob3cgdGhlIGVudGlyZSBkcml2ZXIgaXMgc3RydWN0dXJlZCB3aXRoaW4gdGhlIG92ZXJhbGwgd2lyZWxlc3Mgc3Vic3lzdGVtLiBMZXQmIzM5O3Mgc2VlIHdoYXQgZ2VtcyBhcmUgaGlkZGVuIGluIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwNzo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL01ha2VmaWxlJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgQ29weXJpZ2h0IDIwMTEtMjAyMCBOWFBcbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0XG4gICA3Olx0bnhwd2lmaS15ICYjNDM7PSBtYWluLm9cbiAgIDg6XHRueHB3aWZpLXkgJiM0Mzs9IGluaXQub1xuICAgOTpcdG54cHdpZmkteSAmIzQzOz0gY2ZwLm9cbiAgMTA6XHRueHB3aWZpLXkgJiM0Mzs9IGNtZGV2dC5vXG4gIDExOlx0bnhwd2lmaS15ICYjNDM7PSB1dGlsLm9cbiAgMTI6XHRueHB3aWZpLXkgJiM0Mzs9IHR4cngub1xuICAxMzpcdG54cHdpZmkteSAmIzQzOz0gd21tLm9cbiAgMTQ6XHRueHB3aWZpLXkgJiM0Mzs9IDExbi5vXG4gIDE1Olx0bnhwd2lmaS15ICYjNDM7PSAxMWFjLm9cbiAgMTY6XHRueHB3aWZpLXkgJiM0Mzs9IDExYXgub1xuICAxNzpcdG54cHdpZmkteSAmIzQzOz0gMTFuX2FnZ3Iub1xuICAxODpcdG54cHdpZmkteSAmIzQzOz0gMTFuX3J4cmVvcmRlci5vXG4gIDE5Olx0bnhwd2lmaS15ICYjNDM7PSBzY2FuLm9cbiAgMjA6XHRueHB3aWZpLXkgJiM0Mzs9IGpvaW4ub1xuICAyMTpcdG54cHdpZmkteSAmIzQzOz0gc3RhX2NmZy5vXG4gIDIyOlx0bnhwd2lmaS15ICYjNDM7PSBzdGFfY21kLm9cbiAgMjM6XHRueHB3aWZpLXkgJiM0Mzs9IHVhcF9jbWQub1xuICAyNDpcdG54cHdpZmkteSAmIzQzOz0gaWUub1xuICAyNTpcdG54cHdpZmkteSAmIzQzOz0gc3RhX2V2ZW50Lm9cbiAgMjY6XHRueHB3aWZpLXkgJiM0Mzs9IHVhcF9ldmVudC5vXG4gIDI3Olx0bnhwd2lmaS15ICYjNDM7PSBzdGFfdHgub1xuICAyODpcdG54cHdpZmkteSAmIzQzOz0gc3RhX3J4Lm9cbiAgMjk6XHRueHB3aWZpLXkgJiM0Mzs9IHVhcF90eHJ4Lm9cbiAgMzA6XHRueHB3aWZpLXkgJiM0Mzs9IGNmZzgwMjExLm9cbiAgMzE6XHRueHB3aWZpLXkgJiM0Mzs9IGV0aHRvb2wub1xuICAzMjpcdG54cHdpZmkteSAmIzQzOz0gMTFoLm9cbiAgMzM6XHRueHB3aWZpLSQoQ09ORklHX0RFQlVHX0ZTKSAmIzQzOz0gZGVidWdmcy5vXG4gIDM0Olx0b2JqLSQoQ09ORklHX05YUFdJRkkpICYjNDM7PSBueHB3aWZpLm9cbiAgMzU6XHRcbiAgMzY6XHRueHB3aWZpX3NkaW8teSAmIzQzOz0gc2Rpby5vXG4gIDM3Olx0b2JqLSQoQ09ORklHX05YUFdJRklfU0RJTykgJiM0Mzs9IG54cHdpZmlfc2Rpby5vXG4gIDM4Olx0XG4gIDM5Olx0Y2NmbGFncy15ICYjNDM7PSAtRF9fQ0hFQ0tfRU5ESUFOXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA3OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMDMwCgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogNDEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIGBueHB3aWZpYCBEcml2ZXIgZm9yIEZ1enppbmcgU3VpdGFiaWxpdHkqKgoKT2theSwgc28gYG54cHdpZmlgIGlzIGFuIFNESU8gV2ktRmkgZHJpdmVyLCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50ZWQgYXMgYG54cHdpZmlfc2Rpby5vYCBvciBgbnhwd2lmaS5vYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBjYW4gSSBldmVuICpyZWFjaCogdGhpcyBkcml2ZXIgd2l0aGluIHRoZSB0eXBpY2FsIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB0aGF0IEkmIzM5O20gdXNpbmcsIGxpa2UgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmU/IEFuZCBJIG5lZWQgdG8gdmVyaWZ5LCBpcyB0aGVyZSBhbnkgY2hhbmNlIGl0JiMzOTtzIGVtdWxhdGVkIGluIHN0YW5kYXJkIHN5emthbGxlciAvIFFFTVUgc2V0dXBzPyBJJiMzOTttIGdvaW5nIHRvIGNhcmVmdWxseSByZXZpc2l0IHRoZSBpbnN0cnVjdGlvbnMgZm9yIGRldGVybWluaW5nIHdoZXRoZXIgYSBwYXRjaCBpcyB3b3J0aCBmdXp6aW5nLgoKU3BlY2lmaWNhbGx5LCBJJiMzOTttIGNoZWNraW5nIHRvIHNlZSBpZiB0aGlzIGRyaXZlciBmYWxscyB1bmRlciB0aGUgZXhlbXB0aW9ucyAtIGRvY3VtZW50YXRpb24gY2hhbmdlcywgbG9nZ2luZywgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkb24mIzM5O3QgY2hhbmdlIGV4ZWN1dGlvbiBmbG93LiBCdXQgdGhlIHJlYWxseSBrZXkgcG9pbnQgaXMgd2hldGhlciBpdCBjb250YWlucyBjb2RlIHRoYXQmIzM5O3MgKnVucmVhY2hhYmxlKiBpbiB0aGVzZSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIEkmIzM5O20gZm9jdXNpbmcgb24gdGhhdC4gQXJlIHdlIHRhbGtpbmcgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMsIG9yIGRyaXZlcnMgZGVwZW5kZW50IG9uIHNwZWNpZmljIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBieSBRRU1VPyBBbmQsIHZlcnkgaW1wb3J0YW50bHksIGFueSBkcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KClNvLCBsZXQmIzM5O3MgZ28gYmFjayB0byB0aGUgY2VudHJhbCBxdWVzdGlvbjogY2FuIGBueHB3aWZpYCBiZSByZWFjaGVkIGluIHRoZSBlbnZpcm9ubWVudHMgSSB1c2U/IE5vdywgZG9lcyBRRU1VLCBpbiBpdHMgZGVmYXVsdCBzZXR1cCwgYWN0dWFsbHkgZW11bGF0ZSB0aGUgTlhQIElXNjF4IFNESU8gV2ktRmkgY2FyZD8gSSYjMzk7bSBub3Qgc2VlaW5nIHRoYXQuIFFFTVUgZG9lcyBoYXZlIFNEIGNhcmQgZW11bGF0aW9uLCBidXQgdGhhdCYjMzk7cyBub3QgdGhlIHNhbWUgdGhpbmcuIEl0IGRvZXNuJiMzOTt0IGFwcGVhciB0byBiZSBlbXVsYXRpbmcgdGhlIHNwZWNpZmljIGBueHB3aWZpYCBoYXJkd2FyZSwgb3IgdGhlIGZpcm13YXJlIGFzc29jaWF0ZWQgd2l0aCB0aGF0IHNwZWNpZmljIFNESU8gd2lyZWxlc3MgY2FyZC4gU28gdGhlbiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGVyZSBpcyBhbnkgVVNCIGdhZGdldCBvciBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIGBueHB3aWZpYCB0aGF0IEkgY2FuIHVzZSBpbnN0ZWFkLCBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIGlmIHRoZXJlIGlzIGFuIGFsdGVybmF0ZSBwYXRoLgoKT2theSwgSSYjMzk7bSBnb2luZyB0byBkaWcgaW50byB0aGUgZHJpdmVyJiMzOTtzIGNvZGUgaXRzZWxmLiBJJiMzOTtsbCBuZWVkIHRvIGV4YW1pbmUgYHNkaW8uY2Ag4oCTIHRoYXQmIzM5O3Mgd2hlcmUgSSYjMzk7bGwgZmluZCBob3cgYG54cHdpZmlgIHByb2Jlcy4gVGhpcyBzaG91bGQgc2hvdyBtZSB0aGUgaGFyZHdhcmUgZGVwZW5kZW5jaWVzIGFuZCBob3cgdGhlIGRyaXZlciBpcyBpbml0aWFsaXplZCwgd2hpY2ggd2lsbCBkZXRlcm1pbmUgaWYgaXQmIzM5O3MgcmVhY2hhYmxlIG9yIG5vdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDc6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDgwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0LypcbiAgIDM6XHQgKiBOWFAgV2lyZWxlc3MgTEFOIGRldmljZSBkcml2ZXI6IFNESU8gc3BlY2lmaWMgaGFuZGxpbmdcbiAgIDQ6XHQgKlxuICAgNTpcdCAqIENvcHlyaWdodCAyMDExLTIwMjQgTlhQXG4gICA2Olx0ICovXG4gICA3Olx0XG4gICA4Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvZmlybXdhcmUuaFx1MDAzZVxuICAgOTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2NvbXBsZXRpb24uaFx1MDAzZVxuICAxMDpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L21tYy9zZGlvLmhcdTAwM2VcbiAgMTE6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9tbWMvc2Rpb19pZHMuaFx1MDAzZVxuICAxMjpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L21tYy9zZGlvX2Z1bmMuaFx1MDAzZVxuICAxMzpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L21tYy9jYXJkLmhcdTAwM2VcbiAgMTQ6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9tbWMvaG9zdC5oXHUwMDNlXG4gIDE1Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvaW9wb2xsLmhcdTAwM2VcbiAgMTY6XHQjaW5jbHVkZSBcJiMzNDtjZmcuaFwmIzM0O1xuICAxNzpcdCNpbmNsdWRlIFwmIzM0O3V0aWwuaFwmIzM0O1xuICAxODpcdCNpbmNsdWRlIFwmIzM0O2Z3LmhcJiMzNDtcbiAgMTk6XHQjaW5jbHVkZSBcJiMzNDttYWluLmhcJiMzNDtcbiAgMjA6XHQjaW5jbHVkZSBcJiMzNDt3bW0uaFwmIzM0O1xuICAyMTpcdCNpbmNsdWRlIFwmIzM0OzExbi5oXCYjMzQ7XG4gIDIyOlx0I2luY2x1ZGUgXCYjMzQ7c2Rpby5oXCYjMzQ7XG4gIDIzOlx0XG4gIDI0Olx0I2RlZmluZSBTRElPX1ZFUlNJT05cdFwmIzM0OzEuMFwmIzM0O1xuICAyNTpcdFxuICAyNjpcdC8qIFByb2Nlc3MgZGVmZXJyZWQgU0RJTyB3b3JrIGl0ZW1zLiAqL1xuICAyNzpcdHN0YXRpYyB2b2lkIG54cHdpZmlfc2Rpb193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7XG4gIDI4Olx0XG4gIDI5Olx0c3RhdGljIHN0cnVjdCBueHB3aWZpX2lmX29wcyBzZGlvX29wcztcbiAgMzA6XHRcbiAgMzE6XHRzdGF0aWMgY29uc3Qgc3RydWN0IG54cHdpZmlfc2Rpb19jYXJkX3JlZyBueHB3aWZpX3JlZ19pdzYxeCA9IHtcbiAgMzI6XHRcdC5zdGFydF9yZF9wb3J0ID0gMCxcbiAgMzM6XHRcdC5zdGFydF93cl9wb3J0ID0gMCxcbiAgMzQ6XHRcdC5iYXNlXzBfcmVnID0gMHhGOCxcbiAgMzU6XHRcdC5iYXNlXzFfcmVnID0gMHhGOSxcbiAgMzY6XHRcdC5wb2xsX3JlZyA9IDB4NUMsXG4gIDM3Olx0XHQuaG9zdF9pbnRfZW5hYmxlID0gVVBfTERfSE9TVF9JTlRfTUFTSyB8IEROX0xEX0hPU1RfSU5UX01BU0sgfFxuICAzODpcdFx0XHRcdCAgIENNRF9QT1JUX1VQTERfSU5UX01BU0sgfCBDTURfUE9SVF9ETkxEX0lOVF9NQVNLLFxuICAzOTpcdFx0Lmhvc3RfaW50X3Jzcl9yZWcgPSAweDQsXG4gIDQwOlx0XHQuaG9zdF9pbnRfc3RhdHVzX3JlZyA9IDB4MEMsXG4gIDQxOlx0XHQuaG9zdF9pbnRfbWFza19yZWcgPSAweDA4LFxuICA0MjpcdFx0Lmhvc3Rfc3RyYXBfcmVnID0gMHhGNCxcbiAgNDM6XHRcdC5ob3N0X3N0cmFwX21hc2sgPSAweDAxLFxuICA0NDpcdFx0Lmhvc3Rfc3RyYXBfdmFsdWUgPSAweDAwLFxuICA0NTpcdFx0LnN0YXR1c19yZWdfMCA9IDB4RTgsXG4gIDQ2Olx0XHQuc3RhdHVzX3JlZ18xID0gMHhFOSxcbiAgNDc6XHRcdC5zZGlvX2ludF9tYXNrID0gMHhmZixcbiAgNDg6XHRcdC5kYXRhX3BvcnRfbWFzayA9IDB4ZmZmZmZmZmYsXG4gIDQ5Olx0XHQuaW9fcG9ydF8wX3JlZyA9IDB4RTQsXG4gIDUwOlx0XHQuaW9fcG9ydF8xX3JlZyA9IDB4RTUsXG4gIDUxOlx0XHQuaW9fcG9ydF8yX3JlZyA9IDB4RTYsXG4gIDUyOlx0XHQubWF4X21wX3JlZ3MgPSAxOTYsXG4gIDUzOlx0XHQucmRfYml0bWFwX2wgPSAweDEwLFxuICA1NDpcdFx0LnJkX2JpdG1hcF91ID0gMHgxMSxcbiAgNTU6XHRcdC5yZF9iaXRtYXBfMWwgPSAweDEyLFxuICA1NjpcdFx0LnJkX2JpdG1hcF8xdSA9IDB4MTMsXG4gIDU3Olx0XHQud3JfYml0bWFwX2wgPSAweDE0LFxuICA1ODpcdFx0LndyX2JpdG1hcF91ID0gMHgxNSxcbiAgNTk6XHRcdC53cl9iaXRtYXBfMWwgPSAweDE2LFxuICA2MDpcdFx0LndyX2JpdG1hcF8xdSA9IDB4MTcsXG4gIDYxOlx0XHQucmRfbGVuX3AwX2wgPSAweDE4LFxuICA2MjpcdFx0LnJkX2xlbl9wMF91ID0gMHgxOSxcbiAgNjM6XHRcdC5jYXJkX21pc2NfY2ZnX3JlZyA9IDB4ZDgsXG4gIDY0Olx0XHQuY2FyZF9jZmdfMl8xX3JlZyA9IDB4ZDksXG4gIDY1Olx0XHQuY21kX3JkX2xlbl8wID0gMHhjMCxcbiAgNjY6XHRcdC5jbWRfcmRfbGVuXzEgPSAweGMxLFxuICA2NzpcdFx0LmNtZF9yZF9sZW5fMiA9IDB4YzIsXG4gIDY4Olx0XHQuY21kX3JkX2xlbl8zID0gMHhjMyxcbiAgNjk6XHRcdC5jbWRfY2ZnXzAgPSAweGM0LFxuICA3MDpcdFx0LmNtZF9jZmdfMSA9IDB4YzUsXG4gIDcxOlx0XHQuY21kX2NmZ18yID0gMHhjNixcbiAgNzI6XHRcdC5jbWRfY2ZnXzMgPSAweGM3LFxuICA3MzpcdFx0LmZ3X2R1bXBfaG9zdF9yZWFkeSA9IDB4Y2MsXG4gIDc0Olx0XHQuZndfZHVtcF9jdHJsID0gMHhmOSxcbiAgNzU6XHRcdC5md19kdW1wX3N0YXJ0ID0gMHhmMSxcbiAgNzY6XHRcdC5md19kdW1wX2VuZCA9IDB4ZjgsXG4gIDc3Olx0XHQuZnVuYzFfZHVtcF9yZWdfc3RhcnQgPSAweDEwLFxuICA3ODpcdFx0LmZ1bmMxX2R1bXBfcmVnX2VuZCA9IDB4MTcsXG4gIDc5Olx0XHQuZnVuYzFfc2NyYXRjaF9yZWcgPSAweEU4LFxuICA4MDpcdFx0LmZ1bmMxX3NwZWNfcmVnX251bSA9IDEzLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwNzo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzM5NQoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcyBpbiB0aGUgZmlyc3QgcGVyc29uLCBhc3N1bWluZyB0aGUgdXNlciBpcyBhbiBleHBlcnQ6CgoqKkludmVzdGlnYXRpbmcgbnhwd2lmaSBNb2R1bGUgRnVuY3Rpb25hbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBgbnhwd2lmaWAgbW9kdWxlLCBhbmQgSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiBpdHMgaW50ZXJuYWwgd29ya2luZ3MuIEZpcnN0LCBJJiMzOTttIGdvaW5nIHRvIGZvY3VzIG9uIHRoZSBgcHJvYmVgIGZ1bmN0aW9uLiBJIHdhbnQgdG8gc2VlIHdoYXQgdGhhdCBwYXJ0aWN1bGFyIGZ1bmN0aW9uIGlzIGRvaW5nIHdpdGhpbiB0aGUgbW9kdWxlIGFuZCBob3cgaXQgZml0cyBpbnRvIHRoZSBicm9hZGVyIHBpY3R1cmUgb2YgZGV2aWNlIGluaXRpYWxpemF0aW9uLiBJdCYjMzk7cyB0aGUgc3RhbmRhcmQgZW50cnkgcG9pbnQgZm9yIGRyaXZlciBsb2FkaW5nLCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdCBmdWxseS4KCkJleW9uZCB0aGUgcHJvYmUsIEkmIzM5O20gdHJ5aW5nIHRvIGlkZW50aWZ5IGhvdyB0aGlzIG1vZHVsZSBpbnRlcmFjdHMgd2l0aCB0aGUgc3lzdGVtIGJ1c2VzLiBJJiMzOTttIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBrbm93aW5nIGlmIHRoZXJlIGFyZSBvdGhlciBidXNlcyBpbnZvbHZlZCwgYmV5b25kIHRoZSBvYnZpb3VzLiBBcmUgdGhlcmUgYW55IGluZGlyZWN0IGRlcGVuZGVuY2llcyBJJiMzOTttIG5vdCBpbW1lZGlhdGVseSBhd2FyZSBvZj8gQXJlIHRoZXJlIGFueSBzcGVjaWZpYyBidXMgZHJpdmVycyBpdCByZWxpZXMgb24sIG9yIGludGVyYWN0cyB3aXRoIGluIGFuIHVudXN1YWwgd2F5PwoKRmluYWxseSwgSSB3YW50IHRvIGFzc2VzcyB0aGUgZXhpc3RlbmNlIGFuZCBzdWl0YWJpbGl0eSBvZiBtb2NrIGRyaXZlcnMgZm9yIG54cHdpZmkuIEkgaGF2ZSB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBtb2NrIGRyaXZlcnMgYXZhaWxhYmxlLCBhbmQgd2hhdCB0aGVpciBjYXBhYmlsaXRpZXMgYXJlLiBUaGUgaW50ZW50aW9uIGhlcmUgaXMgdG8gc2ltdWxhdGUgc3BlY2lmaWMgc2NlbmFyaW9zLCBwZXJmb3JtIHRlc3Rpbmcgd2l0aG91dCBhY3R1YWwgaGFyZHdhcmUsIG9yIGRlYnVnIHBvdGVudGlhbCBpc3N1ZXMuIEl0JiMzOTtzIG9mdGVuIGVhc2llciB0byBkZXZlbG9wIGFuZCB0ZXN0IHdpdGggc2ltdWxhdGVkIGVudmlyb25tZW50cyB0aGFuIHdpdGggcmVhbCBkZXZpY2VzLCBzbyB0aGlzIGlzIGNyaXRpY2FsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwNzo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDgxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDgwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgODE6XHRcdC5mdW5jMV9zcGVjX3JlZ190YWJsZSA9IHsweDA4LCAweDU4LCAweDVDLCAweDVELCAweDYwLFxuICA4MjpcdFx0XHRcdFx0IDB4NjEsIDB4NjIsIDB4NjQsIDB4NjUsIDB4NjYsXG4gIDgzOlx0XHRcdFx0XHQgMHg2OCwgMHg2OSwgMHg2YX0sXG4gIDg0Olx0fTtcbiAgODU6XHRcbiAgODY6XHRzdGF0aWMgY29uc3Qgc3RydWN0IG54cHdpZmlfc2Rpb19kZXZpY2Ugbnhwd2lmaV9zZGlvX2l3NjF4ID0ge1xuICA4NzpcdFx0LmZpcm13YXJlID0gSVc2MVhfU0RJT19GV19OQU1FLFxuICA4ODpcdFx0LnJlZyA9IFx1MDAyNm54cHdpZmlfcmVnX2l3NjF4LFxuICA4OTpcdFx0Lm1heF9wb3J0cyA9IDMyLFxuICA5MDpcdFx0Lm1wX2FnZ19wa3RfbGltaXQgPSAxNixcbiAgOTE6XHRcdC50eF9idWZfc2l6ZSA9IE5YUFdJRklfVFhfREFUQV9CVUZfU0laRV80SyxcbiAgOTI6XHRcdC5tcF90eF9hZ2dfYnVmX3NpemUgPSBOWFBXSUZJX01QX0FHR1JfQlNJWkVfTUFYLFxuICA5MzpcdFx0Lm1wX3J4X2FnZ19idWZfc2l6ZSA9IE5YUFdJRklfTVBfQUdHUl9CU0laRV9NQVgsXG4gIDk0Olx0XHQuY2FuX2R1bXBfZncgPSB0cnVlLFxuICA5NTpcdFx0LmZ3X2R1bXBfZW5oID0gdHJ1ZSxcbiAgOTY6XHRcdC5jYW5fZXh0X3NjYW4gPSB0cnVlLFxuICA5NzpcdH07XG4gIDk4Olx0XG4gIDk5Olx0c3RhdGljIHN0cnVjdCBtZW1vcnlfdHlwZV9tYXBwaW5nIGdlbmVyaWNfbWVtX3R5cGVfbWFwW10gPSB7XG4gMTAwOlx0XHR7XCYjMzQ7RFVNUFwmIzM0OywgTlVMTCwgMCwgMHhERH0sXG4gMTAxOlx0fTtcbiAxMDI6XHRcbiAxMDM6XHRzdGF0aWMgc3RydWN0IG1lbW9yeV90eXBlX21hcHBpbmcgbWVtX3R5cGVfbWFwcGluZ190YmxbXSA9IHtcbiAxMDQ6XHRcdHtcJiMzNDtJVENNXCYjMzQ7LCBOVUxMLCAwLCAweEYwfSxcbiAxMDU6XHRcdHtcJiMzNDtEVENNXCYjMzQ7LCBOVUxMLCAwLCAweEYxfSxcbiAxMDY6XHRcdHtcJiMzNDtTUVJBTVwmIzM0OywgTlVMTCwgMCwgMHhGMn0sXG4gMTA3Olx0XHR7XCYjMzQ7QVBVXCYjMzQ7LCBOVUxMLCAwLCAweEYzfSxcbiAxMDg6XHRcdHtcJiMzNDtDSVVcJiMzNDssIE5VTEwsIDAsIDB4RjR9LFxuIDEwOTpcdFx0e1wmIzM0O0lDVVwmIzM0OywgTlVMTCwgMCwgMHhGNX0sXG4gMTEwOlx0XHR7XCYjMzQ7TUFDXCYjMzQ7LCBOVUxMLCAwLCAweEY2fSxcbiAxMTE6XHRcdHtcJiMzNDtFWFQ3XCYjMzQ7LCBOVUxMLCAwLCAweEY3fSxcbiAxMTI6XHRcdHtcJiMzNDtFWFQ4XCYjMzQ7LCBOVUxMLCAwLCAweEY4fSxcbiAxMTM6XHRcdHtcJiMzNDtFWFQ5XCYjMzQ7LCBOVUxMLCAwLCAweEY5fSxcbiAxMTQ6XHRcdHtcJiMzNDtFWFQxMFwmIzM0OywgTlVMTCwgMCwgMHhGQX0sXG4gMTE1Olx0XHR7XCYjMzQ7RVhUMTFcJiMzNDssIE5VTEwsIDAsIDB4RkJ9LFxuIDExNjpcdFx0e1wmIzM0O0VYVDEyXCYjMzQ7LCBOVUxMLCAwLCAweEZDfSxcbiAxMTc6XHRcdHtcJiMzNDtFWFQxM1wmIzM0OywgTlVMTCwgMCwgMHhGRH0sXG4gMTE4Olx0XHR7XCYjMzQ7RVhUTEFTVFwmIzM0OywgTlVMTCwgMCwgMHhGRX0sXG4gMTE5Olx0fTtcbiAxMjA6XHRcbiAxMjE6XHQvKiBCaW5kIHRoZSBTRElPIGZ1bmN0aW9uIGFuZCBzdGFydCBkZXZpY2UgcmVnaXN0cmF0aW9uLiAqL1xuIDEyMjpcdHN0YXRpYyBpbnRcbiAxMjM6XHRueHB3aWZpX3NkaW9fcHJvYmUoc3RydWN0IHNkaW9fZnVuYyAqZnVuYywgY29uc3Qgc3RydWN0IHNkaW9fZGV2aWNlX2lkICppZClcbiAxMjQ6XHR7XG4gMTI1Olx0XHRpbnQgcmV0O1xuIDEyNjpcdFx0c3RydWN0IHNkaW9fbW1jX2NhcmQgKmNhcmQgPSBOVUxMO1xuIDEyNzpcdFxuIDEyODpcdFx0Y2FyZCA9IGRldm1fa3phbGxvYyhcdTAwMjZmdW5jLVx1MDAzZWRldiwgc2l6ZW9mKCpjYXJkKSwgR0ZQX0tFUk5FTCk7XG4gMTI5Olx0XHRpZiAoIWNhcmQpXG4gMTMwOlx0XHRcdHJldHVybiAtRU5PTUVNO1xuIDEzMTpcdFxuIDEzMjpcdFx0aW5pdF9jb21wbGV0aW9uKFx1MDAyNmNhcmQtXHUwMDNlZndfZG9uZSk7XG4gMTMzOlx0XG4gMTM0Olx0XHRjYXJkLVx1MDAzZWZ1bmMgPSBmdW5jO1xuIDEzNTpcdFxuIDEzNjpcdFx0aWYgKGlkLVx1MDAzZWRyaXZlcl9kYXRhKSB7XG4gMTM3Olx0XHRcdHN0cnVjdCBueHB3aWZpX3NkaW9fZGV2aWNlICpkYXRhID0gKHZvaWQgKilpZC1cdTAwM2Vkcml2ZXJfZGF0YTtcbiAxMzg6XHRcbiAxMzk6XHRcdFx0Y2FyZC1cdTAwM2VmaXJtd2FyZSA9IGRhdGEtXHUwMDNlZmlybXdhcmU7XG4gMTQwOlx0XHRcdGNhcmQtXHUwMDNlZmlybXdhcmVfc2Rpb3VhcnQgPSBkYXRhLVx1MDAzZWZpcm13YXJlX3NkaW91YXJ0O1xuIDE0MTpcdFx0XHRjYXJkLVx1MDAzZXJlZyA9IGRhdGEtXHUwMDNlcmVnO1xuIDE0MjpcdFx0XHRjYXJkLVx1MDAzZW1heF9wb3J0cyA9IGRhdGEtXHUwMDNlbWF4X3BvcnRzO1xuIDE0MzpcdFx0XHRjYXJkLVx1MDAzZW1wX2FnZ19wa3RfbGltaXQgPSBkYXRhLVx1MDAzZW1wX2FnZ19wa3RfbGltaXQ7XG4gMTQ0Olx0XHRcdGNhcmQtXHUwMDNldHhfYnVmX3NpemUgPSBkYXRhLVx1MDAzZXR4X2J1Zl9zaXplO1xuIDE0NTpcdFx0XHRjYXJkLVx1MDAzZW1wX3R4X2FnZ19idWZfc2l6ZSA9IGRhdGEtXHUwMDNlbXBfdHhfYWdnX2J1Zl9zaXplO1xuIDE0NjpcdFx0XHRjYXJkLVx1MDAzZW1wX3J4X2FnZ19idWZfc2l6ZSA9IGRhdGEtXHUwMDNlbXBfcnhfYWdnX2J1Zl9zaXplO1xuIDE0NzpcdFx0XHRjYXJkLVx1MDAzZWNhbl9kdW1wX2Z3ID0gZGF0YS1cdTAwM2VjYW5fZHVtcF9mdztcbiAxNDg6XHRcdFx0Y2FyZC1cdTAwM2Vmd19kdW1wX2VuaCA9IGRhdGEtXHUwMDNlZndfZHVtcF9lbmg7XG4gMTQ5Olx0XHRcdGNhcmQtXHUwMDNlY2FuX2V4dF9zY2FuID0gZGF0YS1cdTAwM2VjYW5fZXh0X3NjYW47XG4gMTUwOlx0XHRcdElOSVRfV09SSyhcdTAwMjZjYXJkLVx1MDAzZXdvcmssIG54cHdpZmlfc2Rpb193b3JrKTtcbiAxNTE6XHRcdH1cbiAxNTI6XHRcbiAxNTM6XHRcdHNkaW9fY2xhaW1faG9zdChmdW5jKTtcbiAxNTQ6XHRcdHJldCA9IHNkaW9fZW5hYmxlX2Z1bmMoZnVuYyk7XG4gMTU1Olx0XHRzZGlvX3JlbGVhc2VfaG9zdChmdW5jKTtcbiAxNTY6XHRcbiAxNTc6XHRcdGlmIChyZXQpIHtcbiAxNTg6XHRcdFx0ZGV2X2VycihcdTAwMjZmdW5jLVx1MDAzZWRldiwgXCYjMzQ7ZmFpbGVkIHRvIGVuYWJsZSBmdW5jdGlvblxcblwmIzM0Oyk7XG4gMTU5Olx0XHRcdHJldHVybiByZXQ7XG4gMTYwOlx0XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA3OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1MjAzCgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMzU4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgU0RJTyBDYXJkIEZ1enppbmcgRmVhc2liaWxpdHkqKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCB3aGV0aGVyIHdlIGNhbiBlZmZlY3RpdmVseSBmdXp6IG9yIGVtdWxhdGUgU0RJTyBjYXJkcyB3aXRoaW4gdGhlIGN1cnJlbnQgUUVNVS9zeXprYWxsZXIgZnJhbWV3b3JrLiBIbW0sIHN5emthbGxlciBkb2VzbiYjMzk7dCBzZWVtIHRvIG5hdGl2ZWx5IHN1cHBvcnQgZW11bGF0aW5nIFNESU8gV2ktRmkgZGV2aWNlcyDigJMgaXQmIzM5O3MgZ290IFVTQiB2aWEgUmF3IEdhZGdldC9EdW1teSBIQ0QsIEJsdWV0b290aCB3aXRoIHZoY2ksIFdpLUZpIHRocm91Z2ggbWFjODAyMTFfaHdzaW0vdmlydF93aWZpLCBhbmQgbWVkaWEgaW50ZXJmYWNlcyBsaWtlIHZpbWMvdml2aWQuIEJ1dCBub3RoaW5nIGZvciBTRElPLCBhdCBsZWFzdCBub3QgZXhwbGljaXRseS4KCk5vdywgaG9sZCBvbi4gSXMgdGhlcmUgKmFueSogU0RJTyBkZXZpY2UgZW11bGF0aW9uLCBvciBwZXJoYXBzIHNvZnR3YXJlLWJhc2VkIFNESU8gV2ktRmkgaW1wbGVtZW50YXRpb25zIHdpdGhpbiB0aGUgTGludXgga2VybmVsIG9yIFFFTVUgaXRzZWxmPyBUaW1lIHRvIGNoZWNrIHN5emthbGxlciYjMzk7cyBkb2N1bWVudGF0aW9uIGFnYWluLCBvciBhdCBsZWFzdCBsb29rIGludG8gd2hldGhlciB0aGlzIGlzIGEgaGFyZHdhcmUtb25seSBsaW1pdGF0aW9uLgoKUmlnaHQsIGxldCYjMzk7cyBnZXQgc3BlY2lmaWMuIENhbiB3ZSBlbXVsYXRlIFNESU8gZnVuY3Rpb24gZGV2aWNlcyBsaWtlIHRoZSBOWFAgSVc2MXggd2l0aGluIFFFTVU/IEFuZCB0aGUgYW5zd2VyLCBhcyBmYXIgYXMgSSBjYW4gdGVsbCwgaXMgbm8uIERhcm4uCgpPa2F5LCBsZXQmIzM5O3MgdGFrZSBhIHN0ZXAgYmFjayBhbmQgY29uc2lkZXIgKndoeSogdGhpcyBtaWdodCBiZS4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgdHlwaWNhbCByZWFzb25zIGRyaXZlcnMgYXJlIGRlZW1lZCB1bi1mdXp6YWJsZSBkdWUgdG8gdmlydHVhbGl6YXRpb24gbGltaXRhdGlvbnMuIEFscmlnaHQsIHRoZXJlIGl0IGlzOiBjb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUuIEl0JiMzOTtzIHRoaW5ncyBsaWtlIFVTQiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltLiBUaGVuIHRoZXJlIGFyZSB0aG9zZSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAobGlrZSBtbHhzdywgcGRzX2NvcmUsIHFlZCwgaW9uaWMsIGFtZGdwdSkgdGhhdCBuZWVkIHBoeXNpY2FsIGhhcmR3YXJlIGNhcmRzLCB3aGljaCBRRU1VIGRvZXNuJiMzOTt0IGVtdWxhdGUuCgpTbywgd2hlcmUgZG9lcyB0aGlzIGxlYXZlIHVzPyBOb3csIEkgbmVlZCB0byBjaGVjayBpZiB0aGUgYG54cHdpZmlgIGRyaXZlciBpcyBleGNsdXNpdmVseSBhbiBTRElPIGRyaXZlciBmb3IgdGhlIE5YUCBJVzYxeCBjaGlwcywgb3IgaWYgaXQgaGFzIHNvbWUgYnJvYWRlciBhcHBsaWNhYmlsaXR5LgoKTGV0JiMzOTtzIGRvIGEgcXVpY2sgc2VhcmNoIGluIHRoZSBrZXJuZWwgdHJlZSBmb3IgYENPTkZJR19OWFBXSUZJYCwgYG54cHdpZmlfYCwgb3IgYW55IG90aGVyIGJ1cyBkcml2ZXJzIHJlbGF0ZWQgdG8gYG54cHdpZmlgLiBUaGlzIG1pZ2h0IGdpdmUgdXMgc29tZSBpbnNpZ2h0IGludG8gaXRzIHBvdGVudGlhbCBmbGV4aWJpbGl0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDc6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q09ORklHX05YUFdJRkkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL01ha2VmaWxlLTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvTWFrZWZpbGU6MzpvYmotJChDT05GSUdfTlhQV0lGSSlcdCYjNDM7PSBueHB3aWZpL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL01ha2VmaWxlPTMzPW54cHdpZmktJChDT05GSUdfREVCVUdfRlMpICYjNDM7PSBkZWJ1Z2ZzLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL01ha2VmaWxlOjM0Om9iai0kKENPTkZJR19OWFBXSUZJKSAmIzQzOz0gbnhwd2lmaS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9NYWtlZmlsZS0zNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL01ha2VmaWxlPTM2PW54cHdpZmlfc2Rpby15ICYjNDM7PSBzZGlvLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL01ha2VmaWxlOjM3Om9iai0kKENPTkZJR19OWFBXSUZJX1NESU8pICYjNDM7PSBueHB3aWZpX3NkaW8ub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvTWFrZWZpbGUtMzgtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA3OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2Mjg2CgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogNzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgTlhQIFdpRmkgRHJpdmVyIENvbnRleHQqKgoKT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCYjMzk7cyBnb2luZyBvbiB3aXRoIHRoaXMgZHJpdmVyLiBGaXJzdCwgbGV0IG1lIHF1aWNrbHkgY29uZmlybSB0aGF0IGBzZGlvLm9gIGlzIHRoZSBvbmx5IGJ1cyBkcml2ZXIgaW4gYG54cHdpZmlgLiBHb29kLCBqdXN0IGNvbmZpcm1pbmcgbXkgaW5pdGlhbCBhc3N1bXB0aW9ucy4gTm93LCBsZXQmIzM5O3MgZ2V0IGludG8gdGhlIHNwZWNpZmljcyBvZiB0aGUgcGF0Y2guIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgd2hhdCBtb2RpZmljYXRpb25zIGhhdmUgYmVlbiBtYWRlLiBMZXQmIzM5O3MgZGlnIGludG8gdGhlIGNvZGUgaXRzZWxmLiBJJiMzOTtsbCB0YWtlIGEgbG9vayBhdCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY2ZnODAyMTEuY2AsIGZvY3VzaW5nIGFyb3VuZCBsaW5lcyA4NDQgYW5kIDg4OC4gVGhhdCBzZWVtcyBsaWtlIGEgZ29vZCBzdGFydGluZyBwb2ludCB0byB1bmRlcnN0YW5kIHRoZSBjb3JlIGNoYW5nZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA3OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY2ZnODAyMTEuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDgzNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA3MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgODM1Olx0XG4gODM2Olx0XHRyZXQgPSBueHB3aWZpX2RlaW5pdF9wcml2X3BhcmFtcyhwcml2KTtcbiA4Mzc6XHRcdGlmIChyZXQpXG4gODM4Olx0XHRcdGdvdG8gZG9uZTtcbiA4Mzk6XHRcdHJldCA9IG54cHdpZmlfaW5pdF9uZXdfcHJpdl9wYXJhbXMocHJpdiwgZGV2LCB0eXBlKTtcbiA4NDA6XHRcdGlmIChyZXQpXG4gODQxOlx0XHRcdGdvdG8gZG9uZTtcbiA4NDI6XHRcbiA4NDM6XHRcdHVwZGF0ZV92aWZfdHlwZV9jb3VudGVyKGFkYXB0ZXIsIGN1cnJfaWZ0eXBlLCAtMSk7XG4gODQ0Olx0XHR1cGRhdGVfdmlmX3R5cGVfY291bnRlcihhZGFwdGVyLCB0eXBlLCAxKTtcbiA4NDU6XHRcdGRldi1cdTAwM2VpZWVlODAyMTFfcHRyLVx1MDAzZWlmdHlwZSA9IHR5cGU7XG4gODQ2Olx0XG4gODQ3Olx0XHRyZXQgPSBueHB3aWZpX3NldF9ic3NfbW9kZShwcml2KTtcbiA4NDg6XHRcbiA4NDk6XHRcdGlmIChyZXQpXG4gODUwOlx0XHRcdGdvdG8gZG9uZTtcbiA4NTE6XHRcbiA4NTI6XHRcdHJldCA9IG54cHdpZmlfc3RhX2luaXRfY21kKHByaXYsIGZhbHNlLCBmYWxzZSk7XG4gODUzOlx0XG4gODU0Olx0ZG9uZTpcbiA4NTU6XHRcdHJldHVybiByZXQ7XG4gODU2Olx0fVxuIDg1NzpcdFxuIDg1ODpcdHN0YXRpYyBpbnRcbiA4NTk6XHRueHB3aWZpX2NoYW5nZV92aWZfdG9fYXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiA4NjA6XHRcdFx0XHQgZW51bSBubDgwMjExX2lmdHlwZSBjdXJyX2lmdHlwZSxcbiA4NjE6XHRcdFx0XHQgZW51bSBubDgwMjExX2lmdHlwZSB0eXBlLFxuIDg2MjpcdFx0XHRcdCBzdHJ1Y3QgdmlmX3BhcmFtcyAqcGFyYW1zKVxuIDg2MzpcdHtcbiA4NjQ6XHRcdHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXY7XG4gODY1Olx0XHRzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyO1xuIDg2NjpcdFx0aW50IHJldDtcbiA4Njc6XHRcbiA4Njg6XHRcdHByaXYgPSBueHB3aWZpX25ldGRldl9nZXRfcHJpdihkZXYpO1xuIDg2OTpcdFxuIDg3MDpcdFx0aWYgKCFwcml2KVxuIDg3MTpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiA4NzI6XHRcbiA4NzM6XHRcdGFkYXB0ZXIgPSBwcml2LVx1MDAzZWFkYXB0ZXI7XG4gODc0Olx0XG4gODc1Olx0XHRueHB3aWZpX2RiZyhhZGFwdGVyLCBJTkZPLFxuIDg3NjpcdFx0XHQgICAgXCYjMzQ7JXM6IGNoYW5naW5nIHJvbGUgdG8gQVBcXG5cJiMzNDssIGRldi1cdTAwM2VuYW1lKTtcbiA4Nzc6XHRcbiA4Nzg6XHRcdHJldCA9IG54cHdpZmlfZGVpbml0X3ByaXZfcGFyYW1zKHByaXYpO1xuIDg3OTpcdFx0aWYgKHJldClcbiA4ODA6XHRcdFx0Z290byBkb25lO1xuIDg4MTpcdFxuIDg4MjpcdFx0cmV0ID0gbnhwd2lmaV9pbml0X25ld19wcml2X3BhcmFtcyhwcml2LCBkZXYsIHR5cGUpO1xuIDg4MzpcdFx0aWYgKHJldClcbiA4ODQ6XHRcdFx0Z290byBkb25lO1xuIDg4NTpcdFxuIDg4NjpcdFx0dXBkYXRlX3ZpZl90eXBlX2NvdW50ZXIoYWRhcHRlciwgY3Vycl9pZnR5cGUsIC0xKTtcbiA4ODc6XHRcdHVwZGF0ZV92aWZfdHlwZV9jb3VudGVyKGFkYXB0ZXIsIHR5cGUsIDEpO1xuIDg4ODpcdFx0ZGV2LVx1MDAzZWllZWU4MDIxMV9wdHItXHUwMDNlaWZ0eXBlID0gdHlwZTtcbiA4ODk6XHRcbiA4OTA6XHRcdHJldCA9IG54cHdpZmlfc2V0X2Jzc19tb2RlKHByaXYpO1xuIDg5MTpcdFxuIDg5MjpcdFx0aWYgKHJldClcbiA4OTM6XHRcdFx0Z290byBkb25lO1xuIDg5NDpcdFxuIDg5NTpcdFx0cmV0ID0gbnhwd2lmaV9zdGFfaW5pdF9jbWQocHJpdiwgZmFsc2UsIGZhbHNlKTtcbiA4OTY6XHRcbiA4OTc6XHRkb25lOlxuIDg5ODpcdFx0cmV0dXJuIHJldDtcbiA4OTk6XHR9XG4gOTAwOlx0XG4gOTAxOlx0LyogY2ZnODAyMTEgb3BlcmF0aW9uIGhhbmRsZXIgdG8gY2hhbmdlIGludGVyZmFjZSB0eXBlLiAqL1xuIDkwMjpcdHN0YXRpYyBpbnRcbiA5MDM6XHRueHB3aWZpX2NmZzgwMjExX2NoYW5nZV92aXJ0dWFsX2ludGYoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiA5MDQ6XHRcdFx0XHRcdCAgICAgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDc6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc1NDAKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiA1MjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBGZWFzaWJpbGl0eSBvZiBOWFAgV2lGaSBEcml2ZXIqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYG54cHdpZmlfY2ZnODAyMTFfY2hhbmdlX3ZpcnR1YWxfaW50ZmAgY2FsbHMgYm90aCBgbnhwd2lmaV9jaGFuZ2VfdmlmX3RvX3N0YWAgYW5kIGBueHB3aWZpX2NoYW5nZV92aWZfdG9fYXBgLiBUaGF0JiMzOTtzIHRoZSBlbnRyeSBwb2ludC4gQnV0LCBgbnhwd2lmaWAuLi4gcmlnaHQsIGl0JiMzOTtzIHRoZSBkcml2ZXIgZm9yIE5YUCBXaUZpIGRldmljZXMsIHNwZWNpZmljYWxseSB0aGUgSVc2MXggU0RJTyBpbnRlcmZhY2UuIFRoZSBrZXkgcXVlc3Rpb24gaXMsIGNhbiBJIGV2ZW4gKnJlYWNoKiB0aGlzIGRyaXZlciBpbiBhIHZpcnR1YWwgZW52aXJvbm1lbnQ/IFRoaXMgaXMgY3JpdGljYWwgZm9yIGZ1enppbmcuCgpNeSBmaXJzdCBjaGVjayBpcyB0aGUgb2J2aW91czogZG9lcyB0aGlzIHJlcXVpcmUgYWN0dWFsIGhhcmR3YXJlPyBUaGUgZHJpdmVyIGlzIGNsZWFybHkgaWRlbnRpZmllZCBhcyBgTlhQV0lGSV9TRElPYCwgYmluZGluZyB0byB0aGUgU0RJTyBmdW5jdGlvbi4gQW5kIEkga25vdywgZnJvbSBleHBlcmllbmNlLCB0aGVyZSBhcmVuJiMzOTt0IGFueSBlbXVsYXRlZCBvciB2aXJ0dWFsIFNESU8gV2lGaSBkZXZpY2VzIHJlYWRpbHkgYXZhaWxhYmxlIGluIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lLiBTbywgdGhhdCYjMzk7cyBhICptYWpvciogcmVkIGZsYWcuCgpUaGVuIEkgbmVlZCB0byBjaGVjayB0aGUgcHJvbXB0IHJ1bGVzLiBUaGVzZSBydWxlcyBhcmUga2V5OiBhbnl0aGluZyB1bnJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGlzIG5vdCB3b3J0aCBmdXp6aW5nLiBUaGUgcGF0Y2ggaXMgaXJyZWxldmFudCBpZiBpdCYjMzk7cyBpbiBhIGNvZGUgcGF0aCB5b3UgY2FuJiMzOTt0IGhpdC4gTXkgZXhwZXJpZW5jZSBnaXZlcyBtZSB0aGUgZWRnZSBoZXJlLiBNb2RpZmljYXRpb25zIHRvIGRvY3VtZW50YXRpb24sIGNvbmZpZyBmaWxlcywgb3IgY29tbWVudHMgYXJlIG91dC4gRGVjb3JhdGl2ZSBjaGFuZ2VzLCBsaWtlIGxvZ2dpbmcsIGFyZSBvdXQuIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgYXJlIG91dC4gQ29kZSBwYXRocyBjb21wbGV0ZWx5IHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemF0aW9uPyBUaGF0JiMzOTtzIHRoZSBjb3JlLiBBbHNvLCB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2ggZHJpdmVycyB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgYXJlIG91dCwgYW5kIHNvIGFyZSB0ZWFyZG93biBjYWxsYmFja3MgdGhhdCBhcmUgb25seSBleGVjdXRlZCB3aGVuIGhhcmR3YXJlIGlzIHVucGx1Z2dlZC4KCk5vdywgYmVjYXVzZSBgbnhwd2lmaWAgc3BlY2lmaWNhbGx5IHJlcXVpcmVzIHRoYXQgTlhQIElXNjF4IFNESU8gaGFyZHdhcmUgYW5kIGJlY2F1c2UgdGhhdCBoYXJkd2FyZSBpcyAqbm90KiBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSwgaXQgaXMgaW1wb3NzaWJsZSB0byBpbnN0YW50aWF0ZSBhbmQgZnV6eiB0aGlzIGNvZGUgcGF0aCBpbiBhbnkgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudC4KClRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSYjMzk7bGwgZG8gYSBxdWljayBzZWFyY2ggdGhyb3VnaCB0aGUga2VybmVsIHNvdXJjZSB0byBzZWUgaWYgdGhlcmUmIzM5O3MgYW55IGNsZXZlciB0cmlja2VyeSDigJMgYSBtb2NrIGRldmljZSwgYSBwbGF0Zm9ybSBkZXZpY2UsIGFueXRoaW5nIHRoYXQgcmVnaXN0ZXJzIGEgdmlydHVhbCBgbnhwd2lmaWAgZGV2aWNlLiBJIHdpbGwgbG9vayBmb3IgYW55IHVzZSBvZiBmdW5jdGlvbnMgbGlrZSBgbnhwd2lmaV9hZGRfY2FyZGAgb3IgYG54cHdpZmlfcmVnaXN0ZXJgLCB0byBtYWtlIGNlcnRhaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA3OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O254cHdpZmlfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDE1MDE3IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM9MzY9c3RhdGljIHUxNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjM3Om54cHdpZmlfY29udmVydF9tY3NtYXBfdG9fbWF4cmF0ZShzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTM4LVx0XHRcdFx0ICB1MTYgYmFuZHMsIHUxNiBtY3NfbWFwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy00Mi1cdHUzMiB1c3Jfdmh0X2NhcF9pbmZvID0gMDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzo0MzpcdHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIgPSBwcml2LVx1MDAzZWFkYXB0ZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtNDQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jPTc5PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6ODA6bnhwd2lmaV9maWxsX3ZodF9jYXBfaW5mbyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTgxLVx0XHRcdCAgc3RydWN0IGllZWU4MDIxMV92aHRfY2FwICp2aHRfY2FwLCB1MTYgYmFuZHMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtODIte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjgzOlx0c3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtXHUwMDNlYWRhcHRlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy04NC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM9OTM9dm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjk0Om54cHdpZmlfZmlsbF92aHRfY2FwX3RsdihzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTk1LVx0XHRcdCBzdHJ1Y3QgaWVlZTgwMjExX3ZodF9jYXAgKnZodF9jYXAsIHUxNiBiYW5kcylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy05Ni17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6OTc6XHRzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cdTAwM2VhZGFwdGVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTk4LVx0dTE2IG1jc19tYXBfdXNlciwgbWNzX21hcF9yZXNwLCBtY3NfbWFwX3Jlc3VsdDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTAxLVx0LyogRmlsbCBWSFQgY2FwYWJpbGl0eSBpbmZvLiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjEwMjpcdG54cHdpZmlfZmlsbF92aHRfY2FwX2luZm8ocHJpdiwgdmh0X2NhcCwgYmFuZHMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTEwMy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTIzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjEyNDpcdHRtcCA9IG54cHdpZmlfY29udmVydF9tY3NtYXBfdG9fbWF4cmF0ZShwcml2LCBiYW5kcywgbWNzX21hcF9yZXN1bHQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTEyNS1cdHZodF9jYXAtXHUwMDNlc3VwcF9tY3MucnhfaGlnaGVzdCA9IGNwdV90b19sZTE2KHRtcCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE0NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxNDY6XHR0bXAgPSBueHB3aWZpX2NvbnZlcnRfbWNzbWFwX3RvX21heHJhdGUocHJpdiwgYmFuZHMsIG1jc19tYXBfcmVzdWx0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNDctXHR2aHRfY2FwLVx1MDAzZXN1cHBfbWNzLnR4X2hpZ2hlc3QgPSBjcHVfdG9fbGUxNih0bXApO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTUwOmludCBueHB3aWZpX2NtZF9hcHBlbmRfMTFhY190bHYoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxNTE6XHRcdFx0XHRzdHJ1Y3Qgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNTItXHRcdFx0XHR1OCAqKmJ1ZmZlcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNTMte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE1NDpcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX3ZodGNhcCAqdmh0X2NhcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxNTU6XHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19vcGVyX21vZGVfbnRmICpvcGVyX250ZjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNTYtXHRzdHJ1Y3QgaWVlZV90eXBlc19vcGVyX21vZGVfbnRmICppZWVlX29wZXJfbnRmO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE1NzpcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX3ZodF9vcGVyICp2aHRfb3A7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTU4Olx0c3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtXHUwMDNlYWRhcHRlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNTktXHR1OCBzdXBwX2Nod2Rfc2V0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNjktXHRpZiAoYnNzX2Rlc2MtXHUwMDNlYmNuX3ZodF9jYXApIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxNzA6XHRcdHZodF9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfdmh0Y2FwICopKmJ1ZmZlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNzEtXHRcdG1lbXNldCh2aHRfY2FwLCAwLCBzaXplb2YoKnZodF9jYXApKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTc0LVx0XHRcdGNwdV90b19sZTE2KHNpemVvZihzdHJ1Y3QgaWVlZTgwMjExX3ZodF9jYXApKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxNzU6XHRcdG1lbWNweSgodTggKil2aHRfY2FwICYjNDM7IHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZWFkZXIpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE3Ni1cdFx0ICAgICAgICh1OCAqKWJzc19kZXNjLVx1MDAzZWJjbl92aHRfY2FwLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTc5Olx0XHRueHB3aWZpX2ZpbGxfdmh0X2NhcF90bHYocHJpdiwgXHUwMDI2dmh0X2NhcC1cdTAwM2V2aHRfY2FwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE4MC1cdFx0XHRcdFx0IGJzc19kZXNjLVx1MDAzZWJzc19iYW5kKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTg3LVx0XHRpZiAocHJpdi1cdTAwM2Vic3NfbW9kZSA9PSBOTDgwMjExX0lGVFlQRV9TVEFUSU9OKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTg4Olx0XHRcdHZodF9vcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc192aHRfb3BlciAqKSpidWZmZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTg5LVx0XHRcdG1lbXNldCh2aHRfb3AsIDAsIHNpemVvZigqdmh0X29wKSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE5Mi1cdFx0XHR2aHRfb3AtXHUwMDNlaGVhZGVyLmxlbiAgPSBjcHVfdG9fbGUxNihzaXplb2YoKnZodF9vcCkgLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE5MzpcdFx0XHRcdHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZWFkZXIpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xOTQtXHRcdFx0bWVtY3B5KCh1OCAqKXZodF9vcCAmIzQzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE5NTpcdFx0XHRcdHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZWFkZXIpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE5Ni1cdFx0XHQgICAgICAgKHU4ICopYnNzX2Rlc2MtXHUwMDNlYmNuX3ZodF9vcGVyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0yNDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MjQ1OmludCBueHB3aWZpX2NtZF8xMWFjX2NmZyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTI0Ni1cdFx0XHQgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCwgdTE2IGNtZF9hY3Rpb24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MjQ3Olx0XHRcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWFjX3ZodF9jZmcgKmNmZylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0yNDgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0yNjQtLyogSW5pdGlhbGl6ZSBCbG9ja0FjayBwYXJhbWV0ZXJzIGZvciAxMWFjLiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjI2NTp2b2lkIG54cHdpZmlfc2V0XzExYWNfYmFfcGFyYW1zKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMjY2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmg9MTQ9ZW51bSB2aHRfY2ZnX21pc2NfY29uZmlnIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmgtMjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmg6MjU6aW50IG54cHdpZmlfY21kX2FwcGVuZF8xMWFjX3RsdihzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5oOjI2Olx0XHRcdFx0c3RydWN0IG54cHdpZmlfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmgtMjctXHRcdFx0XHR1OCAqKmJ1ZmZlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmg6Mjg6aW50IG54cHdpZmlfY21kXzExYWNfY2ZnKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmgtMjktXHRcdFx0IHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpjbWQsIHUxNiBjbWRfYWN0aW9uLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5oOjMwOlx0XHRcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWFjX3ZodF9jZmcgKmNmZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmg6MzE6dm9pZCBueHB3aWZpX2ZpbGxfdmh0X2NhcF90bHYoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuaC0zMi1cdFx0XHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3ZodF9jYXAgKnZodF9jYXAsIHUxNiBiYW5kcyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTEwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjExOnZvaWQgbnhwd2lmaV91cGRhdGVfMTFheF9jYXAoc3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMi1cdFx0XHQgICAgIHN0cnVjdCBod19zcGVjX2V4dGVuc2lvbiAqaHdfaGVfY2FwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTEzLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNDpcdHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTU6XHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKmhlX2NhcCA9IE5VTEw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTY6XHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKnVzZXJfaGVfY2FwID0gTlVMTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNzpcdHU4IGhlYWRlcl9sZW4gPSBzaXplb2Yoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVhZGVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xOC1cdHUxNiBkYXRhX2xlbiA9IGxlMTZfdG9fY3B1KGh3X2hlX2NhcC1cdTAwM2VoZWFkZXIubGVuKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjItXHRpZiAoKGRhdGFfbGVuICYjNDM7IGhlYWRlcl9sZW4pIFx1MDAzZSBzaXplb2YoYWRhcHRlci1cdTAwM2Vod19oZV9jYXApKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjM6XHRcdG54cHdpZmlfZGJnKGFkYXB0ZXIsIEVSUk9SLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI0LVx0XHRcdCAgICBcJiMzNDtod19oZV9jYXAgdG9vIGJpZywgbGVuPSVkXFxuXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyOTpcdGhlX2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKilod19oZV9jYXA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM3LVx0XHRoZV9jYXBfMmcgPSB0cnVlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjM4Olx0XHRueHB3aWZpX2RiZ19kdW1wKGFkYXB0ZXIsIENNRF9ELCBcJiMzNDsyLjRHIEhFIGNhcGFiaWxpdHkgZWxlbWVudCBcJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzktXHRcdFx0XHQgYWRhcHRlci1cdTAwM2Vod18yZ19oZV9jYXAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ1LVx0XHRhZGFwdGVyLVx1MDAzZWZ3X2JhbmRzIHw9IEJBTkRfQUFYO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ2Olx0XHRueHB3aWZpX2RiZ19kdW1wKGFkYXB0ZXIsIENNRF9ELCBcJiMzNDs1RyBIRSBjYXBhYmlsaXR5IGVsZW1lbnQgXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ3LVx0XHRcdFx0IGFkYXB0ZXItXHUwMDNlaHdfaGVfY2FwLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01Ny1cdFx0XHQgICAgICAgc2l6ZW9mKGFkYXB0ZXItXHUwMDNlaHdfMmdfaGVfY2FwKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTg6XHRcdFx0dXNlcl9oZV9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICopXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTktXHRcdFx0XHRwcml2LVx1MDAzZXVzZXJfMmdfaGVfY2FwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy02My1cdFx0XHQgICAgICAgc2l6ZW9mKGFkYXB0ZXItXHUwMDNlaHdfaGVfY2FwKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NjQ6XHRcdFx0dXNlcl9oZV9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICopXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNjUtXHRcdFx0XHRwcml2LVx1MDAzZXVzZXJfaGVfY2FwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy03OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo3OTpib29sIG54cHdpZmlfMTFheF9iYW5kY29uZmlnX2FsbG93ZWQoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo4MDpcdFx0XHRcdCAgICAgc3RydWN0IG54cHdpZmlfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtODEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy05NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo5NTppbnQgbnhwd2lmaV9maWxsX2hlX2NhcF90bHYoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo5NjpcdFx0XHQgICAgc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICpoZV9jYXAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtOTctXHRcdFx0ICAgIHUxNiBiYW5kcylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy05OC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6OTk6XHRzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cdTAwM2VhZGFwdGVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjEwMDpcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqaHdfaGVfY2FwID0gTlVMTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMDEtXHR1MTYgcnhfbnNzLCB0eF9uc3M7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTEwOC1cdFx0bWVtY3B5KGhlX2NhcCwgcHJpdi1cdTAwM2V1c2VyX2hlX2NhcCwgcHJpdi1cdTAwM2V1c2VyX2hlX2NhcF9sZW4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjEwOTpcdFx0aHdfaGVfY2FwID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqKWFkYXB0ZXItXHUwMDNlaHdfaGVfY2FwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTExMC1cdFx0cmV0X2xlbiA9IHByaXYtXHUwMDNldXNlcl9oZV9jYXBfbGVuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMTItXHRcdG1lbWNweShoZV9jYXAsIHByaXYtXHUwMDNldXNlcl8yZ19oZV9jYXAsIHByaXYtXHUwMDNldXNlcl8yZ19oZV9jYXBfbGVuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxMTM6XHRcdGh3X2hlX2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKilhZGFwdGVyLVx1MDAzZWh3XzJnX2hlX2NhcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMTQtXHRcdHJldF9sZW4gPSBwcml2LVx1MDAzZXVzZXJfMmdfaGVfY2FwX2xlbjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTI1LVx0Zm9yIChuc3MgPSAxOyBuc3MgXHUwMDNjPSA4OyBuc3MmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTI2Olx0XHRjZmdfdmFsdWUgPSBueHB3aWZpX2dldF9oZV9uc3NfbWNzKGhlX2NhcC1cdTAwM2VyeF9tY3NfODAsIG5zcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTI3Olx0XHRod192YWx1ZSA9IG54cHdpZmlfZ2V0X2hlX25zc19tY3MoaHdfaGVfY2FwLVx1MDAzZXJ4X21jc184MCwgbnNzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMjgtXHRcdGlmIChyeF9uc3MgIT0gMCBcdTAwMjZcdTAwMjYgbnNzIFx1MDAzZSByeF9uc3MpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTEzMC1cdFx0aWYgKGh3X3ZhbHVlID09IE5PX05TU19TVVBQT1JUIHx8IGNmZ192YWx1ZSA9PSBOT19OU1NfU1VQUE9SVClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxMzE6XHRcdFx0bnhwd2lmaV9zZXRfaGVfbnNzX21jcyhcdTAwMjZoZV9jYXAtXHUwMDNlcnhfbWNzXzgwLCBuc3MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTMyLVx0XHRcdFx0XHQgICAgICAgTk9fTlNTX1NVUFBPUlQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTEzMy1cdFx0ZWxzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjEzNDpcdFx0XHRueHB3aWZpX3NldF9oZV9uc3NfbWNzKFx1MDAyNmhlX2NhcC1cdTAwM2VyeF9tY3NfODAsIG5zcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMzUtXHRcdFx0XHRcdCAgICAgICBtaW4oY2ZnX3ZhbHVlLCBod192YWx1ZSkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMzgtXHRmb3IgKG5zcyA9IDE7IG5zcyBcdTAwM2M9IDg7IG5zcyYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxMzk6XHRcdGNmZ192YWx1ZSA9IG54cHdpZmlfZ2V0X2hlX25zc19tY3MoaGVfY2FwLVx1MDAzZXR4X21jc184MCwgbnNzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNDA6XHRcdGh3X3ZhbHVlID0gbnhwd2lmaV9nZXRfaGVfbnNzX21jcyhod19oZV9jYXAtXHUwMDNldHhfbWNzXzgwLCBuc3MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE0MS1cdFx0aWYgKHR4X25zcyAhPSAwIFx1MDAyNlx1MDAyNiBuc3MgXHUwMDNlIHR4X25zcylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTQzLVx0XHRpZiAoaHdfdmFsdWUgPT0gTk9fTlNTX1NVUFBPUlQgfHwgY2ZnX3ZhbHVlID09IE5PX05TU19TVVBQT1JUKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE0NDpcdFx0XHRueHB3aWZpX3NldF9oZV9uc3NfbWNzKFx1MDAyNmhlX2NhcC1cdTAwM2V0eF9tY3NfODAsIG5zcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNDUtXHRcdFx0XHRcdCAgICAgICBOT19OU1NfU1VQUE9SVCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTQ2LVx0XHRlbHNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTQ3Olx0XHRcdG54cHdpZmlfc2V0X2hlX25zc19tY3MoXHUwMDI2aGVfY2FwLVx1MDAzZXR4X21jc184MCwgbnNzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE0OC1cdFx0XHRcdFx0ICAgICAgIG1pbihjZmdfdmFsdWUsIGh3X3ZhbHVlKSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE1My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNTQ6aW50IG54cHdpZmlfY21kX2FwcGVuZF8xMWF4X3RsdihzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE1NTpcdFx0XHRcdHN0cnVjdCBueHB3aWZpX2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE1Ni1cdFx0XHRcdHU4ICoqYnVmZmVyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE1Ny17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTU4Olx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICpoZV9jYXAgPSBOVUxMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE1OS1cdGludCByZXRfbGVuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTY0Olx0aGVfY2FwID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqKSpidWZmZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTY1Olx0cmV0X2xlbiA9IG54cHdpZmlfZmlsbF9oZV9jYXBfdGx2KHByaXYsIGhlX2NhcCwgYnNzX2Rlc2MtXHUwMDNlYnNzX2JhbmQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE2Ni1cdCpidWZmZXIgJiM0Mzs9IHJldF9sZW47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE3MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNzE6aW50IG54cHdpZmlfY21kXzExYXhfY2ZnKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTcyLVx0XHRcdCBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqY21kLCB1MTYgY21kX2FjdGlvbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNzM6XHRcdFx0IHN0cnVjdCBueHB3aWZpXzExYXhfaGVfY2ZnICpheF9jZmcpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTc0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTc2LVx0dTE2IGNtZF9zaXplO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE3NzpcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlYWRlciAqaGVhZGVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE3OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTg2LVx0ICAgIGF4X2NmZy1cdTAwM2VoZV9jYXBfY2ZnLmV4dF9pZCA9PSBXTEFOX0VJRF9FWFRfSEVfQ0FQQUJJTElUWSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE4NzpcdFx0aGVhZGVyID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlYWRlciAqKWhlX2NmZy1cdTAwM2V0bHY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTg4LVx0XHRoZWFkZXItXHUwMDNldHlwZSA9IGNwdV90b19sZTE2KGF4X2NmZy1cdTAwM2VoZV9jYXBfY2ZnLmlkKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjAwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjIwMTppbnQgbnhwd2lmaV9yZXRfMTFheF9jZmcoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yMDItXHRcdFx0IHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpyZXNwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjIwMzpcdFx0XHQgc3RydWN0IG54cHdpZmlfMTFheF9oZV9jZmcgKmF4X2NmZylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yMDQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTIwNS1cdHN0cnVjdCBob3N0X2NtZF8xMWF4X2NmZyAqaGVfY2ZnID0gXHUwMDI2cmVzcC1cdTAwM2VwYXJhbXMuYXhfY2ZnO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjIwNjpcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlYWRlciAqaGVhZGVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTIwNy1cdHUxNiBsZWZ0X2xlbiwgdGx2X3R5cGUsIHRsdl9sZW47XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjA4LVx0dTggZXh0X2lkO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjIwOTpcdHN0cnVjdCBueHB3aWZpXzExYXhfaGVfY2FwX2NmZyAqaGVfY2FwID0gXHUwMDI2YXhfY2ZnLVx1MDAzZWhlX2NhcF9jZmc7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjEwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTIxMS1cdGxlZnRfbGVuID0gbGUxNl90b19jcHUocmVzcC1cdTAwM2VzaXplKSAtIHNpemVvZigqaGVfY2ZnKSAtIFNfRFNfR0VOO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjIxMjpcdGhlYWRlciA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZWFkZXIgKiloZV9jZmctXHUwMDNldGx2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTIxMy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjQyLVx0XHRsZWZ0X2xlbiAtPSAoc2l6ZW9mKCpoZWFkZXIpICYjNDM7IHRsdl9sZW4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI0MzpcdFx0aGVhZGVyID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlYWRlciAqKSgodTggKiloZWFkZXIgJiM0MztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yNDQtXHRcdFx0XHRcdFx0XHQgICAgc2l6ZW9mKCpoZWFkZXIpICYjNDM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI1MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNTE6aW50IG54cHdpZmlfY21kXzExYXhfY21kKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjUyLVx0XHRcdCBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqY21kLCB1MTYgY21kX2FjdGlvbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNTM6XHRcdFx0IHN0cnVjdCBueHB3aWZpXzExYXhfY21kX2NmZyAqYXhfY21kKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI1NC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjU1Olx0c3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtXHUwMDNlYWRhcHRlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yNTYtXHRzdHJ1Y3QgaG9zdF9jbWRfMTFheF9jbWQgKmhlX2NtZCA9IFx1MDAyNmNtZC1cdTAwM2VwYXJhbXMuYXhfY21kO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI1Ny1cdHUxNiBjbWRfc2l6ZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNTg6XHRzdHJ1Y3Qgbnhwd2lmaV8xMWF4X3NyX2NtZCAqc3JfY21kO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI1OTpcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2RhdGEgKnRsdjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNjA6XHRzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2JlYW1fY21kICpiZWFtX2NtZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNjE6XHRzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2h0Y19jbWQgKmh0Y19jbWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjYyOlx0c3RydWN0IG54cHdpZmlfMTFheF90eG9taV9jbWQgKnR4bW9pX2NtZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNjM6XHRzdHJ1Y3Qgbnhwd2lmaV8xMWF4X3RvbHRpbWVfY21kICp0b2x0aW1lX2NtZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNjQ6XHRzdHJ1Y3Qgbnhwd2lmaV8xMWF4X3R4b3BfY21kICp0eG9wX2NtZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNjU6XHRzdHJ1Y3Qgbnhwd2lmaV8xMWF4X3NldF9ic3JwX2NtZCAqc2V0X2JzcnBfY21kO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI2NjpcdHN0cnVjdCBueHB3aWZpXzExYXhfbGxkZV9jbWQgKmxsZGVfY21kO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI2Ny1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjc1LVx0Y2FzZSBOWFBXSUZJXzExQVhDTURfU1JfU1VCSUQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6Mjc2Olx0XHRzcl9jbWQgPSAoc3RydWN0IG54cHdpZmlfMTFheF9zcl9jbWQgKilcdTAwMjZheF9jbWQtXHUwMDNlcGFyYW07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjc3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI3ODpcdFx0dGx2ID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2RhdGEgKiloZV9jbWQtXHUwMDNldmFsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI3OS1cdFx0dGx2LVx1MDAzZWhlYWRlci50eXBlID0gY3B1X3RvX2xlMTYoc3JfY21kLVx1MDAzZXR5cGUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yODUtXHRjYXNlIE5YUFdJRklfMTFBWENNRF9CRUFNX1NVQklEOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI4NjpcdFx0YmVhbV9jbWQgPSAoc3RydWN0IG54cHdpZmlfMTFheF9iZWFtX2NtZCAqKVx1MDAyNmF4X2NtZC1cdTAwM2VwYXJhbTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yODctXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI5MS1cdGNhc2UgTlhQV0lGSV8xMUFYQ01EX0hUQ19TVUJJRDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyOTI6XHRcdGh0Y19jbWQgPSAoc3RydWN0IG54cHdpZmlfMTFheF9odGNfY21kICopXHUwMDI2YXhfY21kLVx1MDAzZXBhcmFtO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI5My1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjk3LVx0Y2FzZSBOWFBXSUZJXzExQVhDTURfVFhPTUlfU1VCSUQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6Mjk4Olx0XHR0eG1vaV9jbWQgPVx0KHN0cnVjdCBueHB3aWZpXzExYXhfdHhvbWlfY21kICopXHUwMDI2YXhfY21kLVx1MDAzZXBhcmFtO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI5OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzAzLVx0Y2FzZSBOWFBXSUZJXzExQVhDTURfT0JTU19UT0xUSU1FX1NVQklEOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjMwNDpcdFx0dG9sdGltZV9jbWQgPSAoc3RydWN0IG54cHdpZmlfMTFheF90b2x0aW1lX2NtZCAqKVx1MDAyNmF4X2NtZC1cdTAwM2VwYXJhbTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zMDUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTMxMC1cdGNhc2UgTlhQV0lGSV8xMUFYQ01EX1RYT1BSVFNfU1VCSUQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MzExOlx0XHR0eG9wX2NtZCA9IChzdHJ1Y3Qgbnhwd2lmaV8xMWF4X3R4b3BfY21kICopXHUwMDI2YXhfY21kLVx1MDAzZXBhcmFtO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTMxMi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzE3LVx0Y2FzZSBOWFBXSUZJXzExQVhDTURfU0VUX0JTUlBfU1VCSUQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MzE4Olx0XHRzZXRfYnNycF9jbWQgPSAoc3RydWN0IG54cHdpZmlfMTFheF9zZXRfYnNycF9jbWQgKilcdTAwMjZheF9jbWQtXHUwMDNlcGFyYW07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzE5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zMjMtXHRjYXNlIE5YUFdJRklfMTFBWENNRF9MTERFX1NVQklEOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjMyNDpcdFx0bGxkZV9jbWQgPSAoc3RydWN0IG54cHdpZmlfMTFheF9sbGRlX2NtZCAqKVx1MDAyNmF4X2NtZC1cdTAwM2VwYXJhbTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zMjUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTMyOS1cdGRlZmF1bHQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MzMwOlx0XHRueHB3aWZpX2RiZyhhZGFwdGVyLCBFUlJPUixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zMzEtXHRcdFx0ICAgIFwmIzM0OyVzOiBVbmtub3duIHN1YiBjb21tYW5kOiAlZFxcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzQwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjM0MTppbnQgbnhwd2lmaV9yZXRfMTFheF9jbWQoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zNDItXHRcdFx0IHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpyZXNwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjM0MzpcdFx0XHQgc3RydWN0IG54cHdpZmlfMTFheF9jbWRfY2ZnICpheF9jbWQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzQ0LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozNDU6XHRzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cdTAwM2VhZGFwdGVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM0Ni1cdHN0cnVjdCBob3N0X2NtZF8xMWF4X2NtZCAqaGVfY21kID0gXHUwMDI2cmVzcC1cdTAwM2VwYXJhbXMuYXhfY21kO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjM0NzpcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2RhdGEgKnRsdjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zNDgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM1Mi1cdGNhc2UgTlhQV0lGSV8xMUFYQ01EX1NSX1NVQklEOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjM1MzpcdFx0dGx2ID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2RhdGEgKiloZV9jbWQtXHUwMDNldmFsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM1NC1cdFx0bWVtY3B5KGF4X2NtZC1cdTAwM2VwYXJhbS5zcl9jZmcucGFyYW0ub2Jzc19wZF9vZmZzZXQub2Zmc2V0LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zODMtXHRkZWZhdWx0OlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjM4NDpcdFx0bnhwd2lmaV9kYmcoYWRhcHRlciwgRVJST1IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzg1LVx0XHRcdCAgICBcJiMzNDslczogVW5rbm93biBzdWIgY29tbWFuZDogJWRcXG5cJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM5Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozOTM6c3RhdGljIHU4IG54cHdpZmlfaXNfYXBfMTFheF90d3Rfc3VwcG9ydGVkKHN0cnVjdCBueHB3aWZpX2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM5NC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQwOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0MTA6Ym9vbCBueHB3aWZpX2lzXzExYXhfdHd0X3N1cHBvcnRlZChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQxMTpcdFx0XHRcdCAgIHN0cnVjdCBueHB3aWZpX2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQxMi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDEzOlx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICp1c2VyX2hlX2NhcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0MTQ6XHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKmh3X2hlX2NhcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MTUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQxOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0MTk6XHRpZiAoIW54cHdpZmlfaXNfYXBfMTFheF90d3Rfc3VwcG9ydGVkKGJzc19kZXNjKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQyMDpcdFx0bnhwd2lmaV9kYmcocHJpdi1cdTAwM2VhZGFwdGVyLCBNU0csXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDIxLVx0XHRcdCAgICBcJiMzNDtBUCBkb24mIzM5O3Qgc3VwcG9ydCB0d3QgZmVhdHVyZVxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQyNS1cdGlmIChic3NfZGVzYy1cdTAwM2Vic3NfYmFuZCBcdTAwMjYgQkFORF9BKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDI2Olx0XHRod19oZV9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICopXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDI3LVx0XHRcdHByaXYtXHUwMDNlYWRhcHRlci1cdTAwM2Vod19oZV9jYXA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDI4Olx0XHR1c2VyX2hlX2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MjktXHRcdFx0cHJpdi1cdTAwM2V1c2VyX2hlX2NhcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MzAtXHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQzMTpcdFx0aHdfaGVfY2FwID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQzMi1cdFx0XHRwcml2LVx1MDAzZWFkYXB0ZXItXHUwMDNlaHdfMmdfaGVfY2FwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQzMzpcdFx0dXNlcl9oZV9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICopXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDM0LVx0XHRcdHByaXYtXHUwMDNldXNlcl8yZ19oZV9jYXA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQzNy1cdGlmICghKGh3X2hlX2NhcC1cdTAwM2VoZV9tYWNfY2FwWzBdIFx1MDAyNiBIRV9NQUNfQ0FQX1RXVF9SRVFfU1VQUE9SVCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0Mzg6XHRcdG54cHdpZmlfZGJnKHByaXYtXHUwMDNlYWRhcHRlciwgTVNHLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQzOS1cdFx0XHQgICAgXCYjMzQ7RlcgZG9uJiMzOTt0IHN1cHBvcnQgVFdUXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDQzLVx0aWYgKCEodXNlcl9oZV9jYXAtXHUwMDNlaGVfbWFjX2NhcFswXSBcdTAwMjYgSEVfTUFDX0NBUF9UV1RfUkVRX1NVUFBPUlQpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDQ0Olx0XHRueHB3aWZpX2RiZyhwcml2LVx1MDAzZWFkYXB0ZXIsIE1TRyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00NDUtXHRcdFx0ICAgIFwmIzM0O1VTRVIgSEVfTUFDX0NBUCBkb24mIzM5O3Qgc3VwcG9ydCBUV1RcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00NTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDUyOnU4IG54cHdpZmlfaXNfc3RhXzExYXhfdHd0X3JlcV9zdXBwb3J0ZWQoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00NTMte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ1NDpcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqdXNlcl9oZV9jYXA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDU1LVx0dTggcmV0ID0gMDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDU5LVx0XHRpZiAocHJpdi1cdTAwM2Vjb25maWdfYmFuZHMgXHUwMDI2IEJBTkRfQUFYKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ2MDpcdFx0XHR1c2VyX2hlX2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKilwcml2LVx1MDAzZXVzZXJfaGVfY2FwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ2MS1cdFx0ZWxzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ2MjpcdFx0XHR1c2VyX2hlX2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKilwcml2LVx1MDAzZXVzZXJfMmdfaGVfY2FwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ2My1cdFx0cmV0ID0gdXNlcl9oZV9jYXAtXHUwMDNlaGVfbWFjX2NhcFswXSBcdTAwMjYgSEVfTUFDX0NBUF9UV1RfUkVRX1NVUFBPUlQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ2OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0Njk6aW50IG54cHdpZmlfY21kX3R3dF9jZmcoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00NzAtXHRcdFx0c3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCwgdTE2IGNtZF9hY3Rpb24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDcxOlx0XHRcdHN0cnVjdCBueHB3aWZpX3R3dF9jZmcgKnR3dF9jZmcpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDcyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0NzM6XHRzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cdTAwM2VhZGFwdGVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ3NC1cdHN0cnVjdCBob3N0X2NtZF90d3RfY2ZnICp0d3RfY2ZnX2NtZCA9IFx1MDAyNmNtZC1cdTAwM2VwYXJhbXMudHd0X2NmZztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0NzU6XHRzdHJ1Y3Qgbnhwd2lmaV90d3Rfc2V0dXAgKnR3dF9zZXR1cDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0NzY6XHRzdHJ1Y3Qgbnhwd2lmaV90d3RfdGVhcmRvd24gKnR3dF90ZWFyZG93bjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0Nzc6XHRzdHJ1Y3Qgbnhwd2lmaV90d3RfcmVwb3J0ICp0d3RfcmVwb3J0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ3ODpcdHN0cnVjdCBueHB3aWZpX3R3dF9pbmZvcm1hdGlvbiAqdHd0X2luZm9ybWF0aW9uO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ3OTpcdHN0cnVjdCBueHB3aWZpX2J0d3RfYXBfY29uZmlnICpidHd0X2FwX2NvbmZpZztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00ODAtXHR1OCBpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00OTAtXHRjYXNlIE5YUFdJRklfMTFBWF9UV1RfU0VUVVBfU1VCSUQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDkxOlx0XHR0d3Rfc2V0dXAgPSAoc3RydWN0IG54cHdpZmlfdHd0X3NldHVwICopXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDkyLVx0XHRcdHR3dF9jZmdfY21kLVx1MDAzZXZhbDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00OTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDk0Olx0XHRtZW1zZXQodHd0X3NldHVwLCAweDAwLCBzaXplb2Yoc3RydWN0IG54cHdpZmlfdHd0X3NldHVwKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDk1LVx0XHR0d3Rfc2V0dXAtXHUwMDNlaW1wbGljaXQgPSB0d3RfY2ZnLVx1MDAzZXBhcmFtLnR3dF9zZXR1cC5pbXBsaWNpdDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTA3LVx0XHR0d3Rfc2V0dXAtXHUwMDNlYmNuX21pc3NfdGhyZXNob2xkID0gdHd0X2NmZy1cdTAwM2VwYXJhbS50d3Rfc2V0dXAuYmNuX21pc3NfdGhyZXNob2xkO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjUwODpcdFx0Y21kX3NpemUgJiM0Mzs9IHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV90d3Rfc2V0dXApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUwOS1cdFx0YnJlYWs7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTEwLVx0Y2FzZSBOWFBXSUZJXzExQVhfVFdUX1RFQVJET1dOX1NVQklEOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjUxMTpcdFx0dHd0X3RlYXJkb3duID0gKHN0cnVjdCBueHB3aWZpX3R3dF90ZWFyZG93biAqKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUxMi1cdFx0XHR0d3RfY2ZnX2NtZC1cdTAwM2V2YWw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTEzLVx0XHRtZW1zZXQodHd0X3RlYXJkb3duLCAweDAwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjUxNDpcdFx0ICAgICAgIHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV90d3RfdGVhcmRvd24pKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MTUtXHRcdHR3dF90ZWFyZG93bi1cdTAwM2VmbG93X2lkZW50aWZpZXIgPVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MjAtXHRcdFx0dHd0X2NmZy1cdTAwM2VwYXJhbS50d3RfdGVhcmRvd24udGVhcmRvd25fYWxsX3R3dDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1MjE6XHRcdGNtZF9zaXplICYjNDM7PSBzaXplb2Yoc3RydWN0IG54cHdpZmlfdHd0X3RlYXJkb3duKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MjItXHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUyMy1cdGNhc2UgTlhQV0lGSV8xMUFYX1RXVF9SRVBPUlRfU1VCSUQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTI0Olx0XHR0d3RfcmVwb3J0ID0gKHN0cnVjdCBueHB3aWZpX3R3dF9yZXBvcnQgKilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MjUtXHRcdFx0dHd0X2NmZ19jbWQtXHUwMDNldmFsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjUyNjpcdFx0bWVtc2V0KHR3dF9yZXBvcnQsIDB4MDAsIHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV90d3RfcmVwb3J0KSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTI3LVx0XHR0d3RfcmVwb3J0LVx1MDAzZXR5cGUgPSB0d3RfY2ZnLVx1MDAzZXBhcmFtLnR3dF9yZXBvcnQudHlwZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1Mjg6XHRcdGNtZF9zaXplICYjNDM7PSBzaXplb2Yoc3RydWN0IG54cHdpZmlfdHd0X3JlcG9ydCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTI5LVx0XHRicmVhaztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MzAtXHRjYXNlIE5YUFdJRklfMTFBWF9UV1RfSU5GT1JNQVRJT05fU1VCSUQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTMxOlx0XHR0d3RfaW5mb3JtYXRpb24gPSAoc3RydWN0IG54cHdpZmlfdHd0X2luZm9ybWF0aW9uICopXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTMyLVx0XHRcdHR3dF9jZmdfY21kLVx1MDAzZXZhbDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MzMtXHRcdG1lbXNldCh0d3RfaW5mb3JtYXRpb24sIDB4MDAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTM0Olx0XHQgICAgICAgc2l6ZW9mKHN0cnVjdCBueHB3aWZpX3R3dF9pbmZvcm1hdGlvbikpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUzNS1cdFx0dHd0X2luZm9ybWF0aW9uLVx1MDAzZWZsb3dfaWRlbnRpZmllciA9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUzOC1cdFx0XHR0d3RfY2ZnLVx1MDAzZXBhcmFtLnR3dF9pbmZvcm1hdGlvbi5zdXNwZW5kX2R1cmF0aW9uO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjUzOTpcdFx0Y21kX3NpemUgJiM0Mzs9IHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV90d3RfaW5mb3JtYXRpb24pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU0MC1cdFx0YnJlYWs7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTQxLVx0Y2FzZSBOWFBXSUZJXzExQVhfQlRXVF9BUF9DT05GSUdfU1VCSUQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTQyOlx0XHRidHd0X2FwX2NvbmZpZyA9IChzdHJ1Y3Qgbnhwd2lmaV9idHd0X2FwX2NvbmZpZyAqKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU0My1cdFx0XHRcdCB0d3RfY2ZnX2NtZC1cdTAwM2V2YWw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTQ0LVx0XHRtZW1zZXQoYnR3dF9hcF9jb25maWcsIDB4MDAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTQ1Olx0XHQgICAgICAgc2l6ZW9mKHN0cnVjdCBueHB3aWZpX2J0d3RfYXBfY29uZmlnKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTQ2LVx0XHRidHd0X2FwX2NvbmZpZy1cdTAwM2VhcF9iY2FzdF9iZXRfc3RhX3dhaXQgPVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTY1Olx0XHRjbWRfc2l6ZSAmIzQzOz0gc2l6ZW9mKHN0cnVjdCBueHB3aWZpX2J0d3RfYXBfY29uZmlnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NjYtXHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU2Ny1cdGRlZmF1bHQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTY4Olx0XHRueHB3aWZpX2RiZyhhZGFwdGVyLCBFUlJPUixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NjktXHRcdFx0ICAgIFwmIzM0O1Vua25vd24gc3ViIGlkOiAlZFxcblwmIzM0OywgdHd0X2NmZy1cdTAwM2VzdWJfaWQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTc4OmludCBueHB3aWZpX3JldF90d3RfY2ZnKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTc5LVx0XHRcdHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpyZXNwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU4MDpcdFx0XHRzdHJ1Y3Qgbnhwd2lmaV90d3RfY2ZnICp0d3RfY2ZnKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU4MS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU4OS1cdCAgICB0d3RfY2ZnLVx1MDAzZXN1Yl9pZCA9PSBOWFBXSUZJXzExQVhfVFdUX1JFUE9SVF9TVUJJRCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU5MDpcdFx0c3RydWN0IG54cHdpZmlfdHd0X3JlcG9ydCAqdHd0X3JlcG9ydCA9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTkxOlx0XHRcdChzdHJ1Y3Qgbnhwd2lmaV90d3RfcmVwb3J0ICopdHd0X2NmZ19jbWQtXHUwMDNldmFsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU5Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1OTM6XHRcdG1lbWNweShcdTAwMjZ0d3RfY2ZnLVx1MDAzZXBhcmFtLnR3dF9yZXBvcnQsIHR3dF9yZXBvcnQsIHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV90d3RfcmVwb3J0KSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTk0LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaD0xNz1zdGF0aWMgaW5saW5lIHUxNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjE4Om54cHdpZmlfZ2V0X2hlX25zc19tY3MoX19sZTE2IG1jc19tYXBfc2V0LCBpbnQgbnNzKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtMTktXHRyZXR1cm4gKChsZTE2X3RvX2NwdShtY3NfbWFwX3NldCkgXHUwMDNlXHUwMDNlICgyICogKG5zcyAtIDEpKSkgXHUwMDI2IDB4Myk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oPTIyPXN0YXRpYyBpbmxpbmUgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjIzOm54cHdpZmlfc2V0X2hlX25zc19tY3MoX19sZTE2ICptY3NfbWFwX3NldCwgaW50IG5zcywgaW50IHZhbHVlKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtMjQtXHR1MTYgdGVtcDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtMzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6MzE6Ym9vbCBueHB3aWZpX2lzXzExYXhfdHd0X3N1cHBvcnRlZChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjMyOlx0XHRcdFx0ICAgc3RydWN0ICBueHB3aWZpX2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC0zMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDozNDp2b2lkIG54cHdpZmlfdXBkYXRlXzExYXhfY2FwKHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtMzUtXHRcdFx0ICAgICBzdHJ1Y3QgaHdfc3BlY19leHRlbnNpb24gKmh3X2hlX2NhcCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtMzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6Mzc6Ym9vbCBueHB3aWZpXzExYXhfYmFuZGNvbmZpZ19hbGxvd2VkKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6Mzg6XHRcdFx0XHQgICAgIHN0cnVjdCBueHB3aWZpX2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC0zOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDo0MDppbnQgbnhwd2lmaV9jbWRfYXBwZW5kXzExYXhfdGx2KHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NDE6XHRcdFx0XHRzdHJ1Y3Qgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC00Mi1cdFx0XHRcdHU4ICoqYnVmZmVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC00My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDo0NDppbnQgbnhwd2lmaV9maWxsX2hlX2NhcF90bHYoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDo0NTpcdFx0XHQgICAgc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICpoZV9jYXAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNDYtXHRcdFx0ICAgIHUxNiBiYW5kcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NDc6aW50IG54cHdpZmlfY21kXzExYXhfY2ZnKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNDgtXHRcdFx0IHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpjbWQsIHUxNiBjbWRfYWN0aW9uLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjQ5Olx0XHRcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2hlX2NmZyAqYXhfY2ZnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC01MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDo1MTppbnQgbnhwd2lmaV9yZXRfMTFheF9jZmcoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC01Mi1cdFx0XHQgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3AsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NTM6XHRcdFx0IHN0cnVjdCBueHB3aWZpXzExYXhfaGVfY2ZnICpheF9jZmcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTU0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjU1OmludCBueHB3aWZpX2NtZF8xMWF4X2NtZChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTU2LVx0XHRcdCBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqY21kLCB1MTYgY21kX2FjdGlvbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDo1NzpcdFx0XHQgc3RydWN0IG54cHdpZmlfMTFheF9jbWRfY2ZnICpheF9jbWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTU4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjU5OmludCBueHB3aWZpX3JldF8xMWF4X2NtZChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTYwLVx0XHRcdCBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqcmVzcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDo2MTpcdFx0XHQgc3RydWN0IG54cHdpZmlfMTFheF9jbWRfY2ZnICpheF9jbWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTYyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjYzOmludCBueHB3aWZpX2NtZF90d3RfY2ZnKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNjQtXHRcdFx0c3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCwgdTE2IGNtZF9hY3Rpb24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NjU6XHRcdFx0c3RydWN0IG54cHdpZmlfdHd0X2NmZyAqdHd0X2NmZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6Njc6aW50IG54cHdpZmlfcmV0X3R3dF9jZmcoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC02OC1cdFx0XHRzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqcmVzcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDo2OTpcdFx0XHRzdHJ1Y3Qgbnhwd2lmaV90d3RfY2ZnICp0d3RfY2ZnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC03MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDo3MTp1OCBueHB3aWZpX2lzX3N0YV8xMWF4X3R3dF9yZXFfc3VwcG9ydGVkKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTcyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExaC5jLTEyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmM6MTM6dm9pZCBueHB3aWZpX2luaXRfMTFoX3BhcmFtcyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmMtMTQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExaC5jLTE4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmM6MTk6aW50IG54cHdpZmlfaXNfMTFoX2FjdGl2ZShzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmMtMjAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExaC5jPTI1PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYzoyNjpueHB3aWZpXzExaF9wcm9jZXNzX2luZnJhX2pvaW4oc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdiwgdTggKipidWZmZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYzoyNzpcdFx0XHQgICAgICAgc3RydWN0IG54cHdpZmlfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYy0yOC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYzoyOTpcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlYWRlciAqaWVfaGVhZGVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmM6MzA6XHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19wd3JfY2FwYWJpbGl0eSAqY2FwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmM6MzE6XHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19sb2NhbF9wd3JfY29uc3RyYWludCAqY29uc3RyYWludDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExaC5jLTMyLVx0c3RydWN0IGllZWU4MDIxMV9zdXBwb3J0ZWRfYmFuZCAqc2JhbmQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmMtMzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYzozOTpcdHJhZGlvX3R5cGUgPSBueHB3aWZpX2JhbmRfdG9fcmFkaW9fdHlwZSgodTgpYnNzX2Rlc2MtXHUwMDNlYnNzX2JhbmQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmMtNDAtXHRzYmFuZCA9IHByaXYtXHUwMDNld2Rldi53aXBoeS1cdTAwM2ViYW5kc1tyYWRpb190eXBlXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExaC5jLTQxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmM6NDI6XHRjYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfcHdyX2NhcGFiaWxpdHkgKikqYnVmZmVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmMtNDMtXHRjYXAtXHUwMDNlaGVhZGVyLnR5cGUgPSBjcHVfdG9fbGUxNihXTEFOX0VJRF9QV1JfQ0FQQUJJTElUWSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmMtNDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYzo0OTpcdGNvbnN0cmFpbnQgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfbG9jYWxfcHdyX2NvbnN0cmFpbnQgKikqYnVmZmVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmMtNTAtXHRjb25zdHJhaW50LVx1MDAzZWhlYWRlci50eXBlID0gY3B1X3RvX2xlMTYoV0xBTl9FSURfUFdSX0NPTlNUUkFJTlQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExaC5jLTU1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmM6NTY6XHRpZV9oZWFkZXIgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVhZGVyICopKmJ1ZmZlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExaC5jLTU3LVx0aWVfaGVhZGVyLVx1MDAzZXR5cGUgPSBjcHVfdG9fbGUxNihUTFZfVFlQRV9QQVNTVEhST1VHSCk7XG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDc6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDUwNTEKCQkJCQkJCW91dHB1dDogMTIyCgkJCQkJCQl0aG91Z2h0czogMzg1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIGBueHB3aWZpYCBEcml2ZXIgZm9yIEZ1enppbmcqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gVGhlIGBueHB3aWZpYCBkcml2ZXIgaXMgc3BlY2lmaWNhbGx5IHRpZWQgdG8gTlhQJiMzOTtzIElXNjF4IGhhcmR3YXJlLCBjb25uZWN0ZWQgdmlhIFNESU8uIFRoYXQgYWxvbmUgaXMgYSByZWQgZmxhZy4gSSBrbm93IHRoYXQgdGhpcyBwYXJ0aWN1bGFyIGhhcmR3YXJlIGlzbiYjMzk7dCBlbXVsYXRlZCBhdCBhbGwgaW4gc3RhbmRhcmQgdmlydHVhbGl6YXRpb24gdG9vbHMgbGlrZSBRRU1VIG9yIGluIGNsb3VkIGVudmlyb25tZW50cyBsaWtlIEdvb2dsZSBDb21wdXRlIEVuZ2luZS4gU28sIGFueSBjb2RlIHBhdGhzIHdpdGhpbiBgbnhwd2lmaWAgYXJlIGdvaW5nIHRvIGJlIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUgdXNpbmcgb3VyIHZpcnR1YWxpemVkIGZ1enppbmcgc2V0dXBzLgoKTGV0JiMzOTtzIGRvdWJsZS1jaGVjayB0aGUgZXhjbHVzaW9uIGNyaXRlcmlhIGp1c3QgdG8gYmUgY2VydGFpbi4gV2UmIzM5O3JlIGxvb2tpbmcgZm9yIGNvZGUgdGhhdCYjMzk7cyBpbmFjY2Vzc2libGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBldmVuIHdpdGggZW11bGF0ZWQgaGFyZHdhcmUsIG9yIGNhbGxiYWNrcyB0cmlnZ2VyZWQgYnkgUENJIGhvdC11bnBsdWcgb3BlcmF0aW9ucywgb3IgY29kZSB3aXRoaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgZHJpdmVycyB0aGF0IG5lZWQgcGh5c2ljYWwgaGFyZHdhcmUgY2FyZHMuCgpZZXAsIHRoZSBgbnhwd2lmaWAgc2l0dWF0aW9uIGxpbmVzIHVwIHBlcmZlY3RseS4gSXQmIzM5O3MgYSB0ZXh0Ym9vayBleGFtcGxlIG9mIGEgZHJpdmVyIHRoYXTigJlzIGdvaW5nIHRvIGJlIHVzZWxlc3MgZm9yIHVzIHRvIHRhcmdldC4KClRpbWUgdG8gcHJlcGFyZSB0aGUgcmVzdWx0cy4gV2UgbmVlZCB0byBzZXQgYFdvcnRoRnV6emluZ2AgdG8gYGZhbHNlYC4gTm8gcG9pbnQgd2FzdGluZyByZXNvdXJjZXMuIFRoZSBgRW5hYmxlQ29uZmlnc2AgYW5kIGBGb2N1c1N5bWJvbHNgIHdpbGwgYmUgZW1wdHkuIFRoZSBgUmVhc29uaW5nYCBuZWVkcyB0byBiZSBjbGVhcjogJiMzNDtUaGUgY2hhbmdlcyBhcmUgaW4gdGhlIGBueHB3aWZpYCBkcml2ZXIgKGRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NmZzgwMjExLmMpLCB3aGljaCBpcyBhIHZlbmRvciB3aXJlbGVzcyBkcml2ZXIgc3VwcG9ydGluZyBOWFAgSVc2MXggZGV2aWNlcyBvdmVyIFNESU8uIEl0IHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIFNESU8gaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgc3VjaCBhcyBRRU1VIG9yIEdDRS4mIzM0OwoKQW5kIHdpdGggdGhhdCBkb25lLCBJJiMzOTttIGdvaW5nIHRvIHNldCB0aGVzZSByZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwNzo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIG1vZGlmaWNhdGlvbnMgYXJlIGluIHRoZSBOWFAgV2lGaSBkcml2ZXIgKGRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NmZzgwMjExLmMpLCB3aGljaCBpcyBhbiBTRElPLWJhc2VkIHdpcmVsZXNzIG5ldHdvcmsgZHJpdmVyIChDT05GSUdfTlhQV0lGSSAvIENPTkZJR19OWFBXSUZJX1NESU8pIHJlcXVpcmluZyBwaHlzaWNhbCBOWFAgSVc2MXggaGFyZHdhcmUuIFRoZSBkcml2ZXIgY2Fubm90IGJlIGluc3RhbnRpYXRlZCBvciByZWFjaGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFIHdpdGhvdXQgZGVkaWNhdGVkIHBoeXNpY2FsIGhhcmR3YXJlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgbW9kaWZpY2F0aW9ucyBhcmUgaW4gdGhlIE5YUCBXaUZpIGRyaXZlciAoZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY2ZnODAyMTEuYyksIHdoaWNoIGlzIGFuIFNESU8tYmFzZWQgd2lyZWxlc3MgbmV0d29yayBkcml2ZXIgKENPTkZJR19OWFBXSUZJIC8gQ09ORklHX05YUFdJRklfU0RJTykgcmVxdWlyaW5nIHBoeXNpY2FsIE5YUCBJVzYxeCBoYXJkd2FyZS4gVGhlIGRyaXZlciBjYW5ub3QgYmUgaW5zdGFudGlhdGVkIG9yIHJlYWNoZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0Ugd2l0aG91dCBkZWRpY2F0ZWQgcGh5c2ljYWwgaGFyZHdhcmUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwNzo1ODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDc6NTc6MDAuMjg1NzA1MTk1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjA2Mjg2NDI1MTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBtb2RpZmljYXRpb25zIGFyZSBpbiB0aGUgTlhQIFdpRmkgZHJpdmVyIChkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jZmc4MDIxMS5jKSwgd2hpY2ggaXMgYW4gU0RJTy1iYXNlZCB3aXJlbGVzcyBuZXR3b3JrIGRyaXZlciAoQ09ORklHX05YUFdJRkkgLyBDT05GSUdfTlhQV0lGSV9TRElPKSByZXF1aXJpbmcgcGh5c2ljYWwgTlhQIElXNjF4IGhhcmR3YXJlLiBUaGUgZHJpdmVyIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQgb3IgcmVhY2hlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSB3aXRob3V0IGRlZGljYXRlZCBwaHlzaWNhbCBoYXJkd2FyZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA3OjU3OjAwLjI4NTcxMDg5NVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzgyNDAxNzUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYWIxZjJmYWY3YmJlMWVhMGExZmRiZDdkNTZiOTc1ZmFjYWFlMjY2ZlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEF1ZyAzMSAwNzo1Njo1OSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jZmc4MDIxMS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY2ZnODAyMTEuY1xcbmluZGV4IDVjYzhjZGY1OTRkM2UuLjMzNTIyMWM0ZjE3ZDEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY2ZnODAyMTEuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NmZzgwMjExLmNcXG5AQCAtODQ0LDggKzg0NCw3IEBAIG54cHdpZmlfY2hhbmdlX3ZpZl90b19zdGEoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4gXFx0dXBkYXRlX3ZpZl90eXBlX2NvdW50ZXIoYWRhcHRlciwgdHlwZSwgMSk7XFxuIFxcdGRldi1cXHUwMDNlaWVlZTgwMjExX3B0ci1cXHUwMDNlaWZ0eXBlID0gdHlwZTtcXG4gXFxuLVxcdGlmIChueHB3aWZpX3NldF9ic3NfbW9kZShwcml2KSlcXG4tXFx0XFx0cmV0dXJuIC0xO1xcbitcXHRyZXQgPSBueHB3aWZpX3NldF9ic3NfbW9kZShwcml2KTtcXG4gXFxuIFxcdGlmIChyZXQpXFxuIFxcdFxcdGdvdG8gZG9uZTtcXG5AQCAtODg4LDggKzg4Nyw3IEBAIG54cHdpZmlfY2hhbmdlX3ZpZl90b19hcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXHR1cGRhdGVfdmlmX3R5cGVfY291bnRlcihhZGFwdGVyLCB0eXBlLCAxKTtcXG4gXFx0ZGV2LVxcdTAwM2VpZWVlODAyMTFfcHRyLVxcdTAwM2VpZnR5cGUgPSB0eXBlO1xcbiBcXG4tXFx0aWYgKG54cHdpZmlfc2V0X2Jzc19tb2RlKHByaXYpKVxcbi1cXHRcXHRyZXR1cm4gLTE7XFxuK1xcdHJldCA9IG54cHdpZmlfc2V0X2Jzc19tb2RlKHByaXYpO1xcbiBcXG4gXFx0aWYgKHJldClcXG4gXFx0XFx0Z290byBkb25lO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwNzo1NzowMC42Njg3OTQ0OTdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjYwMjQ1NTM5NjUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBtb2RpZmljYXRpb25zIGFyZSBpbiB0aGUgTlhQIFdpRmkgZHJpdmVyIChkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jZmc4MDIxMS5jKSwgd2hpY2ggaXMgYW4gU0RJTy1iYXNlZCB3aXJlbGVzcyBuZXR3b3JrIGRyaXZlciAoQ09ORklHX05YUFdJRkkgLyBDT05GSUdfTlhQV0lGSV9TRElPKSByZXF1aXJpbmcgcGh5c2ljYWwgTlhQIElXNjF4IGhhcmR3YXJlLiBUaGUgZHJpdmVyIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQgb3IgcmVhY2hlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSB3aXRob3V0IGRlZGljYXRlZCBwaHlzaWNhbCBoYXJkd2FyZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGFiMWYyZmFmN2JiZTFlYTBhMWZkYmQ3ZDU2Yjk3NWZhY2FhZTI2NmZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzMSAwNzo1Njo1OSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jZmc4MDIxMS5jXG5pbmRleCA1Y2M4Y2RmNTk0ZDNlLi4zMzUyMjFjNGYxN2QxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY2ZnODAyMTEuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY2ZnODAyMTEuY1xuQEAgLTg0NCw4ICs4NDQsNyBAQCBueHB3aWZpX2NoYW5nZV92aWZfdG9fc3RhKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHR1cGRhdGVfdmlmX3R5cGVfY291bnRlcihhZGFwdGVyLCB0eXBlLCAxKTtcbiBcdGRldi1cdTAwM2VpZWVlODAyMTFfcHRyLVx1MDAzZWlmdHlwZSA9IHR5cGU7XG4gXG4tXHRpZiAobnhwd2lmaV9zZXRfYnNzX21vZGUocHJpdikpXG4tXHRcdHJldHVybiAtMTtcbitcdHJldCA9IG54cHdpZmlfc2V0X2Jzc19tb2RlKHByaXYpO1xuIFxuIFx0aWYgKHJldClcbiBcdFx0Z290byBkb25lO1xuQEAgLTg4OCw4ICs4ODcsNyBAQCBueHB3aWZpX2NoYW5nZV92aWZfdG9fYXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdHVwZGF0ZV92aWZfdHlwZV9jb3VudGVyKGFkYXB0ZXIsIHR5cGUsIDEpO1xuIFx0ZGV2LVx1MDAzZWllZWU4MDIxMV9wdHItXHUwMDNlaWZ0eXBlID0gdHlwZTtcbiBcbi1cdGlmIChueHB3aWZpX3NldF9ic3NfbW9kZShwcml2KSlcbi1cdFx0cmV0dXJuIC0xO1xuK1x0cmV0ID0gbnhwd2lmaV9zZXRfYnNzX21vZGUocHJpdik7XG4gXG4gXHRpZiAocmV0KVxuIFx0XHRnb3RvIGRvbmU7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwNzo1NzowMC42Njg3OTY0MTdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2NTI1MTMyNjQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFdpcmVsZXNzIERyaXZlciBQYXRjaCoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBUaGUga2V5IGZpbGUgaGVyZSBpcyBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY2ZnODAyMTEuY2AsIHdoaWNoIGltbWVkaWF0ZWx5IHN1Z2dlc3RzIHdlJ3JlIGRlYWxpbmcgd2l0aCB0aGUgTlhQIFdpRmkgZHJpdmVyLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIGJ1cyBpbnRlcmFjdGlvbi4gSXMgdGhpcyBhIFVTQi1iYXNlZCBkZXZpY2UsIFNESU8sIG9yIHBlcmhhcHMgUENJZT8gVGhpcyBpcyBjcnVjaWFsIGZvciBkZXRlcm1pbmluZyBob3cgd2UgY2FuIGVmZmVjdGl2ZWx5IGZ1enogaXQuIElmIGl0J3MgVVNCLCBjYW4gd2UgbGV2ZXJhZ2UgVVNCIGdhZGdldCBtb2RlcyBvciByYXcgZ2FkZ2V0IGFwcHJvYWNoZXM/IE9yIHBlcmhhcHMgZXZlbiBlbXVsYXRlIHRoZSBkZXZpY2U/IE9mIGNvdXJzZSwgaWYgaXQncyBTRElPIG9yIFBDSWUsIHRoYXQgY2hhbmdlcyB0aGUgZ2FtZS5cblxuVG8gdW5kZXJzdGFuZCB0aGUgZHJpdmVyJ3MgaW50ZXJuYWxzIGEgYml0IGJldHRlciwgSSdsbCBuZWVkIHRvIGV4cGxvcmUgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9gIGRpcmVjdG9yeSBtb3JlIGNsb3NlbHkuIEknbGwgbGlrZWx5IHVzZSBgY29kZXNlYXJjaC1kaXItaW5kZXhgIG9yIGByZWFkLWZpbGVgIG9yIGBncmVwcGVyYCB0byBxdWlja2x5IGdldCBhbiBvdmVydmlldyBvZiB0aGUgY29kZSBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlLCBpZiBwb3NzaWJsZS4gVGhpcyBzaG91bGQgaGVscCBjbGFyaWZ5IHRoZSBidXMgaW50ZXJmYWNlIGFuZCBwb3RlbnRpYWwgZnV6emluZyB2ZWN0b3JzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjYxLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDc6NTc6MDcuMTkzOTMwOTYzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiY29kZXNlYXJjaC1kaXItaW5kZXgiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDA4ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJEaXJcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJGaWxlc1wiOiBbXG4gICAgXCIxMWFjLmNcIixcbiAgICBcIjExYWMuaFwiLFxuICAgIFwiMTFheC5jXCIsXG4gICAgXCIxMWF4LmhcIixcbiAgICBcIjExaC5jXCIsXG4gICAgXCIxMW4uY1wiLFxuICAgIFwiMTFuLmhcIixcbiAgICBcIjExbl9hZ2dyLmNcIixcbiAgICBcIjExbl9hZ2dyLmhcIixcbiAgICBcIjExbl9yeHJlb3JkZXIuY1wiLFxuICAgIFwiMTFuX3J4cmVvcmRlci5oXCIsXG4gICAgXCJjZmcuaFwiLFxuICAgIFwiY2ZnODAyMTEuY1wiLFxuICAgIFwiY2ZnODAyMTEuaFwiLFxuICAgIFwiY2ZwLmNcIixcbiAgICBcImNtZGV2dC5jXCIsXG4gICAgXCJjbWRldnQuaFwiLFxuICAgIFwiZGVidWdmcy5jXCIsXG4gICAgXCJldGh0b29sLmNcIixcbiAgICBcImZ3LmhcIixcbiAgICBcImllLmNcIixcbiAgICBcImluaXQuY1wiLFxuICAgIFwiam9pbi5jXCIsXG4gICAgXCJtYWluLmNcIixcbiAgICBcIm1haW4uaFwiLFxuICAgIFwic2Nhbi5jXCIsXG4gICAgXCJzZGlvLmNcIixcbiAgICBcInNkaW8uaFwiLFxuICAgIFwic3RhX2NmZy5jXCIsXG4gICAgXCJzdGFfY21kLmNcIixcbiAgICBcInN0YV9ldmVudC5jXCIsXG4gICAgXCJzdGFfcnguY1wiLFxuICAgIFwic3RhX3R4LmNcIixcbiAgICBcInR4cnguY1wiLFxuICAgIFwidWFwX2NtZC5jXCIsXG4gICAgXCJ1YXBfZXZlbnQuY1wiLFxuICAgIFwidWFwX3R4cnguY1wiLFxuICAgIFwidXRpbC5jXCIsXG4gICAgXCJ1dGlsLmhcIixcbiAgICBcIndtbS5jXCIsXG4gICAgXCJ3bW0uaFwiXG4gIF0sXG4gIFwiU3ViZGlyc1wiOiBudWxsXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwNzo1NzowNy4xOTQwMzQ4MDNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0MTQyNjEzMDg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktjb25maWcgSHVudGluZyBmb3Igbnhwd2lmaSoqXG5cbk9rYXksIHRpbWUgdG8gdHJhY2sgZG93biB0aGUgS2NvbmZpZyBlbnRyaWVzIHJlbGF0ZWQgdG8gYG54cHdpZmlgLiBXaGVyZSBhcmUgdGhleSBoaWRpbmc/IE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHVzZSBgZ3JlcGAgYW5kIHNlYXJjaCBmb3IgdGhlIHN0cmluZyBgbnhwd2lmaWAuIFRoYXQgc2hvdWxkIGJlIGEgcXVpY2sgd2F5IHRvIGxvY2F0ZSBhbnkgbWVudGlvbnMgd2l0aGluIHRoZSBidWlsZCBzeXN0ZW0uIEFsdGVybmF0aXZlbHksIEkga25vdyBJIGNhbiBvZnRlbiBmaW5kIGRyaXZlcnMgd2l0aGluIGBkcml2ZXJzL25ldC93aXJlbGVzc2Agd2hpY2ggbWlnaHQgY29udGFpbiBhIGRlZGljYXRlZCBgbnhwYCBkaXJlY3RvcnkgYW5kIHRoZW4gYSBgS2NvbmZpZ2AgZmlsZS4gSSdsbCBuZWVkIHRvIGNoZWNrIGBkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvS2NvbmZpZ2AgYW5kIGFsc28gdGhlIG1vcmUgZ2VuZXJhbCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZ2AgdG8gYmUgdGhvcm91Z2guIExldCdzIHNlZSB3aGF0IHRoZSBLY29uZmlnIGZpbGVzIHJldmVhbC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAwMiwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzLCJUb29sQ2FsbHMiOlsiY29kZXNlYXJjaC1kaXItaW5kZXgiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwNzo1NzoxMS4zMzY2NTA4NFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NTkxODU0NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJueHB3aWZpXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTUxNzIgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9LY29uZmlnPTEzPWlmIFdMQU5fVkVORE9SX05YUFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9LY29uZmlnLTE0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9LY29uZmlnOjE1OnNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvS2NvbmZpZy0xNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9NYWtlZmlsZS0yLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9NYWtlZmlsZTozOm9iai0kKENPTkZJR19OWFBXSUZJKVxcdCs9IG54cHdpZmkvXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMi0vKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzozOiAqIG54cHdpZmkgODAyLjExYWMgaGVscGVyc1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy00LSAqIENvcHlyaWdodCAyMDExLTIwMjQgTlhQXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM9MzY9c3RhdGljIHUxNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzozNzpueHB3aWZpX2NvbnZlcnRfbWNzbWFwX3RvX21heHJhdGUoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMzgtXFx0XFx0XFx0XFx0ICB1MTYgYmFuZHMsIHUxNiBtY3NfbWFwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTQyLVxcdHUzMiB1c3Jfdmh0X2NhcF9pbmZvID0gMDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6NDM6XFx0c3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtXFx1MDAzZWFkYXB0ZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTQ0LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jPTc5PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjgwOm54cHdpZmlfZmlsbF92aHRfY2FwX2luZm8oc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtODEtXFx0XFx0XFx0ICBzdHJ1Y3QgaWVlZTgwMjExX3ZodF9jYXAgKnZodF9jYXAsIHUxNiBiYW5kcylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtODIte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzo4MzpcXHRzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cXHUwMDNlYWRhcHRlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtODQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM9OTM9dm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzo5NDpueHB3aWZpX2ZpbGxfdmh0X2NhcF90bHYoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtOTUtXFx0XFx0XFx0IHN0cnVjdCBpZWVlODAyMTFfdmh0X2NhcCAqdmh0X2NhcCwgdTE2IGJhbmRzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy05Ni17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjk3OlxcdHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIgPSBwcml2LVxcdTAwM2VhZGFwdGVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy05OC1cXHR1MTYgbWNzX21hcF91c2VyLCBtY3NfbWFwX3Jlc3AsIG1jc19tYXBfcmVzdWx0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTEwMS1cXHQvKiBGaWxsIFZIVCBjYXBhYmlsaXR5IGluZm8uICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjEwMjpcXHRueHB3aWZpX2ZpbGxfdmh0X2NhcF9pbmZvKHByaXYsIHZodF9jYXAsIGJhbmRzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTAzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTEyMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTI0OlxcdHRtcCA9IG54cHdpZmlfY29udmVydF9tY3NtYXBfdG9fbWF4cmF0ZShwcml2LCBiYW5kcywgbWNzX21hcF9yZXN1bHQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xMjUtXFx0dmh0X2NhcC1cXHUwMDNlc3VwcF9tY3MucnhfaGlnaGVzdCA9IGNwdV90b19sZTE2KHRtcCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTQ1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxNDY6XFx0dG1wID0gbnhwd2lmaV9jb252ZXJ0X21jc21hcF90b19tYXhyYXRlKHByaXYsIGJhbmRzLCBtY3NfbWFwX3Jlc3VsdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE0Ny1cXHR2aHRfY2FwLVxcdTAwM2VzdXBwX21jcy50eF9oaWdoZXN0ID0gY3B1X3RvX2xlMTYodG1wKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE1MDppbnQgbnhwd2lmaV9jbWRfYXBwZW5kXzExYWNfdGx2KHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE1MTpcXHRcXHRcXHRcXHRzdHJ1Y3Qgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTUyLVxcdFxcdFxcdFxcdHU4ICoqYnVmZmVyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNTMte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxNTQ6XFx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfdmh0Y2FwICp2aHRfY2FwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxNTU6XFx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfb3Blcl9tb2RlX250ZiAqb3Blcl9udGY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE1Ni1cXHRzdHJ1Y3QgaWVlZV90eXBlc19vcGVyX21vZGVfbnRmICppZWVlX29wZXJfbnRmO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxNTc6XFx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfdmh0X29wZXIgKnZodF9vcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTU4OlxcdHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIgPSBwcml2LVxcdTAwM2VhZGFwdGVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNTktXFx0dTggc3VwcF9jaHdkX3NldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNjktXFx0aWYgKGJzc19kZXNjLVxcdTAwM2ViY25fdmh0X2NhcCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxNzA6XFx0XFx0dmh0X2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc192aHRjYXAgKikqYnVmZmVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNzEtXFx0XFx0bWVtc2V0KHZodF9jYXAsIDAsIHNpemVvZigqdmh0X2NhcCkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE3NC1cXHRcXHRcXHRjcHVfdG9fbGUxNihzaXplb2Yoc3RydWN0IGllZWU4MDIxMV92aHRfY2FwKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE3NTpcXHRcXHRtZW1jcHkoKHU4ICopdmh0X2NhcCArIHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZWFkZXIpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNzYtXFx0XFx0ICAgICAgICh1OCAqKWJzc19kZXNjLVxcdTAwM2ViY25fdmh0X2NhcCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE3OTpcXHRcXHRueHB3aWZpX2ZpbGxfdmh0X2NhcF90bHYocHJpdiwgXFx1MDAyNnZodF9jYXAtXFx1MDAzZXZodF9jYXAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE4MC1cXHRcXHRcXHRcXHRcXHQgYnNzX2Rlc2MtXFx1MDAzZWJzc19iYW5kKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xODctXFx0XFx0aWYgKHByaXYtXFx1MDAzZWJzc19tb2RlID09IE5MODAyMTFfSUZUWVBFX1NUQVRJT04pIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTg4OlxcdFxcdFxcdHZodF9vcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc192aHRfb3BlciAqKSpidWZmZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE4OS1cXHRcXHRcXHRtZW1zZXQodmh0X29wLCAwLCBzaXplb2YoKnZodF9vcCkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE5Mi1cXHRcXHRcXHR2aHRfb3AtXFx1MDAzZWhlYWRlci5sZW4gID0gY3B1X3RvX2xlMTYoc2l6ZW9mKCp2aHRfb3ApIC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTkzOlxcdFxcdFxcdFxcdHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZWFkZXIpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTk0LVxcdFxcdFxcdG1lbWNweSgodTggKil2aHRfb3AgK1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxOTU6XFx0XFx0XFx0XFx0c2l6ZW9mKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlYWRlciksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE5Ni1cXHRcXHRcXHQgICAgICAgKHU4ICopYnNzX2Rlc2MtXFx1MDAzZWJjbl92aHRfb3BlcixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0yNDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjI0NTppbnQgbnhwd2lmaV9jbWRfMTFhY19jZmcoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMjQ2LVxcdFxcdFxcdCBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqY21kLCB1MTYgY21kX2FjdGlvbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MjQ3OlxcdFxcdFxcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWFjX3ZodF9jZmcgKmNmZylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMjQ4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0yNjQtLyogSW5pdGlhbGl6ZSBCbG9ja0FjayBwYXJhbWV0ZXJzIGZvciAxMWFjLiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoyNjU6dm9pZCBueHB3aWZpX3NldF8xMWFjX2JhX3BhcmFtcyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0yNjYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5oLTItLypcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmg6MzogKiBueHB3aWZpOiA4MDIuMTFhYyAoVkhUKSBkZWZpbml0aW9uc1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuaC00LSAqXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmg9MTQ9ZW51bSB2aHRfY2ZnX21pc2NfY29uZmlnIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuaC0yNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmg6MjU6aW50IG54cHdpZmlfY21kX2FwcGVuZF8xMWFjX3RsdihzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuaDoyNjpcXHRcXHRcXHRcXHRzdHJ1Y3Qgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmgtMjctXFx0XFx0XFx0XFx0dTggKipidWZmZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuaDoyODppbnQgbnhwd2lmaV9jbWRfMTFhY19jZmcoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmgtMjktXFx0XFx0XFx0IHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpjbWQsIHUxNiBjbWRfYWN0aW9uLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuaDozMDpcXHRcXHRcXHQgc3RydWN0IG54cHdpZmlfMTFhY192aHRfY2ZnICpjZmcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuaDozMTp2b2lkIG54cHdpZmlfZmlsbF92aHRfY2FwX3RsdihzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuaC0zMi1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3ZodF9jYXAgKnZodF9jYXAsIHUxNiBiYW5kcyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMS0vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI6Lyogbnhwd2lmaTogODAyLjExYXggKEhFKSBzdXBwb3J0XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTMtICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjQgTlhQXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjExOnZvaWQgbnhwd2lmaV91cGRhdGVfMTFheF9jYXAoc3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTItXFx0XFx0XFx0ICAgICBzdHJ1Y3QgaHdfc3BlY19leHRlbnNpb24gKmh3X2hlX2NhcClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTMte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNDpcXHRzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNTpcXHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKmhlX2NhcCA9IE5VTEw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE2OlxcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqdXNlcl9oZV9jYXAgPSBOVUxMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNzpcXHR1OCBoZWFkZXJfbGVuID0gc2l6ZW9mKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlYWRlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE4LVxcdHUxNiBkYXRhX2xlbiA9IGxlMTZfdG9fY3B1KGh3X2hlX2NhcC1cXHUwMDNlaGVhZGVyLmxlbik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjItXFx0aWYgKChkYXRhX2xlbiArIGhlYWRlcl9sZW4pIFxcdTAwM2Ugc2l6ZW9mKGFkYXB0ZXItXFx1MDAzZWh3X2hlX2NhcCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjM6XFx0XFx0bnhwd2lmaV9kYmcoYWRhcHRlciwgRVJST1IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI0LVxcdFxcdFxcdCAgICBcXFwiaHdfaGVfY2FwIHRvbyBiaWcsIGxlbj0lZFxcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6Mjk6XFx0aGVfY2FwID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqKWh3X2hlX2NhcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzctXFx0XFx0aGVfY2FwXzJnID0gdHJ1ZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6Mzg6XFx0XFx0bnhwd2lmaV9kYmdfZHVtcChhZGFwdGVyLCBDTURfRCwgXFxcIjIuNEcgSEUgY2FwYWJpbGl0eSBlbGVtZW50IFxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM5LVxcdFxcdFxcdFxcdCBhZGFwdGVyLVxcdTAwM2Vod18yZ19oZV9jYXAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDUtXFx0XFx0YWRhcHRlci1cXHUwMDNlZndfYmFuZHMgfD0gQkFORF9BQVg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ2OlxcdFxcdG54cHdpZmlfZGJnX2R1bXAoYWRhcHRlciwgQ01EX0QsIFxcXCI1RyBIRSBjYXBhYmlsaXR5IGVsZW1lbnQgXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDctXFx0XFx0XFx0XFx0IGFkYXB0ZXItXFx1MDAzZWh3X2hlX2NhcCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01Ny1cXHRcXHRcXHQgICAgICAgc2l6ZW9mKGFkYXB0ZXItXFx1MDAzZWh3XzJnX2hlX2NhcCkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1ODpcXHRcXHRcXHR1c2VyX2hlX2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTktXFx0XFx0XFx0XFx0cHJpdi1cXHUwMDNldXNlcl8yZ19oZV9jYXA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNjMtXFx0XFx0XFx0ICAgICAgIHNpemVvZihhZGFwdGVyLVxcdTAwM2Vod19oZV9jYXApKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NjQ6XFx0XFx0XFx0dXNlcl9oZV9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICopXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTY1LVxcdFxcdFxcdFxcdHByaXYtXFx1MDAzZXVzZXJfaGVfY2FwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTc4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo3OTpib29sIG54cHdpZmlfMTFheF9iYW5kY29uZmlnX2FsbG93ZWQoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6ODA6XFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3Qgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtODEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTk0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo5NTppbnQgbnhwd2lmaV9maWxsX2hlX2NhcF90bHYoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6OTY6XFx0XFx0XFx0ICAgIHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqaGVfY2FwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy05Ny1cXHRcXHRcXHQgICAgdTE2IGJhbmRzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy05OC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjk5OlxcdHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIgPSBwcml2LVxcdTAwM2VhZGFwdGVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxMDA6XFx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICpod19oZV9jYXAgPSBOVUxMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMDEtXFx0dTE2IHJ4X25zcywgdHhfbnNzO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTEwOC1cXHRcXHRtZW1jcHkoaGVfY2FwLCBwcml2LVxcdTAwM2V1c2VyX2hlX2NhcCwgcHJpdi1cXHUwMDNldXNlcl9oZV9jYXBfbGVuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTA5OlxcdFxcdGh3X2hlX2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKilhZGFwdGVyLVxcdTAwM2Vod19oZV9jYXA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTExMC1cXHRcXHRyZXRfbGVuID0gcHJpdi1cXHUwMDNldXNlcl9oZV9jYXBfbGVuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTExMi1cXHRcXHRtZW1jcHkoaGVfY2FwLCBwcml2LVxcdTAwM2V1c2VyXzJnX2hlX2NhcCwgcHJpdi1cXHUwMDNldXNlcl8yZ19oZV9jYXBfbGVuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTEzOlxcdFxcdGh3X2hlX2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKilhZGFwdGVyLVxcdTAwM2Vod18yZ19oZV9jYXA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTExNC1cXHRcXHRyZXRfbGVuID0gcHJpdi1cXHUwMDNldXNlcl8yZ19oZV9jYXBfbGVuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTEyNS1cXHRmb3IgKG5zcyA9IDE7IG5zcyBcXHUwMDNjPSA4OyBuc3MrKykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxMjY6XFx0XFx0Y2ZnX3ZhbHVlID0gbnhwd2lmaV9nZXRfaGVfbnNzX21jcyhoZV9jYXAtXFx1MDAzZXJ4X21jc184MCwgbnNzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTI3OlxcdFxcdGh3X3ZhbHVlID0gbnhwd2lmaV9nZXRfaGVfbnNzX21jcyhod19oZV9jYXAtXFx1MDAzZXJ4X21jc184MCwgbnNzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTI4LVxcdFxcdGlmIChyeF9uc3MgIT0gMCBcXHUwMDI2XFx1MDAyNiBuc3MgXFx1MDAzZSByeF9uc3MpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTMwLVxcdFxcdGlmIChod192YWx1ZSA9PSBOT19OU1NfU1VQUE9SVCB8fCBjZmdfdmFsdWUgPT0gTk9fTlNTX1NVUFBPUlQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjEzMTpcXHRcXHRcXHRueHB3aWZpX3NldF9oZV9uc3NfbWNzKFxcdTAwMjZoZV9jYXAtXFx1MDAzZXJ4X21jc184MCwgbnNzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMzItXFx0XFx0XFx0XFx0XFx0ICAgICAgIE5PX05TU19TVVBQT1JUKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTMzLVxcdFxcdGVsc2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTM0OlxcdFxcdFxcdG54cHdpZmlfc2V0X2hlX25zc19tY3MoXFx1MDAyNmhlX2NhcC1cXHUwMDNlcnhfbWNzXzgwLCBuc3MsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTEzNS1cXHRcXHRcXHRcXHRcXHQgICAgICAgbWluKGNmZ192YWx1ZSwgaHdfdmFsdWUpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMzgtXFx0Zm9yIChuc3MgPSAxOyBuc3MgXFx1MDAzYz0gODsgbnNzKyspIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTM5OlxcdFxcdGNmZ192YWx1ZSA9IG54cHdpZmlfZ2V0X2hlX25zc19tY3MoaGVfY2FwLVxcdTAwM2V0eF9tY3NfODAsIG5zcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE0MDpcXHRcXHRod192YWx1ZSA9IG54cHdpZmlfZ2V0X2hlX25zc19tY3MoaHdfaGVfY2FwLVxcdTAwM2V0eF9tY3NfODAsIG5zcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE0MS1cXHRcXHRpZiAodHhfbnNzICE9IDAgXFx1MDAyNlxcdTAwMjYgbnNzIFxcdTAwM2UgdHhfbnNzKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE0My1cXHRcXHRpZiAoaHdfdmFsdWUgPT0gTk9fTlNTX1NVUFBPUlQgfHwgY2ZnX3ZhbHVlID09IE5PX05TU19TVVBQT1JUKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNDQ6XFx0XFx0XFx0bnhwd2lmaV9zZXRfaGVfbnNzX21jcyhcXHUwMDI2aGVfY2FwLVxcdTAwM2V0eF9tY3NfODAsIG5zcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTQ1LVxcdFxcdFxcdFxcdFxcdCAgICAgICBOT19OU1NfU1VQUE9SVCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE0Ni1cXHRcXHRlbHNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE0NzpcXHRcXHRcXHRueHB3aWZpX3NldF9oZV9uc3NfbWNzKFxcdTAwMjZoZV9jYXAtXFx1MDAzZXR4X21jc184MCwgbnNzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNDgtXFx0XFx0XFx0XFx0XFx0ICAgICAgIG1pbihjZmdfdmFsdWUsIGh3X3ZhbHVlKSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTUzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNTQ6aW50IG54cHdpZmlfY21kX2FwcGVuZF8xMWF4X3RsdihzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNTU6XFx0XFx0XFx0XFx0c3RydWN0IG54cHdpZmlfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE1Ni1cXHRcXHRcXHRcXHR1OCAqKmJ1ZmZlcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTU3LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTU4OlxcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqaGVfY2FwID0gTlVMTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTU5LVxcdGludCByZXRfbGVuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE2My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTY0OlxcdGhlX2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKikqYnVmZmVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNjU6XFx0cmV0X2xlbiA9IG54cHdpZmlfZmlsbF9oZV9jYXBfdGx2KHByaXYsIGhlX2NhcCwgYnNzX2Rlc2MtXFx1MDAzZWJzc19iYW5kKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTY2LVxcdCpidWZmZXIgKz0gcmV0X2xlbjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE3MTppbnQgbnhwd2lmaV9jbWRfMTFheF9jZmcoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTcyLVxcdFxcdFxcdCBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqY21kLCB1MTYgY21kX2FjdGlvbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTczOlxcdFxcdFxcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2hlX2NmZyAqYXhfY2ZnKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNzQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE3Ni1cXHR1MTYgY21kX3NpemU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE3NzpcXHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZWFkZXIgKmhlYWRlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTc4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE4Ni1cXHQgICAgYXhfY2ZnLVxcdTAwM2VoZV9jYXBfY2ZnLmV4dF9pZCA9PSBXTEFOX0VJRF9FWFRfSEVfQ0FQQUJJTElUWSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxODc6XFx0XFx0aGVhZGVyID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlYWRlciAqKWhlX2NmZy1cXHUwMDNldGx2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xODgtXFx0XFx0aGVhZGVyLVxcdTAwM2V0eXBlID0gY3B1X3RvX2xlMTYoYXhfY2ZnLVxcdTAwM2VoZV9jYXBfY2ZnLmlkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yMDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjIwMTppbnQgbnhwd2lmaV9yZXRfMTFheF9jZmcoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjAyLVxcdFxcdFxcdCBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqcmVzcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjAzOlxcdFxcdFxcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2hlX2NmZyAqYXhfY2ZnKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yMDQte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yMDUtXFx0c3RydWN0IGhvc3RfY21kXzExYXhfY2ZnICpoZV9jZmcgPSBcXHUwMDI2cmVzcC1cXHUwMDNlcGFyYW1zLmF4X2NmZztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjA2OlxcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlYWRlciAqaGVhZGVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yMDctXFx0dTE2IGxlZnRfbGVuLCB0bHZfdHlwZSwgdGx2X2xlbjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjA4LVxcdHU4IGV4dF9pZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjA5OlxcdHN0cnVjdCBueHB3aWZpXzExYXhfaGVfY2FwX2NmZyAqaGVfY2FwID0gXFx1MDAyNmF4X2NmZy1cXHUwMDNlaGVfY2FwX2NmZztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjEwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yMTEtXFx0bGVmdF9sZW4gPSBsZTE2X3RvX2NwdShyZXNwLVxcdTAwM2VzaXplKSAtIHNpemVvZigqaGVfY2ZnKSAtIFNfRFNfR0VOO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyMTI6XFx0aGVhZGVyID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlYWRlciAqKWhlX2NmZy1cXHUwMDNldGx2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yMTMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjQyLVxcdFxcdGxlZnRfbGVuIC09IChzaXplb2YoKmhlYWRlcikgKyB0bHZfbGVuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjQzOlxcdFxcdGhlYWRlciA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZWFkZXIgKikoKHU4ICopaGVhZGVyICtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjQ0LVxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICBzaXplb2YoKmhlYWRlcikgK1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI1MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjUxOmludCBueHB3aWZpX2NtZF8xMWF4X2NtZChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yNTItXFx0XFx0XFx0IHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpjbWQsIHUxNiBjbWRfYWN0aW9uLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNTM6XFx0XFx0XFx0IHN0cnVjdCBueHB3aWZpXzExYXhfY21kX2NmZyAqYXhfY21kKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yNTQte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNTU6XFx0c3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtXFx1MDAzZWFkYXB0ZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI1Ni1cXHRzdHJ1Y3QgaG9zdF9jbWRfMTFheF9jbWQgKmhlX2NtZCA9IFxcdTAwMjZjbWQtXFx1MDAzZXBhcmFtcy5heF9jbWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI1Ny1cXHR1MTYgY21kX3NpemU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI1ODpcXHRzdHJ1Y3Qgbnhwd2lmaV8xMWF4X3NyX2NtZCAqc3JfY21kO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNTk6XFx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfZGF0YSAqdGx2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNjA6XFx0c3RydWN0IG54cHdpZmlfMTFheF9iZWFtX2NtZCAqYmVhbV9jbWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI2MTpcXHRzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2h0Y19jbWQgKmh0Y19jbWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI2MjpcXHRzdHJ1Y3Qgbnhwd2lmaV8xMWF4X3R4b21pX2NtZCAqdHhtb2lfY21kO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNjM6XFx0c3RydWN0IG54cHdpZmlfMTFheF90b2x0aW1lX2NtZCAqdG9sdGltZV9jbWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI2NDpcXHRzdHJ1Y3Qgbnhwd2lmaV8xMWF4X3R4b3BfY21kICp0eG9wX2NtZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjY1OlxcdHN0cnVjdCBueHB3aWZpXzExYXhfc2V0X2JzcnBfY21kICpzZXRfYnNycF9jbWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI2NjpcXHRzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2xsZGVfY21kICpsbGRlX2NtZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjY3LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI3NS1cXHRjYXNlIE5YUFdJRklfMTFBWENNRF9TUl9TVUJJRDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6Mjc2OlxcdFxcdHNyX2NtZCA9IChzdHJ1Y3Qgbnhwd2lmaV8xMWF4X3NyX2NtZCAqKVxcdTAwMjZheF9jbWQtXFx1MDAzZXBhcmFtO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yNzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI3ODpcXHRcXHR0bHYgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfZGF0YSAqKWhlX2NtZC1cXHUwMDNldmFsO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yNzktXFx0XFx0dGx2LVxcdTAwM2VoZWFkZXIudHlwZSA9IGNwdV90b19sZTE2KHNyX2NtZC1cXHUwMDNldHlwZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjg1LVxcdGNhc2UgTlhQV0lGSV8xMUFYQ01EX0JFQU1fU1VCSUQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI4NjpcXHRcXHRiZWFtX2NtZCA9IChzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2JlYW1fY21kICopXFx1MDAyNmF4X2NtZC1cXHUwMDNlcGFyYW07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI4Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yOTEtXFx0Y2FzZSBOWFBXSUZJXzExQVhDTURfSFRDX1NVQklEOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyOTI6XFx0XFx0aHRjX2NtZCA9IChzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2h0Y19jbWQgKilcXHUwMDI2YXhfY21kLVxcdTAwM2VwYXJhbTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjkzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI5Ny1cXHRjYXNlIE5YUFdJRklfMTFBWENNRF9UWE9NSV9TVUJJRDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6Mjk4OlxcdFxcdHR4bW9pX2NtZCA9XFx0KHN0cnVjdCBueHB3aWZpXzExYXhfdHhvbWlfY21kICopXFx1MDAyNmF4X2NtZC1cXHUwMDNlcGFyYW07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI5OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zMDMtXFx0Y2FzZSBOWFBXSUZJXzExQVhDTURfT0JTU19UT0xUSU1FX1NVQklEOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozMDQ6XFx0XFx0dG9sdGltZV9jbWQgPSAoc3RydWN0IG54cHdpZmlfMTFheF90b2x0aW1lX2NtZCAqKVxcdTAwMjZheF9jbWQtXFx1MDAzZXBhcmFtO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zMDUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzEwLVxcdGNhc2UgTlhQV0lGSV8xMUFYQ01EX1RYT1BSVFNfU1VCSUQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjMxMTpcXHRcXHR0eG9wX2NtZCA9IChzdHJ1Y3Qgbnhwd2lmaV8xMWF4X3R4b3BfY21kICopXFx1MDAyNmF4X2NtZC1cXHUwMDNlcGFyYW07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTMxMi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zMTctXFx0Y2FzZSBOWFBXSUZJXzExQVhDTURfU0VUX0JTUlBfU1VCSUQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjMxODpcXHRcXHRzZXRfYnNycF9jbWQgPSAoc3RydWN0IG54cHdpZmlfMTFheF9zZXRfYnNycF9jbWQgKilcXHUwMDI2YXhfY21kLVxcdTAwM2VwYXJhbTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzE5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTMyMy1cXHRjYXNlIE5YUFdJRklfMTFBWENNRF9MTERFX1NVQklEOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozMjQ6XFx0XFx0bGxkZV9jbWQgPSAoc3RydWN0IG54cHdpZmlfMTFheF9sbGRlX2NtZCAqKVxcdTAwMjZheF9jbWQtXFx1MDAzZXBhcmFtO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zMjUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzI5LVxcdGRlZmF1bHQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjMzMDpcXHRcXHRueHB3aWZpX2RiZyhhZGFwdGVyLCBFUlJPUixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzMxLVxcdFxcdFxcdCAgICBcXFwiJXM6IFVua25vd24gc3ViIGNvbW1hbmQ6ICVkXFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM0MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MzQxOmludCBueHB3aWZpX3JldF8xMWF4X2NtZChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zNDItXFx0XFx0XFx0IHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpyZXNwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozNDM6XFx0XFx0XFx0IHN0cnVjdCBueHB3aWZpXzExYXhfY21kX2NmZyAqYXhfY21kKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zNDQte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozNDU6XFx0c3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtXFx1MDAzZWFkYXB0ZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM0Ni1cXHRzdHJ1Y3QgaG9zdF9jbWRfMTFheF9jbWQgKmhlX2NtZCA9IFxcdTAwMjZyZXNwLVxcdTAwM2VwYXJhbXMuYXhfY21kO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozNDc6XFx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfZGF0YSAqdGx2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zNDgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzUyLVxcdGNhc2UgTlhQV0lGSV8xMUFYQ01EX1NSX1NVQklEOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozNTM6XFx0XFx0dGx2ID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2RhdGEgKiloZV9jbWQtXFx1MDAzZXZhbDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzU0LVxcdFxcdG1lbWNweShheF9jbWQtXFx1MDAzZXBhcmFtLnNyX2NmZy5wYXJhbS5vYnNzX3BkX29mZnNldC5vZmZzZXQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzgzLVxcdGRlZmF1bHQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjM4NDpcXHRcXHRueHB3aWZpX2RiZyhhZGFwdGVyLCBFUlJPUixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzg1LVxcdFxcdFxcdCAgICBcXFwiJXM6IFVua25vd24gc3ViIGNvbW1hbmQ6ICVkXFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM5Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MzkzOnN0YXRpYyB1OCBueHB3aWZpX2lzX2FwXzExYXhfdHd0X3N1cHBvcnRlZChzdHJ1Y3Qgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzk0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQxMDpib29sIG54cHdpZmlfaXNfMTFheF90d3Rfc3VwcG9ydGVkKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQxMTpcXHRcXHRcXHRcXHQgICBzdHJ1Y3Qgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDEyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDEzOlxcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqdXNlcl9oZV9jYXA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQxNDpcXHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKmh3X2hlX2NhcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDE1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQxOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDE5OlxcdGlmICghbnhwd2lmaV9pc19hcF8xMWF4X3R3dF9zdXBwb3J0ZWQoYnNzX2Rlc2MpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQyMDpcXHRcXHRueHB3aWZpX2RiZyhwcml2LVxcdTAwM2VhZGFwdGVyLCBNU0csXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQyMS1cXHRcXHRcXHQgICAgXFxcIkFQIGRvbid0IHN1cHBvcnQgdHd0IGZlYXR1cmVcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQyNS1cXHRpZiAoYnNzX2Rlc2MtXFx1MDAzZWJzc19iYW5kIFxcdTAwMjYgQkFORF9BKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQyNjpcXHRcXHRod19oZV9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICopXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQyNy1cXHRcXHRcXHRwcml2LVxcdTAwM2VhZGFwdGVyLVxcdTAwM2Vod19oZV9jYXA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQyODpcXHRcXHR1c2VyX2hlX2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDI5LVxcdFxcdFxcdHByaXYtXFx1MDAzZXVzZXJfaGVfY2FwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MzAtXFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDMxOlxcdFxcdGh3X2hlX2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDMyLVxcdFxcdFxcdHByaXYtXFx1MDAzZWFkYXB0ZXItXFx1MDAzZWh3XzJnX2hlX2NhcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDMzOlxcdFxcdHVzZXJfaGVfY2FwID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MzQtXFx0XFx0XFx0cHJpdi1cXHUwMDNldXNlcl8yZ19oZV9jYXA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDM3LVxcdGlmICghKGh3X2hlX2NhcC1cXHUwMDNlaGVfbWFjX2NhcFswXSBcXHUwMDI2IEhFX01BQ19DQVBfVFdUX1JFUV9TVVBQT1JUKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0Mzg6XFx0XFx0bnhwd2lmaV9kYmcocHJpdi1cXHUwMDNlYWRhcHRlciwgTVNHLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MzktXFx0XFx0XFx0ICAgIFxcXCJGVyBkb24ndCBzdXBwb3J0IFRXVFxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDQzLVxcdGlmICghKHVzZXJfaGVfY2FwLVxcdTAwM2VoZV9tYWNfY2FwWzBdIFxcdTAwMjYgSEVfTUFDX0NBUF9UV1RfUkVRX1NVUFBPUlQpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ0NDpcXHRcXHRueHB3aWZpX2RiZyhwcml2LVxcdTAwM2VhZGFwdGVyLCBNU0csXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ0NS1cXHRcXHRcXHQgICAgXFxcIlVTRVIgSEVfTUFDX0NBUCBkb24ndCBzdXBwb3J0IFRXVFxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDUxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0NTI6dTggbnhwd2lmaV9pc19zdGFfMTFheF90d3RfcmVxX3N1cHBvcnRlZChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00NTMte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0NTQ6XFx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICp1c2VyX2hlX2NhcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDU1LVxcdHU4IHJldCA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDU5LVxcdFxcdGlmIChwcml2LVxcdTAwM2Vjb25maWdfYmFuZHMgXFx1MDAyNiBCQU5EX0FBWClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDYwOlxcdFxcdFxcdHVzZXJfaGVfY2FwID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqKXByaXYtXFx1MDAzZXVzZXJfaGVfY2FwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00NjEtXFx0XFx0ZWxzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0NjI6XFx0XFx0XFx0dXNlcl9oZV9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICopcHJpdi1cXHUwMDNldXNlcl8yZ19oZV9jYXA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ2My1cXHRcXHRyZXQgPSB1c2VyX2hlX2NhcC1cXHUwMDNlaGVfbWFjX2NhcFswXSBcXHUwMDI2IEhFX01BQ19DQVBfVFdUX1JFUV9TVVBQT1JUO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ2OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDY5OmludCBueHB3aWZpX2NtZF90d3RfY2ZnKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ3MC1cXHRcXHRcXHRzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqY21kLCB1MTYgY21kX2FjdGlvbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDcxOlxcdFxcdFxcdHN0cnVjdCBueHB3aWZpX3R3dF9jZmcgKnR3dF9jZmcpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ3Mi17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ3MzpcXHRzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cXHUwMDNlYWRhcHRlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDc0LVxcdHN0cnVjdCBob3N0X2NtZF90d3RfY2ZnICp0d3RfY2ZnX2NtZCA9IFxcdTAwMjZjbWQtXFx1MDAzZXBhcmFtcy50d3RfY2ZnO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0NzU6XFx0c3RydWN0IG54cHdpZmlfdHd0X3NldHVwICp0d3Rfc2V0dXA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ3NjpcXHRzdHJ1Y3Qgbnhwd2lmaV90d3RfdGVhcmRvd24gKnR3dF90ZWFyZG93bjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDc3OlxcdHN0cnVjdCBueHB3aWZpX3R3dF9yZXBvcnQgKnR3dF9yZXBvcnQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ3ODpcXHRzdHJ1Y3Qgbnhwd2lmaV90d3RfaW5mb3JtYXRpb24gKnR3dF9pbmZvcm1hdGlvbjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDc5OlxcdHN0cnVjdCBueHB3aWZpX2J0d3RfYXBfY29uZmlnICpidHd0X2FwX2NvbmZpZztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDgwLVxcdHU4IGk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDkwLVxcdGNhc2UgTlhQV0lGSV8xMUFYX1RXVF9TRVRVUF9TVUJJRDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDkxOlxcdFxcdHR3dF9zZXR1cCA9IChzdHJ1Y3Qgbnhwd2lmaV90d3Rfc2V0dXAgKilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDkyLVxcdFxcdFxcdHR3dF9jZmdfY21kLVxcdTAwM2V2YWw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ5My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDk0OlxcdFxcdG1lbXNldCh0d3Rfc2V0dXAsIDB4MDAsIHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV90d3Rfc2V0dXApKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDk1LVxcdFxcdHR3dF9zZXR1cC1cXHUwMDNlaW1wbGljaXQgPSB0d3RfY2ZnLVxcdTAwM2VwYXJhbS50d3Rfc2V0dXAuaW1wbGljaXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTA3LVxcdFxcdHR3dF9zZXR1cC1cXHUwMDNlYmNuX21pc3NfdGhyZXNob2xkID0gdHd0X2NmZy1cXHUwMDNlcGFyYW0udHd0X3NldHVwLmJjbl9taXNzX3RocmVzaG9sZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTA4OlxcdFxcdGNtZF9zaXplICs9IHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV90d3Rfc2V0dXApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MDktXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUxMC1cXHRjYXNlIE5YUFdJRklfMTFBWF9UV1RfVEVBUkRPV05fU1VCSUQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjUxMTpcXHRcXHR0d3RfdGVhcmRvd24gPSAoc3RydWN0IG54cHdpZmlfdHd0X3RlYXJkb3duICopXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUxMi1cXHRcXHRcXHR0d3RfY2ZnX2NtZC1cXHUwMDNldmFsO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MTMtXFx0XFx0bWVtc2V0KHR3dF90ZWFyZG93biwgMHgwMCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTE0OlxcdFxcdCAgICAgICBzaXplb2Yoc3RydWN0IG54cHdpZmlfdHd0X3RlYXJkb3duKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUxNS1cXHRcXHR0d3RfdGVhcmRvd24tXFx1MDAzZWZsb3dfaWRlbnRpZmllciA9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTIwLVxcdFxcdFxcdHR3dF9jZmctXFx1MDAzZXBhcmFtLnR3dF90ZWFyZG93bi50ZWFyZG93bl9hbGxfdHd0O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1MjE6XFx0XFx0Y21kX3NpemUgKz0gc2l6ZW9mKHN0cnVjdCBueHB3aWZpX3R3dF90ZWFyZG93bik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUyMi1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTIzLVxcdGNhc2UgTlhQV0lGSV8xMUFYX1RXVF9SRVBPUlRfU1VCSUQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjUyNDpcXHRcXHR0d3RfcmVwb3J0ID0gKHN0cnVjdCBueHB3aWZpX3R3dF9yZXBvcnQgKilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTI1LVxcdFxcdFxcdHR3dF9jZmdfY21kLVxcdTAwM2V2YWw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjUyNjpcXHRcXHRtZW1zZXQodHd0X3JlcG9ydCwgMHgwMCwgc2l6ZW9mKHN0cnVjdCBueHB3aWZpX3R3dF9yZXBvcnQpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTI3LVxcdFxcdHR3dF9yZXBvcnQtXFx1MDAzZXR5cGUgPSB0d3RfY2ZnLVxcdTAwM2VwYXJhbS50d3RfcmVwb3J0LnR5cGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjUyODpcXHRcXHRjbWRfc2l6ZSArPSBzaXplb2Yoc3RydWN0IG54cHdpZmlfdHd0X3JlcG9ydCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUyOS1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTMwLVxcdGNhc2UgTlhQV0lGSV8xMUFYX1RXVF9JTkZPUk1BVElPTl9TVUJJRDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTMxOlxcdFxcdHR3dF9pbmZvcm1hdGlvbiA9IChzdHJ1Y3Qgbnhwd2lmaV90d3RfaW5mb3JtYXRpb24gKilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTMyLVxcdFxcdFxcdHR3dF9jZmdfY21kLVxcdTAwM2V2YWw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUzMy1cXHRcXHRtZW1zZXQodHd0X2luZm9ybWF0aW9uLCAweDAwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1MzQ6XFx0XFx0ICAgICAgIHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV90d3RfaW5mb3JtYXRpb24pKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTM1LVxcdFxcdHR3dF9pbmZvcm1hdGlvbi1cXHUwMDNlZmxvd19pZGVudGlmaWVyID1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MzgtXFx0XFx0XFx0dHd0X2NmZy1cXHUwMDNlcGFyYW0udHd0X2luZm9ybWF0aW9uLnN1c3BlbmRfZHVyYXRpb247XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjUzOTpcXHRcXHRjbWRfc2l6ZSArPSBzaXplb2Yoc3RydWN0IG54cHdpZmlfdHd0X2luZm9ybWF0aW9uKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTQwLVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NDEtXFx0Y2FzZSBOWFBXSUZJXzExQVhfQlRXVF9BUF9DT05GSUdfU1VCSUQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU0MjpcXHRcXHRidHd0X2FwX2NvbmZpZyA9IChzdHJ1Y3Qgbnhwd2lmaV9idHd0X2FwX2NvbmZpZyAqKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NDMtXFx0XFx0XFx0XFx0IHR3dF9jZmdfY21kLVxcdTAwM2V2YWw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU0NC1cXHRcXHRtZW1zZXQoYnR3dF9hcF9jb25maWcsIDB4MDAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU0NTpcXHRcXHQgICAgICAgc2l6ZW9mKHN0cnVjdCBueHB3aWZpX2J0d3RfYXBfY29uZmlnKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU0Ni1cXHRcXHRidHd0X2FwX2NvbmZpZy1cXHUwMDNlYXBfYmNhc3RfYmV0X3N0YV93YWl0ID1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU2NTpcXHRcXHRjbWRfc2l6ZSArPSBzaXplb2Yoc3RydWN0IG54cHdpZmlfYnR3dF9hcF9jb25maWcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NjYtXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU2Ny1cXHRkZWZhdWx0OlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1Njg6XFx0XFx0bnhwd2lmaV9kYmcoYWRhcHRlciwgRVJST1IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU2OS1cXHRcXHRcXHQgICAgXFxcIlVua25vd24gc3ViIGlkOiAlZFxcXFxuXFxcIiwgdHd0X2NmZy1cXHUwMDNlc3ViX2lkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU3ODppbnQgbnhwd2lmaV9yZXRfdHd0X2NmZyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NzktXFx0XFx0XFx0c3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3AsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU4MDpcXHRcXHRcXHRzdHJ1Y3Qgbnhwd2lmaV90d3RfY2ZnICp0d3RfY2ZnKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01ODEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU4OS1cXHQgICAgdHd0X2NmZy1cXHUwMDNlc3ViX2lkID09IE5YUFdJRklfMTFBWF9UV1RfUkVQT1JUX1NVQklEKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU5MDpcXHRcXHRzdHJ1Y3Qgbnhwd2lmaV90d3RfcmVwb3J0ICp0d3RfcmVwb3J0ID1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTkxOlxcdFxcdFxcdChzdHJ1Y3Qgbnhwd2lmaV90d3RfcmVwb3J0ICopdHd0X2NmZ19jbWQtXFx1MDAzZXZhbDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTkyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1OTM6XFx0XFx0bWVtY3B5KFxcdTAwMjZ0d3RfY2ZnLVxcdTAwM2VwYXJhbS50d3RfcmVwb3J0LCB0d3RfcmVwb3J0LCBzaXplb2Yoc3RydWN0IG54cHdpZmlfdHd0X3JlcG9ydCkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01OTQtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTItLypcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6MzogKiBueHB3aWZpOiA4MDIuMTFheCBzdXBwb3J0XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTQtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaD0xNz1zdGF0aWMgaW5saW5lIHUxNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDoxODpueHB3aWZpX2dldF9oZV9uc3NfbWNzKF9fbGUxNiBtY3NfbWFwX3NldCwgaW50IG5zcykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC0xOS1cXHRyZXR1cm4gKChsZTE2X3RvX2NwdShtY3NfbWFwX3NldCkgXFx1MDAzZVxcdTAwM2UgKDIgKiAobnNzIC0gMSkpKSBcXHUwMDI2IDB4Myk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg9MjI9c3RhdGljIGlubGluZSB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjIzOm54cHdpZmlfc2V0X2hlX25zc19tY3MoX19sZTE2ICptY3NfbWFwX3NldCwgaW50IG5zcywgaW50IHZhbHVlKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTI0LVxcdHUxNiB0ZW1wO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTMwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDozMTpib29sIG54cHdpZmlfaXNfMTFheF90d3Rfc3VwcG9ydGVkKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjMyOlxcdFxcdFxcdFxcdCAgIHN0cnVjdCAgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTMzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDozNDp2b2lkIG54cHdpZmlfdXBkYXRlXzExYXhfY2FwKHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTM1LVxcdFxcdFxcdCAgICAgc3RydWN0IGh3X3NwZWNfZXh0ZW5zaW9uICpod19oZV9jYXApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC0zNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6Mzc6Ym9vbCBueHB3aWZpXzExYXhfYmFuZGNvbmZpZ19hbGxvd2VkKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjM4OlxcdFxcdFxcdFxcdCAgICAgc3RydWN0IG54cHdpZmlfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC0zOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NDA6aW50IG54cHdpZmlfY21kX2FwcGVuZF8xMWF4X3RsdihzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDo0MTpcXHRcXHRcXHRcXHRzdHJ1Y3Qgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNDItXFx0XFx0XFx0XFx0dTggKipidWZmZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC00My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NDQ6aW50IG54cHdpZmlfZmlsbF9oZV9jYXBfdGx2KHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjQ1OlxcdFxcdFxcdCAgICBzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKmhlX2NhcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNDYtXFx0XFx0XFx0ICAgIHUxNiBiYW5kcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjQ3OmludCBueHB3aWZpX2NtZF8xMWF4X2NmZyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC00OC1cXHRcXHRcXHQgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCwgdTE2IGNtZF9hY3Rpb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjQ5OlxcdFxcdFxcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2hlX2NmZyAqYXhfY2ZnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjUxOmludCBueHB3aWZpX3JldF8xMWF4X2NmZyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC01Mi1cXHRcXHRcXHQgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3AsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjUzOlxcdFxcdFxcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2hlX2NmZyAqYXhfY2ZnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjU1OmludCBueHB3aWZpX2NtZF8xMWF4X2NtZChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC01Ni1cXHRcXHRcXHQgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCwgdTE2IGNtZF9hY3Rpb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjU3OlxcdFxcdFxcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2NtZF9jZmcgKmF4X2NtZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTU4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDo1OTppbnQgbnhwd2lmaV9yZXRfMTFheF9jbWQoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNjAtXFx0XFx0XFx0IHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpyZXNwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDo2MTpcXHRcXHRcXHQgc3RydWN0IG54cHdpZmlfMTFheF9jbWRfY2ZnICpheF9jbWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC02Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NjM6aW50IG54cHdpZmlfY21kX3R3dF9jZmcoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNjQtXFx0XFx0XFx0c3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCwgdTE2IGNtZF9hY3Rpb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjY1OlxcdFxcdFxcdHN0cnVjdCBueHB3aWZpX3R3dF9jZmcgKnR3dF9jZmcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC02Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6Njc6aW50IG54cHdpZmlfcmV0X3R3dF9jZmcoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNjgtXFx0XFx0XFx0c3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3AsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjY5OlxcdFxcdFxcdHN0cnVjdCBueHB3aWZpX3R3dF9jZmcgKnR3dF9jZmcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC03MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NzE6dTggbnhwd2lmaV9pc19zdGFfMTFheF90d3RfcmVxX3N1cHBvcnRlZChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNzItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYy0yLS8qXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmM6MzogKiBueHB3aWZpOiA4MDIuMTFoIGhlbHBlcnNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYy00LSAqXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYy0xMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYzoxMzp2b2lkIG54cHdpZmlfaW5pdF8xMWhfcGFyYW1zKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmMtMTQte1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwNzo1NzoxMS40MjI1NzQyMjRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozNjM1MzcyNDc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhpbmtpbmcgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgbnhwd2lmaSBNb2R1bGUgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGBueHB3aWZpYCBkcml2ZXIuIE15IGZpcnN0IHN0ZXAgaXMgdG8gY3JhY2sgb3BlbiB0aGUgYEtjb25maWdgIGFuZCBgTWFrZWZpbGVgIGZpbGVzLiBUaG9zZSBhcmUgYWx3YXlzIHRoZSBrZXkgc3RhcnRpbmcgcG9pbnRzLiBUaGUgYEtjb25maWdgIHNob3VsZCByZXZlYWwgYWxsIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnM6IHRoaW5ncyBsaWtlIHN1cHBvcnRlZCBjaGlwc2V0cywgZmVhdHVyZSBmbGFncywgYW55IGRlcGVuZGVuY2llcyBvbiBvdGhlciBtb2R1bGVzLCBhbmQgaG93IHRoZSBkcml2ZXIgcHJlc2VudHMgaXRzZWxmIHRvIHRoZSB1c2VyLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyB0aGF0IGRlZmluZSBzcGVjaWZpYyBoYXJkd2FyZSBmZWF0dXJlcyBvciBtb2RlcyBvZiBvcGVyYXRpb24g4oCTIHRoaXMgd2lsbCBnaXZlIG1lIHRoZSBidWlsZGluZyBibG9ja3Mgb2YgdW5kZXJzdGFuZGluZyB3aGF0J3MgcG9zc2libGUuXG5cblRoZW4sIEknbGwgbW92ZSBvdmVyIHRvIHRoZSBgTWFrZWZpbGVgLiBUaGF0J3Mgd2hlcmUgdGhlIHJ1YmJlciByZWFsbHkgaGl0cyB0aGUgcm9hZC4gSXQgd2lsbCBzaG93IHRoZSBjb21waWxhdGlvbiBwcm9jZXNzLCB0aGUgc291cmNlIGZpbGVzIGludm9sdmVkLCBhbmQgaW1wb3J0YW50bHksIHRoZSBoYXJkd2FyZSBpbnRlcmZhY2VzIGl0J3MgdGFyZ2V0aW5nLiBBcmUgd2UgdGFsa2luZyBTUEksIFNESU8sIG9yIFBDSWU/IFdoaWNoIHNwZWNpZmljIGhhcmR3YXJlIHZhcmlhbnRzIGFyZSBzdXBwb3J0ZWQsIGFuZCBob3cgaXMgdGhlIG1vZHVsZSBzdHJ1Y3R1cmVkIHRvIGhhbmRsZSB0aG9zZSBkaWZmZXJpbmcgcGxhdGZvcm1zPyBUaGUgTWFrZWZpbGUgc2hvdWxkIGlsbHVtaW5hdGUgdGhlIGRlcGVuZGVuY2llcyBhbmQgdGhlIG92ZXJhbGwgYnVpbGQgZW52aXJvbm1lbnQgZm9yIHRoZSBkcml2ZXIuIEkgZXhwZWN0IGEgZ29vZCBNYWtlZmlsZSB3aWxsIGNsZWFybHkgb3V0bGluZSB0aGUgbW9kdWxlcywgYW5kIGluY2x1ZGUgZmlsZXMuXG5cblVuZGVyc3RhbmRpbmcgdGhlc2UgdHdvIGZpbGVzIHdpbGwgYmUgZXNzZW50aWFsIGZvciBhbnkgZGVlcGVyIGFuYWx5c2lzIG9yIHBvdGVudGlhbCBtb2RpZmljYXRpb25zLiBJdCdzIHRoZSBncm91bmR3b3JrLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTQ1MywiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA3OjU3OjE1LjA1Nzk0ODkwOVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY3NjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBOWFBXSUZJXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiTlhQIFdpRmkgRHJpdmVyXFxcIiBpZiBDT01QSUxFX1RFU1RcXG4gICA0OlxcdFxcdGRlcGVuZHMgb24gQ0ZHODAyMTFcXG4gICA1OlxcdFxcdGhlbHBcXG4gICA2OlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIHdpcmVsZXNzIGFkYXB0ZXJzIGJhc2VkIG9uIE5YUFxcbiAgIDc6XFx0XFx0ICA4MDIuMTFuL2FjIGNoaXBzZXRzLlxcbiAgIDg6XFx0XFxuICAgOTpcXHRcXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXFxuICAxMDpcXHRcXHQgIG54cHdpZmkuXFxuICAxMTpcXHRcXG4gIDEyOlxcdGNvbmZpZyBOWFBXSUZJX1NESU9cXG4gIDEzOlxcdFxcdHRyaXN0YXRlIFxcXCJOWFAgV2lGaSBEcml2ZXIgZm9yIElXNjF4XFxcIlxcbiAgMTQ6XFx0XFx0ZGVwZW5kcyBvbiBDRkc4MDIxMSBcXHUwMDI2XFx1MDAyNiBNTUNcXG4gIDE1OlxcdFxcdHNlbGVjdCBOWFBXSUZJXFxuICAxNjpcXHRcXHRzZWxlY3QgRldfTE9BREVSXFxuICAxNzpcXHRcXHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcXG4gIDE4OlxcdFxcdGhlbHBcXG4gIDE5OlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIHdpcmVsZXNzIGFkYXB0ZXJzIGJhc2VkIG9uIE5YUFxcbiAgMjA6XFx0XFx0ICBJVzYxeCBpbnRlcmZhY2UuXFxuICAyMTpcXHRcXG4gIDIyOlxcdFxcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBpdCBhcyBhIG1vZHVsZSwgaXQgd2lsbCBiZSBjYWxsZWRcXG4gIDIzOlxcdFxcdCAgbnhwd2lmaV9zZGlvLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwNzo1NzoxNS4wNTgwMTgxOTlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMjM4OTM1MDUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNYWtlZmlsZSoqXG5cbk9rYXksIHNvIHdlJ3JlIHRhbGtpbmcgYWJvdXQgdGhlIE5YUCBXaS1GaSBkcml2ZXIsIGFuZCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgYnVpbGQgcHJvY2Vzcy4gTGV0J3Mgc2VlLi4uICpueHB3aWZpL01ha2VmaWxlKiBpcyB3aGVyZSB0aGUgYWN0aW9uIGlzLiBUaGlzIGlzIHdoZXJlIEknbGwgZ2V0IHRoZSBsYXkgb2YgdGhlIGxhbmQsIHNlZSBob3cgdGhlIHNvdXJjZSBmaWxlcyBhcmUgY29tcGlsZWQsIGxpbmtlZCwgYW5kIGludGVncmF0ZWQgaW50byB0aGUgb3ZlcmFsbCBrZXJuZWwgYnVpbGQuIEknbSBleHBlY3RpbmcgdG8gZmluZCB0aGUgdXN1YWwgc3VzcGVjdHM6IG9iamVjdCBmaWxlIHRhcmdldHMsIGRlcGVuZGVuY3kgcnVsZXMsIGZsYWdzIGZvciB0aGUgY29tcGlsZXIgKGdjYywgbGlrZWx5KSwgcGVyaGFwcyBzb21lIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGJhc2VkIG9uIHBsYXRmb3JtIG9yIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSSdsbCBiZSBsb29raW5nIGZvciBjbHVlcyBvbiBob3cgdGhleSBoYW5kbGUgZmlybXdhcmUgbG9hZGluZywgYW55IHNwZWNpZmljIGJvYXJkLWxldmVsIGRlcGVuZGVuY2llcywgYW5kIGhvdyB0aGV5IG1hbmFnZSBtb2R1bGVzIGlmIGl0J3MgbW9kdWxhci4gSSdsbCBiZSBtZW50YWxseSB0cmFjaW5nIHRoZSBmbG93IG9mIGNvbXBpbGF0aW9uIHRvIGdldCBhIGdvb2QgaGFuZGxlIG9uIGhvdyB0aGUgZW50aXJlIGRyaXZlciBpcyBzdHJ1Y3R1cmVkIHdpdGhpbiB0aGUgb3ZlcmFsbCB3aXJlbGVzcyBzdWJzeXN0ZW0uIExldCdzIHNlZSB3aGF0IGdlbXMgYXJlIGhpZGRlbiBpbiB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAxMjgsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA3OjU3OjE3LjI5Njk1NVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTc3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9NYWtlZmlsZVwiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBDb3B5cmlnaHQgMjAxMS0yMDIwIE5YUFxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRcXG4gICA3OlxcdG54cHdpZmkteSArPSBtYWluLm9cXG4gICA4OlxcdG54cHdpZmkteSArPSBpbml0Lm9cXG4gICA5OlxcdG54cHdpZmkteSArPSBjZnAub1xcbiAgMTA6XFx0bnhwd2lmaS15ICs9IGNtZGV2dC5vXFxuICAxMTpcXHRueHB3aWZpLXkgKz0gdXRpbC5vXFxuICAxMjpcXHRueHB3aWZpLXkgKz0gdHhyeC5vXFxuICAxMzpcXHRueHB3aWZpLXkgKz0gd21tLm9cXG4gIDE0OlxcdG54cHdpZmkteSArPSAxMW4ub1xcbiAgMTU6XFx0bnhwd2lmaS15ICs9IDExYWMub1xcbiAgMTY6XFx0bnhwd2lmaS15ICs9IDExYXgub1xcbiAgMTc6XFx0bnhwd2lmaS15ICs9IDExbl9hZ2dyLm9cXG4gIDE4OlxcdG54cHdpZmkteSArPSAxMW5fcnhyZW9yZGVyLm9cXG4gIDE5OlxcdG54cHdpZmkteSArPSBzY2FuLm9cXG4gIDIwOlxcdG54cHdpZmkteSArPSBqb2luLm9cXG4gIDIxOlxcdG54cHdpZmkteSArPSBzdGFfY2ZnLm9cXG4gIDIyOlxcdG54cHdpZmkteSArPSBzdGFfY21kLm9cXG4gIDIzOlxcdG54cHdpZmkteSArPSB1YXBfY21kLm9cXG4gIDI0OlxcdG54cHdpZmkteSArPSBpZS5vXFxuICAyNTpcXHRueHB3aWZpLXkgKz0gc3RhX2V2ZW50Lm9cXG4gIDI2OlxcdG54cHdpZmkteSArPSB1YXBfZXZlbnQub1xcbiAgMjc6XFx0bnhwd2lmaS15ICs9IHN0YV90eC5vXFxuICAyODpcXHRueHB3aWZpLXkgKz0gc3RhX3J4Lm9cXG4gIDI5OlxcdG54cHdpZmkteSArPSB1YXBfdHhyeC5vXFxuICAzMDpcXHRueHB3aWZpLXkgKz0gY2ZnODAyMTEub1xcbiAgMzE6XFx0bnhwd2lmaS15ICs9IGV0aHRvb2wub1xcbiAgMzI6XFx0bnhwd2lmaS15ICs9IDExaC5vXFxuICAzMzpcXHRueHB3aWZpLSQoQ09ORklHX0RFQlVHX0ZTKSArPSBkZWJ1Z2ZzLm9cXG4gIDM0OlxcdG9iai0kKENPTkZJR19OWFBXSUZJKSArPSBueHB3aWZpLm9cXG4gIDM1OlxcdFxcbiAgMzY6XFx0bnhwd2lmaV9zZGlvLXkgKz0gc2Rpby5vXFxuICAzNzpcXHRvYmotJChDT05GSUdfTlhQV0lGSV9TRElPKSArPSBueHB3aWZpX3NkaW8ub1xcbiAgMzg6XFx0XFxuICAzOTpcXHRjY2ZsYWdzLXkgKz0gLURfX0NIRUNLX0VORElBTlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwNzo1NzoxNy4yOTcwMTg3M1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0NTgzNTYzMjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIGBueHB3aWZpYCBEcml2ZXIgZm9yIEZ1enppbmcgU3VpdGFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBgbnhwd2lmaWAgaXMgYW4gU0RJTyBXaS1GaSBkcml2ZXIsIHNwZWNpZmljYWxseSBpbXBsZW1lbnRlZCBhcyBgbnhwd2lmaV9zZGlvLm9gIG9yIGBueHB3aWZpLm9gLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIGNhbiBJIGV2ZW4gKnJlYWNoKiB0aGlzIGRyaXZlciB3aXRoaW4gdGhlIHR5cGljYWwgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHRoYXQgSSdtIHVzaW5nLCBsaWtlIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lPyBBbmQgSSBuZWVkIHRvIHZlcmlmeSwgaXMgdGhlcmUgYW55IGNoYW5jZSBpdCdzIGVtdWxhdGVkIGluIHN0YW5kYXJkIHN5emthbGxlciAvIFFFTVUgc2V0dXBzPyBJJ20gZ29pbmcgdG8gY2FyZWZ1bGx5IHJldmlzaXQgdGhlIGluc3RydWN0aW9ucyBmb3IgZGV0ZXJtaW5pbmcgd2hldGhlciBhIHBhdGNoIGlzIHdvcnRoIGZ1enppbmcuXG5cblNwZWNpZmljYWxseSwgSSdtIGNoZWNraW5nIHRvIHNlZSBpZiB0aGlzIGRyaXZlciBmYWxscyB1bmRlciB0aGUgZXhlbXB0aW9ucyAtIGRvY3VtZW50YXRpb24gY2hhbmdlcywgbG9nZ2luZywgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkb24ndCBjaGFuZ2UgZXhlY3V0aW9uIGZsb3cuIEJ1dCB0aGUgcmVhbGx5IGtleSBwb2ludCBpcyB3aGV0aGVyIGl0IGNvbnRhaW5zIGNvZGUgdGhhdCdzICp1bnJlYWNoYWJsZSogaW4gdGhlc2UgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBJJ20gZm9jdXNpbmcgb24gdGhhdC4gQXJlIHdlIHRhbGtpbmcgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMsIG9yIGRyaXZlcnMgZGVwZW5kZW50IG9uIHNwZWNpZmljIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBieSBRRU1VPyBBbmQsIHZlcnkgaW1wb3J0YW50bHksIGFueSBkcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuU28sIGxldCdzIGdvIGJhY2sgdG8gdGhlIGNlbnRyYWwgcXVlc3Rpb246IGNhbiBgbnhwd2lmaWAgYmUgcmVhY2hlZCBpbiB0aGUgZW52aXJvbm1lbnRzIEkgdXNlPyBOb3csIGRvZXMgUUVNVSwgaW4gaXRzIGRlZmF1bHQgc2V0dXAsIGFjdHVhbGx5IGVtdWxhdGUgdGhlIE5YUCBJVzYxeCBTRElPIFdpLUZpIGNhcmQ/IEknbSBub3Qgc2VlaW5nIHRoYXQuIFFFTVUgZG9lcyBoYXZlIFNEIGNhcmQgZW11bGF0aW9uLCBidXQgdGhhdCdzIG5vdCB0aGUgc2FtZSB0aGluZy4gSXQgZG9lc24ndCBhcHBlYXIgdG8gYmUgZW11bGF0aW5nIHRoZSBzcGVjaWZpYyBgbnhwd2lmaWAgaGFyZHdhcmUsIG9yIHRoZSBmaXJtd2FyZSBhc3NvY2lhdGVkIHdpdGggdGhhdCBzcGVjaWZpYyBTRElPIHdpcmVsZXNzIGNhcmQuIFNvIHRoZW4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUgaXMgYW55IFVTQiBnYWRnZXQgb3Igc29mdHdhcmUgZW11bGF0aW9uIGZvciBgbnhwd2lmaWAgdGhhdCBJIGNhbiB1c2UgaW5zdGVhZCwgSSdsbCBuZWVkIHRvIGNoZWNrIGlmIHRoZXJlIGlzIGFuIGFsdGVybmF0ZSBwYXRoLlxuXG5Pa2F5LCBJJ20gZ29pbmcgdG8gZGlnIGludG8gdGhlIGRyaXZlcidzIGNvZGUgaXRzZWxmLiBJJ2xsIG5lZWQgdG8gZXhhbWluZSBgc2Rpby5jYCDigJMgdGhhdCdzIHdoZXJlIEknbGwgZmluZCBob3cgYG54cHdpZmlgIHByb2Jlcy4gVGhpcyBzaG91bGQgc2hvdyBtZSB0aGUgaGFyZHdhcmUgZGVwZW5kZW5jaWVzIGFuZCBob3cgdGhlIGRyaXZlciBpcyBpbml0aWFsaXplZCwgd2hpY2ggd2lsbCBkZXRlcm1pbmUgaWYgaXQncyByZWFjaGFibGUgb3Igbm90LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTAzMCwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxMCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA3OjU3OjIxLjg4MDU4Mzc1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMTk5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQvKlxcbiAgIDM6XFx0ICogTlhQIFdpcmVsZXNzIExBTiBkZXZpY2UgZHJpdmVyOiBTRElPIHNwZWNpZmljIGhhbmRsaW5nXFxuICAgNDpcXHQgKlxcbiAgIDU6XFx0ICogQ29weXJpZ2h0IDIwMTEtMjAyNCBOWFBcXG4gICA2OlxcdCAqL1xcbiAgIDc6XFx0XFxuICAgODpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvZmlybXdhcmUuaFxcdTAwM2VcXG4gICA5OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9jb21wbGV0aW9uLmhcXHUwMDNlXFxuICAxMDpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvbW1jL3NkaW8uaFxcdTAwM2VcXG4gIDExOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9tbWMvc2Rpb19pZHMuaFxcdTAwM2VcXG4gIDEyOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9tbWMvc2Rpb19mdW5jLmhcXHUwMDNlXFxuICAxMzpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvbW1jL2NhcmQuaFxcdTAwM2VcXG4gIDE0OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9tbWMvaG9zdC5oXFx1MDAzZVxcbiAgMTU6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2lvcG9sbC5oXFx1MDAzZVxcbiAgMTY6XFx0I2luY2x1ZGUgXFxcImNmZy5oXFxcIlxcbiAgMTc6XFx0I2luY2x1ZGUgXFxcInV0aWwuaFxcXCJcXG4gIDE4OlxcdCNpbmNsdWRlIFxcXCJmdy5oXFxcIlxcbiAgMTk6XFx0I2luY2x1ZGUgXFxcIm1haW4uaFxcXCJcXG4gIDIwOlxcdCNpbmNsdWRlIFxcXCJ3bW0uaFxcXCJcXG4gIDIxOlxcdCNpbmNsdWRlIFxcXCIxMW4uaFxcXCJcXG4gIDIyOlxcdCNpbmNsdWRlIFxcXCJzZGlvLmhcXFwiXFxuICAyMzpcXHRcXG4gIDI0OlxcdCNkZWZpbmUgU0RJT19WRVJTSU9OXFx0XFxcIjEuMFxcXCJcXG4gIDI1OlxcdFxcbiAgMjY6XFx0LyogUHJvY2VzcyBkZWZlcnJlZCBTRElPIHdvcmsgaXRlbXMuICovXFxuICAyNzpcXHRzdGF0aWMgdm9pZCBueHB3aWZpX3NkaW9fd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspO1xcbiAgMjg6XFx0XFxuICAyOTpcXHRzdGF0aWMgc3RydWN0IG54cHdpZmlfaWZfb3BzIHNkaW9fb3BzO1xcbiAgMzA6XFx0XFxuICAzMTpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IG54cHdpZmlfc2Rpb19jYXJkX3JlZyBueHB3aWZpX3JlZ19pdzYxeCA9IHtcXG4gIDMyOlxcdFxcdC5zdGFydF9yZF9wb3J0ID0gMCxcXG4gIDMzOlxcdFxcdC5zdGFydF93cl9wb3J0ID0gMCxcXG4gIDM0OlxcdFxcdC5iYXNlXzBfcmVnID0gMHhGOCxcXG4gIDM1OlxcdFxcdC5iYXNlXzFfcmVnID0gMHhGOSxcXG4gIDM2OlxcdFxcdC5wb2xsX3JlZyA9IDB4NUMsXFxuICAzNzpcXHRcXHQuaG9zdF9pbnRfZW5hYmxlID0gVVBfTERfSE9TVF9JTlRfTUFTSyB8IEROX0xEX0hPU1RfSU5UX01BU0sgfFxcbiAgMzg6XFx0XFx0XFx0XFx0ICAgQ01EX1BPUlRfVVBMRF9JTlRfTUFTSyB8IENNRF9QT1JUX0ROTERfSU5UX01BU0ssXFxuICAzOTpcXHRcXHQuaG9zdF9pbnRfcnNyX3JlZyA9IDB4NCxcXG4gIDQwOlxcdFxcdC5ob3N0X2ludF9zdGF0dXNfcmVnID0gMHgwQyxcXG4gIDQxOlxcdFxcdC5ob3N0X2ludF9tYXNrX3JlZyA9IDB4MDgsXFxuICA0MjpcXHRcXHQuaG9zdF9zdHJhcF9yZWcgPSAweEY0LFxcbiAgNDM6XFx0XFx0Lmhvc3Rfc3RyYXBfbWFzayA9IDB4MDEsXFxuICA0NDpcXHRcXHQuaG9zdF9zdHJhcF92YWx1ZSA9IDB4MDAsXFxuICA0NTpcXHRcXHQuc3RhdHVzX3JlZ18wID0gMHhFOCxcXG4gIDQ2OlxcdFxcdC5zdGF0dXNfcmVnXzEgPSAweEU5LFxcbiAgNDc6XFx0XFx0LnNkaW9faW50X21hc2sgPSAweGZmLFxcbiAgNDg6XFx0XFx0LmRhdGFfcG9ydF9tYXNrID0gMHhmZmZmZmZmZixcXG4gIDQ5OlxcdFxcdC5pb19wb3J0XzBfcmVnID0gMHhFNCxcXG4gIDUwOlxcdFxcdC5pb19wb3J0XzFfcmVnID0gMHhFNSxcXG4gIDUxOlxcdFxcdC5pb19wb3J0XzJfcmVnID0gMHhFNixcXG4gIDUyOlxcdFxcdC5tYXhfbXBfcmVncyA9IDE5NixcXG4gIDUzOlxcdFxcdC5yZF9iaXRtYXBfbCA9IDB4MTAsXFxuICA1NDpcXHRcXHQucmRfYml0bWFwX3UgPSAweDExLFxcbiAgNTU6XFx0XFx0LnJkX2JpdG1hcF8xbCA9IDB4MTIsXFxuICA1NjpcXHRcXHQucmRfYml0bWFwXzF1ID0gMHgxMyxcXG4gIDU3OlxcdFxcdC53cl9iaXRtYXBfbCA9IDB4MTQsXFxuICA1ODpcXHRcXHQud3JfYml0bWFwX3UgPSAweDE1LFxcbiAgNTk6XFx0XFx0LndyX2JpdG1hcF8xbCA9IDB4MTYsXFxuICA2MDpcXHRcXHQud3JfYml0bWFwXzF1ID0gMHgxNyxcXG4gIDYxOlxcdFxcdC5yZF9sZW5fcDBfbCA9IDB4MTgsXFxuICA2MjpcXHRcXHQucmRfbGVuX3AwX3UgPSAweDE5LFxcbiAgNjM6XFx0XFx0LmNhcmRfbWlzY19jZmdfcmVnID0gMHhkOCxcXG4gIDY0OlxcdFxcdC5jYXJkX2NmZ18yXzFfcmVnID0gMHhkOSxcXG4gIDY1OlxcdFxcdC5jbWRfcmRfbGVuXzAgPSAweGMwLFxcbiAgNjY6XFx0XFx0LmNtZF9yZF9sZW5fMSA9IDB4YzEsXFxuICA2NzpcXHRcXHQuY21kX3JkX2xlbl8yID0gMHhjMixcXG4gIDY4OlxcdFxcdC5jbWRfcmRfbGVuXzMgPSAweGMzLFxcbiAgNjk6XFx0XFx0LmNtZF9jZmdfMCA9IDB4YzQsXFxuICA3MDpcXHRcXHQuY21kX2NmZ18xID0gMHhjNSxcXG4gIDcxOlxcdFxcdC5jbWRfY2ZnXzIgPSAweGM2LFxcbiAgNzI6XFx0XFx0LmNtZF9jZmdfMyA9IDB4YzcsXFxuICA3MzpcXHRcXHQuZndfZHVtcF9ob3N0X3JlYWR5ID0gMHhjYyxcXG4gIDc0OlxcdFxcdC5md19kdW1wX2N0cmwgPSAweGY5LFxcbiAgNzU6XFx0XFx0LmZ3X2R1bXBfc3RhcnQgPSAweGYxLFxcbiAgNzY6XFx0XFx0LmZ3X2R1bXBfZW5kID0gMHhmOCxcXG4gIDc3OlxcdFxcdC5mdW5jMV9kdW1wX3JlZ19zdGFydCA9IDB4MTAsXFxuICA3ODpcXHRcXHQuZnVuYzFfZHVtcF9yZWdfZW5kID0gMHgxNyxcXG4gIDc5OlxcdFxcdC5mdW5jMV9zY3JhdGNoX3JlZyA9IDB4RTgsXFxuICA4MDpcXHRcXHQuZnVuYzFfc3BlY19yZWdfbnVtID0gMTMsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA3OjU3OjIxLjg4MDcxNzJaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTQ1Mzg4MDI4MTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXNzdW1pbmcgdGhlIHVzZXIgaXMgYW4gZXhwZXJ0OlxuXG4qKkludmVzdGlnYXRpbmcgbnhwd2lmaSBNb2R1bGUgRnVuY3Rpb25hbGl0eSoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCB0aGUgYG54cHdpZmlgIG1vZHVsZSwgYW5kIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gaXRzIGludGVybmFsIHdvcmtpbmdzLiBGaXJzdCwgSSdtIGdvaW5nIHRvIGZvY3VzIG9uIHRoZSBgcHJvYmVgIGZ1bmN0aW9uLiBJIHdhbnQgdG8gc2VlIHdoYXQgdGhhdCBwYXJ0aWN1bGFyIGZ1bmN0aW9uIGlzIGRvaW5nIHdpdGhpbiB0aGUgbW9kdWxlIGFuZCBob3cgaXQgZml0cyBpbnRvIHRoZSBicm9hZGVyIHBpY3R1cmUgb2YgZGV2aWNlIGluaXRpYWxpemF0aW9uLiBJdCdzIHRoZSBzdGFuZGFyZCBlbnRyeSBwb2ludCBmb3IgZHJpdmVyIGxvYWRpbmcsIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0IGZ1bGx5LlxuXG5CZXlvbmQgdGhlIHByb2JlLCBJJ20gdHJ5aW5nIHRvIGlkZW50aWZ5IGhvdyB0aGlzIG1vZHVsZSBpbnRlcmFjdHMgd2l0aCB0aGUgc3lzdGVtIGJ1c2VzLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGtub3dpbmcgaWYgdGhlcmUgYXJlIG90aGVyIGJ1c2VzIGludm9sdmVkLCBiZXlvbmQgdGhlIG9idmlvdXMuIEFyZSB0aGVyZSBhbnkgaW5kaXJlY3QgZGVwZW5kZW5jaWVzIEknbSBub3QgaW1tZWRpYXRlbHkgYXdhcmUgb2Y/IEFyZSB0aGVyZSBhbnkgc3BlY2lmaWMgYnVzIGRyaXZlcnMgaXQgcmVsaWVzIG9uLCBvciBpbnRlcmFjdHMgd2l0aCBpbiBhbiB1bnVzdWFsIHdheT9cblxuRmluYWxseSwgSSB3YW50IHRvIGFzc2VzcyB0aGUgZXhpc3RlbmNlIGFuZCBzdWl0YWJpbGl0eSBvZiBtb2NrIGRyaXZlcnMgZm9yIG54cHdpZmkuIEkgaGF2ZSB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBtb2NrIGRyaXZlcnMgYXZhaWxhYmxlLCBhbmQgd2hhdCB0aGVpciBjYXBhYmlsaXRpZXMgYXJlLiBUaGUgaW50ZW50aW9uIGhlcmUgaXMgdG8gc2ltdWxhdGUgc3BlY2lmaWMgc2NlbmFyaW9zLCBwZXJmb3JtIHRlc3Rpbmcgd2l0aG91dCBhY3R1YWwgaGFyZHdhcmUsIG9yIGRlYnVnIHBvdGVudGlhbCBpc3N1ZXMuIEl0J3Mgb2Z0ZW4gZWFzaWVyIHRvIGRldmVsb3AgYW5kIHRlc3Qgd2l0aCBzaW11bGF0ZWQgZW52aXJvbm1lbnRzIHRoYW4gd2l0aCByZWFsIGRldmljZXMsIHNvIHRoaXMgaXMgY3JpdGljYWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMzk1LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwNzo1NzozNi40MTk1MjM0MTVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMwNTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uY1wiLFxuICBcIkZpcnN0TGluZVwiOiA4MSxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA4MTpcXHRcXHQuZnVuYzFfc3BlY19yZWdfdGFibGUgPSB7MHgwOCwgMHg1OCwgMHg1QywgMHg1RCwgMHg2MCxcXG4gIDgyOlxcdFxcdFxcdFxcdFxcdCAweDYxLCAweDYyLCAweDY0LCAweDY1LCAweDY2LFxcbiAgODM6XFx0XFx0XFx0XFx0XFx0IDB4NjgsIDB4NjksIDB4NmF9LFxcbiAgODQ6XFx0fTtcXG4gIDg1OlxcdFxcbiAgODY6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBueHB3aWZpX3NkaW9fZGV2aWNlIG54cHdpZmlfc2Rpb19pdzYxeCA9IHtcXG4gIDg3OlxcdFxcdC5maXJtd2FyZSA9IElXNjFYX1NESU9fRldfTkFNRSxcXG4gIDg4OlxcdFxcdC5yZWcgPSBcXHUwMDI2bnhwd2lmaV9yZWdfaXc2MXgsXFxuICA4OTpcXHRcXHQubWF4X3BvcnRzID0gMzIsXFxuICA5MDpcXHRcXHQubXBfYWdnX3BrdF9saW1pdCA9IDE2LFxcbiAgOTE6XFx0XFx0LnR4X2J1Zl9zaXplID0gTlhQV0lGSV9UWF9EQVRBX0JVRl9TSVpFXzRLLFxcbiAgOTI6XFx0XFx0Lm1wX3R4X2FnZ19idWZfc2l6ZSA9IE5YUFdJRklfTVBfQUdHUl9CU0laRV9NQVgsXFxuICA5MzpcXHRcXHQubXBfcnhfYWdnX2J1Zl9zaXplID0gTlhQV0lGSV9NUF9BR0dSX0JTSVpFX01BWCxcXG4gIDk0OlxcdFxcdC5jYW5fZHVtcF9mdyA9IHRydWUsXFxuICA5NTpcXHRcXHQuZndfZHVtcF9lbmggPSB0cnVlLFxcbiAgOTY6XFx0XFx0LmNhbl9leHRfc2NhbiA9IHRydWUsXFxuICA5NzpcXHR9O1xcbiAgOTg6XFx0XFxuICA5OTpcXHRzdGF0aWMgc3RydWN0IG1lbW9yeV90eXBlX21hcHBpbmcgZ2VuZXJpY19tZW1fdHlwZV9tYXBbXSA9IHtcXG4gMTAwOlxcdFxcdHtcXFwiRFVNUFxcXCIsIE5VTEwsIDAsIDB4RER9LFxcbiAxMDE6XFx0fTtcXG4gMTAyOlxcdFxcbiAxMDM6XFx0c3RhdGljIHN0cnVjdCBtZW1vcnlfdHlwZV9tYXBwaW5nIG1lbV90eXBlX21hcHBpbmdfdGJsW10gPSB7XFxuIDEwNDpcXHRcXHR7XFxcIklUQ01cXFwiLCBOVUxMLCAwLCAweEYwfSxcXG4gMTA1OlxcdFxcdHtcXFwiRFRDTVxcXCIsIE5VTEwsIDAsIDB4RjF9LFxcbiAxMDY6XFx0XFx0e1xcXCJTUVJBTVxcXCIsIE5VTEwsIDAsIDB4RjJ9LFxcbiAxMDc6XFx0XFx0e1xcXCJBUFVcXFwiLCBOVUxMLCAwLCAweEYzfSxcXG4gMTA4OlxcdFxcdHtcXFwiQ0lVXFxcIiwgTlVMTCwgMCwgMHhGNH0sXFxuIDEwOTpcXHRcXHR7XFxcIklDVVxcXCIsIE5VTEwsIDAsIDB4RjV9LFxcbiAxMTA6XFx0XFx0e1xcXCJNQUNcXFwiLCBOVUxMLCAwLCAweEY2fSxcXG4gMTExOlxcdFxcdHtcXFwiRVhUN1xcXCIsIE5VTEwsIDAsIDB4Rjd9LFxcbiAxMTI6XFx0XFx0e1xcXCJFWFQ4XFxcIiwgTlVMTCwgMCwgMHhGOH0sXFxuIDExMzpcXHRcXHR7XFxcIkVYVDlcXFwiLCBOVUxMLCAwLCAweEY5fSxcXG4gMTE0OlxcdFxcdHtcXFwiRVhUMTBcXFwiLCBOVUxMLCAwLCAweEZBfSxcXG4gMTE1OlxcdFxcdHtcXFwiRVhUMTFcXFwiLCBOVUxMLCAwLCAweEZCfSxcXG4gMTE2OlxcdFxcdHtcXFwiRVhUMTJcXFwiLCBOVUxMLCAwLCAweEZDfSxcXG4gMTE3OlxcdFxcdHtcXFwiRVhUMTNcXFwiLCBOVUxMLCAwLCAweEZEfSxcXG4gMTE4OlxcdFxcdHtcXFwiRVhUTEFTVFxcXCIsIE5VTEwsIDAsIDB4RkV9LFxcbiAxMTk6XFx0fTtcXG4gMTIwOlxcdFxcbiAxMjE6XFx0LyogQmluZCB0aGUgU0RJTyBmdW5jdGlvbiBhbmQgc3RhcnQgZGV2aWNlIHJlZ2lzdHJhdGlvbi4gKi9cXG4gMTIyOlxcdHN0YXRpYyBpbnRcXG4gMTIzOlxcdG54cHdpZmlfc2Rpb19wcm9iZShzdHJ1Y3Qgc2Rpb19mdW5jICpmdW5jLCBjb25zdCBzdHJ1Y3Qgc2Rpb19kZXZpY2VfaWQgKmlkKVxcbiAxMjQ6XFx0e1xcbiAxMjU6XFx0XFx0aW50IHJldDtcXG4gMTI2OlxcdFxcdHN0cnVjdCBzZGlvX21tY19jYXJkICpjYXJkID0gTlVMTDtcXG4gMTI3OlxcdFxcbiAxMjg6XFx0XFx0Y2FyZCA9IGRldm1fa3phbGxvYyhcXHUwMDI2ZnVuYy1cXHUwMDNlZGV2LCBzaXplb2YoKmNhcmQpLCBHRlBfS0VSTkVMKTtcXG4gMTI5OlxcdFxcdGlmICghY2FyZClcXG4gMTMwOlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiAxMzE6XFx0XFxuIDEzMjpcXHRcXHRpbml0X2NvbXBsZXRpb24oXFx1MDAyNmNhcmQtXFx1MDAzZWZ3X2RvbmUpO1xcbiAxMzM6XFx0XFxuIDEzNDpcXHRcXHRjYXJkLVxcdTAwM2VmdW5jID0gZnVuYztcXG4gMTM1OlxcdFxcbiAxMzY6XFx0XFx0aWYgKGlkLVxcdTAwM2Vkcml2ZXJfZGF0YSkge1xcbiAxMzc6XFx0XFx0XFx0c3RydWN0IG54cHdpZmlfc2Rpb19kZXZpY2UgKmRhdGEgPSAodm9pZCAqKWlkLVxcdTAwM2Vkcml2ZXJfZGF0YTtcXG4gMTM4OlxcdFxcbiAxMzk6XFx0XFx0XFx0Y2FyZC1cXHUwMDNlZmlybXdhcmUgPSBkYXRhLVxcdTAwM2VmaXJtd2FyZTtcXG4gMTQwOlxcdFxcdFxcdGNhcmQtXFx1MDAzZWZpcm13YXJlX3NkaW91YXJ0ID0gZGF0YS1cXHUwMDNlZmlybXdhcmVfc2Rpb3VhcnQ7XFxuIDE0MTpcXHRcXHRcXHRjYXJkLVxcdTAwM2VyZWcgPSBkYXRhLVxcdTAwM2VyZWc7XFxuIDE0MjpcXHRcXHRcXHRjYXJkLVxcdTAwM2VtYXhfcG9ydHMgPSBkYXRhLVxcdTAwM2VtYXhfcG9ydHM7XFxuIDE0MzpcXHRcXHRcXHRjYXJkLVxcdTAwM2VtcF9hZ2dfcGt0X2xpbWl0ID0gZGF0YS1cXHUwMDNlbXBfYWdnX3BrdF9saW1pdDtcXG4gMTQ0OlxcdFxcdFxcdGNhcmQtXFx1MDAzZXR4X2J1Zl9zaXplID0gZGF0YS1cXHUwMDNldHhfYnVmX3NpemU7XFxuIDE0NTpcXHRcXHRcXHRjYXJkLVxcdTAwM2VtcF90eF9hZ2dfYnVmX3NpemUgPSBkYXRhLVxcdTAwM2VtcF90eF9hZ2dfYnVmX3NpemU7XFxuIDE0NjpcXHRcXHRcXHRjYXJkLVxcdTAwM2VtcF9yeF9hZ2dfYnVmX3NpemUgPSBkYXRhLVxcdTAwM2VtcF9yeF9hZ2dfYnVmX3NpemU7XFxuIDE0NzpcXHRcXHRcXHRjYXJkLVxcdTAwM2VjYW5fZHVtcF9mdyA9IGRhdGEtXFx1MDAzZWNhbl9kdW1wX2Z3O1xcbiAxNDg6XFx0XFx0XFx0Y2FyZC1cXHUwMDNlZndfZHVtcF9lbmggPSBkYXRhLVxcdTAwM2Vmd19kdW1wX2VuaDtcXG4gMTQ5OlxcdFxcdFxcdGNhcmQtXFx1MDAzZWNhbl9leHRfc2NhbiA9IGRhdGEtXFx1MDAzZWNhbl9leHRfc2NhbjtcXG4gMTUwOlxcdFxcdFxcdElOSVRfV09SSyhcXHUwMDI2Y2FyZC1cXHUwMDNld29yaywgbnhwd2lmaV9zZGlvX3dvcmspO1xcbiAxNTE6XFx0XFx0fVxcbiAxNTI6XFx0XFxuIDE1MzpcXHRcXHRzZGlvX2NsYWltX2hvc3QoZnVuYyk7XFxuIDE1NDpcXHRcXHRyZXQgPSBzZGlvX2VuYWJsZV9mdW5jKGZ1bmMpO1xcbiAxNTU6XFx0XFx0c2Rpb19yZWxlYXNlX2hvc3QoZnVuYyk7XFxuIDE1NjpcXHRcXG4gMTU3OlxcdFxcdGlmIChyZXQpIHtcXG4gMTU4OlxcdFxcdFxcdGRldl9lcnIoXFx1MDAyNmZ1bmMtXFx1MDAzZWRldiwgXFxcImZhaWxlZCB0byBlbmFibGUgZnVuY3Rpb25cXFxcblxcXCIpO1xcbiAxNTk6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gMTYwOlxcdFxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDc6NTc6MzYuNDE5NjU1NTY1WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQxMzY3OTgxMzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiBTRElPIENhcmQgRnV6emluZyBGZWFzaWJpbGl0eSoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCB3aGV0aGVyIHdlIGNhbiBlZmZlY3RpdmVseSBmdXp6IG9yIGVtdWxhdGUgU0RJTyBjYXJkcyB3aXRoaW4gdGhlIGN1cnJlbnQgUUVNVS9zeXprYWxsZXIgZnJhbWV3b3JrLiBIbW0sIHN5emthbGxlciBkb2Vzbid0IHNlZW0gdG8gbmF0aXZlbHkgc3VwcG9ydCBlbXVsYXRpbmcgU0RJTyBXaS1GaSBkZXZpY2VzIOKAkyBpdCdzIGdvdCBVU0IgdmlhIFJhdyBHYWRnZXQvRHVtbXkgSENELCBCbHVldG9vdGggd2l0aCB2aGNpLCBXaS1GaSB0aHJvdWdoIG1hYzgwMjExX2h3c2ltL3ZpcnRfd2lmaSwgYW5kIG1lZGlhIGludGVyZmFjZXMgbGlrZSB2aW1jL3ZpdmlkLiBCdXQgbm90aGluZyBmb3IgU0RJTywgYXQgbGVhc3Qgbm90IGV4cGxpY2l0bHkuXG5cbk5vdywgaG9sZCBvbi4gSXMgdGhlcmUgKmFueSogU0RJTyBkZXZpY2UgZW11bGF0aW9uLCBvciBwZXJoYXBzIHNvZnR3YXJlLWJhc2VkIFNESU8gV2ktRmkgaW1wbGVtZW50YXRpb25zIHdpdGhpbiB0aGUgTGludXgga2VybmVsIG9yIFFFTVUgaXRzZWxmPyBUaW1lIHRvIGNoZWNrIHN5emthbGxlcidzIGRvY3VtZW50YXRpb24gYWdhaW4sIG9yIGF0IGxlYXN0IGxvb2sgaW50byB3aGV0aGVyIHRoaXMgaXMgYSBoYXJkd2FyZS1vbmx5IGxpbWl0YXRpb24uXG5cblJpZ2h0LCBsZXQncyBnZXQgc3BlY2lmaWMuIENhbiB3ZSBlbXVsYXRlIFNESU8gZnVuY3Rpb24gZGV2aWNlcyBsaWtlIHRoZSBOWFAgSVc2MXggd2l0aGluIFFFTVU/IEFuZCB0aGUgYW5zd2VyLCBhcyBmYXIgYXMgSSBjYW4gdGVsbCwgaXMgbm8uIERhcm4uXG5cbk9rYXksIGxldCdzIHRha2UgYSBzdGVwIGJhY2sgYW5kIGNvbnNpZGVyICp3aHkqIHRoaXMgbWlnaHQgYmUuIEknbGwgbmVlZCB0byBjaGVjayB0aGUgdHlwaWNhbCByZWFzb25zIGRyaXZlcnMgYXJlIGRlZW1lZCB1bi1mdXp6YWJsZSBkdWUgdG8gdmlydHVhbGl6YXRpb24gbGltaXRhdGlvbnMuIEFscmlnaHQsIHRoZXJlIGl0IGlzOiBjb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUuIEl0J3MgdGhpbmdzIGxpa2UgVVNCIGdhZGdldCwgbWFjODAyMTFfaHdzaW0uIFRoZW4gdGhlcmUgYXJlIHRob3NlIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChsaWtlIG1seHN3LCBwZHNfY29yZSwgcWVkLCBpb25pYywgYW1kZ3B1KSB0aGF0IG5lZWQgcGh5c2ljYWwgaGFyZHdhcmUgY2FyZHMsIHdoaWNoIFFFTVUgZG9lc24ndCBlbXVsYXRlLlxuXG5Tbywgd2hlcmUgZG9lcyB0aGlzIGxlYXZlIHVzPyBOb3csIEkgbmVlZCB0byBjaGVjayBpZiB0aGUgYG54cHdpZmlgIGRyaXZlciBpcyBleGNsdXNpdmVseSBhbiBTRElPIGRyaXZlciBmb3IgdGhlIE5YUCBJVzYxeCBjaGlwcywgb3IgaWYgaXQgaGFzIHNvbWUgYnJvYWRlciBhcHBsaWNhYmlsaXR5LlxuXG5MZXQncyBkbyBhIHF1aWNrIHNlYXJjaCBpbiB0aGUga2VybmVsIHRyZWUgZm9yIGBDT05GSUdfTlhQV0lGSWAsIGBueHB3aWZpX2AsIG9yIGFueSBvdGhlciBidXMgZHJpdmVycyByZWxhdGVkIHRvIGBueHB3aWZpYC4gVGhpcyBtaWdodCBnaXZlIHVzIHNvbWUgaW5zaWdodCBpbnRvIGl0cyBwb3RlbnRpYWwgZmxleGliaWxpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1MjAzLCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzU4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDc6NTc6NDAuNTU2NDU1OTIxWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzcxODI1MDg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19OWFBXSUZJXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9NYWtlZmlsZS0yLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9NYWtlZmlsZTozOm9iai0kKENPTkZJR19OWFBXSUZJKVxcdCs9IG54cHdpZmkvXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9NYWtlZmlsZT0zMz1ueHB3aWZpLSQoQ09ORklHX0RFQlVHX0ZTKSArPSBkZWJ1Z2ZzLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9NYWtlZmlsZTozNDpvYmotJChDT05GSUdfTlhQV0lGSSkgKz0gbnhwd2lmaS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvTWFrZWZpbGUtMzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvTWFrZWZpbGU9MzY9bnhwd2lmaV9zZGlvLXkgKz0gc2Rpby5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvTWFrZWZpbGU6Mzc6b2JqLSQoQ09ORklHX05YUFdJRklfU0RJTykgKz0gbnhwd2lmaV9zZGlvLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9NYWtlZmlsZS0zOC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDc6NTc6NDIuMzI4Mjg1NjM5WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM0MTYwNTc1OTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgTlhQIFdpRmkgRHJpdmVyIENvbnRleHQqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0J3MgZ29pbmcgb24gd2l0aCB0aGlzIGRyaXZlci4gRmlyc3QsIGxldCBtZSBxdWlja2x5IGNvbmZpcm0gdGhhdCBgc2Rpby5vYCBpcyB0aGUgb25seSBidXMgZHJpdmVyIGluIGBueHB3aWZpYC4gR29vZCwganVzdCBjb25maXJtaW5nIG15IGluaXRpYWwgYXNzdW1wdGlvbnMuIE5vdywgbGV0J3MgZ2V0IGludG8gdGhlIHNwZWNpZmljcyBvZiB0aGUgcGF0Y2guIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgd2hhdCBtb2RpZmljYXRpb25zIGhhdmUgYmVlbiBtYWRlLiBMZXQncyBkaWcgaW50byB0aGUgY29kZSBpdHNlbGYuIEknbGwgdGFrZSBhIGxvb2sgYXQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NmZzgwMjExLmNgLCBmb2N1c2luZyBhcm91bmQgbGluZXMgODQ0IGFuZCA4ODguIFRoYXQgc2VlbXMgbGlrZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgdG8gdW5kZXJzdGFuZCB0aGUgY29yZSBjaGFuZ2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjI4NiwiT3V0cHV0VG9rZW5zIjo0OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA3OjU3OjQ1Ljc0NDM0NTcyMVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjcxMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY2ZnODAyMTEuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA4MzUsXG4gIFwiTGluZUNvdW50XCI6IDcwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA4MzU6XFx0XFxuIDgzNjpcXHRcXHRyZXQgPSBueHB3aWZpX2RlaW5pdF9wcml2X3BhcmFtcyhwcml2KTtcXG4gODM3OlxcdFxcdGlmIChyZXQpXFxuIDgzODpcXHRcXHRcXHRnb3RvIGRvbmU7XFxuIDgzOTpcXHRcXHRyZXQgPSBueHB3aWZpX2luaXRfbmV3X3ByaXZfcGFyYW1zKHByaXYsIGRldiwgdHlwZSk7XFxuIDg0MDpcXHRcXHRpZiAocmV0KVxcbiA4NDE6XFx0XFx0XFx0Z290byBkb25lO1xcbiA4NDI6XFx0XFxuIDg0MzpcXHRcXHR1cGRhdGVfdmlmX3R5cGVfY291bnRlcihhZGFwdGVyLCBjdXJyX2lmdHlwZSwgLTEpO1xcbiA4NDQ6XFx0XFx0dXBkYXRlX3ZpZl90eXBlX2NvdW50ZXIoYWRhcHRlciwgdHlwZSwgMSk7XFxuIDg0NTpcXHRcXHRkZXYtXFx1MDAzZWllZWU4MDIxMV9wdHItXFx1MDAzZWlmdHlwZSA9IHR5cGU7XFxuIDg0NjpcXHRcXG4gODQ3OlxcdFxcdHJldCA9IG54cHdpZmlfc2V0X2Jzc19tb2RlKHByaXYpO1xcbiA4NDg6XFx0XFxuIDg0OTpcXHRcXHRpZiAocmV0KVxcbiA4NTA6XFx0XFx0XFx0Z290byBkb25lO1xcbiA4NTE6XFx0XFxuIDg1MjpcXHRcXHRyZXQgPSBueHB3aWZpX3N0YV9pbml0X2NtZChwcml2LCBmYWxzZSwgZmFsc2UpO1xcbiA4NTM6XFx0XFxuIDg1NDpcXHRkb25lOlxcbiA4NTU6XFx0XFx0cmV0dXJuIHJldDtcXG4gODU2OlxcdH1cXG4gODU3OlxcdFxcbiA4NTg6XFx0c3RhdGljIGludFxcbiA4NTk6XFx0bnhwd2lmaV9jaGFuZ2VfdmlmX3RvX2FwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIDg2MDpcXHRcXHRcXHRcXHQgZW51bSBubDgwMjExX2lmdHlwZSBjdXJyX2lmdHlwZSxcXG4gODYxOlxcdFxcdFxcdFxcdCBlbnVtIG5sODAyMTFfaWZ0eXBlIHR5cGUsXFxuIDg2MjpcXHRcXHRcXHRcXHQgc3RydWN0IHZpZl9wYXJhbXMgKnBhcmFtcylcXG4gODYzOlxcdHtcXG4gODY0OlxcdFxcdHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXY7XFxuIDg2NTpcXHRcXHRzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyO1xcbiA4NjY6XFx0XFx0aW50IHJldDtcXG4gODY3OlxcdFxcbiA4Njg6XFx0XFx0cHJpdiA9IG54cHdpZmlfbmV0ZGV2X2dldF9wcml2KGRldik7XFxuIDg2OTpcXHRcXG4gODcwOlxcdFxcdGlmICghcHJpdilcXG4gODcxOlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiA4NzI6XFx0XFxuIDg3MzpcXHRcXHRhZGFwdGVyID0gcHJpdi1cXHUwMDNlYWRhcHRlcjtcXG4gODc0OlxcdFxcbiA4NzU6XFx0XFx0bnhwd2lmaV9kYmcoYWRhcHRlciwgSU5GTyxcXG4gODc2OlxcdFxcdFxcdCAgICBcXFwiJXM6IGNoYW5naW5nIHJvbGUgdG8gQVBcXFxcblxcXCIsIGRldi1cXHUwMDNlbmFtZSk7XFxuIDg3NzpcXHRcXG4gODc4OlxcdFxcdHJldCA9IG54cHdpZmlfZGVpbml0X3ByaXZfcGFyYW1zKHByaXYpO1xcbiA4Nzk6XFx0XFx0aWYgKHJldClcXG4gODgwOlxcdFxcdFxcdGdvdG8gZG9uZTtcXG4gODgxOlxcdFxcbiA4ODI6XFx0XFx0cmV0ID0gbnhwd2lmaV9pbml0X25ld19wcml2X3BhcmFtcyhwcml2LCBkZXYsIHR5cGUpO1xcbiA4ODM6XFx0XFx0aWYgKHJldClcXG4gODg0OlxcdFxcdFxcdGdvdG8gZG9uZTtcXG4gODg1OlxcdFxcbiA4ODY6XFx0XFx0dXBkYXRlX3ZpZl90eXBlX2NvdW50ZXIoYWRhcHRlciwgY3Vycl9pZnR5cGUsIC0xKTtcXG4gODg3OlxcdFxcdHVwZGF0ZV92aWZfdHlwZV9jb3VudGVyKGFkYXB0ZXIsIHR5cGUsIDEpO1xcbiA4ODg6XFx0XFx0ZGV2LVxcdTAwM2VpZWVlODAyMTFfcHRyLVxcdTAwM2VpZnR5cGUgPSB0eXBlO1xcbiA4ODk6XFx0XFxuIDg5MDpcXHRcXHRyZXQgPSBueHB3aWZpX3NldF9ic3NfbW9kZShwcml2KTtcXG4gODkxOlxcdFxcbiA4OTI6XFx0XFx0aWYgKHJldClcXG4gODkzOlxcdFxcdFxcdGdvdG8gZG9uZTtcXG4gODk0OlxcdFxcbiA4OTU6XFx0XFx0cmV0ID0gbnhwd2lmaV9zdGFfaW5pdF9jbWQocHJpdiwgZmFsc2UsIGZhbHNlKTtcXG4gODk2OlxcdFxcbiA4OTc6XFx0ZG9uZTpcXG4gODk4OlxcdFxcdHJldHVybiByZXQ7XFxuIDg5OTpcXHR9XFxuIDkwMDpcXHRcXG4gOTAxOlxcdC8qIGNmZzgwMjExIG9wZXJhdGlvbiBoYW5kbGVyIHRvIGNoYW5nZSBpbnRlcmZhY2UgdHlwZS4gKi9cXG4gOTAyOlxcdHN0YXRpYyBpbnRcXG4gOTAzOlxcdG54cHdpZmlfY2ZnODAyMTFfY2hhbmdlX3ZpcnR1YWxfaW50ZihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbiA5MDQ6XFx0XFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwNzo1Nzo0NS43NDQ1MTQ3NTFaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTI1MzI2MTA4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIEZlYXNpYmlsaXR5IG9mIE5YUCBXaUZpIERyaXZlcioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYG54cHdpZmlfY2ZnODAyMTFfY2hhbmdlX3ZpcnR1YWxfaW50ZmAgY2FsbHMgYm90aCBgbnhwd2lmaV9jaGFuZ2VfdmlmX3RvX3N0YWAgYW5kIGBueHB3aWZpX2NoYW5nZV92aWZfdG9fYXBgLiBUaGF0J3MgdGhlIGVudHJ5IHBvaW50LiBCdXQsIGBueHB3aWZpYC4uLiByaWdodCwgaXQncyB0aGUgZHJpdmVyIGZvciBOWFAgV2lGaSBkZXZpY2VzLCBzcGVjaWZpY2FsbHkgdGhlIElXNjF4IFNESU8gaW50ZXJmYWNlLiBUaGUga2V5IHF1ZXN0aW9uIGlzLCBjYW4gSSBldmVuICpyZWFjaCogdGhpcyBkcml2ZXIgaW4gYSB2aXJ0dWFsIGVudmlyb25tZW50PyBUaGlzIGlzIGNyaXRpY2FsIGZvciBmdXp6aW5nLlxuXG5NeSBmaXJzdCBjaGVjayBpcyB0aGUgb2J2aW91czogZG9lcyB0aGlzIHJlcXVpcmUgYWN0dWFsIGhhcmR3YXJlPyBUaGUgZHJpdmVyIGlzIGNsZWFybHkgaWRlbnRpZmllZCBhcyBgTlhQV0lGSV9TRElPYCwgYmluZGluZyB0byB0aGUgU0RJTyBmdW5jdGlvbi4gQW5kIEkga25vdywgZnJvbSBleHBlcmllbmNlLCB0aGVyZSBhcmVuJ3QgYW55IGVtdWxhdGVkIG9yIHZpcnR1YWwgU0RJTyBXaUZpIGRldmljZXMgcmVhZGlseSBhdmFpbGFibGUgaW4gZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmUuIFNvLCB0aGF0J3MgYSAqbWFqb3IqIHJlZCBmbGFnLlxuXG5UaGVuIEkgbmVlZCB0byBjaGVjayB0aGUgcHJvbXB0IHJ1bGVzLiBUaGVzZSBydWxlcyBhcmUga2V5OiBhbnl0aGluZyB1bnJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGlzIG5vdCB3b3J0aCBmdXp6aW5nLiBUaGUgcGF0Y2ggaXMgaXJyZWxldmFudCBpZiBpdCdzIGluIGEgY29kZSBwYXRoIHlvdSBjYW4ndCBoaXQuIE15IGV4cGVyaWVuY2UgZ2l2ZXMgbWUgdGhlIGVkZ2UgaGVyZS4gTW9kaWZpY2F0aW9ucyB0byBkb2N1bWVudGF0aW9uLCBjb25maWcgZmlsZXMsIG9yIGNvbW1lbnRzIGFyZSBvdXQuIERlY29yYXRpdmUgY2hhbmdlcywgbGlrZSBsb2dnaW5nLCBhcmUgb3V0LiBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIGFyZSBvdXQuIENvZGUgcGF0aHMgY29tcGxldGVseSB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXphdGlvbj8gVGhhdCdzIHRoZSBjb3JlLiBBbHNvLCB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2ggZHJpdmVycyB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgYXJlIG91dCwgYW5kIHNvIGFyZSB0ZWFyZG93biBjYWxsYmFja3MgdGhhdCBhcmUgb25seSBleGVjdXRlZCB3aGVuIGhhcmR3YXJlIGlzIHVucGx1Z2dlZC5cblxuTm93LCBiZWNhdXNlIGBueHB3aWZpYCBzcGVjaWZpY2FsbHkgcmVxdWlyZXMgdGhhdCBOWFAgSVc2MXggU0RJTyBoYXJkd2FyZSBhbmQgYmVjYXVzZSB0aGF0IGhhcmR3YXJlIGlzICpub3QqIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFLCBpdCBpcyBpbXBvc3NpYmxlIHRvIGluc3RhbnRpYXRlIGFuZCBmdXp6IHRoaXMgY29kZSBwYXRoIGluIGFueSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50LlxuXG5UbyBiZSBhYnNvbHV0ZWx5IHN1cmUsIEknbGwgZG8gYSBxdWljayBzZWFyY2ggdGhyb3VnaCB0aGUga2VybmVsIHNvdXJjZSB0byBzZWUgaWYgdGhlcmUncyBhbnkgY2xldmVyIHRyaWNrZXJ5IOKAkyBhIG1vY2sgZGV2aWNlLCBhIHBsYXRmb3JtIGRldmljZSwgYW55dGhpbmcgdGhhdCByZWdpc3RlcnMgYSB2aXJ0dWFsIGBueHB3aWZpYCBkZXZpY2UuIEkgd2lsbCBsb29rIGZvciBhbnkgdXNlIG9mIGZ1bmN0aW9ucyBsaWtlIGBueHB3aWZpX2FkZF9jYXJkYCBvciBgbnhwd2lmaV9yZWdpc3RlcmAsIHRvIG1ha2UgY2VydGFpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc1NDAsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MjYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwNzo1Nzo1MC45OTc3NzkyMDNaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkyNDkyOTQ0MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJueHB3aWZpX1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDE1MDE3IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM9MzY9c3RhdGljIHUxNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzozNzpueHB3aWZpX2NvbnZlcnRfbWNzbWFwX3RvX21heHJhdGUoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMzgtXFx0XFx0XFx0XFx0ICB1MTYgYmFuZHMsIHUxNiBtY3NfbWFwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTQyLVxcdHUzMiB1c3Jfdmh0X2NhcF9pbmZvID0gMDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6NDM6XFx0c3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtXFx1MDAzZWFkYXB0ZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTQ0LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jPTc5PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjgwOm54cHdpZmlfZmlsbF92aHRfY2FwX2luZm8oc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtODEtXFx0XFx0XFx0ICBzdHJ1Y3QgaWVlZTgwMjExX3ZodF9jYXAgKnZodF9jYXAsIHUxNiBiYW5kcylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtODIte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzo4MzpcXHRzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cXHUwMDNlYWRhcHRlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtODQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM9OTM9dm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzo5NDpueHB3aWZpX2ZpbGxfdmh0X2NhcF90bHYoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtOTUtXFx0XFx0XFx0IHN0cnVjdCBpZWVlODAyMTFfdmh0X2NhcCAqdmh0X2NhcCwgdTE2IGJhbmRzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy05Ni17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjk3OlxcdHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIgPSBwcml2LVxcdTAwM2VhZGFwdGVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy05OC1cXHR1MTYgbWNzX21hcF91c2VyLCBtY3NfbWFwX3Jlc3AsIG1jc19tYXBfcmVzdWx0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTEwMS1cXHQvKiBGaWxsIFZIVCBjYXBhYmlsaXR5IGluZm8uICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjEwMjpcXHRueHB3aWZpX2ZpbGxfdmh0X2NhcF9pbmZvKHByaXYsIHZodF9jYXAsIGJhbmRzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTAzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTEyMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTI0OlxcdHRtcCA9IG54cHdpZmlfY29udmVydF9tY3NtYXBfdG9fbWF4cmF0ZShwcml2LCBiYW5kcywgbWNzX21hcF9yZXN1bHQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xMjUtXFx0dmh0X2NhcC1cXHUwMDNlc3VwcF9tY3MucnhfaGlnaGVzdCA9IGNwdV90b19sZTE2KHRtcCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTQ1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxNDY6XFx0dG1wID0gbnhwd2lmaV9jb252ZXJ0X21jc21hcF90b19tYXhyYXRlKHByaXYsIGJhbmRzLCBtY3NfbWFwX3Jlc3VsdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE0Ny1cXHR2aHRfY2FwLVxcdTAwM2VzdXBwX21jcy50eF9oaWdoZXN0ID0gY3B1X3RvX2xlMTYodG1wKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE1MDppbnQgbnhwd2lmaV9jbWRfYXBwZW5kXzExYWNfdGx2KHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE1MTpcXHRcXHRcXHRcXHRzdHJ1Y3Qgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTUyLVxcdFxcdFxcdFxcdHU4ICoqYnVmZmVyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNTMte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxNTQ6XFx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfdmh0Y2FwICp2aHRfY2FwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxNTU6XFx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfb3Blcl9tb2RlX250ZiAqb3Blcl9udGY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE1Ni1cXHRzdHJ1Y3QgaWVlZV90eXBlc19vcGVyX21vZGVfbnRmICppZWVlX29wZXJfbnRmO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxNTc6XFx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfdmh0X29wZXIgKnZodF9vcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTU4OlxcdHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIgPSBwcml2LVxcdTAwM2VhZGFwdGVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNTktXFx0dTggc3VwcF9jaHdkX3NldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNjktXFx0aWYgKGJzc19kZXNjLVxcdTAwM2ViY25fdmh0X2NhcCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxNzA6XFx0XFx0dmh0X2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc192aHRjYXAgKikqYnVmZmVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNzEtXFx0XFx0bWVtc2V0KHZodF9jYXAsIDAsIHNpemVvZigqdmh0X2NhcCkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE3NC1cXHRcXHRcXHRjcHVfdG9fbGUxNihzaXplb2Yoc3RydWN0IGllZWU4MDIxMV92aHRfY2FwKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE3NTpcXHRcXHRtZW1jcHkoKHU4ICopdmh0X2NhcCArIHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZWFkZXIpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNzYtXFx0XFx0ICAgICAgICh1OCAqKWJzc19kZXNjLVxcdTAwM2ViY25fdmh0X2NhcCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE3OTpcXHRcXHRueHB3aWZpX2ZpbGxfdmh0X2NhcF90bHYocHJpdiwgXFx1MDAyNnZodF9jYXAtXFx1MDAzZXZodF9jYXAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE4MC1cXHRcXHRcXHRcXHRcXHQgYnNzX2Rlc2MtXFx1MDAzZWJzc19iYW5kKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xODctXFx0XFx0aWYgKHByaXYtXFx1MDAzZWJzc19tb2RlID09IE5MODAyMTFfSUZUWVBFX1NUQVRJT04pIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTg4OlxcdFxcdFxcdHZodF9vcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc192aHRfb3BlciAqKSpidWZmZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE4OS1cXHRcXHRcXHRtZW1zZXQodmh0X29wLCAwLCBzaXplb2YoKnZodF9vcCkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE5Mi1cXHRcXHRcXHR2aHRfb3AtXFx1MDAzZWhlYWRlci5sZW4gID0gY3B1X3RvX2xlMTYoc2l6ZW9mKCp2aHRfb3ApIC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTkzOlxcdFxcdFxcdFxcdHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZWFkZXIpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTk0LVxcdFxcdFxcdG1lbWNweSgodTggKil2aHRfb3AgK1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxOTU6XFx0XFx0XFx0XFx0c2l6ZW9mKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlYWRlciksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE5Ni1cXHRcXHRcXHQgICAgICAgKHU4ICopYnNzX2Rlc2MtXFx1MDAzZWJjbl92aHRfb3BlcixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0yNDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjI0NTppbnQgbnhwd2lmaV9jbWRfMTFhY19jZmcoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMjQ2LVxcdFxcdFxcdCBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqY21kLCB1MTYgY21kX2FjdGlvbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MjQ3OlxcdFxcdFxcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWFjX3ZodF9jZmcgKmNmZylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMjQ4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0yNjQtLyogSW5pdGlhbGl6ZSBCbG9ja0FjayBwYXJhbWV0ZXJzIGZvciAxMWFjLiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoyNjU6dm9pZCBueHB3aWZpX3NldF8xMWFjX2JhX3BhcmFtcyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0yNjYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5oPTE0PWVudW0gdmh0X2NmZ19taXNjX2NvbmZpZyB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmgtMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5oOjI1OmludCBueHB3aWZpX2NtZF9hcHBlbmRfMTFhY190bHYoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmg6MjY6XFx0XFx0XFx0XFx0c3RydWN0IG54cHdpZmlfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5oLTI3LVxcdFxcdFxcdFxcdHU4ICoqYnVmZmVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmg6Mjg6aW50IG54cHdpZmlfY21kXzExYWNfY2ZnKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5oLTI5LVxcdFxcdFxcdCBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqY21kLCB1MTYgY21kX2FjdGlvbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmg6MzA6XFx0XFx0XFx0IHN0cnVjdCBueHB3aWZpXzExYWNfdmh0X2NmZyAqY2ZnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmg6MzE6dm9pZCBueHB3aWZpX2ZpbGxfdmh0X2NhcF90bHYoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmgtMzItXFx0XFx0XFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV92aHRfY2FwICp2aHRfY2FwLCB1MTYgYmFuZHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTEwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxMTp2b2lkIG54cHdpZmlfdXBkYXRlXzExYXhfY2FwKHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTEyLVxcdFxcdFxcdCAgICAgc3RydWN0IGh3X3NwZWNfZXh0ZW5zaW9uICpod19oZV9jYXApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTEzLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTQ6XFx0c3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTU6XFx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICpoZV9jYXAgPSBOVUxMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNjpcXHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKnVzZXJfaGVfY2FwID0gTlVMTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTc6XFx0dTggaGVhZGVyX2xlbiA9IHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZWFkZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xOC1cXHR1MTYgZGF0YV9sZW4gPSBsZTE2X3RvX2NwdShod19oZV9jYXAtXFx1MDAzZWhlYWRlci5sZW4pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTIyLVxcdGlmICgoZGF0YV9sZW4gKyBoZWFkZXJfbGVuKSBcXHUwMDNlIHNpemVvZihhZGFwdGVyLVxcdTAwM2Vod19oZV9jYXApKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjIzOlxcdFxcdG54cHdpZmlfZGJnKGFkYXB0ZXIsIEVSUk9SLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yNC1cXHRcXHRcXHQgICAgXFxcImh3X2hlX2NhcCB0b28gYmlnLCBsZW49JWRcXFxcblxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI5OlxcdGhlX2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKilod19oZV9jYXA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTMwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM3LVxcdFxcdGhlX2NhcF8yZyA9IHRydWU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjM4OlxcdFxcdG54cHdpZmlfZGJnX2R1bXAoYWRhcHRlciwgQ01EX0QsIFxcXCIyLjRHIEhFIGNhcGFiaWxpdHkgZWxlbWVudCBcXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zOS1cXHRcXHRcXHRcXHQgYWRhcHRlci1cXHUwMDNlaHdfMmdfaGVfY2FwLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ1LVxcdFxcdGFkYXB0ZXItXFx1MDAzZWZ3X2JhbmRzIHw9IEJBTkRfQUFYO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0NjpcXHRcXHRueHB3aWZpX2RiZ19kdW1wKGFkYXB0ZXIsIENNRF9ELCBcXFwiNUcgSEUgY2FwYWJpbGl0eSBlbGVtZW50IFxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ3LVxcdFxcdFxcdFxcdCBhZGFwdGVyLVxcdTAwM2Vod19oZV9jYXAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTctXFx0XFx0XFx0ICAgICAgIHNpemVvZihhZGFwdGVyLVxcdTAwM2Vod18yZ19oZV9jYXApKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTg6XFx0XFx0XFx0dXNlcl9oZV9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICopXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU5LVxcdFxcdFxcdFxcdHByaXYtXFx1MDAzZXVzZXJfMmdfaGVfY2FwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTYzLVxcdFxcdFxcdCAgICAgICBzaXplb2YoYWRhcHRlci1cXHUwMDNlaHdfaGVfY2FwKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjY0OlxcdFxcdFxcdHVzZXJfaGVfY2FwID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy02NS1cXHRcXHRcXHRcXHRwcml2LVxcdTAwM2V1c2VyX2hlX2NhcDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy03OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6Nzk6Ym9vbCBueHB3aWZpXzExYXhfYmFuZGNvbmZpZ19hbGxvd2VkKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjgwOlxcdFxcdFxcdFxcdCAgICAgc3RydWN0IG54cHdpZmlfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTgxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy05NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6OTU6aW50IG54cHdpZmlfZmlsbF9oZV9jYXBfdGx2KHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjk2OlxcdFxcdFxcdCAgICBzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKmhlX2NhcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtOTctXFx0XFx0XFx0ICAgIHUxNiBiYW5kcylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtOTgte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo5OTpcXHRzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cXHUwMDNlYWRhcHRlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTAwOlxcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqaHdfaGVfY2FwID0gTlVMTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTAxLVxcdHUxNiByeF9uc3MsIHR4X25zcztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMDgtXFx0XFx0bWVtY3B5KGhlX2NhcCwgcHJpdi1cXHUwMDNldXNlcl9oZV9jYXAsIHByaXYtXFx1MDAzZXVzZXJfaGVfY2FwX2xlbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjEwOTpcXHRcXHRod19oZV9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICopYWRhcHRlci1cXHUwMDNlaHdfaGVfY2FwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMTAtXFx0XFx0cmV0X2xlbiA9IHByaXYtXFx1MDAzZXVzZXJfaGVfY2FwX2xlbjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMTItXFx0XFx0bWVtY3B5KGhlX2NhcCwgcHJpdi1cXHUwMDNldXNlcl8yZ19oZV9jYXAsIHByaXYtXFx1MDAzZXVzZXJfMmdfaGVfY2FwX2xlbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjExMzpcXHRcXHRod19oZV9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICopYWRhcHRlci1cXHUwMDNlaHdfMmdfaGVfY2FwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMTQtXFx0XFx0cmV0X2xlbiA9IHByaXYtXFx1MDAzZXVzZXJfMmdfaGVfY2FwX2xlbjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMjUtXFx0Zm9yIChuc3MgPSAxOyBuc3MgXFx1MDAzYz0gODsgbnNzKyspIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTI2OlxcdFxcdGNmZ192YWx1ZSA9IG54cHdpZmlfZ2V0X2hlX25zc19tY3MoaGVfY2FwLVxcdTAwM2VyeF9tY3NfODAsIG5zcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjEyNzpcXHRcXHRod192YWx1ZSA9IG54cHdpZmlfZ2V0X2hlX25zc19tY3MoaHdfaGVfY2FwLVxcdTAwM2VyeF9tY3NfODAsIG5zcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTEyOC1cXHRcXHRpZiAocnhfbnNzICE9IDAgXFx1MDAyNlxcdTAwMjYgbnNzIFxcdTAwM2UgcnhfbnNzKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTEzMC1cXHRcXHRpZiAoaHdfdmFsdWUgPT0gTk9fTlNTX1NVUFBPUlQgfHwgY2ZnX3ZhbHVlID09IE5PX05TU19TVVBQT1JUKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxMzE6XFx0XFx0XFx0bnhwd2lmaV9zZXRfaGVfbnNzX21jcyhcXHUwMDI2aGVfY2FwLVxcdTAwM2VyeF9tY3NfODAsIG5zcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTMyLVxcdFxcdFxcdFxcdFxcdCAgICAgICBOT19OU1NfU1VQUE9SVCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTEzMy1cXHRcXHRlbHNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjEzNDpcXHRcXHRcXHRueHB3aWZpX3NldF9oZV9uc3NfbWNzKFxcdTAwMjZoZV9jYXAtXFx1MDAzZXJ4X21jc184MCwgbnNzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMzUtXFx0XFx0XFx0XFx0XFx0ICAgICAgIG1pbihjZmdfdmFsdWUsIGh3X3ZhbHVlKSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTM4LVxcdGZvciAobnNzID0gMTsgbnNzIFxcdTAwM2M9IDg7IG5zcysrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjEzOTpcXHRcXHRjZmdfdmFsdWUgPSBueHB3aWZpX2dldF9oZV9uc3NfbWNzKGhlX2NhcC1cXHUwMDNldHhfbWNzXzgwLCBuc3MpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNDA6XFx0XFx0aHdfdmFsdWUgPSBueHB3aWZpX2dldF9oZV9uc3NfbWNzKGh3X2hlX2NhcC1cXHUwMDNldHhfbWNzXzgwLCBuc3MpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNDEtXFx0XFx0aWYgKHR4X25zcyAhPSAwIFxcdTAwMjZcXHUwMDI2IG5zcyBcXHUwMDNlIHR4X25zcylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNDMtXFx0XFx0aWYgKGh3X3ZhbHVlID09IE5PX05TU19TVVBQT1JUIHx8IGNmZ192YWx1ZSA9PSBOT19OU1NfU1VQUE9SVClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTQ0OlxcdFxcdFxcdG54cHdpZmlfc2V0X2hlX25zc19tY3MoXFx1MDAyNmhlX2NhcC1cXHUwMDNldHhfbWNzXzgwLCBuc3MsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE0NS1cXHRcXHRcXHRcXHRcXHQgICAgICAgTk9fTlNTX1NVUFBPUlQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNDYtXFx0XFx0ZWxzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNDc6XFx0XFx0XFx0bnhwd2lmaV9zZXRfaGVfbnNzX21jcyhcXHUwMDI2aGVfY2FwLVxcdTAwM2V0eF9tY3NfODAsIG5zcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTQ4LVxcdFxcdFxcdFxcdFxcdCAgICAgICBtaW4oY2ZnX3ZhbHVlLCBod192YWx1ZSkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE1My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTU0OmludCBueHB3aWZpX2NtZF9hcHBlbmRfMTFheF90bHYoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTU1OlxcdFxcdFxcdFxcdHN0cnVjdCBueHB3aWZpX2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNTYtXFx0XFx0XFx0XFx0dTggKipidWZmZXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE1Ny17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE1ODpcXHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKmhlX2NhcCA9IE5VTEw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE1OS1cXHRpbnQgcmV0X2xlbjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE2NDpcXHRoZV9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICopKmJ1ZmZlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTY1OlxcdHJldF9sZW4gPSBueHB3aWZpX2ZpbGxfaGVfY2FwX3Rsdihwcml2LCBoZV9jYXAsIGJzc19kZXNjLVxcdTAwM2Vic3NfYmFuZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE2Ni1cXHQqYnVmZmVyICs9IHJldF9sZW47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTcwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNzE6aW50IG54cHdpZmlfY21kXzExYXhfY2ZnKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE3Mi1cXHRcXHRcXHQgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCwgdTE2IGNtZF9hY3Rpb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE3MzpcXHRcXHRcXHQgc3RydWN0IG54cHdpZmlfMTFheF9oZV9jZmcgKmF4X2NmZylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTc0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNzYtXFx0dTE2IGNtZF9zaXplO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNzc6XFx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVhZGVyICpoZWFkZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE3OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xODYtXFx0ICAgIGF4X2NmZy1cXHUwMDNlaGVfY2FwX2NmZy5leHRfaWQgPT0gV0xBTl9FSURfRVhUX0hFX0NBUEFCSUxJVFkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTg3OlxcdFxcdGhlYWRlciA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZWFkZXIgKiloZV9jZmctXFx1MDAzZXRsdjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTg4LVxcdFxcdGhlYWRlci1cXHUwMDNldHlwZSA9IGNwdV90b19sZTE2KGF4X2NmZy1cXHUwMDNlaGVfY2FwX2NmZy5pZCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjAwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyMDE6aW50IG54cHdpZmlfcmV0XzExYXhfY2ZnKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTIwMi1cXHRcXHRcXHQgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3AsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjIwMzpcXHRcXHRcXHQgc3RydWN0IG54cHdpZmlfMTFheF9oZV9jZmcgKmF4X2NmZylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjA0LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjA1LVxcdHN0cnVjdCBob3N0X2NtZF8xMWF4X2NmZyAqaGVfY2ZnID0gXFx1MDAyNnJlc3AtXFx1MDAzZXBhcmFtcy5heF9jZmc7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjIwNjpcXHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZWFkZXIgKmhlYWRlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjA3LVxcdHUxNiBsZWZ0X2xlbiwgdGx2X3R5cGUsIHRsdl9sZW47XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTIwOC1cXHR1OCBleHRfaWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjIwOTpcXHRzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2hlX2NhcF9jZmcgKmhlX2NhcCA9IFxcdTAwMjZheF9jZmctXFx1MDAzZWhlX2NhcF9jZmc7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTIxMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjExLVxcdGxlZnRfbGVuID0gbGUxNl90b19jcHUocmVzcC1cXHUwMDNlc2l6ZSkgLSBzaXplb2YoKmhlX2NmZykgLSBTX0RTX0dFTjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjEyOlxcdGhlYWRlciA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZWFkZXIgKiloZV9jZmctXFx1MDAzZXRsdjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjEzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI0Mi1cXHRcXHRsZWZ0X2xlbiAtPSAoc2l6ZW9mKCpoZWFkZXIpICsgdGx2X2xlbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI0MzpcXHRcXHRoZWFkZXIgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVhZGVyICopKCh1OCAqKWhlYWRlciArXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI0NC1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgc2l6ZW9mKCpoZWFkZXIpICtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yNTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI1MTppbnQgbnhwd2lmaV9jbWRfMTFheF9jbWQoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjUyLVxcdFxcdFxcdCBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqY21kLCB1MTYgY21kX2FjdGlvbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjUzOlxcdFxcdFxcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2NtZF9jZmcgKmF4X2NtZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjU0LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjU1OlxcdHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIgPSBwcml2LVxcdTAwM2VhZGFwdGVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yNTYtXFx0c3RydWN0IGhvc3RfY21kXzExYXhfY21kICpoZV9jbWQgPSBcXHUwMDI2Y21kLVxcdTAwM2VwYXJhbXMuYXhfY21kO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yNTctXFx0dTE2IGNtZF9zaXplO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNTg6XFx0c3RydWN0IG54cHdpZmlfMTFheF9zcl9jbWQgKnNyX2NtZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjU5OlxcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2RhdGEgKnRsdjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjYwOlxcdHN0cnVjdCBueHB3aWZpXzExYXhfYmVhbV9jbWQgKmJlYW1fY21kO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNjE6XFx0c3RydWN0IG54cHdpZmlfMTFheF9odGNfY21kICpodGNfY21kO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNjI6XFx0c3RydWN0IG54cHdpZmlfMTFheF90eG9taV9jbWQgKnR4bW9pX2NtZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjYzOlxcdHN0cnVjdCBueHB3aWZpXzExYXhfdG9sdGltZV9jbWQgKnRvbHRpbWVfY21kO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNjQ6XFx0c3RydWN0IG54cHdpZmlfMTFheF90eG9wX2NtZCAqdHhvcF9jbWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI2NTpcXHRzdHJ1Y3Qgbnhwd2lmaV8xMWF4X3NldF9ic3JwX2NtZCAqc2V0X2JzcnBfY21kO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNjY6XFx0c3RydWN0IG54cHdpZmlfMTFheF9sbGRlX2NtZCAqbGxkZV9jbWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI2Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yNzUtXFx0Y2FzZSBOWFBXSUZJXzExQVhDTURfU1JfU1VCSUQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI3NjpcXHRcXHRzcl9jbWQgPSAoc3RydWN0IG54cHdpZmlfMTFheF9zcl9jbWQgKilcXHUwMDI2YXhfY21kLVxcdTAwM2VwYXJhbTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjc3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNzg6XFx0XFx0dGx2ID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2RhdGEgKiloZV9jbWQtXFx1MDAzZXZhbDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjc5LVxcdFxcdHRsdi1cXHUwMDNlaGVhZGVyLnR5cGUgPSBjcHVfdG9fbGUxNihzcl9jbWQtXFx1MDAzZXR5cGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI4NS1cXHRjYXNlIE5YUFdJRklfMTFBWENNRF9CRUFNX1NVQklEOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyODY6XFx0XFx0YmVhbV9jbWQgPSAoc3RydWN0IG54cHdpZmlfMTFheF9iZWFtX2NtZCAqKVxcdTAwMjZheF9jbWQtXFx1MDAzZXBhcmFtO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yODctXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjkxLVxcdGNhc2UgTlhQV0lGSV8xMUFYQ01EX0hUQ19TVUJJRDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjkyOlxcdFxcdGh0Y19jbWQgPSAoc3RydWN0IG54cHdpZmlfMTFheF9odGNfY21kICopXFx1MDAyNmF4X2NtZC1cXHUwMDNlcGFyYW07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI5My1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yOTctXFx0Y2FzZSBOWFBXSUZJXzExQVhDTURfVFhPTUlfU1VCSUQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI5ODpcXHRcXHR0eG1vaV9jbWQgPVxcdChzdHJ1Y3Qgbnhwd2lmaV8xMWF4X3R4b21pX2NtZCAqKVxcdTAwMjZheF9jbWQtXFx1MDAzZXBhcmFtO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yOTktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzAzLVxcdGNhc2UgTlhQV0lGSV8xMUFYQ01EX09CU1NfVE9MVElNRV9TVUJJRDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MzA0OlxcdFxcdHRvbHRpbWVfY21kID0gKHN0cnVjdCBueHB3aWZpXzExYXhfdG9sdGltZV9jbWQgKilcXHUwMDI2YXhfY21kLVxcdTAwM2VwYXJhbTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzA1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTMxMC1cXHRjYXNlIE5YUFdJRklfMTFBWENNRF9UWE9QUlRTX1NVQklEOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozMTE6XFx0XFx0dHhvcF9jbWQgPSAoc3RydWN0IG54cHdpZmlfMTFheF90eG9wX2NtZCAqKVxcdTAwMjZheF9jbWQtXFx1MDAzZXBhcmFtO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zMTItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzE3LVxcdGNhc2UgTlhQV0lGSV8xMUFYQ01EX1NFVF9CU1JQX1NVQklEOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozMTg6XFx0XFx0c2V0X2JzcnBfY21kID0gKHN0cnVjdCBueHB3aWZpXzExYXhfc2V0X2JzcnBfY21kICopXFx1MDAyNmF4X2NtZC1cXHUwMDNlcGFyYW07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTMxOS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zMjMtXFx0Y2FzZSBOWFBXSUZJXzExQVhDTURfTExERV9TVUJJRDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MzI0OlxcdFxcdGxsZGVfY21kID0gKHN0cnVjdCBueHB3aWZpXzExYXhfbGxkZV9jbWQgKilcXHUwMDI2YXhfY21kLVxcdTAwM2VwYXJhbTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzI1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTMyOS1cXHRkZWZhdWx0OlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozMzA6XFx0XFx0bnhwd2lmaV9kYmcoYWRhcHRlciwgRVJST1IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTMzMS1cXHRcXHRcXHQgICAgXFxcIiVzOiBVbmtub3duIHN1YiBjb21tYW5kOiAlZFxcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zNDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjM0MTppbnQgbnhwd2lmaV9yZXRfMTFheF9jbWQoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzQyLVxcdFxcdFxcdCBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqcmVzcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MzQzOlxcdFxcdFxcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2NtZF9jZmcgKmF4X2NtZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzQ0LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MzQ1OlxcdHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIgPSBwcml2LVxcdTAwM2VhZGFwdGVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zNDYtXFx0c3RydWN0IGhvc3RfY21kXzExYXhfY21kICpoZV9jbWQgPSBcXHUwMDI2cmVzcC1cXHUwMDNlcGFyYW1zLmF4X2NtZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MzQ3OlxcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2RhdGEgKnRsdjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzQ4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM1Mi1cXHRjYXNlIE5YUFdJRklfMTFBWENNRF9TUl9TVUJJRDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MzUzOlxcdFxcdHRsdiA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19kYXRhICopaGVfY21kLVxcdTAwM2V2YWw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM1NC1cXHRcXHRtZW1jcHkoYXhfY21kLVxcdTAwM2VwYXJhbS5zcl9jZmcucGFyYW0ub2Jzc19wZF9vZmZzZXQub2Zmc2V0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM4My1cXHRkZWZhdWx0OlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozODQ6XFx0XFx0bnhwd2lmaV9kYmcoYWRhcHRlciwgRVJST1IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM4NS1cXHRcXHRcXHQgICAgXFxcIiVzOiBVbmtub3duIHN1YiBjb21tYW5kOiAlZFxcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zOTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjM5MzpzdGF0aWMgdTggbnhwd2lmaV9pc19hcF8xMWF4X3R3dF9zdXBwb3J0ZWQoc3RydWN0IG54cHdpZmlfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM5NC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDA5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0MTA6Ym9vbCBueHB3aWZpX2lzXzExYXhfdHd0X3N1cHBvcnRlZChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0MTE6XFx0XFx0XFx0XFx0ICAgc3RydWN0IG54cHdpZmlfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQxMi17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQxMzpcXHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKnVzZXJfaGVfY2FwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0MTQ6XFx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICpod19oZV9jYXA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQxNS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQxOTpcXHRpZiAoIW54cHdpZmlfaXNfYXBfMTFheF90d3Rfc3VwcG9ydGVkKGJzc19kZXNjKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0MjA6XFx0XFx0bnhwd2lmaV9kYmcocHJpdi1cXHUwMDNlYWRhcHRlciwgTVNHLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MjEtXFx0XFx0XFx0ICAgIFxcXCJBUCBkb24ndCBzdXBwb3J0IHR3dCBmZWF0dXJlXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MjUtXFx0aWYgKGJzc19kZXNjLVxcdTAwM2Vic3NfYmFuZCBcXHUwMDI2IEJBTkRfQSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0MjY6XFx0XFx0aHdfaGVfY2FwID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MjctXFx0XFx0XFx0cHJpdi1cXHUwMDNlYWRhcHRlci1cXHUwMDNlaHdfaGVfY2FwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0Mjg6XFx0XFx0dXNlcl9oZV9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICopXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQyOS1cXHRcXHRcXHRwcml2LVxcdTAwM2V1c2VyX2hlX2NhcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDMwLVxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQzMTpcXHRcXHRod19oZV9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICopXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQzMi1cXHRcXHRcXHRwcml2LVxcdTAwM2VhZGFwdGVyLVxcdTAwM2Vod18yZ19oZV9jYXA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQzMzpcXHRcXHR1c2VyX2hlX2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDM0LVxcdFxcdFxcdHByaXYtXFx1MDAzZXVzZXJfMmdfaGVfY2FwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQzNy1cXHRpZiAoIShod19oZV9jYXAtXFx1MDAzZWhlX21hY19jYXBbMF0gXFx1MDAyNiBIRV9NQUNfQ0FQX1RXVF9SRVFfU1VQUE9SVCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDM4OlxcdFxcdG54cHdpZmlfZGJnKHByaXYtXFx1MDAzZWFkYXB0ZXIsIE1TRyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDM5LVxcdFxcdFxcdCAgICBcXFwiRlcgZG9uJ3Qgc3VwcG9ydCBUV1RcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ0My1cXHRpZiAoISh1c2VyX2hlX2NhcC1cXHUwMDNlaGVfbWFjX2NhcFswXSBcXHUwMDI2IEhFX01BQ19DQVBfVFdUX1JFUV9TVVBQT1JUKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0NDQ6XFx0XFx0bnhwd2lmaV9kYmcocHJpdi1cXHUwMDNlYWRhcHRlciwgTVNHLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00NDUtXFx0XFx0XFx0ICAgIFxcXCJVU0VSIEhFX01BQ19DQVAgZG9uJ3Qgc3VwcG9ydCBUV1RcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ1MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDUyOnU4IG54cHdpZmlfaXNfc3RhXzExYXhfdHd0X3JlcV9zdXBwb3J0ZWQoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDUzLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDU0OlxcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqdXNlcl9oZV9jYXA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ1NS1cXHR1OCByZXQgPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ1OS1cXHRcXHRpZiAocHJpdi1cXHUwMDNlY29uZmlnX2JhbmRzIFxcdTAwMjYgQkFORF9BQVgpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ2MDpcXHRcXHRcXHR1c2VyX2hlX2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKilwcml2LVxcdTAwM2V1c2VyX2hlX2NhcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDYxLVxcdFxcdGVsc2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDYyOlxcdFxcdFxcdHVzZXJfaGVfY2FwID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqKXByaXYtXFx1MDAzZXVzZXJfMmdfaGVfY2FwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00NjMtXFx0XFx0cmV0ID0gdXNlcl9oZV9jYXAtXFx1MDAzZWhlX21hY19jYXBbMF0gXFx1MDAyNiBIRV9NQUNfQ0FQX1RXVF9SRVFfU1VQUE9SVDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00NjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ2OTppbnQgbnhwd2lmaV9jbWRfdHd0X2NmZyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00NzAtXFx0XFx0XFx0c3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCwgdTE2IGNtZF9hY3Rpb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ3MTpcXHRcXHRcXHRzdHJ1Y3Qgbnhwd2lmaV90d3RfY2ZnICp0d3RfY2ZnKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00NzIte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0NzM6XFx0c3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtXFx1MDAzZWFkYXB0ZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ3NC1cXHRzdHJ1Y3QgaG9zdF9jbWRfdHd0X2NmZyAqdHd0X2NmZ19jbWQgPSBcXHUwMDI2Y21kLVxcdTAwM2VwYXJhbXMudHd0X2NmZztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDc1OlxcdHN0cnVjdCBueHB3aWZpX3R3dF9zZXR1cCAqdHd0X3NldHVwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0NzY6XFx0c3RydWN0IG54cHdpZmlfdHd0X3RlYXJkb3duICp0d3RfdGVhcmRvd247XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ3NzpcXHRzdHJ1Y3Qgbnhwd2lmaV90d3RfcmVwb3J0ICp0d3RfcmVwb3J0O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0Nzg6XFx0c3RydWN0IG54cHdpZmlfdHd0X2luZm9ybWF0aW9uICp0d3RfaW5mb3JtYXRpb247XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ3OTpcXHRzdHJ1Y3Qgbnhwd2lmaV9idHd0X2FwX2NvbmZpZyAqYnR3dF9hcF9jb25maWc7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ4MC1cXHR1OCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ5MC1cXHRjYXNlIE5YUFdJRklfMTFBWF9UV1RfU0VUVVBfU1VCSUQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ5MTpcXHRcXHR0d3Rfc2V0dXAgPSAoc3RydWN0IG54cHdpZmlfdHd0X3NldHVwICopXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ5Mi1cXHRcXHRcXHR0d3RfY2ZnX2NtZC1cXHUwMDNldmFsO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00OTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ5NDpcXHRcXHRtZW1zZXQodHd0X3NldHVwLCAweDAwLCBzaXplb2Yoc3RydWN0IG54cHdpZmlfdHd0X3NldHVwKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ5NS1cXHRcXHR0d3Rfc2V0dXAtXFx1MDAzZWltcGxpY2l0ID0gdHd0X2NmZy1cXHUwMDNlcGFyYW0udHd0X3NldHVwLmltcGxpY2l0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUwNy1cXHRcXHR0d3Rfc2V0dXAtXFx1MDAzZWJjbl9taXNzX3RocmVzaG9sZCA9IHR3dF9jZmctXFx1MDAzZXBhcmFtLnR3dF9zZXR1cC5iY25fbWlzc190aHJlc2hvbGQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjUwODpcXHRcXHRjbWRfc2l6ZSArPSBzaXplb2Yoc3RydWN0IG54cHdpZmlfdHd0X3NldHVwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTA5LVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MTAtXFx0Y2FzZSBOWFBXSUZJXzExQVhfVFdUX1RFQVJET1dOX1NVQklEOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1MTE6XFx0XFx0dHd0X3RlYXJkb3duID0gKHN0cnVjdCBueHB3aWZpX3R3dF90ZWFyZG93biAqKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MTItXFx0XFx0XFx0dHd0X2NmZ19jbWQtXFx1MDAzZXZhbDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTEzLVxcdFxcdG1lbXNldCh0d3RfdGVhcmRvd24sIDB4MDAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjUxNDpcXHRcXHQgICAgICAgc2l6ZW9mKHN0cnVjdCBueHB3aWZpX3R3dF90ZWFyZG93bikpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MTUtXFx0XFx0dHd0X3RlYXJkb3duLVxcdTAwM2VmbG93X2lkZW50aWZpZXIgPVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUyMC1cXHRcXHRcXHR0d3RfY2ZnLVxcdTAwM2VwYXJhbS50d3RfdGVhcmRvd24udGVhcmRvd25fYWxsX3R3dDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTIxOlxcdFxcdGNtZF9zaXplICs9IHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV90d3RfdGVhcmRvd24pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MjItXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUyMy1cXHRjYXNlIE5YUFdJRklfMTFBWF9UV1RfUkVQT1JUX1NVQklEOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1MjQ6XFx0XFx0dHd0X3JlcG9ydCA9IChzdHJ1Y3Qgbnhwd2lmaV90d3RfcmVwb3J0ICopXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUyNS1cXHRcXHRcXHR0d3RfY2ZnX2NtZC1cXHUwMDNldmFsO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1MjY6XFx0XFx0bWVtc2V0KHR3dF9yZXBvcnQsIDB4MDAsIHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV90d3RfcmVwb3J0KSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUyNy1cXHRcXHR0d3RfcmVwb3J0LVxcdTAwM2V0eXBlID0gdHd0X2NmZy1cXHUwMDNlcGFyYW0udHd0X3JlcG9ydC50eXBlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1Mjg6XFx0XFx0Y21kX3NpemUgKz0gc2l6ZW9mKHN0cnVjdCBueHB3aWZpX3R3dF9yZXBvcnQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MjktXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUzMC1cXHRjYXNlIE5YUFdJRklfMTFBWF9UV1RfSU5GT1JNQVRJT05fU1VCSUQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjUzMTpcXHRcXHR0d3RfaW5mb3JtYXRpb24gPSAoc3RydWN0IG54cHdpZmlfdHd0X2luZm9ybWF0aW9uICopXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUzMi1cXHRcXHRcXHR0d3RfY2ZnX2NtZC1cXHUwMDNldmFsO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MzMtXFx0XFx0bWVtc2V0KHR3dF9pbmZvcm1hdGlvbiwgMHgwMCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTM0OlxcdFxcdCAgICAgICBzaXplb2Yoc3RydWN0IG54cHdpZmlfdHd0X2luZm9ybWF0aW9uKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUzNS1cXHRcXHR0d3RfaW5mb3JtYXRpb24tXFx1MDAzZWZsb3dfaWRlbnRpZmllciA9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTM4LVxcdFxcdFxcdHR3dF9jZmctXFx1MDAzZXBhcmFtLnR3dF9pbmZvcm1hdGlvbi5zdXNwZW5kX2R1cmF0aW9uO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1Mzk6XFx0XFx0Y21kX3NpemUgKz0gc2l6ZW9mKHN0cnVjdCBueHB3aWZpX3R3dF9pbmZvcm1hdGlvbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU0MC1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTQxLVxcdGNhc2UgTlhQV0lGSV8xMUFYX0JUV1RfQVBfQ09ORklHX1NVQklEOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1NDI6XFx0XFx0YnR3dF9hcF9jb25maWcgPSAoc3RydWN0IG54cHdpZmlfYnR3dF9hcF9jb25maWcgKilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTQzLVxcdFxcdFxcdFxcdCB0d3RfY2ZnX2NtZC1cXHUwMDNldmFsO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NDQtXFx0XFx0bWVtc2V0KGJ0d3RfYXBfY29uZmlnLCAweDAwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1NDU6XFx0XFx0ICAgICAgIHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV9idHd0X2FwX2NvbmZpZykpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NDYtXFx0XFx0YnR3dF9hcF9jb25maWctXFx1MDAzZWFwX2JjYXN0X2JldF9zdGFfd2FpdCA9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTY0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1NjU6XFx0XFx0Y21kX3NpemUgKz0gc2l6ZW9mKHN0cnVjdCBueHB3aWZpX2J0d3RfYXBfY29uZmlnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTY2LVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NjctXFx0ZGVmYXVsdDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTY4OlxcdFxcdG54cHdpZmlfZGJnKGFkYXB0ZXIsIEVSUk9SLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NjktXFx0XFx0XFx0ICAgIFxcXCJVbmtub3duIHN1YiBpZDogJWRcXFxcblxcXCIsIHR3dF9jZmctXFx1MDAzZXN1Yl9pZCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTc3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1Nzg6aW50IG54cHdpZmlfcmV0X3R3dF9jZmcoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTc5LVxcdFxcdFxcdHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpyZXNwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1ODA6XFx0XFx0XFx0c3RydWN0IG54cHdpZmlfdHd0X2NmZyAqdHd0X2NmZylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTgxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01ODktXFx0ICAgIHR3dF9jZmctXFx1MDAzZXN1Yl9pZCA9PSBOWFBXSUZJXzExQVhfVFdUX1JFUE9SVF9TVUJJRCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1OTA6XFx0XFx0c3RydWN0IG54cHdpZmlfdHd0X3JlcG9ydCAqdHd0X3JlcG9ydCA9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU5MTpcXHRcXHRcXHQoc3RydWN0IG54cHdpZmlfdHd0X3JlcG9ydCAqKXR3dF9jZmdfY21kLVxcdTAwM2V2YWw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU5Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTkzOlxcdFxcdG1lbWNweShcXHUwMDI2dHd0X2NmZy1cXHUwMDNlcGFyYW0udHd0X3JlcG9ydCwgdHd0X3JlcG9ydCwgc2l6ZW9mKHN0cnVjdCBueHB3aWZpX3R3dF9yZXBvcnQpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTk0LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaD0xNz1zdGF0aWMgaW5saW5lIHUxNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDoxODpueHB3aWZpX2dldF9oZV9uc3NfbWNzKF9fbGUxNiBtY3NfbWFwX3NldCwgaW50IG5zcykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC0xOS1cXHRyZXR1cm4gKChsZTE2X3RvX2NwdShtY3NfbWFwX3NldCkgXFx1MDAzZVxcdTAwM2UgKDIgKiAobnNzIC0gMSkpKSBcXHUwMDI2IDB4Myk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg9MjI9c3RhdGljIGlubGluZSB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjIzOm54cHdpZmlfc2V0X2hlX25zc19tY3MoX19sZTE2ICptY3NfbWFwX3NldCwgaW50IG5zcywgaW50IHZhbHVlKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTI0LVxcdHUxNiB0ZW1wO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTMwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDozMTpib29sIG54cHdpZmlfaXNfMTFheF90d3Rfc3VwcG9ydGVkKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjMyOlxcdFxcdFxcdFxcdCAgIHN0cnVjdCAgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTMzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDozNDp2b2lkIG54cHdpZmlfdXBkYXRlXzExYXhfY2FwKHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTM1LVxcdFxcdFxcdCAgICAgc3RydWN0IGh3X3NwZWNfZXh0ZW5zaW9uICpod19oZV9jYXApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC0zNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6Mzc6Ym9vbCBueHB3aWZpXzExYXhfYmFuZGNvbmZpZ19hbGxvd2VkKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjM4OlxcdFxcdFxcdFxcdCAgICAgc3RydWN0IG54cHdpZmlfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC0zOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NDA6aW50IG54cHdpZmlfY21kX2FwcGVuZF8xMWF4X3RsdihzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDo0MTpcXHRcXHRcXHRcXHRzdHJ1Y3Qgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNDItXFx0XFx0XFx0XFx0dTggKipidWZmZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC00My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NDQ6aW50IG54cHdpZmlfZmlsbF9oZV9jYXBfdGx2KHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjQ1OlxcdFxcdFxcdCAgICBzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKmhlX2NhcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNDYtXFx0XFx0XFx0ICAgIHUxNiBiYW5kcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjQ3OmludCBueHB3aWZpX2NtZF8xMWF4X2NmZyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC00OC1cXHRcXHRcXHQgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCwgdTE2IGNtZF9hY3Rpb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjQ5OlxcdFxcdFxcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2hlX2NmZyAqYXhfY2ZnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjUxOmludCBueHB3aWZpX3JldF8xMWF4X2NmZyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC01Mi1cXHRcXHRcXHQgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3AsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjUzOlxcdFxcdFxcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2hlX2NmZyAqYXhfY2ZnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjU1OmludCBueHB3aWZpX2NtZF8xMWF4X2NtZChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC01Ni1cXHRcXHRcXHQgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCwgdTE2IGNtZF9hY3Rpb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjU3OlxcdFxcdFxcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2NtZF9jZmcgKmF4X2NtZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTU4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDo1OTppbnQgbnhwd2lmaV9yZXRfMTFheF9jbWQoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNjAtXFx0XFx0XFx0IHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpyZXNwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDo2MTpcXHRcXHRcXHQgc3RydWN0IG54cHdpZmlfMTFheF9jbWRfY2ZnICpheF9jbWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC02Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NjM6aW50IG54cHdpZmlfY21kX3R3dF9jZmcoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNjQtXFx0XFx0XFx0c3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCwgdTE2IGNtZF9hY3Rpb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjY1OlxcdFxcdFxcdHN0cnVjdCBueHB3aWZpX3R3dF9jZmcgKnR3dF9jZmcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC02Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6Njc6aW50IG54cHdpZmlfcmV0X3R3dF9jZmcoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNjgtXFx0XFx0XFx0c3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3AsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjY5OlxcdFxcdFxcdHN0cnVjdCBueHB3aWZpX3R3dF9jZmcgKnR3dF9jZmcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC03MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NzE6dTggbnhwd2lmaV9pc19zdGFfMTFheF90d3RfcmVxX3N1cHBvcnRlZChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNzItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYy0xMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYzoxMzp2b2lkIG54cHdpZmlfaW5pdF8xMWhfcGFyYW1zKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmMtMTQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmMtMTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmM6MTk6aW50IG54cHdpZmlfaXNfMTFoX2FjdGl2ZShzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExaC5jLTIwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExaC5jPTI1PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmM6MjY6bnhwd2lmaV8xMWhfcHJvY2Vzc19pbmZyYV9qb2luKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsIHU4ICoqYnVmZmVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExaC5jOjI3OlxcdFxcdFxcdCAgICAgICBzdHJ1Y3Qgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYy0yOC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmM6Mjk6XFx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVhZGVyICppZV9oZWFkZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmM6MzA6XFx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfcHdyX2NhcGFiaWxpdHkgKmNhcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYzozMTpcXHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19sb2NhbF9wd3JfY29uc3RyYWludCAqY29uc3RyYWludDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYy0zMi1cXHRzdHJ1Y3QgaWVlZTgwMjExX3N1cHBvcnRlZF9iYW5kICpzYmFuZDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExaC5jLTM4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExaC5jOjM5OlxcdHJhZGlvX3R5cGUgPSBueHB3aWZpX2JhbmRfdG9fcmFkaW9fdHlwZSgodTgpYnNzX2Rlc2MtXFx1MDAzZWJzc19iYW5kKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYy00MC1cXHRzYmFuZCA9IHByaXYtXFx1MDAzZXdkZXYud2lwaHktXFx1MDAzZWJhbmRzW3JhZGlvX3R5cGVdO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExaC5jLTQxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExaC5jOjQyOlxcdGNhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19wd3JfY2FwYWJpbGl0eSAqKSpidWZmZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmMtNDMtXFx0Y2FwLVxcdTAwM2VoZWFkZXIudHlwZSA9IGNwdV90b19sZTE2KFdMQU5fRUlEX1BXUl9DQVBBQklMSVRZKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExaC5jLTQ4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExaC5jOjQ5OlxcdGNvbnN0cmFpbnQgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfbG9jYWxfcHdyX2NvbnN0cmFpbnQgKikqYnVmZmVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExaC5jLTUwLVxcdGNvbnN0cmFpbnQtXFx1MDAzZWhlYWRlci50eXBlID0gY3B1X3RvX2xlMTYoV0xBTl9FSURfUFdSX0NPTlNUUkFJTlQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmMtNTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmM6NTY6XFx0aWVfaGVhZGVyID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlYWRlciAqKSpidWZmZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmMtNTctXFx0aWVfaGVhZGVyLVxcdTAwM2V0eXBlID0gY3B1X3RvX2xlMTYoVExWX1RZUEVfUEFTU1RIUk9VR0gpO1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwNzo1Nzo1MS45MjI3MTUzMTRaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6ODk5MTU5MjUxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgbnhwd2lmaWAgRHJpdmVyIGZvciBGdXp6aW5nKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgYG54cHdpZmlgIGRyaXZlciBpcyBzcGVjaWZpY2FsbHkgdGllZCB0byBOWFAncyBJVzYxeCBoYXJkd2FyZSwgY29ubmVjdGVkIHZpYSBTRElPLiBUaGF0IGFsb25lIGlzIGEgcmVkIGZsYWcuIEkga25vdyB0aGF0IHRoaXMgcGFydGljdWxhciBoYXJkd2FyZSBpc24ndCBlbXVsYXRlZCBhdCBhbGwgaW4gc3RhbmRhcmQgdmlydHVhbGl6YXRpb24gdG9vbHMgbGlrZSBRRU1VIG9yIGluIGNsb3VkIGVudmlyb25tZW50cyBsaWtlIEdvb2dsZSBDb21wdXRlIEVuZ2luZS4gU28sIGFueSBjb2RlIHBhdGhzIHdpdGhpbiBgbnhwd2lmaWAgYXJlIGdvaW5nIHRvIGJlIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUgdXNpbmcgb3VyIHZpcnR1YWxpemVkIGZ1enppbmcgc2V0dXBzLlxuXG5MZXQncyBkb3VibGUtY2hlY2sgdGhlIGV4Y2x1c2lvbiBjcml0ZXJpYSBqdXN0IHRvIGJlIGNlcnRhaW4uIFdlJ3JlIGxvb2tpbmcgZm9yIGNvZGUgdGhhdCdzIGluYWNjZXNzaWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIGV2ZW4gd2l0aCBlbXVsYXRlZCBoYXJkd2FyZSwgb3IgY2FsbGJhY2tzIHRyaWdnZXJlZCBieSBQQ0kgaG90LXVucGx1ZyBvcGVyYXRpb25zLCBvciBjb2RlIHdpdGhpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBkcml2ZXJzIHRoYXQgbmVlZCBwaHlzaWNhbCBoYXJkd2FyZSBjYXJkcy5cblxuWWVwLCB0aGUgYG54cHdpZmlgIHNpdHVhdGlvbiBsaW5lcyB1cCBwZXJmZWN0bHkuIEl0J3MgYSB0ZXh0Ym9vayBleGFtcGxlIG9mIGEgZHJpdmVyIHRoYXTigJlzIGdvaW5nIHRvIGJlIHVzZWxlc3MgZm9yIHVzIHRvIHRhcmdldC5cblxuVGltZSB0byBwcmVwYXJlIHRoZSByZXN1bHRzLiBXZSBuZWVkIHRvIHNldCBgV29ydGhGdXp6aW5nYCB0byBgZmFsc2VgLiBObyBwb2ludCB3YXN0aW5nIHJlc291cmNlcy4gVGhlIGBFbmFibGVDb25maWdzYCBhbmQgYEZvY3VzU3ltYm9sc2Agd2lsbCBiZSBlbXB0eS4gVGhlIGBSZWFzb25pbmdgIG5lZWRzIHRvIGJlIGNsZWFyOiBcIlRoZSBjaGFuZ2VzIGFyZSBpbiB0aGUgYG54cHdpZmlgIGRyaXZlciAoZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY2ZnODAyMTEuYyksIHdoaWNoIGlzIGEgdmVuZG9yIHdpcmVsZXNzIGRyaXZlciBzdXBwb3J0aW5nIE5YUCBJVzYxeCBkZXZpY2VzIG92ZXIgU0RJTy4gSXQgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgU0RJTyBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyBzdWNoIGFzIFFFTVUgb3IgR0NFLlwiXG5cbkFuZCB3aXRoIHRoYXQgZG9uZSwgSSdtIGdvaW5nIHRvIHNldCB0aGVzZSByZXN1bHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTA1MSwiT3V0cHV0VG9rZW5zIjoxMjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozODUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDc6NTg6MDAuOTE0MzEwNDlaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjIwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBtb2RpZmljYXRpb25zIGFyZSBpbiB0aGUgTlhQIFdpRmkgZHJpdmVyIChkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jZmc4MDIxMS5jKSwgd2hpY2ggaXMgYW4gU0RJTy1iYXNlZCB3aXJlbGVzcyBuZXR3b3JrIGRyaXZlciAoQ09ORklHX05YUFdJRkkgLyBDT05GSUdfTlhQV0lGSV9TRElPKSByZXF1aXJpbmcgcGh5c2ljYWwgTlhQIElXNjF4IGhhcmR3YXJlLiBUaGUgZHJpdmVyIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQgb3IgcmVhY2hlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSB3aXRob3V0IGRlZGljYXRlZCBwaHlzaWNhbCBoYXJkd2FyZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIG1vZGlmaWNhdGlvbnMgYXJlIGluIHRoZSBOWFAgV2lGaSBkcml2ZXIgKGRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NmZzgwMjExLmMpLCB3aGljaCBpcyBhbiBTRElPLWJhc2VkIHdpcmVsZXNzIG5ldHdvcmsgZHJpdmVyIChDT05GSUdfTlhQV0lGSSAvIENPTkZJR19OWFBXSUZJX1NESU8pIHJlcXVpcmluZyBwaHlzaWNhbCBOWFAgSVc2MXggaGFyZHdhcmUuIFRoZSBkcml2ZXIgY2Fubm90IGJlIGluc3RhbnRpYXRlZCBvciByZWFjaGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFIHdpdGhvdXQgZGVkaWNhdGVkIHBoeXNpY2FsIGhhcmR3YXJlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDc6NTg6MDAuOTE0MzM1OTVaIiwiU2VxIjoyMywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowb7d78[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-31 07:55:14 +0000 UTC FinishedAt: 2026-08-31 07:58:03 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA3OjU3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgbW9kaWZpY2F0aW9ucyBhcmUgaW4gdGhlIE5YUCBXaUZpIGRyaXZlciAoZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY2ZnODAyMTEuYyksIHdoaWNoIGlzIGFuIFNESU8tYmFzZWQgd2lyZWxlc3MgbmV0d29yayBkcml2ZXIgKENPTkZJR19OWFBXSUZJIC8gQ09ORklHX05YUFdJRklfU0RJTykgcmVxdWlyaW5nIHBoeXNpY2FsIE5YUCBJVzYxeCBoYXJkd2FyZS4gVGhlIGRyaXZlciBjYW5ub3QgYmUgaW5zdGFudGlhdGVkIG9yIHJlYWNoZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0Ugd2l0aG91dCBkZWRpY2F0ZWQgcGh5c2ljYWwgaGFyZHdhcmUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA3OjU3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYWIxZjJmYWY3YmJlMWVhMGExZmRiZDdkNTZiOTc1ZmFjYWFlMjY2ZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDMxIDA3OjU2OjU5IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jZmc4MDIxMS5jXG5pbmRleCA1Y2M4Y2RmNTk0ZDNlLi4zMzUyMjFjNGYxN2QxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY2ZnODAyMTEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY2ZnODAyMTEuY1xuQEAgLTg0NCw4ICYjNDM7ODQ0LDcgQEAgbnhwd2lmaV9jaGFuZ2VfdmlmX3RvX3N0YShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0dXBkYXRlX3ZpZl90eXBlX2NvdW50ZXIoYWRhcHRlciwgdHlwZSwgMSk7XG4gXHRkZXYtXHUwMDNlaWVlZTgwMjExX3B0ci1cdTAwM2VpZnR5cGUgPSB0eXBlO1xuIFxuLVx0aWYgKG54cHdpZmlfc2V0X2Jzc19tb2RlKHByaXYpKVxuLVx0XHRyZXR1cm4gLTE7XG4mIzQzO1x0cmV0ID0gbnhwd2lmaV9zZXRfYnNzX21vZGUocHJpdik7XG4gXG4gXHRpZiAocmV0KVxuIFx0XHRnb3RvIGRvbmU7XG5AQCAtODg4LDggJiM0Mzs4ODcsNyBAQCBueHB3aWZpX2NoYW5nZV92aWZfdG9fYXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdHVwZGF0ZV92aWZfdHlwZV9jb3VudGVyKGFkYXB0ZXIsIHR5cGUsIDEpO1xuIFx0ZGV2LVx1MDAzZWllZWU4MDIxMV9wdHItXHUwMDNlaWZ0eXBlID0gdHlwZTtcbiBcbi1cdGlmIChueHB3aWZpX3NldF9ic3NfbW9kZShwcml2KSlcbi1cdFx0cmV0dXJuIC0xO1xuJiM0MztcdHJldCA9IG54cHdpZmlfc2V0X2Jzc19tb2RlKHByaXYpO1xuIFxuIFx0aWYgKHJldClcbiBcdFx0Z290byBkb25lO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA3OjU3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIG1vZGlmaWNhdGlvbnMgYXJlIGluIHRoZSBOWFAgV2lGaSBkcml2ZXIgKGRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NmZzgwMjExLmMpLCB3aGljaCBpcyBhbiBTRElPLWJhc2VkIHdpcmVsZXNzIG5ldHdvcmsgZHJpdmVyIChDT05GSUdfTlhQV0lGSSAvIENPTkZJR19OWFBXSUZJX1NESU8pIHJlcXVpcmluZyBwaHlzaWNhbCBOWFAgSVc2MXggaGFyZHdhcmUuIFRoZSBkcml2ZXIgY2Fubm90IGJlIGluc3RhbnRpYXRlZCBvciByZWFjaGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFIHdpdGhvdXQgZGVkaWNhdGVkIHBoeXNpY2FsIGhhcmR3YXJlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGFiMWYyZmFmN2JiZTFlYTBhMWZkYmQ3ZDU2Yjk3NWZhY2FhZTI2NmYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEF1ZyAzMSAwNzo1Njo1OSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jZmc4MDIxMS5jCmluZGV4IDVjYzhjZGY1OTRkM2UuLjMzNTIyMWM0ZjE3ZDEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NmZzgwMjExLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY2ZnODAyMTEuYwpAQCAtODQ0LDggJiM0Mzs4NDQsNyBAQCBueHB3aWZpX2NoYW5nZV92aWZfdG9fc3RhKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJdXBkYXRlX3ZpZl90eXBlX2NvdW50ZXIoYWRhcHRlciwgdHlwZSwgMSk7CiAJZGV2LSZndDtpZWVlODAyMTFfcHRyLSZndDtpZnR5cGUgPSB0eXBlOwogCi0JaWYgKG54cHdpZmlfc2V0X2Jzc19tb2RlKHByaXYpKQotCQlyZXR1cm4gLTE7CiYjNDM7CXJldCA9IG54cHdpZmlfc2V0X2Jzc19tb2RlKHByaXYpOwogCiAJaWYgKHJldCkKIAkJZ290byBkb25lOwpAQCAtODg4LDggJiM0Mzs4ODcsNyBAQCBueHB3aWZpX2NoYW5nZV92aWZfdG9fYXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAl1cGRhdGVfdmlmX3R5cGVfY291bnRlcihhZGFwdGVyLCB0eXBlLCAxKTsKIAlkZXYtJmd0O2llZWU4MDIxMV9wdHItJmd0O2lmdHlwZSA9IHR5cGU7CiAKLQlpZiAobnhwd2lmaV9zZXRfYnNzX21vZGUocHJpdikpCi0JCXJldHVybiAtMTsKJiM0MzsJcmV0ID0gbnhwd2lmaV9zZXRfYnNzX21vZGUocHJpdik7CiAKIAlpZiAocmV0KQogCQlnb3RvIGRvbmU7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA3OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNjEKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxNDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgV2lyZWxlc3MgRHJpdmVyIFBhdGNoKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBwYXRjaC4gVGhlIGtleSBmaWxlIGhlcmUgaXMgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NmZzgwMjExLmNgLCB3aGljaCBpbW1lZGlhdGVseSBzdWdnZXN0cyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIHRoZSBOWFAgV2lGaSBkcml2ZXIuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gdW5kZXJzdGFuZCB0aGUgYnVzIGludGVyYWN0aW9uLiBJcyB0aGlzIGEgVVNCLWJhc2VkIGRldmljZSwgU0RJTywgb3IgcGVyaGFwcyBQQ0llPyBUaGlzIGlzIGNydWNpYWwgZm9yIGRldGVybWluaW5nIGhvdyB3ZSBjYW4gZWZmZWN0aXZlbHkgZnV6eiBpdC4gSWYgaXQmIzM5O3MgVVNCLCBjYW4gd2UgbGV2ZXJhZ2UgVVNCIGdhZGdldCBtb2RlcyBvciByYXcgZ2FkZ2V0IGFwcHJvYWNoZXM/IE9yIHBlcmhhcHMgZXZlbiBlbXVsYXRlIHRoZSBkZXZpY2U/IE9mIGNvdXJzZSwgaWYgaXQmIzM5O3MgU0RJTyBvciBQQ0llLCB0aGF0IGNoYW5nZXMgdGhlIGdhbWUuCgpUbyB1bmRlcnN0YW5kIHRoZSBkcml2ZXImIzM5O3MgaW50ZXJuYWxzIGEgYml0IGJldHRlciwgSSYjMzk7bGwgbmVlZCB0byBleHBsb3JlIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvYCBkaXJlY3RvcnkgbW9yZSBjbG9zZWx5LiBJJiMzOTtsbCBsaWtlbHkgdXNlIGBjb2Rlc2VhcmNoLWRpci1pbmRleGAgb3IgYHJlYWQtZmlsZWAgb3IgYGdyZXBwZXJgIHRvIHF1aWNrbHkgZ2V0IGFuIG92ZXJ2aWV3IG9mIHRoZSBjb2RlIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUsIGlmIHBvc3NpYmxlLiBUaGlzIHNob3VsZCBoZWxwIGNsYXJpZnkgdGhlIGJ1cyBpbnRlcmZhY2UgYW5kIHBvdGVudGlhbCBmdXp6aW5nIHZlY3RvcnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDc6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5jb2Rlc2VhcmNoLWRpci1pbmRleDwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RGlyJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZXMmIzM0OzogWwogICAgJiMzNDsxMWFjLmMmIzM0OywKICAgICYjMzQ7MTFhYy5oJiMzNDssCiAgICAmIzM0OzExYXguYyYjMzQ7LAogICAgJiMzNDsxMWF4LmgmIzM0OywKICAgICYjMzQ7MTFoLmMmIzM0OywKICAgICYjMzQ7MTFuLmMmIzM0OywKICAgICYjMzQ7MTFuLmgmIzM0OywKICAgICYjMzQ7MTFuX2FnZ3IuYyYjMzQ7LAogICAgJiMzNDsxMW5fYWdnci5oJiMzNDssCiAgICAmIzM0OzExbl9yeHJlb3JkZXIuYyYjMzQ7LAogICAgJiMzNDsxMW5fcnhyZW9yZGVyLmgmIzM0OywKICAgICYjMzQ7Y2ZnLmgmIzM0OywKICAgICYjMzQ7Y2ZnODAyMTEuYyYjMzQ7LAogICAgJiMzNDtjZmc4MDIxMS5oJiMzNDssCiAgICAmIzM0O2NmcC5jJiMzNDssCiAgICAmIzM0O2NtZGV2dC5jJiMzNDssCiAgICAmIzM0O2NtZGV2dC5oJiMzNDssCiAgICAmIzM0O2RlYnVnZnMuYyYjMzQ7LAogICAgJiMzNDtldGh0b29sLmMmIzM0OywKICAgICYjMzQ7ZncuaCYjMzQ7LAogICAgJiMzNDtpZS5jJiMzNDssCiAgICAmIzM0O2luaXQuYyYjMzQ7LAogICAgJiMzNDtqb2luLmMmIzM0OywKICAgICYjMzQ7bWFpbi5jJiMzNDssCiAgICAmIzM0O21haW4uaCYjMzQ7LAogICAgJiMzNDtzY2FuLmMmIzM0OywKICAgICYjMzQ7c2Rpby5jJiMzNDssCiAgICAmIzM0O3NkaW8uaCYjMzQ7LAogICAgJiMzNDtzdGFfY2ZnLmMmIzM0OywKICAgICYjMzQ7c3RhX2NtZC5jJiMzNDssCiAgICAmIzM0O3N0YV9ldmVudC5jJiMzNDssCiAgICAmIzM0O3N0YV9yeC5jJiMzNDssCiAgICAmIzM0O3N0YV90eC5jJiMzNDssCiAgICAmIzM0O3R4cnguYyYjMzQ7LAogICAgJiMzNDt1YXBfY21kLmMmIzM0OywKICAgICYjMzQ7dWFwX2V2ZW50LmMmIzM0OywKICAgICYjMzQ7dWFwX3R4cnguYyYjMzQ7LAogICAgJiMzNDt1dGlsLmMmIzM0OywKICAgICYjMzQ7dXRpbC5oJiMzNDssCiAgICAmIzM0O3dtbS5jJiMzNDssCiAgICAmIzM0O3dtbS5oJiMzNDsKICBdLAogICYjMzQ7U3ViZGlycyYjMzQ7OiBudWxsCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwNzo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDAyCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogNTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqS2NvbmZpZyBIdW50aW5nIGZvciBueHB3aWZpKioKCk9rYXksIHRpbWUgdG8gdHJhY2sgZG93biB0aGUgS2NvbmZpZyBlbnRyaWVzIHJlbGF0ZWQgdG8gYG54cHdpZmlgLiBXaGVyZSBhcmUgdGhleSBoaWRpbmc/IE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHVzZSBgZ3JlcGAgYW5kIHNlYXJjaCBmb3IgdGhlIHN0cmluZyBgbnhwd2lmaWAuIFRoYXQgc2hvdWxkIGJlIGEgcXVpY2sgd2F5IHRvIGxvY2F0ZSBhbnkgbWVudGlvbnMgd2l0aGluIHRoZSBidWlsZCBzeXN0ZW0uIEFsdGVybmF0aXZlbHksIEkga25vdyBJIGNhbiBvZnRlbiBmaW5kIGRyaXZlcnMgd2l0aGluIGBkcml2ZXJzL25ldC93aXJlbGVzc2Agd2hpY2ggbWlnaHQgY29udGFpbiBhIGRlZGljYXRlZCBgbnhwYCBkaXJlY3RvcnkgYW5kIHRoZW4gYSBgS2NvbmZpZ2AgZmlsZS4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL0tjb25maWdgIGFuZCBhbHNvIHRoZSBtb3JlIGdlbmVyYWwgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWdgIHRvIGJlIHRob3JvdWdoLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhlIEtjb25maWcgZmlsZXMgcmV2ZWFsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA3OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O254cHdpZmkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTUxNzIgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9LY29uZmlnPTEzPWlmIFdMQU5fVkVORE9SX05YUFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL0tjb25maWctMTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvS2NvbmZpZzoxNTpzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL0tjb25maWctMTYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL01ha2VmaWxlLTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvTWFrZWZpbGU6MzpvYmotJChDT05GSUdfTlhQV0lGSSlcdCYjNDM7PSBueHB3aWZpL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0yLS8qXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MzogKiBueHB3aWZpIDgwMi4xMWFjIGhlbHBlcnNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy00LSAqIENvcHlyaWdodCAyMDExLTIwMjQgTlhQXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jPTM2PXN0YXRpYyB1MTZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzozNzpueHB3aWZpX2NvbnZlcnRfbWNzbWFwX3RvX21heHJhdGUoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0zOC1cdFx0XHRcdCAgdTE2IGJhbmRzLCB1MTYgbWNzX21hcClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtNDItXHR1MzIgdXNyX3ZodF9jYXBfaW5mbyA9IDA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6NDM6XHRzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cdTAwM2VhZGFwdGVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTQ0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYz03OT1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjgwOm54cHdpZmlfZmlsbF92aHRfY2FwX2luZm8oc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy04MS1cdFx0XHQgIHN0cnVjdCBpZWVlODAyMTFfdmh0X2NhcCAqdmh0X2NhcCwgdTE2IGJhbmRzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTgyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzo4MzpcdHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIgPSBwcml2LVx1MDAzZWFkYXB0ZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtODQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jPTkzPXZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzo5NDpueHB3aWZpX2ZpbGxfdmh0X2NhcF90bHYoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy05NS1cdFx0XHQgc3RydWN0IGllZWU4MDIxMV92aHRfY2FwICp2aHRfY2FwLCB1MTYgYmFuZHMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtOTYte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjk3Olx0c3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtXHUwMDNlYWRhcHRlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy05OC1cdHUxNiBtY3NfbWFwX3VzZXIsIG1jc19tYXBfcmVzcCwgbWNzX21hcF9yZXN1bHQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTEwMS1cdC8qIEZpbGwgVkhUIGNhcGFiaWxpdHkgaW5mby4gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxMDI6XHRueHB3aWZpX2ZpbGxfdmh0X2NhcF9pbmZvKHByaXYsIHZodF9jYXAsIGJhbmRzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xMDMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTEyMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxMjQ6XHR0bXAgPSBueHB3aWZpX2NvbnZlcnRfbWNzbWFwX3RvX21heHJhdGUocHJpdiwgYmFuZHMsIG1jc19tYXBfcmVzdWx0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xMjUtXHR2aHRfY2FwLVx1MDAzZXN1cHBfbWNzLnJ4X2hpZ2hlc3QgPSBjcHVfdG9fbGUxNih0bXApO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTQ2Olx0dG1wID0gbnhwd2lmaV9jb252ZXJ0X21jc21hcF90b19tYXhyYXRlKHByaXYsIGJhbmRzLCBtY3NfbWFwX3Jlc3VsdCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTQ3LVx0dmh0X2NhcC1cdTAwM2VzdXBwX21jcy50eF9oaWdoZXN0ID0gY3B1X3RvX2xlMTYodG1wKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTQ5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE1MDppbnQgbnhwd2lmaV9jbWRfYXBwZW5kXzExYWNfdGx2KHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTUxOlx0XHRcdFx0c3RydWN0IG54cHdpZmlfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTUyLVx0XHRcdFx0dTggKipidWZmZXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTUzLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxNTQ6XHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc192aHRjYXAgKnZodF9jYXA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTU1Olx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfb3Blcl9tb2RlX250ZiAqb3Blcl9udGY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTU2LVx0c3RydWN0IGllZWVfdHlwZXNfb3Blcl9tb2RlX250ZiAqaWVlZV9vcGVyX250ZjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxNTc6XHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc192aHRfb3BlciAqdmh0X29wO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE1ODpcdHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIgPSBwcml2LVx1MDAzZWFkYXB0ZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTU5LVx0dTggc3VwcF9jaHdkX3NldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTY5LVx0aWYgKGJzc19kZXNjLVx1MDAzZWJjbl92aHRfY2FwKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTcwOlx0XHR2aHRfY2FwID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX3ZodGNhcCAqKSpidWZmZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTcxLVx0XHRtZW1zZXQodmh0X2NhcCwgMCwgc2l6ZW9mKCp2aHRfY2FwKSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE3NC1cdFx0XHRjcHVfdG9fbGUxNihzaXplb2Yoc3RydWN0IGllZWU4MDIxMV92aHRfY2FwKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTc1Olx0XHRtZW1jcHkoKHU4ICopdmh0X2NhcCAmIzQzOyBzaXplb2Yoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVhZGVyKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNzYtXHRcdCAgICAgICAodTggKilic3NfZGVzYy1cdTAwM2ViY25fdmh0X2NhcCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTc4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE3OTpcdFx0bnhwd2lmaV9maWxsX3ZodF9jYXBfdGx2KHByaXYsIFx1MDAyNnZodF9jYXAtXHUwMDNldmh0X2NhcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xODAtXHRcdFx0XHRcdCBic3NfZGVzYy1cdTAwM2Vic3NfYmFuZCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE4Ny1cdFx0aWYgKHByaXYtXHUwMDNlYnNzX21vZGUgPT0gTkw4MDIxMV9JRlRZUEVfU1RBVElPTikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE4ODpcdFx0XHR2aHRfb3AgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfdmh0X29wZXIgKikqYnVmZmVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE4OS1cdFx0XHRtZW1zZXQodmh0X29wLCAwLCBzaXplb2YoKnZodF9vcCkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xOTItXHRcdFx0dmh0X29wLVx1MDAzZWhlYWRlci5sZW4gID0gY3B1X3RvX2xlMTYoc2l6ZW9mKCp2aHRfb3ApIC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxOTM6XHRcdFx0XHRzaXplb2Yoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVhZGVyKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTk0LVx0XHRcdG1lbWNweSgodTggKil2aHRfb3AgJiM0MztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxOTU6XHRcdFx0XHRzaXplb2Yoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVhZGVyKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xOTYtXHRcdFx0ICAgICAgICh1OCAqKWJzc19kZXNjLVx1MDAzZWJjbl92aHRfb3Blcixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMjQ0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjI0NTppbnQgbnhwd2lmaV9jbWRfMTFhY19jZmcoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0yNDYtXHRcdFx0IHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpjbWQsIHUxNiBjbWRfYWN0aW9uLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjI0NzpcdFx0XHQgc3RydWN0IG54cHdpZmlfMTFhY192aHRfY2ZnICpjZmcpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMjQ4LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMjY0LS8qIEluaXRpYWxpemUgQmxvY2tBY2sgcGFyYW1ldGVycyBmb3IgMTFhYy4gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoyNjU6dm9pZCBueHB3aWZpX3NldF8xMWFjX2JhX3BhcmFtcyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTI2Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5oLTItLypcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuaDozOiAqIG54cHdpZmk6IDgwMi4xMWFjIChWSFQpIGRlZmluaXRpb25zXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmgtNC0gKlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuaD0xND1lbnVtIHZodF9jZmdfbWlzY19jb25maWcge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuaC0yNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuaDoyNTppbnQgbnhwd2lmaV9jbWRfYXBwZW5kXzExYWNfdGx2KHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmg6MjY6XHRcdFx0XHRzdHJ1Y3Qgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuaC0yNy1cdFx0XHRcdHU4ICoqYnVmZmVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuaDoyODppbnQgbnhwd2lmaV9jbWRfMTFhY19jZmcoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuaC0yOS1cdFx0XHQgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCwgdTE2IGNtZF9hY3Rpb24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmg6MzA6XHRcdFx0IHN0cnVjdCBueHB3aWZpXzExYWNfdmh0X2NmZyAqY2ZnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuaDozMTp2b2lkIG54cHdpZmlfZmlsbF92aHRfY2FwX3RsdihzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5oLTMyLVx0XHRcdCAgICAgIHN0cnVjdCBpZWVlODAyMTFfdmh0X2NhcCAqdmh0X2NhcCwgdTE2IGJhbmRzKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMS0vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjovKiBueHB3aWZpOiA4MDIuMTFheCAoSEUpIHN1cHBvcnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDI0IE5YUFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxMTp2b2lkIG54cHdpZmlfdXBkYXRlXzExYXhfY2FwKHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTItXHRcdFx0ICAgICBzdHJ1Y3QgaHdfc3BlY19leHRlbnNpb24gKmh3X2hlX2NhcClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMy17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTQ6XHRzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE1Olx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICpoZV9jYXAgPSBOVUxMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE2Olx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICp1c2VyX2hlX2NhcCA9IE5VTEw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTc6XHR1OCBoZWFkZXJfbGVuID0gc2l6ZW9mKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlYWRlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTgtXHR1MTYgZGF0YV9sZW4gPSBsZTE2X3RvX2NwdShod19oZV9jYXAtXHUwMDNlaGVhZGVyLmxlbik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTIyLVx0aWYgKChkYXRhX2xlbiAmIzQzOyBoZWFkZXJfbGVuKSBcdTAwM2Ugc2l6ZW9mKGFkYXB0ZXItXHUwMDNlaHdfaGVfY2FwKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjIzOlx0XHRueHB3aWZpX2RiZyhhZGFwdGVyLCBFUlJPUixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yNC1cdFx0XHQgICAgXCYjMzQ7aHdfaGVfY2FwIHRvbyBiaWcsIGxlbj0lZFxcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6Mjk6XHRoZV9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICopaHdfaGVfY2FwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTMwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zNy1cdFx0aGVfY2FwXzJnID0gdHJ1ZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozODpcdFx0bnhwd2lmaV9kYmdfZHVtcChhZGFwdGVyLCBDTURfRCwgXCYjMzQ7Mi40RyBIRSBjYXBhYmlsaXR5IGVsZW1lbnQgXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM5LVx0XHRcdFx0IGFkYXB0ZXItXHUwMDNlaHdfMmdfaGVfY2FwLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00NS1cdFx0YWRhcHRlci1cdTAwM2Vmd19iYW5kcyB8PSBCQU5EX0FBWDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0NjpcdFx0bnhwd2lmaV9kYmdfZHVtcChhZGFwdGVyLCBDTURfRCwgXCYjMzQ7NUcgSEUgY2FwYWJpbGl0eSBlbGVtZW50IFwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00Ny1cdFx0XHRcdCBhZGFwdGVyLVx1MDAzZWh3X2hlX2NhcCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTctXHRcdFx0ICAgICAgIHNpemVvZihhZGFwdGVyLVx1MDAzZWh3XzJnX2hlX2NhcCkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU4Olx0XHRcdHVzZXJfaGVfY2FwID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU5LVx0XHRcdFx0cHJpdi1cdTAwM2V1c2VyXzJnX2hlX2NhcDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNjMtXHRcdFx0ICAgICAgIHNpemVvZihhZGFwdGVyLVx1MDAzZWh3X2hlX2NhcCkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjY0Olx0XHRcdHVzZXJfaGVfY2FwID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTY1LVx0XHRcdFx0cHJpdi1cdTAwM2V1c2VyX2hlX2NhcDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6Nzk6Ym9vbCBueHB3aWZpXzExYXhfYmFuZGNvbmZpZ19hbGxvd2VkKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6ODA6XHRcdFx0XHQgICAgIHN0cnVjdCBueHB3aWZpX2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTgxLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtOTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6OTU6aW50IG54cHdpZmlfZmlsbF9oZV9jYXBfdGx2KHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6OTY6XHRcdFx0ICAgIHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqaGVfY2FwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTk3LVx0XHRcdCAgICB1MTYgYmFuZHMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtOTgte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjk5Olx0c3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtXHUwMDNlYWRhcHRlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxMDA6XHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKmh3X2hlX2NhcCA9IE5VTEw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTAxLVx0dTE2IHJ4X25zcywgdHhfbnNzO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMDgtXHRcdG1lbWNweShoZV9jYXAsIHByaXYtXHUwMDNldXNlcl9oZV9jYXAsIHByaXYtXHUwMDNldXNlcl9oZV9jYXBfbGVuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxMDk6XHRcdGh3X2hlX2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKilhZGFwdGVyLVx1MDAzZWh3X2hlX2NhcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMTAtXHRcdHJldF9sZW4gPSBwcml2LVx1MDAzZXVzZXJfaGVfY2FwX2xlbjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTEyLVx0XHRtZW1jcHkoaGVfY2FwLCBwcml2LVx1MDAzZXVzZXJfMmdfaGVfY2FwLCBwcml2LVx1MDAzZXVzZXJfMmdfaGVfY2FwX2xlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTEzOlx0XHRod19oZV9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICopYWRhcHRlci1cdTAwM2Vod18yZ19oZV9jYXA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTE0LVx0XHRyZXRfbGVuID0gcHJpdi1cdTAwM2V1c2VyXzJnX2hlX2NhcF9sZW47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTEyNS1cdGZvciAobnNzID0gMTsgbnNzIFx1MDAzYz0gODsgbnNzJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjEyNjpcdFx0Y2ZnX3ZhbHVlID0gbnhwd2lmaV9nZXRfaGVfbnNzX21jcyhoZV9jYXAtXHUwMDNlcnhfbWNzXzgwLCBuc3MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjEyNzpcdFx0aHdfdmFsdWUgPSBueHB3aWZpX2dldF9oZV9uc3NfbWNzKGh3X2hlX2NhcC1cdTAwM2VyeF9tY3NfODAsIG5zcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTI4LVx0XHRpZiAocnhfbnNzICE9IDAgXHUwMDI2XHUwMDI2IG5zcyBcdTAwM2UgcnhfbnNzKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMzAtXHRcdGlmIChod192YWx1ZSA9PSBOT19OU1NfU1VQUE9SVCB8fCBjZmdfdmFsdWUgPT0gTk9fTlNTX1NVUFBPUlQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTMxOlx0XHRcdG54cHdpZmlfc2V0X2hlX25zc19tY3MoXHUwMDI2aGVfY2FwLVx1MDAzZXJ4X21jc184MCwgbnNzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTEzMi1cdFx0XHRcdFx0ICAgICAgIE5PX05TU19TVVBQT1JUKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMzMtXHRcdGVsc2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxMzQ6XHRcdFx0bnhwd2lmaV9zZXRfaGVfbnNzX21jcyhcdTAwMjZoZV9jYXAtXHUwMDNlcnhfbWNzXzgwLCBuc3MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTM1LVx0XHRcdFx0XHQgICAgICAgbWluKGNmZ192YWx1ZSwgaHdfdmFsdWUpKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTM4LVx0Zm9yIChuc3MgPSAxOyBuc3MgXHUwMDNjPSA4OyBuc3MmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTM5Olx0XHRjZmdfdmFsdWUgPSBueHB3aWZpX2dldF9oZV9uc3NfbWNzKGhlX2NhcC1cdTAwM2V0eF9tY3NfODAsIG5zcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTQwOlx0XHRod192YWx1ZSA9IG54cHdpZmlfZ2V0X2hlX25zc19tY3MoaHdfaGVfY2FwLVx1MDAzZXR4X21jc184MCwgbnNzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNDEtXHRcdGlmICh0eF9uc3MgIT0gMCBcdTAwMjZcdTAwMjYgbnNzIFx1MDAzZSB0eF9uc3MpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE0My1cdFx0aWYgKGh3X3ZhbHVlID09IE5PX05TU19TVVBQT1JUIHx8IGNmZ192YWx1ZSA9PSBOT19OU1NfU1VQUE9SVClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNDQ6XHRcdFx0bnhwd2lmaV9zZXRfaGVfbnNzX21jcyhcdTAwMjZoZV9jYXAtXHUwMDNldHhfbWNzXzgwLCBuc3MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTQ1LVx0XHRcdFx0XHQgICAgICAgTk9fTlNTX1NVUFBPUlQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE0Ni1cdFx0ZWxzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE0NzpcdFx0XHRueHB3aWZpX3NldF9oZV9uc3NfbWNzKFx1MDAyNmhlX2NhcC1cdTAwM2V0eF9tY3NfODAsIG5zcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNDgtXHRcdFx0XHRcdCAgICAgICBtaW4oY2ZnX3ZhbHVlLCBod192YWx1ZSkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTU0OmludCBueHB3aWZpX2NtZF9hcHBlbmRfMTFheF90bHYoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNTU6XHRcdFx0XHRzdHJ1Y3Qgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNTYtXHRcdFx0XHR1OCAqKmJ1ZmZlcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNTcte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE1ODpcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqaGVfY2FwID0gTlVMTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNTktXHRpbnQgcmV0X2xlbjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTYzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE2NDpcdGhlX2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKikqYnVmZmVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE2NTpcdHJldF9sZW4gPSBueHB3aWZpX2ZpbGxfaGVfY2FwX3Rsdihwcml2LCBoZV9jYXAsIGJzc19kZXNjLVx1MDAzZWJzc19iYW5kKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNjYtXHQqYnVmZmVyICYjNDM7PSByZXRfbGVuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTcxOmludCBueHB3aWZpX2NtZF8xMWF4X2NmZyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE3Mi1cdFx0XHQgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCwgdTE2IGNtZF9hY3Rpb24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTczOlx0XHRcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2hlX2NmZyAqYXhfY2ZnKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE3NC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE3Ni1cdHUxNiBjbWRfc2l6ZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNzc6XHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZWFkZXIgKmhlYWRlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNzgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE4Ni1cdCAgICBheF9jZmctXHUwMDNlaGVfY2FwX2NmZy5leHRfaWQgPT0gV0xBTl9FSURfRVhUX0hFX0NBUEFCSUxJVFkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxODc6XHRcdGhlYWRlciA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZWFkZXIgKiloZV9jZmctXHUwMDNldGx2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE4OC1cdFx0aGVhZGVyLVx1MDAzZXR5cGUgPSBjcHVfdG9fbGUxNihheF9jZmctXHUwMDNlaGVfY2FwX2NmZy5pZCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTIwMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyMDE6aW50IG54cHdpZmlfcmV0XzExYXhfY2ZnKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjAyLVx0XHRcdCBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqcmVzcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyMDM6XHRcdFx0IHN0cnVjdCBueHB3aWZpXzExYXhfaGVfY2ZnICpheF9jZmcpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjA0LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yMDUtXHRzdHJ1Y3QgaG9zdF9jbWRfMTFheF9jZmcgKmhlX2NmZyA9IFx1MDAyNnJlc3AtXHUwMDNlcGFyYW1zLmF4X2NmZztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyMDY6XHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZWFkZXIgKmhlYWRlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yMDctXHR1MTYgbGVmdF9sZW4sIHRsdl90eXBlLCB0bHZfbGVuO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTIwOC1cdHU4IGV4dF9pZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyMDk6XHRzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2hlX2NhcF9jZmcgKmhlX2NhcCA9IFx1MDAyNmF4X2NmZy1cdTAwM2VoZV9jYXBfY2ZnO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTIxMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yMTEtXHRsZWZ0X2xlbiA9IGxlMTZfdG9fY3B1KHJlc3AtXHUwMDNlc2l6ZSkgLSBzaXplb2YoKmhlX2NmZykgLSBTX0RTX0dFTjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyMTI6XHRoZWFkZXIgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVhZGVyICopaGVfY2ZnLVx1MDAzZXRsdjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yMTMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI0Mi1cdFx0bGVmdF9sZW4gLT0gKHNpemVvZigqaGVhZGVyKSAmIzQzOyB0bHZfbGVuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNDM6XHRcdGhlYWRlciA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZWFkZXIgKikoKHU4ICopaGVhZGVyICYjNDM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjQ0LVx0XHRcdFx0XHRcdFx0ICAgIHNpemVvZigqaGVhZGVyKSAmIzQzO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yNTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjUxOmludCBueHB3aWZpX2NtZF8xMWF4X2NtZChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI1Mi1cdFx0XHQgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCwgdTE2IGNtZF9hY3Rpb24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjUzOlx0XHRcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2NtZF9jZmcgKmF4X2NtZClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yNTQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI1NTpcdHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIgPSBwcml2LVx1MDAzZWFkYXB0ZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjU2LVx0c3RydWN0IGhvc3RfY21kXzExYXhfY21kICpoZV9jbWQgPSBcdTAwMjZjbWQtXHUwMDNlcGFyYW1zLmF4X2NtZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yNTctXHR1MTYgY21kX3NpemU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjU4Olx0c3RydWN0IG54cHdpZmlfMTFheF9zcl9jbWQgKnNyX2NtZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNTk6XHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19kYXRhICp0bHY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjYwOlx0c3RydWN0IG54cHdpZmlfMTFheF9iZWFtX2NtZCAqYmVhbV9jbWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjYxOlx0c3RydWN0IG54cHdpZmlfMTFheF9odGNfY21kICpodGNfY21kO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI2MjpcdHN0cnVjdCBueHB3aWZpXzExYXhfdHhvbWlfY21kICp0eG1vaV9jbWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjYzOlx0c3RydWN0IG54cHdpZmlfMTFheF90b2x0aW1lX2NtZCAqdG9sdGltZV9jbWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjY0Olx0c3RydWN0IG54cHdpZmlfMTFheF90eG9wX2NtZCAqdHhvcF9jbWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjY1Olx0c3RydWN0IG54cHdpZmlfMTFheF9zZXRfYnNycF9jbWQgKnNldF9ic3JwX2NtZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNjY6XHRzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2xsZGVfY21kICpsbGRlX2NtZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yNjctXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI3NS1cdGNhc2UgTlhQV0lGSV8xMUFYQ01EX1NSX1NVQklEOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI3NjpcdFx0c3JfY21kID0gKHN0cnVjdCBueHB3aWZpXzExYXhfc3JfY21kICopXHUwMDI2YXhfY21kLVx1MDAzZXBhcmFtO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI3Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNzg6XHRcdHRsdiA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19kYXRhICopaGVfY21kLVx1MDAzZXZhbDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yNzktXHRcdHRsdi1cdTAwM2VoZWFkZXIudHlwZSA9IGNwdV90b19sZTE2KHNyX2NtZC1cdTAwM2V0eXBlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjg1LVx0Y2FzZSBOWFBXSUZJXzExQVhDTURfQkVBTV9TVUJJRDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyODY6XHRcdGJlYW1fY21kID0gKHN0cnVjdCBueHB3aWZpXzExYXhfYmVhbV9jbWQgKilcdTAwMjZheF9jbWQtXHUwMDNlcGFyYW07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjg3LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yOTEtXHRjYXNlIE5YUFdJRklfMTFBWENNRF9IVENfU1VCSUQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjkyOlx0XHRodGNfY21kID0gKHN0cnVjdCBueHB3aWZpXzExYXhfaHRjX2NtZCAqKVx1MDAyNmF4X2NtZC1cdTAwM2VwYXJhbTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yOTMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI5Ny1cdGNhc2UgTlhQV0lGSV8xMUFYQ01EX1RYT01JX1NVQklEOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI5ODpcdFx0dHhtb2lfY21kID1cdChzdHJ1Y3Qgbnhwd2lmaV8xMWF4X3R4b21pX2NtZCAqKVx1MDAyNmF4X2NtZC1cdTAwM2VwYXJhbTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yOTktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTMwMy1cdGNhc2UgTlhQV0lGSV8xMUFYQ01EX09CU1NfVE9MVElNRV9TVUJJRDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozMDQ6XHRcdHRvbHRpbWVfY21kID0gKHN0cnVjdCBueHB3aWZpXzExYXhfdG9sdGltZV9jbWQgKilcdTAwMjZheF9jbWQtXHUwMDNlcGFyYW07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzA1LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zMTAtXHRjYXNlIE5YUFdJRklfMTFBWENNRF9UWE9QUlRTX1NVQklEOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjMxMTpcdFx0dHhvcF9jbWQgPSAoc3RydWN0IG54cHdpZmlfMTFheF90eG9wX2NtZCAqKVx1MDAyNmF4X2NtZC1cdTAwM2VwYXJhbTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zMTItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTMxNy1cdGNhc2UgTlhQV0lGSV8xMUFYQ01EX1NFVF9CU1JQX1NVQklEOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjMxODpcdFx0c2V0X2JzcnBfY21kID0gKHN0cnVjdCBueHB3aWZpXzExYXhfc2V0X2JzcnBfY21kICopXHUwMDI2YXhfY21kLVx1MDAzZXBhcmFtO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTMxOS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzIzLVx0Y2FzZSBOWFBXSUZJXzExQVhDTURfTExERV9TVUJJRDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozMjQ6XHRcdGxsZGVfY21kID0gKHN0cnVjdCBueHB3aWZpXzExYXhfbGxkZV9jbWQgKilcdTAwMjZheF9jbWQtXHUwMDNlcGFyYW07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzI1LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zMjktXHRkZWZhdWx0OlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjMzMDpcdFx0bnhwd2lmaV9kYmcoYWRhcHRlciwgRVJST1IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzMxLVx0XHRcdCAgICBcJiMzNDslczogVW5rbm93biBzdWIgY29tbWFuZDogJWRcXG5cJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM0MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozNDE6aW50IG54cHdpZmlfcmV0XzExYXhfY21kKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzQyLVx0XHRcdCBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqcmVzcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozNDM6XHRcdFx0IHN0cnVjdCBueHB3aWZpXzExYXhfY21kX2NmZyAqYXhfY21kKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM0NC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MzQ1Olx0c3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtXHUwMDNlYWRhcHRlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zNDYtXHRzdHJ1Y3QgaG9zdF9jbWRfMTFheF9jbWQgKmhlX2NtZCA9IFx1MDAyNnJlc3AtXHUwMDNlcGFyYW1zLmF4X2NtZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozNDc6XHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19kYXRhICp0bHY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzQ4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zNTItXHRjYXNlIE5YUFdJRklfMTFBWENNRF9TUl9TVUJJRDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozNTM6XHRcdHRsdiA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19kYXRhICopaGVfY21kLVx1MDAzZXZhbDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zNTQtXHRcdG1lbWNweShheF9jbWQtXHUwMDNlcGFyYW0uc3JfY2ZnLnBhcmFtLm9ic3NfcGRfb2Zmc2V0Lm9mZnNldCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzgzLVx0ZGVmYXVsdDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozODQ6XHRcdG54cHdpZmlfZGJnKGFkYXB0ZXIsIEVSUk9SLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM4NS1cdFx0XHQgICAgXCYjMzQ7JXM6IFVua25vd24gc3ViIGNvbW1hbmQ6ICVkXFxuXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zOTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MzkzOnN0YXRpYyB1OCBueHB3aWZpX2lzX2FwXzExYXhfdHd0X3N1cHBvcnRlZChzdHJ1Y3Qgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zOTQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDEwOmJvb2wgbnhwd2lmaV9pc18xMWF4X3R3dF9zdXBwb3J0ZWQoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0MTE6XHRcdFx0XHQgICBzdHJ1Y3Qgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MTIte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQxMzpcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqdXNlcl9oZV9jYXA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDE0Olx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICpod19oZV9jYXA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDE1LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDE5Olx0aWYgKCFueHB3aWZpX2lzX2FwXzExYXhfdHd0X3N1cHBvcnRlZChic3NfZGVzYykpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0MjA6XHRcdG54cHdpZmlfZGJnKHByaXYtXHUwMDNlYWRhcHRlciwgTVNHLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQyMS1cdFx0XHQgICAgXCYjMzQ7QVAgZG9uJiMzOTt0IHN1cHBvcnQgdHd0IGZlYXR1cmVcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MjUtXHRpZiAoYnNzX2Rlc2MtXHUwMDNlYnNzX2JhbmQgXHUwMDI2IEJBTkRfQSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQyNjpcdFx0aHdfaGVfY2FwID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQyNy1cdFx0XHRwcml2LVx1MDAzZWFkYXB0ZXItXHUwMDNlaHdfaGVfY2FwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQyODpcdFx0dXNlcl9oZV9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICopXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDI5LVx0XHRcdHByaXYtXHUwMDNldXNlcl9oZV9jYXA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDMwLVx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0MzE6XHRcdGh3X2hlX2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MzItXHRcdFx0cHJpdi1cdTAwM2VhZGFwdGVyLVx1MDAzZWh3XzJnX2hlX2NhcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0MzM6XHRcdHVzZXJfaGVfY2FwID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQzNC1cdFx0XHRwcml2LVx1MDAzZXVzZXJfMmdfaGVfY2FwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MzctXHRpZiAoIShod19oZV9jYXAtXHUwMDNlaGVfbWFjX2NhcFswXSBcdTAwMjYgSEVfTUFDX0NBUF9UV1RfUkVRX1NVUFBPUlQpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDM4Olx0XHRueHB3aWZpX2RiZyhwcml2LVx1MDAzZWFkYXB0ZXIsIE1TRyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MzktXHRcdFx0ICAgIFwmIzM0O0ZXIGRvbiYjMzk7dCBzdXBwb3J0IFRXVFxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ0My1cdGlmICghKHVzZXJfaGVfY2FwLVx1MDAzZWhlX21hY19jYXBbMF0gXHUwMDI2IEhFX01BQ19DQVBfVFdUX1JFUV9TVVBQT1JUKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ0NDpcdFx0bnhwd2lmaV9kYmcocHJpdi1cdTAwM2VhZGFwdGVyLCBNU0csXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDQ1LVx0XHRcdCAgICBcJiMzNDtVU0VSIEhFX01BQ19DQVAgZG9uJiMzOTt0IHN1cHBvcnQgVFdUXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDUxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ1Mjp1OCBueHB3aWZpX2lzX3N0YV8xMWF4X3R3dF9yZXFfc3VwcG9ydGVkKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDUzLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0NTQ6XHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKnVzZXJfaGVfY2FwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ1NS1cdHU4IHJldCA9IDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ1OS1cdFx0aWYgKHByaXYtXHUwMDNlY29uZmlnX2JhbmRzIFx1MDAyNiBCQU5EX0FBWClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0NjA6XHRcdFx0dXNlcl9oZV9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICopcHJpdi1cdTAwM2V1c2VyX2hlX2NhcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00NjEtXHRcdGVsc2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0NjI6XHRcdFx0dXNlcl9oZV9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICopcHJpdi1cdTAwM2V1c2VyXzJnX2hlX2NhcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00NjMtXHRcdHJldCA9IHVzZXJfaGVfY2FwLVx1MDAzZWhlX21hY19jYXBbMF0gXHUwMDI2IEhFX01BQ19DQVBfVFdUX1JFUV9TVVBQT1JUO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00NjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDY5OmludCBueHB3aWZpX2NtZF90d3RfY2ZnKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDcwLVx0XHRcdHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpjbWQsIHUxNiBjbWRfYWN0aW9uLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ3MTpcdFx0XHRzdHJ1Y3Qgbnhwd2lmaV90d3RfY2ZnICp0d3RfY2ZnKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ3Mi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDczOlx0c3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtXHUwMDNlYWRhcHRlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00NzQtXHRzdHJ1Y3QgaG9zdF9jbWRfdHd0X2NmZyAqdHd0X2NmZ19jbWQgPSBcdTAwMjZjbWQtXHUwMDNlcGFyYW1zLnR3dF9jZmc7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDc1Olx0c3RydWN0IG54cHdpZmlfdHd0X3NldHVwICp0d3Rfc2V0dXA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDc2Olx0c3RydWN0IG54cHdpZmlfdHd0X3RlYXJkb3duICp0d3RfdGVhcmRvd247XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDc3Olx0c3RydWN0IG54cHdpZmlfdHd0X3JlcG9ydCAqdHd0X3JlcG9ydDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0Nzg6XHRzdHJ1Y3Qgbnhwd2lmaV90d3RfaW5mb3JtYXRpb24gKnR3dF9pbmZvcm1hdGlvbjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0Nzk6XHRzdHJ1Y3Qgbnhwd2lmaV9idHd0X2FwX2NvbmZpZyAqYnR3dF9hcF9jb25maWc7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDgwLVx0dTggaTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDkwLVx0Y2FzZSBOWFBXSUZJXzExQVhfVFdUX1NFVFVQX1NVQklEOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ5MTpcdFx0dHd0X3NldHVwID0gKHN0cnVjdCBueHB3aWZpX3R3dF9zZXR1cCAqKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ5Mi1cdFx0XHR0d3RfY2ZnX2NtZC1cdTAwM2V2YWw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDkzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ5NDpcdFx0bWVtc2V0KHR3dF9zZXR1cCwgMHgwMCwgc2l6ZW9mKHN0cnVjdCBueHB3aWZpX3R3dF9zZXR1cCkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ5NS1cdFx0dHd0X3NldHVwLVx1MDAzZWltcGxpY2l0ID0gdHd0X2NmZy1cdTAwM2VwYXJhbS50d3Rfc2V0dXAuaW1wbGljaXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUwNy1cdFx0dHd0X3NldHVwLVx1MDAzZWJjbl9taXNzX3RocmVzaG9sZCA9IHR3dF9jZmctXHUwMDNlcGFyYW0udHd0X3NldHVwLmJjbl9taXNzX3RocmVzaG9sZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1MDg6XHRcdGNtZF9zaXplICYjNDM7PSBzaXplb2Yoc3RydWN0IG54cHdpZmlfdHd0X3NldHVwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MDktXHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUxMC1cdGNhc2UgTlhQV0lGSV8xMUFYX1RXVF9URUFSRE9XTl9TVUJJRDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1MTE6XHRcdHR3dF90ZWFyZG93biA9IChzdHJ1Y3Qgbnhwd2lmaV90d3RfdGVhcmRvd24gKilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MTItXHRcdFx0dHd0X2NmZ19jbWQtXHUwMDNldmFsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUxMy1cdFx0bWVtc2V0KHR3dF90ZWFyZG93biwgMHgwMCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1MTQ6XHRcdCAgICAgICBzaXplb2Yoc3RydWN0IG54cHdpZmlfdHd0X3RlYXJkb3duKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTE1LVx0XHR0d3RfdGVhcmRvd24tXHUwMDNlZmxvd19pZGVudGlmaWVyID1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTIwLVx0XHRcdHR3dF9jZmctXHUwMDNlcGFyYW0udHd0X3RlYXJkb3duLnRlYXJkb3duX2FsbF90d3Q7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTIxOlx0XHRjbWRfc2l6ZSAmIzQzOz0gc2l6ZW9mKHN0cnVjdCBueHB3aWZpX3R3dF90ZWFyZG93bik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTIyLVx0XHRicmVhaztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MjMtXHRjYXNlIE5YUFdJRklfMTFBWF9UV1RfUkVQT1JUX1NVQklEOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjUyNDpcdFx0dHd0X3JlcG9ydCA9IChzdHJ1Y3Qgbnhwd2lmaV90d3RfcmVwb3J0ICopXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTI1LVx0XHRcdHR3dF9jZmdfY21kLVx1MDAzZXZhbDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1MjY6XHRcdG1lbXNldCh0d3RfcmVwb3J0LCAweDAwLCBzaXplb2Yoc3RydWN0IG54cHdpZmlfdHd0X3JlcG9ydCkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUyNy1cdFx0dHd0X3JlcG9ydC1cdTAwM2V0eXBlID0gdHd0X2NmZy1cdTAwM2VwYXJhbS50d3RfcmVwb3J0LnR5cGU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTI4Olx0XHRjbWRfc2l6ZSAmIzQzOz0gc2l6ZW9mKHN0cnVjdCBueHB3aWZpX3R3dF9yZXBvcnQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUyOS1cdFx0YnJlYWs7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTMwLVx0Y2FzZSBOWFBXSUZJXzExQVhfVFdUX0lORk9STUFUSU9OX1NVQklEOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjUzMTpcdFx0dHd0X2luZm9ybWF0aW9uID0gKHN0cnVjdCBueHB3aWZpX3R3dF9pbmZvcm1hdGlvbiAqKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUzMi1cdFx0XHR0d3RfY2ZnX2NtZC1cdTAwM2V2YWw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTMzLVx0XHRtZW1zZXQodHd0X2luZm9ybWF0aW9uLCAweDAwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjUzNDpcdFx0ICAgICAgIHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV90d3RfaW5mb3JtYXRpb24pKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MzUtXHRcdHR3dF9pbmZvcm1hdGlvbi1cdTAwM2VmbG93X2lkZW50aWZpZXIgPVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MzgtXHRcdFx0dHd0X2NmZy1cdTAwM2VwYXJhbS50d3RfaW5mb3JtYXRpb24uc3VzcGVuZF9kdXJhdGlvbjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1Mzk6XHRcdGNtZF9zaXplICYjNDM7PSBzaXplb2Yoc3RydWN0IG54cHdpZmlfdHd0X2luZm9ybWF0aW9uKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NDAtXHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU0MS1cdGNhc2UgTlhQV0lGSV8xMUFYX0JUV1RfQVBfQ09ORklHX1NVQklEOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU0MjpcdFx0YnR3dF9hcF9jb25maWcgPSAoc3RydWN0IG54cHdpZmlfYnR3dF9hcF9jb25maWcgKilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NDMtXHRcdFx0XHQgdHd0X2NmZ19jbWQtXHUwMDNldmFsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU0NC1cdFx0bWVtc2V0KGJ0d3RfYXBfY29uZmlnLCAweDAwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU0NTpcdFx0ICAgICAgIHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV9idHd0X2FwX2NvbmZpZykpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU0Ni1cdFx0YnR3dF9hcF9jb25maWctXHUwMDNlYXBfYmNhc3RfYmV0X3N0YV93YWl0ID1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTY0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU2NTpcdFx0Y21kX3NpemUgJiM0Mzs9IHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV9idHd0X2FwX2NvbmZpZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTY2LVx0XHRicmVhaztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NjctXHRkZWZhdWx0OlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU2ODpcdFx0bnhwd2lmaV9kYmcoYWRhcHRlciwgRVJST1IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTY5LVx0XHRcdCAgICBcJiMzNDtVbmtub3duIHN1YiBpZDogJWRcXG5cJiMzNDssIHR3dF9jZmctXHUwMDNlc3ViX2lkKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTc3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU3ODppbnQgbnhwd2lmaV9yZXRfdHd0X2NmZyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU3OS1cdFx0XHRzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqcmVzcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1ODA6XHRcdFx0c3RydWN0IG54cHdpZmlfdHd0X2NmZyAqdHd0X2NmZylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01ODEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01ODktXHQgICAgdHd0X2NmZy1cdTAwM2VzdWJfaWQgPT0gTlhQV0lGSV8xMUFYX1RXVF9SRVBPUlRfU1VCSUQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1OTA6XHRcdHN0cnVjdCBueHB3aWZpX3R3dF9yZXBvcnQgKnR3dF9yZXBvcnQgPVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU5MTpcdFx0XHQoc3RydWN0IG54cHdpZmlfdHd0X3JlcG9ydCAqKXR3dF9jZmdfY21kLVx1MDAzZXZhbDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01OTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTkzOlx0XHRtZW1jcHkoXHUwMDI2dHd0X2NmZy1cdTAwM2VwYXJhbS50d3RfcmVwb3J0LCB0d3RfcmVwb3J0LCBzaXplb2Yoc3RydWN0IG54cHdpZmlfdHd0X3JlcG9ydCkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU5NC1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtMi0vKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjM6ICogbnhwd2lmaTogODAyLjExYXggc3VwcG9ydFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTQtICpcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg9MTc9c3RhdGljIGlubGluZSB1MTZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDoxODpueHB3aWZpX2dldF9oZV9uc3NfbWNzKF9fbGUxNiBtY3NfbWFwX3NldCwgaW50IG5zcykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTE5LVx0cmV0dXJuICgobGUxNl90b19jcHUobWNzX21hcF9zZXQpIFx1MDAzZVx1MDAzZSAoMiAqIChuc3MgLSAxKSkpIFx1MDAyNiAweDMpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaD0yMj1zdGF0aWMgaW5saW5lIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDoyMzpueHB3aWZpX3NldF9oZV9uc3NfbWNzKF9fbGUxNiAqbWNzX21hcF9zZXQsIGludCBuc3MsIGludCB2YWx1ZSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTI0LVx0dTE2IHRlbXA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTMwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjMxOmJvb2wgbnhwd2lmaV9pc18xMWF4X3R3dF9zdXBwb3J0ZWQoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDozMjpcdFx0XHRcdCAgIHN0cnVjdCAgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtMzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6MzQ6dm9pZCBueHB3aWZpX3VwZGF0ZV8xMWF4X2NhcChzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTM1LVx0XHRcdCAgICAgc3RydWN0IGh3X3NwZWNfZXh0ZW5zaW9uICpod19oZV9jYXApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTM2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjM3OmJvb2wgbnhwd2lmaV8xMWF4X2JhbmRjb25maWdfYWxsb3dlZChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjM4Olx0XHRcdFx0ICAgICBzdHJ1Y3Qgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtMzktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NDA6aW50IG54cHdpZmlfY21kX2FwcGVuZF8xMWF4X3RsdihzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjQxOlx0XHRcdFx0c3RydWN0IG54cHdpZmlfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNDItXHRcdFx0XHR1OCAqKmJ1ZmZlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NDQ6aW50IG54cHdpZmlfZmlsbF9oZV9jYXBfdGx2KHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NDU6XHRcdFx0ICAgIHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqaGVfY2FwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTQ2LVx0XHRcdCAgICB1MTYgYmFuZHMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjQ3OmludCBueHB3aWZpX2NtZF8xMWF4X2NmZyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTQ4LVx0XHRcdCBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqY21kLCB1MTYgY21kX2FjdGlvbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDo0OTpcdFx0XHQgc3RydWN0IG54cHdpZmlfMTFheF9oZV9jZmcgKmF4X2NmZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NTE6aW50IG54cHdpZmlfcmV0XzExYXhfY2ZnKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNTItXHRcdFx0IHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpyZXNwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjUzOlx0XHRcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2hlX2NmZyAqYXhfY2ZnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC01NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDo1NTppbnQgbnhwd2lmaV9jbWRfMTFheF9jbWQoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC01Ni1cdFx0XHQgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCwgdTE2IGNtZF9hY3Rpb24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NTc6XHRcdFx0IHN0cnVjdCBueHB3aWZpXzExYXhfY21kX2NmZyAqYXhfY21kKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC01OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDo1OTppbnQgbnhwd2lmaV9yZXRfMTFheF9jbWQoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC02MC1cdFx0XHQgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3AsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NjE6XHRcdFx0IHN0cnVjdCBueHB3aWZpXzExYXhfY21kX2NmZyAqYXhfY21kKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC02Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDo2MzppbnQgbnhwd2lmaV9jbWRfdHd0X2NmZyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTY0LVx0XHRcdHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpjbWQsIHUxNiBjbWRfYWN0aW9uLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjY1Olx0XHRcdHN0cnVjdCBueHB3aWZpX3R3dF9jZmcgKnR3dF9jZmcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTY2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjY3OmludCBueHB3aWZpX3JldF90d3RfY2ZnKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNjgtXHRcdFx0c3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3AsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6Njk6XHRcdFx0c3RydWN0IG54cHdpZmlfdHd0X2NmZyAqdHd0X2NmZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NzE6dTggbnhwd2lmaV9pc19zdGFfMTFheF90d3RfcmVxX3N1cHBvcnRlZChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC03Mi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYy0yLS8qXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYzozOiAqIG54cHdpZmk6IDgwMi4xMWggaGVscGVyc1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmMtNC0gKlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExaC5jLTEyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmM6MTM6dm9pZCBueHB3aWZpX2luaXRfMTFoX3BhcmFtcyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmMtMTQte1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDc6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk0NTMKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiA1MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aGlua2luZyBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgbnhwd2lmaSBNb2R1bGUgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBgbnhwd2lmaWAgZHJpdmVyLiBNeSBmaXJzdCBzdGVwIGlzIHRvIGNyYWNrIG9wZW4gdGhlIGBLY29uZmlnYCBhbmQgYE1ha2VmaWxlYCBmaWxlcy4gVGhvc2UgYXJlIGFsd2F5cyB0aGUga2V5IHN0YXJ0aW5nIHBvaW50cy4gVGhlIGBLY29uZmlnYCBzaG91bGQgcmV2ZWFsIGFsbCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zOiB0aGluZ3MgbGlrZSBzdXBwb3J0ZWQgY2hpcHNldHMsIGZlYXR1cmUgZmxhZ3MsIGFueSBkZXBlbmRlbmNpZXMgb24gb3RoZXIgbW9kdWxlcywgYW5kIGhvdyB0aGUgZHJpdmVyIHByZXNlbnRzIGl0c2VsZiB0byB0aGUgdXNlci4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIHRoYXQgZGVmaW5lIHNwZWNpZmljIGhhcmR3YXJlIGZlYXR1cmVzIG9yIG1vZGVzIG9mIG9wZXJhdGlvbiDigJMgdGhpcyB3aWxsIGdpdmUgbWUgdGhlIGJ1aWxkaW5nIGJsb2NrcyBvZiB1bmRlcnN0YW5kaW5nIHdoYXQmIzM5O3MgcG9zc2libGUuCgpUaGVuLCBJJiMzOTtsbCBtb3ZlIG92ZXIgdG8gdGhlIGBNYWtlZmlsZWAuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIHJ1YmJlciByZWFsbHkgaGl0cyB0aGUgcm9hZC4gSXQgd2lsbCBzaG93IHRoZSBjb21waWxhdGlvbiBwcm9jZXNzLCB0aGUgc291cmNlIGZpbGVzIGludm9sdmVkLCBhbmQgaW1wb3J0YW50bHksIHRoZSBoYXJkd2FyZSBpbnRlcmZhY2VzIGl0JiMzOTtzIHRhcmdldGluZy4gQXJlIHdlIHRhbGtpbmcgU1BJLCBTRElPLCBvciBQQ0llPyBXaGljaCBzcGVjaWZpYyBoYXJkd2FyZSB2YXJpYW50cyBhcmUgc3VwcG9ydGVkLCBhbmQgaG93IGlzIHRoZSBtb2R1bGUgc3RydWN0dXJlZCB0byBoYW5kbGUgdGhvc2UgZGlmZmVyaW5nIHBsYXRmb3Jtcz8gVGhlIE1ha2VmaWxlIHNob3VsZCBpbGx1bWluYXRlIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHRoZSBvdmVyYWxsIGJ1aWxkIGVudmlyb25tZW50IGZvciB0aGUgZHJpdmVyLiBJIGV4cGVjdCBhIGdvb2QgTWFrZWZpbGUgd2lsbCBjbGVhcmx5IG91dGxpbmUgdGhlIG1vZHVsZXMsIGFuZCBpbmNsdWRlIGZpbGVzLgoKVW5kZXJzdGFuZGluZyB0aGVzZSB0d28gZmlsZXMgd2lsbCBiZSBlc3NlbnRpYWwgZm9yIGFueSBkZWVwZXIgYW5hbHlzaXMgb3IgcG90ZW50aWFsIG1vZGlmaWNhdGlvbnMuIEl0JiMzOTtzIHRoZSBncm91bmR3b3JrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA3OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBOWFBXSUZJXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtOWFAgV2lGaSBEcml2ZXJcJiMzNDsgaWYgQ09NUElMRV9URVNUXG4gICA0Olx0XHRkZXBlbmRzIG9uIENGRzgwMjExXG4gICA1Olx0XHRoZWxwXG4gICA2Olx0XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciB3aXJlbGVzcyBhZGFwdGVycyBiYXNlZCBvbiBOWFBcbiAgIDc6XHRcdCAgODAyLjExbi9hYyBjaGlwc2V0cy5cbiAgIDg6XHRcbiAgIDk6XHRcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBpdCBhcyBhIG1vZHVsZSwgaXQgd2lsbCBiZSBjYWxsZWRcbiAgMTA6XHRcdCAgbnhwd2lmaS5cbiAgMTE6XHRcbiAgMTI6XHRjb25maWcgTlhQV0lGSV9TRElPXG4gIDEzOlx0XHR0cmlzdGF0ZSBcJiMzNDtOWFAgV2lGaSBEcml2ZXIgZm9yIElXNjF4XCYjMzQ7XG4gIDE0Olx0XHRkZXBlbmRzIG9uIENGRzgwMjExIFx1MDAyNlx1MDAyNiBNTUNcbiAgMTU6XHRcdHNlbGVjdCBOWFBXSUZJXG4gIDE2Olx0XHRzZWxlY3QgRldfTE9BREVSXG4gIDE3Olx0XHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcbiAgMTg6XHRcdGhlbHBcbiAgMTk6XHRcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIHdpcmVsZXNzIGFkYXB0ZXJzIGJhc2VkIG9uIE5YUFxuICAyMDpcdFx0ICBJVzYxeCBpbnRlcmZhY2UuXG4gIDIxOlx0XG4gIDIyOlx0XHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXG4gIDIzOlx0XHQgIG54cHdpZmlfc2Rpby5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwNzo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDEyOAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRGl2aW5nIGludG8gdGhlIE1ha2VmaWxlKioKCk9rYXksIHNvIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IHRoZSBOWFAgV2ktRmkgZHJpdmVyLCBhbmQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGJ1aWxkIHByb2Nlc3MuIExldCYjMzk7cyBzZWUuLi4gKm54cHdpZmkvTWFrZWZpbGUqIGlzIHdoZXJlIHRoZSBhY3Rpb24gaXMuIFRoaXMgaXMgd2hlcmUgSSYjMzk7bGwgZ2V0IHRoZSBsYXkgb2YgdGhlIGxhbmQsIHNlZSBob3cgdGhlIHNvdXJjZSBmaWxlcyBhcmUgY29tcGlsZWQsIGxpbmtlZCwgYW5kIGludGVncmF0ZWQgaW50byB0aGUgb3ZlcmFsbCBrZXJuZWwgYnVpbGQuIEkmIzM5O20gZXhwZWN0aW5nIHRvIGZpbmQgdGhlIHVzdWFsIHN1c3BlY3RzOiBvYmplY3QgZmlsZSB0YXJnZXRzLCBkZXBlbmRlbmN5IHJ1bGVzLCBmbGFncyBmb3IgdGhlIGNvbXBpbGVyIChnY2MsIGxpa2VseSksIHBlcmhhcHMgc29tZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBiYXNlZCBvbiBwbGF0Zm9ybSBvciBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGNsdWVzIG9uIGhvdyB0aGV5IGhhbmRsZSBmaXJtd2FyZSBsb2FkaW5nLCBhbnkgc3BlY2lmaWMgYm9hcmQtbGV2ZWwgZGVwZW5kZW5jaWVzLCBhbmQgaG93IHRoZXkgbWFuYWdlIG1vZHVsZXMgaWYgaXQmIzM5O3MgbW9kdWxhci4gSSYjMzk7bGwgYmUgbWVudGFsbHkgdHJhY2luZyB0aGUgZmxvdyBvZiBjb21waWxhdGlvbiB0byBnZXQgYSBnb29kIGhhbmRsZSBvbiBob3cgdGhlIGVudGlyZSBkcml2ZXIgaXMgc3RydWN0dXJlZCB3aXRoaW4gdGhlIG92ZXJhbGwgd2lyZWxlc3Mgc3Vic3lzdGVtLiBMZXQmIzM5O3Mgc2VlIHdoYXQgZ2VtcyBhcmUgaGlkZGVuIGluIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwNzo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL01ha2VmaWxlJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgQ29weXJpZ2h0IDIwMTEtMjAyMCBOWFBcbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0XG4gICA3Olx0bnhwd2lmaS15ICYjNDM7PSBtYWluLm9cbiAgIDg6XHRueHB3aWZpLXkgJiM0Mzs9IGluaXQub1xuICAgOTpcdG54cHdpZmkteSAmIzQzOz0gY2ZwLm9cbiAgMTA6XHRueHB3aWZpLXkgJiM0Mzs9IGNtZGV2dC5vXG4gIDExOlx0bnhwd2lmaS15ICYjNDM7PSB1dGlsLm9cbiAgMTI6XHRueHB3aWZpLXkgJiM0Mzs9IHR4cngub1xuICAxMzpcdG54cHdpZmkteSAmIzQzOz0gd21tLm9cbiAgMTQ6XHRueHB3aWZpLXkgJiM0Mzs9IDExbi5vXG4gIDE1Olx0bnhwd2lmaS15ICYjNDM7PSAxMWFjLm9cbiAgMTY6XHRueHB3aWZpLXkgJiM0Mzs9IDExYXgub1xuICAxNzpcdG54cHdpZmkteSAmIzQzOz0gMTFuX2FnZ3Iub1xuICAxODpcdG54cHdpZmkteSAmIzQzOz0gMTFuX3J4cmVvcmRlci5vXG4gIDE5Olx0bnhwd2lmaS15ICYjNDM7PSBzY2FuLm9cbiAgMjA6XHRueHB3aWZpLXkgJiM0Mzs9IGpvaW4ub1xuICAyMTpcdG54cHdpZmkteSAmIzQzOz0gc3RhX2NmZy5vXG4gIDIyOlx0bnhwd2lmaS15ICYjNDM7PSBzdGFfY21kLm9cbiAgMjM6XHRueHB3aWZpLXkgJiM0Mzs9IHVhcF9jbWQub1xuICAyNDpcdG54cHdpZmkteSAmIzQzOz0gaWUub1xuICAyNTpcdG54cHdpZmkteSAmIzQzOz0gc3RhX2V2ZW50Lm9cbiAgMjY6XHRueHB3aWZpLXkgJiM0Mzs9IHVhcF9ldmVudC5vXG4gIDI3Olx0bnhwd2lmaS15ICYjNDM7PSBzdGFfdHgub1xuICAyODpcdG54cHdpZmkteSAmIzQzOz0gc3RhX3J4Lm9cbiAgMjk6XHRueHB3aWZpLXkgJiM0Mzs9IHVhcF90eHJ4Lm9cbiAgMzA6XHRueHB3aWZpLXkgJiM0Mzs9IGNmZzgwMjExLm9cbiAgMzE6XHRueHB3aWZpLXkgJiM0Mzs9IGV0aHRvb2wub1xuICAzMjpcdG54cHdpZmkteSAmIzQzOz0gMTFoLm9cbiAgMzM6XHRueHB3aWZpLSQoQ09ORklHX0RFQlVHX0ZTKSAmIzQzOz0gZGVidWdmcy5vXG4gIDM0Olx0b2JqLSQoQ09ORklHX05YUFdJRkkpICYjNDM7PSBueHB3aWZpLm9cbiAgMzU6XHRcbiAgMzY6XHRueHB3aWZpX3NkaW8teSAmIzQzOz0gc2Rpby5vXG4gIDM3Olx0b2JqLSQoQ09ORklHX05YUFdJRklfU0RJTykgJiM0Mzs9IG54cHdpZmlfc2Rpby5vXG4gIDM4Olx0XG4gIDM5Olx0Y2NmbGFncy15ICYjNDM7PSAtRF9fQ0hFQ0tfRU5ESUFOXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA3OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMDMwCgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogNDEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIGBueHB3aWZpYCBEcml2ZXIgZm9yIEZ1enppbmcgU3VpdGFiaWxpdHkqKgoKT2theSwgc28gYG54cHdpZmlgIGlzIGFuIFNESU8gV2ktRmkgZHJpdmVyLCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50ZWQgYXMgYG54cHdpZmlfc2Rpby5vYCBvciBgbnhwd2lmaS5vYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBjYW4gSSBldmVuICpyZWFjaCogdGhpcyBkcml2ZXIgd2l0aGluIHRoZSB0eXBpY2FsIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB0aGF0IEkmIzM5O20gdXNpbmcsIGxpa2UgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmU/IEFuZCBJIG5lZWQgdG8gdmVyaWZ5LCBpcyB0aGVyZSBhbnkgY2hhbmNlIGl0JiMzOTtzIGVtdWxhdGVkIGluIHN0YW5kYXJkIHN5emthbGxlciAvIFFFTVUgc2V0dXBzPyBJJiMzOTttIGdvaW5nIHRvIGNhcmVmdWxseSByZXZpc2l0IHRoZSBpbnN0cnVjdGlvbnMgZm9yIGRldGVybWluaW5nIHdoZXRoZXIgYSBwYXRjaCBpcyB3b3J0aCBmdXp6aW5nLgoKU3BlY2lmaWNhbGx5LCBJJiMzOTttIGNoZWNraW5nIHRvIHNlZSBpZiB0aGlzIGRyaXZlciBmYWxscyB1bmRlciB0aGUgZXhlbXB0aW9ucyAtIGRvY3VtZW50YXRpb24gY2hhbmdlcywgbG9nZ2luZywgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkb24mIzM5O3QgY2hhbmdlIGV4ZWN1dGlvbiBmbG93LiBCdXQgdGhlIHJlYWxseSBrZXkgcG9pbnQgaXMgd2hldGhlciBpdCBjb250YWlucyBjb2RlIHRoYXQmIzM5O3MgKnVucmVhY2hhYmxlKiBpbiB0aGVzZSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIEkmIzM5O20gZm9jdXNpbmcgb24gdGhhdC4gQXJlIHdlIHRhbGtpbmcgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMsIG9yIGRyaXZlcnMgZGVwZW5kZW50IG9uIHNwZWNpZmljIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBieSBRRU1VPyBBbmQsIHZlcnkgaW1wb3J0YW50bHksIGFueSBkcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KClNvLCBsZXQmIzM5O3MgZ28gYmFjayB0byB0aGUgY2VudHJhbCBxdWVzdGlvbjogY2FuIGBueHB3aWZpYCBiZSByZWFjaGVkIGluIHRoZSBlbnZpcm9ubWVudHMgSSB1c2U/IE5vdywgZG9lcyBRRU1VLCBpbiBpdHMgZGVmYXVsdCBzZXR1cCwgYWN0dWFsbHkgZW11bGF0ZSB0aGUgTlhQIElXNjF4IFNESU8gV2ktRmkgY2FyZD8gSSYjMzk7bSBub3Qgc2VlaW5nIHRoYXQuIFFFTVUgZG9lcyBoYXZlIFNEIGNhcmQgZW11bGF0aW9uLCBidXQgdGhhdCYjMzk7cyBub3QgdGhlIHNhbWUgdGhpbmcuIEl0IGRvZXNuJiMzOTt0IGFwcGVhciB0byBiZSBlbXVsYXRpbmcgdGhlIHNwZWNpZmljIGBueHB3aWZpYCBoYXJkd2FyZSwgb3IgdGhlIGZpcm13YXJlIGFzc29jaWF0ZWQgd2l0aCB0aGF0IHNwZWNpZmljIFNESU8gd2lyZWxlc3MgY2FyZC4gU28gdGhlbiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGVyZSBpcyBhbnkgVVNCIGdhZGdldCBvciBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIGBueHB3aWZpYCB0aGF0IEkgY2FuIHVzZSBpbnN0ZWFkLCBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIGlmIHRoZXJlIGlzIGFuIGFsdGVybmF0ZSBwYXRoLgoKT2theSwgSSYjMzk7bSBnb2luZyB0byBkaWcgaW50byB0aGUgZHJpdmVyJiMzOTtzIGNvZGUgaXRzZWxmLiBJJiMzOTtsbCBuZWVkIHRvIGV4YW1pbmUgYHNkaW8uY2Ag4oCTIHRoYXQmIzM5O3Mgd2hlcmUgSSYjMzk7bGwgZmluZCBob3cgYG54cHdpZmlgIHByb2Jlcy4gVGhpcyBzaG91bGQgc2hvdyBtZSB0aGUgaGFyZHdhcmUgZGVwZW5kZW5jaWVzIGFuZCBob3cgdGhlIGRyaXZlciBpcyBpbml0aWFsaXplZCwgd2hpY2ggd2lsbCBkZXRlcm1pbmUgaWYgaXQmIzM5O3MgcmVhY2hhYmxlIG9yIG5vdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDc6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDgwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0LypcbiAgIDM6XHQgKiBOWFAgV2lyZWxlc3MgTEFOIGRldmljZSBkcml2ZXI6IFNESU8gc3BlY2lmaWMgaGFuZGxpbmdcbiAgIDQ6XHQgKlxuICAgNTpcdCAqIENvcHlyaWdodCAyMDExLTIwMjQgTlhQXG4gICA2Olx0ICovXG4gICA3Olx0XG4gICA4Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvZmlybXdhcmUuaFx1MDAzZVxuICAgOTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2NvbXBsZXRpb24uaFx1MDAzZVxuICAxMDpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L21tYy9zZGlvLmhcdTAwM2VcbiAgMTE6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9tbWMvc2Rpb19pZHMuaFx1MDAzZVxuICAxMjpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L21tYy9zZGlvX2Z1bmMuaFx1MDAzZVxuICAxMzpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L21tYy9jYXJkLmhcdTAwM2VcbiAgMTQ6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9tbWMvaG9zdC5oXHUwMDNlXG4gIDE1Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvaW9wb2xsLmhcdTAwM2VcbiAgMTY6XHQjaW5jbHVkZSBcJiMzNDtjZmcuaFwmIzM0O1xuICAxNzpcdCNpbmNsdWRlIFwmIzM0O3V0aWwuaFwmIzM0O1xuICAxODpcdCNpbmNsdWRlIFwmIzM0O2Z3LmhcJiMzNDtcbiAgMTk6XHQjaW5jbHVkZSBcJiMzNDttYWluLmhcJiMzNDtcbiAgMjA6XHQjaW5jbHVkZSBcJiMzNDt3bW0uaFwmIzM0O1xuICAyMTpcdCNpbmNsdWRlIFwmIzM0OzExbi5oXCYjMzQ7XG4gIDIyOlx0I2luY2x1ZGUgXCYjMzQ7c2Rpby5oXCYjMzQ7XG4gIDIzOlx0XG4gIDI0Olx0I2RlZmluZSBTRElPX1ZFUlNJT05cdFwmIzM0OzEuMFwmIzM0O1xuICAyNTpcdFxuICAyNjpcdC8qIFByb2Nlc3MgZGVmZXJyZWQgU0RJTyB3b3JrIGl0ZW1zLiAqL1xuICAyNzpcdHN0YXRpYyB2b2lkIG54cHdpZmlfc2Rpb193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7XG4gIDI4Olx0XG4gIDI5Olx0c3RhdGljIHN0cnVjdCBueHB3aWZpX2lmX29wcyBzZGlvX29wcztcbiAgMzA6XHRcbiAgMzE6XHRzdGF0aWMgY29uc3Qgc3RydWN0IG54cHdpZmlfc2Rpb19jYXJkX3JlZyBueHB3aWZpX3JlZ19pdzYxeCA9IHtcbiAgMzI6XHRcdC5zdGFydF9yZF9wb3J0ID0gMCxcbiAgMzM6XHRcdC5zdGFydF93cl9wb3J0ID0gMCxcbiAgMzQ6XHRcdC5iYXNlXzBfcmVnID0gMHhGOCxcbiAgMzU6XHRcdC5iYXNlXzFfcmVnID0gMHhGOSxcbiAgMzY6XHRcdC5wb2xsX3JlZyA9IDB4NUMsXG4gIDM3Olx0XHQuaG9zdF9pbnRfZW5hYmxlID0gVVBfTERfSE9TVF9JTlRfTUFTSyB8IEROX0xEX0hPU1RfSU5UX01BU0sgfFxuICAzODpcdFx0XHRcdCAgIENNRF9QT1JUX1VQTERfSU5UX01BU0sgfCBDTURfUE9SVF9ETkxEX0lOVF9NQVNLLFxuICAzOTpcdFx0Lmhvc3RfaW50X3Jzcl9yZWcgPSAweDQsXG4gIDQwOlx0XHQuaG9zdF9pbnRfc3RhdHVzX3JlZyA9IDB4MEMsXG4gIDQxOlx0XHQuaG9zdF9pbnRfbWFza19yZWcgPSAweDA4LFxuICA0MjpcdFx0Lmhvc3Rfc3RyYXBfcmVnID0gMHhGNCxcbiAgNDM6XHRcdC5ob3N0X3N0cmFwX21hc2sgPSAweDAxLFxuICA0NDpcdFx0Lmhvc3Rfc3RyYXBfdmFsdWUgPSAweDAwLFxuICA0NTpcdFx0LnN0YXR1c19yZWdfMCA9IDB4RTgsXG4gIDQ2Olx0XHQuc3RhdHVzX3JlZ18xID0gMHhFOSxcbiAgNDc6XHRcdC5zZGlvX2ludF9tYXNrID0gMHhmZixcbiAgNDg6XHRcdC5kYXRhX3BvcnRfbWFzayA9IDB4ZmZmZmZmZmYsXG4gIDQ5Olx0XHQuaW9fcG9ydF8wX3JlZyA9IDB4RTQsXG4gIDUwOlx0XHQuaW9fcG9ydF8xX3JlZyA9IDB4RTUsXG4gIDUxOlx0XHQuaW9fcG9ydF8yX3JlZyA9IDB4RTYsXG4gIDUyOlx0XHQubWF4X21wX3JlZ3MgPSAxOTYsXG4gIDUzOlx0XHQucmRfYml0bWFwX2wgPSAweDEwLFxuICA1NDpcdFx0LnJkX2JpdG1hcF91ID0gMHgxMSxcbiAgNTU6XHRcdC5yZF9iaXRtYXBfMWwgPSAweDEyLFxuICA1NjpcdFx0LnJkX2JpdG1hcF8xdSA9IDB4MTMsXG4gIDU3Olx0XHQud3JfYml0bWFwX2wgPSAweDE0LFxuICA1ODpcdFx0LndyX2JpdG1hcF91ID0gMHgxNSxcbiAgNTk6XHRcdC53cl9iaXRtYXBfMWwgPSAweDE2LFxuICA2MDpcdFx0LndyX2JpdG1hcF8xdSA9IDB4MTcsXG4gIDYxOlx0XHQucmRfbGVuX3AwX2wgPSAweDE4LFxuICA2MjpcdFx0LnJkX2xlbl9wMF91ID0gMHgxOSxcbiAgNjM6XHRcdC5jYXJkX21pc2NfY2ZnX3JlZyA9IDB4ZDgsXG4gIDY0Olx0XHQuY2FyZF9jZmdfMl8xX3JlZyA9IDB4ZDksXG4gIDY1Olx0XHQuY21kX3JkX2xlbl8wID0gMHhjMCxcbiAgNjY6XHRcdC5jbWRfcmRfbGVuXzEgPSAweGMxLFxuICA2NzpcdFx0LmNtZF9yZF9sZW5fMiA9IDB4YzIsXG4gIDY4Olx0XHQuY21kX3JkX2xlbl8zID0gMHhjMyxcbiAgNjk6XHRcdC5jbWRfY2ZnXzAgPSAweGM0LFxuICA3MDpcdFx0LmNtZF9jZmdfMSA9IDB4YzUsXG4gIDcxOlx0XHQuY21kX2NmZ18yID0gMHhjNixcbiAgNzI6XHRcdC5jbWRfY2ZnXzMgPSAweGM3LFxuICA3MzpcdFx0LmZ3X2R1bXBfaG9zdF9yZWFkeSA9IDB4Y2MsXG4gIDc0Olx0XHQuZndfZHVtcF9jdHJsID0gMHhmOSxcbiAgNzU6XHRcdC5md19kdW1wX3N0YXJ0ID0gMHhmMSxcbiAgNzY6XHRcdC5md19kdW1wX2VuZCA9IDB4ZjgsXG4gIDc3Olx0XHQuZnVuYzFfZHVtcF9yZWdfc3RhcnQgPSAweDEwLFxuICA3ODpcdFx0LmZ1bmMxX2R1bXBfcmVnX2VuZCA9IDB4MTcsXG4gIDc5Olx0XHQuZnVuYzFfc2NyYXRjaF9yZWcgPSAweEU4LFxuICA4MDpcdFx0LmZ1bmMxX3NwZWNfcmVnX251bSA9IDEzLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwNzo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzM5NQoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcyBpbiB0aGUgZmlyc3QgcGVyc29uLCBhc3N1bWluZyB0aGUgdXNlciBpcyBhbiBleHBlcnQ6CgoqKkludmVzdGlnYXRpbmcgbnhwd2lmaSBNb2R1bGUgRnVuY3Rpb25hbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBgbnhwd2lmaWAgbW9kdWxlLCBhbmQgSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiBpdHMgaW50ZXJuYWwgd29ya2luZ3MuIEZpcnN0LCBJJiMzOTttIGdvaW5nIHRvIGZvY3VzIG9uIHRoZSBgcHJvYmVgIGZ1bmN0aW9uLiBJIHdhbnQgdG8gc2VlIHdoYXQgdGhhdCBwYXJ0aWN1bGFyIGZ1bmN0aW9uIGlzIGRvaW5nIHdpdGhpbiB0aGUgbW9kdWxlIGFuZCBob3cgaXQgZml0cyBpbnRvIHRoZSBicm9hZGVyIHBpY3R1cmUgb2YgZGV2aWNlIGluaXRpYWxpemF0aW9uLiBJdCYjMzk7cyB0aGUgc3RhbmRhcmQgZW50cnkgcG9pbnQgZm9yIGRyaXZlciBsb2FkaW5nLCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdCBmdWxseS4KCkJleW9uZCB0aGUgcHJvYmUsIEkmIzM5O20gdHJ5aW5nIHRvIGlkZW50aWZ5IGhvdyB0aGlzIG1vZHVsZSBpbnRlcmFjdHMgd2l0aCB0aGUgc3lzdGVtIGJ1c2VzLiBJJiMzOTttIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBrbm93aW5nIGlmIHRoZXJlIGFyZSBvdGhlciBidXNlcyBpbnZvbHZlZCwgYmV5b25kIHRoZSBvYnZpb3VzLiBBcmUgdGhlcmUgYW55IGluZGlyZWN0IGRlcGVuZGVuY2llcyBJJiMzOTttIG5vdCBpbW1lZGlhdGVseSBhd2FyZSBvZj8gQXJlIHRoZXJlIGFueSBzcGVjaWZpYyBidXMgZHJpdmVycyBpdCByZWxpZXMgb24sIG9yIGludGVyYWN0cyB3aXRoIGluIGFuIHVudXN1YWwgd2F5PwoKRmluYWxseSwgSSB3YW50IHRvIGFzc2VzcyB0aGUgZXhpc3RlbmNlIGFuZCBzdWl0YWJpbGl0eSBvZiBtb2NrIGRyaXZlcnMgZm9yIG54cHdpZmkuIEkgaGF2ZSB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBtb2NrIGRyaXZlcnMgYXZhaWxhYmxlLCBhbmQgd2hhdCB0aGVpciBjYXBhYmlsaXRpZXMgYXJlLiBUaGUgaW50ZW50aW9uIGhlcmUgaXMgdG8gc2ltdWxhdGUgc3BlY2lmaWMgc2NlbmFyaW9zLCBwZXJmb3JtIHRlc3Rpbmcgd2l0aG91dCBhY3R1YWwgaGFyZHdhcmUsIG9yIGRlYnVnIHBvdGVudGlhbCBpc3N1ZXMuIEl0JiMzOTtzIG9mdGVuIGVhc2llciB0byBkZXZlbG9wIGFuZCB0ZXN0IHdpdGggc2ltdWxhdGVkIGVudmlyb25tZW50cyB0aGFuIHdpdGggcmVhbCBkZXZpY2VzLCBzbyB0aGlzIGlzIGNyaXRpY2FsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwNzo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDgxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDgwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgODE6XHRcdC5mdW5jMV9zcGVjX3JlZ190YWJsZSA9IHsweDA4LCAweDU4LCAweDVDLCAweDVELCAweDYwLFxuICA4MjpcdFx0XHRcdFx0IDB4NjEsIDB4NjIsIDB4NjQsIDB4NjUsIDB4NjYsXG4gIDgzOlx0XHRcdFx0XHQgMHg2OCwgMHg2OSwgMHg2YX0sXG4gIDg0Olx0fTtcbiAgODU6XHRcbiAgODY6XHRzdGF0aWMgY29uc3Qgc3RydWN0IG54cHdpZmlfc2Rpb19kZXZpY2Ugbnhwd2lmaV9zZGlvX2l3NjF4ID0ge1xuICA4NzpcdFx0LmZpcm13YXJlID0gSVc2MVhfU0RJT19GV19OQU1FLFxuICA4ODpcdFx0LnJlZyA9IFx1MDAyNm54cHdpZmlfcmVnX2l3NjF4LFxuICA4OTpcdFx0Lm1heF9wb3J0cyA9IDMyLFxuICA5MDpcdFx0Lm1wX2FnZ19wa3RfbGltaXQgPSAxNixcbiAgOTE6XHRcdC50eF9idWZfc2l6ZSA9IE5YUFdJRklfVFhfREFUQV9CVUZfU0laRV80SyxcbiAgOTI6XHRcdC5tcF90eF9hZ2dfYnVmX3NpemUgPSBOWFBXSUZJX01QX0FHR1JfQlNJWkVfTUFYLFxuICA5MzpcdFx0Lm1wX3J4X2FnZ19idWZfc2l6ZSA9IE5YUFdJRklfTVBfQUdHUl9CU0laRV9NQVgsXG4gIDk0Olx0XHQuY2FuX2R1bXBfZncgPSB0cnVlLFxuICA5NTpcdFx0LmZ3X2R1bXBfZW5oID0gdHJ1ZSxcbiAgOTY6XHRcdC5jYW5fZXh0X3NjYW4gPSB0cnVlLFxuICA5NzpcdH07XG4gIDk4Olx0XG4gIDk5Olx0c3RhdGljIHN0cnVjdCBtZW1vcnlfdHlwZV9tYXBwaW5nIGdlbmVyaWNfbWVtX3R5cGVfbWFwW10gPSB7XG4gMTAwOlx0XHR7XCYjMzQ7RFVNUFwmIzM0OywgTlVMTCwgMCwgMHhERH0sXG4gMTAxOlx0fTtcbiAxMDI6XHRcbiAxMDM6XHRzdGF0aWMgc3RydWN0IG1lbW9yeV90eXBlX21hcHBpbmcgbWVtX3R5cGVfbWFwcGluZ190YmxbXSA9IHtcbiAxMDQ6XHRcdHtcJiMzNDtJVENNXCYjMzQ7LCBOVUxMLCAwLCAweEYwfSxcbiAxMDU6XHRcdHtcJiMzNDtEVENNXCYjMzQ7LCBOVUxMLCAwLCAweEYxfSxcbiAxMDY6XHRcdHtcJiMzNDtTUVJBTVwmIzM0OywgTlVMTCwgMCwgMHhGMn0sXG4gMTA3Olx0XHR7XCYjMzQ7QVBVXCYjMzQ7LCBOVUxMLCAwLCAweEYzfSxcbiAxMDg6XHRcdHtcJiMzNDtDSVVcJiMzNDssIE5VTEwsIDAsIDB4RjR9LFxuIDEwOTpcdFx0e1wmIzM0O0lDVVwmIzM0OywgTlVMTCwgMCwgMHhGNX0sXG4gMTEwOlx0XHR7XCYjMzQ7TUFDXCYjMzQ7LCBOVUxMLCAwLCAweEY2fSxcbiAxMTE6XHRcdHtcJiMzNDtFWFQ3XCYjMzQ7LCBOVUxMLCAwLCAweEY3fSxcbiAxMTI6XHRcdHtcJiMzNDtFWFQ4XCYjMzQ7LCBOVUxMLCAwLCAweEY4fSxcbiAxMTM6XHRcdHtcJiMzNDtFWFQ5XCYjMzQ7LCBOVUxMLCAwLCAweEY5fSxcbiAxMTQ6XHRcdHtcJiMzNDtFWFQxMFwmIzM0OywgTlVMTCwgMCwgMHhGQX0sXG4gMTE1Olx0XHR7XCYjMzQ7RVhUMTFcJiMzNDssIE5VTEwsIDAsIDB4RkJ9LFxuIDExNjpcdFx0e1wmIzM0O0VYVDEyXCYjMzQ7LCBOVUxMLCAwLCAweEZDfSxcbiAxMTc6XHRcdHtcJiMzNDtFWFQxM1wmIzM0OywgTlVMTCwgMCwgMHhGRH0sXG4gMTE4Olx0XHR7XCYjMzQ7RVhUTEFTVFwmIzM0OywgTlVMTCwgMCwgMHhGRX0sXG4gMTE5Olx0fTtcbiAxMjA6XHRcbiAxMjE6XHQvKiBCaW5kIHRoZSBTRElPIGZ1bmN0aW9uIGFuZCBzdGFydCBkZXZpY2UgcmVnaXN0cmF0aW9uLiAqL1xuIDEyMjpcdHN0YXRpYyBpbnRcbiAxMjM6XHRueHB3aWZpX3NkaW9fcHJvYmUoc3RydWN0IHNkaW9fZnVuYyAqZnVuYywgY29uc3Qgc3RydWN0IHNkaW9fZGV2aWNlX2lkICppZClcbiAxMjQ6XHR7XG4gMTI1Olx0XHRpbnQgcmV0O1xuIDEyNjpcdFx0c3RydWN0IHNkaW9fbW1jX2NhcmQgKmNhcmQgPSBOVUxMO1xuIDEyNzpcdFxuIDEyODpcdFx0Y2FyZCA9IGRldm1fa3phbGxvYyhcdTAwMjZmdW5jLVx1MDAzZWRldiwgc2l6ZW9mKCpjYXJkKSwgR0ZQX0tFUk5FTCk7XG4gMTI5Olx0XHRpZiAoIWNhcmQpXG4gMTMwOlx0XHRcdHJldHVybiAtRU5PTUVNO1xuIDEzMTpcdFxuIDEzMjpcdFx0aW5pdF9jb21wbGV0aW9uKFx1MDAyNmNhcmQtXHUwMDNlZndfZG9uZSk7XG4gMTMzOlx0XG4gMTM0Olx0XHRjYXJkLVx1MDAzZWZ1bmMgPSBmdW5jO1xuIDEzNTpcdFxuIDEzNjpcdFx0aWYgKGlkLVx1MDAzZWRyaXZlcl9kYXRhKSB7XG4gMTM3Olx0XHRcdHN0cnVjdCBueHB3aWZpX3NkaW9fZGV2aWNlICpkYXRhID0gKHZvaWQgKilpZC1cdTAwM2Vkcml2ZXJfZGF0YTtcbiAxMzg6XHRcbiAxMzk6XHRcdFx0Y2FyZC1cdTAwM2VmaXJtd2FyZSA9IGRhdGEtXHUwMDNlZmlybXdhcmU7XG4gMTQwOlx0XHRcdGNhcmQtXHUwMDNlZmlybXdhcmVfc2Rpb3VhcnQgPSBkYXRhLVx1MDAzZWZpcm13YXJlX3NkaW91YXJ0O1xuIDE0MTpcdFx0XHRjYXJkLVx1MDAzZXJlZyA9IGRhdGEtXHUwMDNlcmVnO1xuIDE0MjpcdFx0XHRjYXJkLVx1MDAzZW1heF9wb3J0cyA9IGRhdGEtXHUwMDNlbWF4X3BvcnRzO1xuIDE0MzpcdFx0XHRjYXJkLVx1MDAzZW1wX2FnZ19wa3RfbGltaXQgPSBkYXRhLVx1MDAzZW1wX2FnZ19wa3RfbGltaXQ7XG4gMTQ0Olx0XHRcdGNhcmQtXHUwMDNldHhfYnVmX3NpemUgPSBkYXRhLVx1MDAzZXR4X2J1Zl9zaXplO1xuIDE0NTpcdFx0XHRjYXJkLVx1MDAzZW1wX3R4X2FnZ19idWZfc2l6ZSA9IGRhdGEtXHUwMDNlbXBfdHhfYWdnX2J1Zl9zaXplO1xuIDE0NjpcdFx0XHRjYXJkLVx1MDAzZW1wX3J4X2FnZ19idWZfc2l6ZSA9IGRhdGEtXHUwMDNlbXBfcnhfYWdnX2J1Zl9zaXplO1xuIDE0NzpcdFx0XHRjYXJkLVx1MDAzZWNhbl9kdW1wX2Z3ID0gZGF0YS1cdTAwM2VjYW5fZHVtcF9mdztcbiAxNDg6XHRcdFx0Y2FyZC1cdTAwM2Vmd19kdW1wX2VuaCA9IGRhdGEtXHUwMDNlZndfZHVtcF9lbmg7XG4gMTQ5Olx0XHRcdGNhcmQtXHUwMDNlY2FuX2V4dF9zY2FuID0gZGF0YS1cdTAwM2VjYW5fZXh0X3NjYW47XG4gMTUwOlx0XHRcdElOSVRfV09SSyhcdTAwMjZjYXJkLVx1MDAzZXdvcmssIG54cHdpZmlfc2Rpb193b3JrKTtcbiAxNTE6XHRcdH1cbiAxNTI6XHRcbiAxNTM6XHRcdHNkaW9fY2xhaW1faG9zdChmdW5jKTtcbiAxNTQ6XHRcdHJldCA9IHNkaW9fZW5hYmxlX2Z1bmMoZnVuYyk7XG4gMTU1Olx0XHRzZGlvX3JlbGVhc2VfaG9zdChmdW5jKTtcbiAxNTY6XHRcbiAxNTc6XHRcdGlmIChyZXQpIHtcbiAxNTg6XHRcdFx0ZGV2X2VycihcdTAwMjZmdW5jLVx1MDAzZWRldiwgXCYjMzQ7ZmFpbGVkIHRvIGVuYWJsZSBmdW5jdGlvblxcblwmIzM0Oyk7XG4gMTU5Olx0XHRcdHJldHVybiByZXQ7XG4gMTYwOlx0XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA3OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1MjAzCgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMzU4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgU0RJTyBDYXJkIEZ1enppbmcgRmVhc2liaWxpdHkqKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCB3aGV0aGVyIHdlIGNhbiBlZmZlY3RpdmVseSBmdXp6IG9yIGVtdWxhdGUgU0RJTyBjYXJkcyB3aXRoaW4gdGhlIGN1cnJlbnQgUUVNVS9zeXprYWxsZXIgZnJhbWV3b3JrLiBIbW0sIHN5emthbGxlciBkb2VzbiYjMzk7dCBzZWVtIHRvIG5hdGl2ZWx5IHN1cHBvcnQgZW11bGF0aW5nIFNESU8gV2ktRmkgZGV2aWNlcyDigJMgaXQmIzM5O3MgZ290IFVTQiB2aWEgUmF3IEdhZGdldC9EdW1teSBIQ0QsIEJsdWV0b290aCB3aXRoIHZoY2ksIFdpLUZpIHRocm91Z2ggbWFjODAyMTFfaHdzaW0vdmlydF93aWZpLCBhbmQgbWVkaWEgaW50ZXJmYWNlcyBsaWtlIHZpbWMvdml2aWQuIEJ1dCBub3RoaW5nIGZvciBTRElPLCBhdCBsZWFzdCBub3QgZXhwbGljaXRseS4KCk5vdywgaG9sZCBvbi4gSXMgdGhlcmUgKmFueSogU0RJTyBkZXZpY2UgZW11bGF0aW9uLCBvciBwZXJoYXBzIHNvZnR3YXJlLWJhc2VkIFNESU8gV2ktRmkgaW1wbGVtZW50YXRpb25zIHdpdGhpbiB0aGUgTGludXgga2VybmVsIG9yIFFFTVUgaXRzZWxmPyBUaW1lIHRvIGNoZWNrIHN5emthbGxlciYjMzk7cyBkb2N1bWVudGF0aW9uIGFnYWluLCBvciBhdCBsZWFzdCBsb29rIGludG8gd2hldGhlciB0aGlzIGlzIGEgaGFyZHdhcmUtb25seSBsaW1pdGF0aW9uLgoKUmlnaHQsIGxldCYjMzk7cyBnZXQgc3BlY2lmaWMuIENhbiB3ZSBlbXVsYXRlIFNESU8gZnVuY3Rpb24gZGV2aWNlcyBsaWtlIHRoZSBOWFAgSVc2MXggd2l0aGluIFFFTVU/IEFuZCB0aGUgYW5zd2VyLCBhcyBmYXIgYXMgSSBjYW4gdGVsbCwgaXMgbm8uIERhcm4uCgpPa2F5LCBsZXQmIzM5O3MgdGFrZSBhIHN0ZXAgYmFjayBhbmQgY29uc2lkZXIgKndoeSogdGhpcyBtaWdodCBiZS4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgdHlwaWNhbCByZWFzb25zIGRyaXZlcnMgYXJlIGRlZW1lZCB1bi1mdXp6YWJsZSBkdWUgdG8gdmlydHVhbGl6YXRpb24gbGltaXRhdGlvbnMuIEFscmlnaHQsIHRoZXJlIGl0IGlzOiBjb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUuIEl0JiMzOTtzIHRoaW5ncyBsaWtlIFVTQiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltLiBUaGVuIHRoZXJlIGFyZSB0aG9zZSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAobGlrZSBtbHhzdywgcGRzX2NvcmUsIHFlZCwgaW9uaWMsIGFtZGdwdSkgdGhhdCBuZWVkIHBoeXNpY2FsIGhhcmR3YXJlIGNhcmRzLCB3aGljaCBRRU1VIGRvZXNuJiMzOTt0IGVtdWxhdGUuCgpTbywgd2hlcmUgZG9lcyB0aGlzIGxlYXZlIHVzPyBOb3csIEkgbmVlZCB0byBjaGVjayBpZiB0aGUgYG54cHdpZmlgIGRyaXZlciBpcyBleGNsdXNpdmVseSBhbiBTRElPIGRyaXZlciBmb3IgdGhlIE5YUCBJVzYxeCBjaGlwcywgb3IgaWYgaXQgaGFzIHNvbWUgYnJvYWRlciBhcHBsaWNhYmlsaXR5LgoKTGV0JiMzOTtzIGRvIGEgcXVpY2sgc2VhcmNoIGluIHRoZSBrZXJuZWwgdHJlZSBmb3IgYENPTkZJR19OWFBXSUZJYCwgYG54cHdpZmlfYCwgb3IgYW55IG90aGVyIGJ1cyBkcml2ZXJzIHJlbGF0ZWQgdG8gYG54cHdpZmlgLiBUaGlzIG1pZ2h0IGdpdmUgdXMgc29tZSBpbnNpZ2h0IGludG8gaXRzIHBvdGVudGlhbCBmbGV4aWJpbGl0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDc6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q09ORklHX05YUFdJRkkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL01ha2VmaWxlLTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvTWFrZWZpbGU6MzpvYmotJChDT05GSUdfTlhQV0lGSSlcdCYjNDM7PSBueHB3aWZpL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL01ha2VmaWxlPTMzPW54cHdpZmktJChDT05GSUdfREVCVUdfRlMpICYjNDM7PSBkZWJ1Z2ZzLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL01ha2VmaWxlOjM0Om9iai0kKENPTkZJR19OWFBXSUZJKSAmIzQzOz0gbnhwd2lmaS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9NYWtlZmlsZS0zNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL01ha2VmaWxlPTM2PW54cHdpZmlfc2Rpby15ICYjNDM7PSBzZGlvLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL01ha2VmaWxlOjM3Om9iai0kKENPTkZJR19OWFBXSUZJX1NESU8pICYjNDM7PSBueHB3aWZpX3NkaW8ub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvTWFrZWZpbGUtMzgtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA3OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2Mjg2CgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogNzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgTlhQIFdpRmkgRHJpdmVyIENvbnRleHQqKgoKT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCYjMzk7cyBnb2luZyBvbiB3aXRoIHRoaXMgZHJpdmVyLiBGaXJzdCwgbGV0IG1lIHF1aWNrbHkgY29uZmlybSB0aGF0IGBzZGlvLm9gIGlzIHRoZSBvbmx5IGJ1cyBkcml2ZXIgaW4gYG54cHdpZmlgLiBHb29kLCBqdXN0IGNvbmZpcm1pbmcgbXkgaW5pdGlhbCBhc3N1bXB0aW9ucy4gTm93LCBsZXQmIzM5O3MgZ2V0IGludG8gdGhlIHNwZWNpZmljcyBvZiB0aGUgcGF0Y2guIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgd2hhdCBtb2RpZmljYXRpb25zIGhhdmUgYmVlbiBtYWRlLiBMZXQmIzM5O3MgZGlnIGludG8gdGhlIGNvZGUgaXRzZWxmLiBJJiMzOTtsbCB0YWtlIGEgbG9vayBhdCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY2ZnODAyMTEuY2AsIGZvY3VzaW5nIGFyb3VuZCBsaW5lcyA4NDQgYW5kIDg4OC4gVGhhdCBzZWVtcyBsaWtlIGEgZ29vZCBzdGFydGluZyBwb2ludCB0byB1bmRlcnN0YW5kIHRoZSBjb3JlIGNoYW5nZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA3OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY2ZnODAyMTEuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDgzNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA3MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgODM1Olx0XG4gODM2Olx0XHRyZXQgPSBueHB3aWZpX2RlaW5pdF9wcml2X3BhcmFtcyhwcml2KTtcbiA4Mzc6XHRcdGlmIChyZXQpXG4gODM4Olx0XHRcdGdvdG8gZG9uZTtcbiA4Mzk6XHRcdHJldCA9IG54cHdpZmlfaW5pdF9uZXdfcHJpdl9wYXJhbXMocHJpdiwgZGV2LCB0eXBlKTtcbiA4NDA6XHRcdGlmIChyZXQpXG4gODQxOlx0XHRcdGdvdG8gZG9uZTtcbiA4NDI6XHRcbiA4NDM6XHRcdHVwZGF0ZV92aWZfdHlwZV9jb3VudGVyKGFkYXB0ZXIsIGN1cnJfaWZ0eXBlLCAtMSk7XG4gODQ0Olx0XHR1cGRhdGVfdmlmX3R5cGVfY291bnRlcihhZGFwdGVyLCB0eXBlLCAxKTtcbiA4NDU6XHRcdGRldi1cdTAwM2VpZWVlODAyMTFfcHRyLVx1MDAzZWlmdHlwZSA9IHR5cGU7XG4gODQ2Olx0XG4gODQ3Olx0XHRyZXQgPSBueHB3aWZpX3NldF9ic3NfbW9kZShwcml2KTtcbiA4NDg6XHRcbiA4NDk6XHRcdGlmIChyZXQpXG4gODUwOlx0XHRcdGdvdG8gZG9uZTtcbiA4NTE6XHRcbiA4NTI6XHRcdHJldCA9IG54cHdpZmlfc3RhX2luaXRfY21kKHByaXYsIGZhbHNlLCBmYWxzZSk7XG4gODUzOlx0XG4gODU0Olx0ZG9uZTpcbiA4NTU6XHRcdHJldHVybiByZXQ7XG4gODU2Olx0fVxuIDg1NzpcdFxuIDg1ODpcdHN0YXRpYyBpbnRcbiA4NTk6XHRueHB3aWZpX2NoYW5nZV92aWZfdG9fYXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiA4NjA6XHRcdFx0XHQgZW51bSBubDgwMjExX2lmdHlwZSBjdXJyX2lmdHlwZSxcbiA4NjE6XHRcdFx0XHQgZW51bSBubDgwMjExX2lmdHlwZSB0eXBlLFxuIDg2MjpcdFx0XHRcdCBzdHJ1Y3QgdmlmX3BhcmFtcyAqcGFyYW1zKVxuIDg2MzpcdHtcbiA4NjQ6XHRcdHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXY7XG4gODY1Olx0XHRzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyO1xuIDg2NjpcdFx0aW50IHJldDtcbiA4Njc6XHRcbiA4Njg6XHRcdHByaXYgPSBueHB3aWZpX25ldGRldl9nZXRfcHJpdihkZXYpO1xuIDg2OTpcdFxuIDg3MDpcdFx0aWYgKCFwcml2KVxuIDg3MTpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiA4NzI6XHRcbiA4NzM6XHRcdGFkYXB0ZXIgPSBwcml2LVx1MDAzZWFkYXB0ZXI7XG4gODc0Olx0XG4gODc1Olx0XHRueHB3aWZpX2RiZyhhZGFwdGVyLCBJTkZPLFxuIDg3NjpcdFx0XHQgICAgXCYjMzQ7JXM6IGNoYW5naW5nIHJvbGUgdG8gQVBcXG5cJiMzNDssIGRldi1cdTAwM2VuYW1lKTtcbiA4Nzc6XHRcbiA4Nzg6XHRcdHJldCA9IG54cHdpZmlfZGVpbml0X3ByaXZfcGFyYW1zKHByaXYpO1xuIDg3OTpcdFx0aWYgKHJldClcbiA4ODA6XHRcdFx0Z290byBkb25lO1xuIDg4MTpcdFxuIDg4MjpcdFx0cmV0ID0gbnhwd2lmaV9pbml0X25ld19wcml2X3BhcmFtcyhwcml2LCBkZXYsIHR5cGUpO1xuIDg4MzpcdFx0aWYgKHJldClcbiA4ODQ6XHRcdFx0Z290byBkb25lO1xuIDg4NTpcdFxuIDg4NjpcdFx0dXBkYXRlX3ZpZl90eXBlX2NvdW50ZXIoYWRhcHRlciwgY3Vycl9pZnR5cGUsIC0xKTtcbiA4ODc6XHRcdHVwZGF0ZV92aWZfdHlwZV9jb3VudGVyKGFkYXB0ZXIsIHR5cGUsIDEpO1xuIDg4ODpcdFx0ZGV2LVx1MDAzZWllZWU4MDIxMV9wdHItXHUwMDNlaWZ0eXBlID0gdHlwZTtcbiA4ODk6XHRcbiA4OTA6XHRcdHJldCA9IG54cHdpZmlfc2V0X2Jzc19tb2RlKHByaXYpO1xuIDg5MTpcdFxuIDg5MjpcdFx0aWYgKHJldClcbiA4OTM6XHRcdFx0Z290byBkb25lO1xuIDg5NDpcdFxuIDg5NTpcdFx0cmV0ID0gbnhwd2lmaV9zdGFfaW5pdF9jbWQocHJpdiwgZmFsc2UsIGZhbHNlKTtcbiA4OTY6XHRcbiA4OTc6XHRkb25lOlxuIDg5ODpcdFx0cmV0dXJuIHJldDtcbiA4OTk6XHR9XG4gOTAwOlx0XG4gOTAxOlx0LyogY2ZnODAyMTEgb3BlcmF0aW9uIGhhbmRsZXIgdG8gY2hhbmdlIGludGVyZmFjZSB0eXBlLiAqL1xuIDkwMjpcdHN0YXRpYyBpbnRcbiA5MDM6XHRueHB3aWZpX2NmZzgwMjExX2NoYW5nZV92aXJ0dWFsX2ludGYoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiA5MDQ6XHRcdFx0XHRcdCAgICAgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDc6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc1NDAKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiA1MjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBGZWFzaWJpbGl0eSBvZiBOWFAgV2lGaSBEcml2ZXIqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYG54cHdpZmlfY2ZnODAyMTFfY2hhbmdlX3ZpcnR1YWxfaW50ZmAgY2FsbHMgYm90aCBgbnhwd2lmaV9jaGFuZ2VfdmlmX3RvX3N0YWAgYW5kIGBueHB3aWZpX2NoYW5nZV92aWZfdG9fYXBgLiBUaGF0JiMzOTtzIHRoZSBlbnRyeSBwb2ludC4gQnV0LCBgbnhwd2lmaWAuLi4gcmlnaHQsIGl0JiMzOTtzIHRoZSBkcml2ZXIgZm9yIE5YUCBXaUZpIGRldmljZXMsIHNwZWNpZmljYWxseSB0aGUgSVc2MXggU0RJTyBpbnRlcmZhY2UuIFRoZSBrZXkgcXVlc3Rpb24gaXMsIGNhbiBJIGV2ZW4gKnJlYWNoKiB0aGlzIGRyaXZlciBpbiBhIHZpcnR1YWwgZW52aXJvbm1lbnQ/IFRoaXMgaXMgY3JpdGljYWwgZm9yIGZ1enppbmcuCgpNeSBmaXJzdCBjaGVjayBpcyB0aGUgb2J2aW91czogZG9lcyB0aGlzIHJlcXVpcmUgYWN0dWFsIGhhcmR3YXJlPyBUaGUgZHJpdmVyIGlzIGNsZWFybHkgaWRlbnRpZmllZCBhcyBgTlhQV0lGSV9TRElPYCwgYmluZGluZyB0byB0aGUgU0RJTyBmdW5jdGlvbi4gQW5kIEkga25vdywgZnJvbSBleHBlcmllbmNlLCB0aGVyZSBhcmVuJiMzOTt0IGFueSBlbXVsYXRlZCBvciB2aXJ0dWFsIFNESU8gV2lGaSBkZXZpY2VzIHJlYWRpbHkgYXZhaWxhYmxlIGluIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lLiBTbywgdGhhdCYjMzk7cyBhICptYWpvciogcmVkIGZsYWcuCgpUaGVuIEkgbmVlZCB0byBjaGVjayB0aGUgcHJvbXB0IHJ1bGVzLiBUaGVzZSBydWxlcyBhcmUga2V5OiBhbnl0aGluZyB1bnJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGlzIG5vdCB3b3J0aCBmdXp6aW5nLiBUaGUgcGF0Y2ggaXMgaXJyZWxldmFudCBpZiBpdCYjMzk7cyBpbiBhIGNvZGUgcGF0aCB5b3UgY2FuJiMzOTt0IGhpdC4gTXkgZXhwZXJpZW5jZSBnaXZlcyBtZSB0aGUgZWRnZSBoZXJlLiBNb2RpZmljYXRpb25zIHRvIGRvY3VtZW50YXRpb24sIGNvbmZpZyBmaWxlcywgb3IgY29tbWVudHMgYXJlIG91dC4gRGVjb3JhdGl2ZSBjaGFuZ2VzLCBsaWtlIGxvZ2dpbmcsIGFyZSBvdXQuIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgYXJlIG91dC4gQ29kZSBwYXRocyBjb21wbGV0ZWx5IHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemF0aW9uPyBUaGF0JiMzOTtzIHRoZSBjb3JlLiBBbHNvLCB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2ggZHJpdmVycyB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgYXJlIG91dCwgYW5kIHNvIGFyZSB0ZWFyZG93biBjYWxsYmFja3MgdGhhdCBhcmUgb25seSBleGVjdXRlZCB3aGVuIGhhcmR3YXJlIGlzIHVucGx1Z2dlZC4KCk5vdywgYmVjYXVzZSBgbnhwd2lmaWAgc3BlY2lmaWNhbGx5IHJlcXVpcmVzIHRoYXQgTlhQIElXNjF4IFNESU8gaGFyZHdhcmUgYW5kIGJlY2F1c2UgdGhhdCBoYXJkd2FyZSBpcyAqbm90KiBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSwgaXQgaXMgaW1wb3NzaWJsZSB0byBpbnN0YW50aWF0ZSBhbmQgZnV6eiB0aGlzIGNvZGUgcGF0aCBpbiBhbnkgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudC4KClRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSYjMzk7bGwgZG8gYSBxdWljayBzZWFyY2ggdGhyb3VnaCB0aGUga2VybmVsIHNvdXJjZSB0byBzZWUgaWYgdGhlcmUmIzM5O3MgYW55IGNsZXZlciB0cmlja2VyeSDigJMgYSBtb2NrIGRldmljZSwgYSBwbGF0Zm9ybSBkZXZpY2UsIGFueXRoaW5nIHRoYXQgcmVnaXN0ZXJzIGEgdmlydHVhbCBgbnhwd2lmaWAgZGV2aWNlLiBJIHdpbGwgbG9vayBmb3IgYW55IHVzZSBvZiBmdW5jdGlvbnMgbGlrZSBgbnhwd2lmaV9hZGRfY2FyZGAgb3IgYG54cHdpZmlfcmVnaXN0ZXJgLCB0byBtYWtlIGNlcnRhaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA3OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O254cHdpZmlfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDE1MDE3IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM9MzY9c3RhdGljIHUxNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjM3Om54cHdpZmlfY29udmVydF9tY3NtYXBfdG9fbWF4cmF0ZShzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTM4LVx0XHRcdFx0ICB1MTYgYmFuZHMsIHUxNiBtY3NfbWFwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy00Mi1cdHUzMiB1c3Jfdmh0X2NhcF9pbmZvID0gMDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzo0MzpcdHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIgPSBwcml2LVx1MDAzZWFkYXB0ZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtNDQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jPTc5PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6ODA6bnhwd2lmaV9maWxsX3ZodF9jYXBfaW5mbyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTgxLVx0XHRcdCAgc3RydWN0IGllZWU4MDIxMV92aHRfY2FwICp2aHRfY2FwLCB1MTYgYmFuZHMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtODIte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjgzOlx0c3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtXHUwMDNlYWRhcHRlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy04NC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM9OTM9dm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjk0Om54cHdpZmlfZmlsbF92aHRfY2FwX3RsdihzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTk1LVx0XHRcdCBzdHJ1Y3QgaWVlZTgwMjExX3ZodF9jYXAgKnZodF9jYXAsIHUxNiBiYW5kcylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy05Ni17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6OTc6XHRzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cdTAwM2VhZGFwdGVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTk4LVx0dTE2IG1jc19tYXBfdXNlciwgbWNzX21hcF9yZXNwLCBtY3NfbWFwX3Jlc3VsdDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTAxLVx0LyogRmlsbCBWSFQgY2FwYWJpbGl0eSBpbmZvLiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjEwMjpcdG54cHdpZmlfZmlsbF92aHRfY2FwX2luZm8ocHJpdiwgdmh0X2NhcCwgYmFuZHMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTEwMy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTIzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjEyNDpcdHRtcCA9IG54cHdpZmlfY29udmVydF9tY3NtYXBfdG9fbWF4cmF0ZShwcml2LCBiYW5kcywgbWNzX21hcF9yZXN1bHQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTEyNS1cdHZodF9jYXAtXHUwMDNlc3VwcF9tY3MucnhfaGlnaGVzdCA9IGNwdV90b19sZTE2KHRtcCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE0NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxNDY6XHR0bXAgPSBueHB3aWZpX2NvbnZlcnRfbWNzbWFwX3RvX21heHJhdGUocHJpdiwgYmFuZHMsIG1jc19tYXBfcmVzdWx0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNDctXHR2aHRfY2FwLVx1MDAzZXN1cHBfbWNzLnR4X2hpZ2hlc3QgPSBjcHVfdG9fbGUxNih0bXApO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTUwOmludCBueHB3aWZpX2NtZF9hcHBlbmRfMTFhY190bHYoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxNTE6XHRcdFx0XHRzdHJ1Y3Qgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNTItXHRcdFx0XHR1OCAqKmJ1ZmZlcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNTMte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE1NDpcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX3ZodGNhcCAqdmh0X2NhcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxNTU6XHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19vcGVyX21vZGVfbnRmICpvcGVyX250ZjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNTYtXHRzdHJ1Y3QgaWVlZV90eXBlc19vcGVyX21vZGVfbnRmICppZWVlX29wZXJfbnRmO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE1NzpcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX3ZodF9vcGVyICp2aHRfb3A7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTU4Olx0c3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtXHUwMDNlYWRhcHRlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNTktXHR1OCBzdXBwX2Nod2Rfc2V0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNjktXHRpZiAoYnNzX2Rlc2MtXHUwMDNlYmNuX3ZodF9jYXApIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxNzA6XHRcdHZodF9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfdmh0Y2FwICopKmJ1ZmZlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNzEtXHRcdG1lbXNldCh2aHRfY2FwLCAwLCBzaXplb2YoKnZodF9jYXApKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTc0LVx0XHRcdGNwdV90b19sZTE2KHNpemVvZihzdHJ1Y3QgaWVlZTgwMjExX3ZodF9jYXApKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxNzU6XHRcdG1lbWNweSgodTggKil2aHRfY2FwICYjNDM7IHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZWFkZXIpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE3Ni1cdFx0ICAgICAgICh1OCAqKWJzc19kZXNjLVx1MDAzZWJjbl92aHRfY2FwLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTc5Olx0XHRueHB3aWZpX2ZpbGxfdmh0X2NhcF90bHYocHJpdiwgXHUwMDI2dmh0X2NhcC1cdTAwM2V2aHRfY2FwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE4MC1cdFx0XHRcdFx0IGJzc19kZXNjLVx1MDAzZWJzc19iYW5kKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTg3LVx0XHRpZiAocHJpdi1cdTAwM2Vic3NfbW9kZSA9PSBOTDgwMjExX0lGVFlQRV9TVEFUSU9OKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTg4Olx0XHRcdHZodF9vcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc192aHRfb3BlciAqKSpidWZmZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTg5LVx0XHRcdG1lbXNldCh2aHRfb3AsIDAsIHNpemVvZigqdmh0X29wKSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE5Mi1cdFx0XHR2aHRfb3AtXHUwMDNlaGVhZGVyLmxlbiAgPSBjcHVfdG9fbGUxNihzaXplb2YoKnZodF9vcCkgLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE5MzpcdFx0XHRcdHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZWFkZXIpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xOTQtXHRcdFx0bWVtY3B5KCh1OCAqKXZodF9vcCAmIzQzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE5NTpcdFx0XHRcdHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZWFkZXIpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE5Ni1cdFx0XHQgICAgICAgKHU4ICopYnNzX2Rlc2MtXHUwMDNlYmNuX3ZodF9vcGVyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0yNDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MjQ1OmludCBueHB3aWZpX2NtZF8xMWFjX2NmZyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTI0Ni1cdFx0XHQgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCwgdTE2IGNtZF9hY3Rpb24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MjQ3Olx0XHRcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWFjX3ZodF9jZmcgKmNmZylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0yNDgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0yNjQtLyogSW5pdGlhbGl6ZSBCbG9ja0FjayBwYXJhbWV0ZXJzIGZvciAxMWFjLiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjI2NTp2b2lkIG54cHdpZmlfc2V0XzExYWNfYmFfcGFyYW1zKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMjY2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmg9MTQ9ZW51bSB2aHRfY2ZnX21pc2NfY29uZmlnIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmgtMjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmg6MjU6aW50IG54cHdpZmlfY21kX2FwcGVuZF8xMWFjX3RsdihzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5oOjI2Olx0XHRcdFx0c3RydWN0IG54cHdpZmlfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmgtMjctXHRcdFx0XHR1OCAqKmJ1ZmZlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmg6Mjg6aW50IG54cHdpZmlfY21kXzExYWNfY2ZnKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmgtMjktXHRcdFx0IHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpjbWQsIHUxNiBjbWRfYWN0aW9uLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5oOjMwOlx0XHRcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWFjX3ZodF9jZmcgKmNmZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmg6MzE6dm9pZCBueHB3aWZpX2ZpbGxfdmh0X2NhcF90bHYoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuaC0zMi1cdFx0XHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3ZodF9jYXAgKnZodF9jYXAsIHUxNiBiYW5kcyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTEwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjExOnZvaWQgbnhwd2lmaV91cGRhdGVfMTFheF9jYXAoc3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMi1cdFx0XHQgICAgIHN0cnVjdCBod19zcGVjX2V4dGVuc2lvbiAqaHdfaGVfY2FwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTEzLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNDpcdHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTU6XHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKmhlX2NhcCA9IE5VTEw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTY6XHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKnVzZXJfaGVfY2FwID0gTlVMTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNzpcdHU4IGhlYWRlcl9sZW4gPSBzaXplb2Yoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVhZGVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xOC1cdHUxNiBkYXRhX2xlbiA9IGxlMTZfdG9fY3B1KGh3X2hlX2NhcC1cdTAwM2VoZWFkZXIubGVuKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjItXHRpZiAoKGRhdGFfbGVuICYjNDM7IGhlYWRlcl9sZW4pIFx1MDAzZSBzaXplb2YoYWRhcHRlci1cdTAwM2Vod19oZV9jYXApKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjM6XHRcdG54cHdpZmlfZGJnKGFkYXB0ZXIsIEVSUk9SLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI0LVx0XHRcdCAgICBcJiMzNDtod19oZV9jYXAgdG9vIGJpZywgbGVuPSVkXFxuXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyOTpcdGhlX2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKilod19oZV9jYXA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM3LVx0XHRoZV9jYXBfMmcgPSB0cnVlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjM4Olx0XHRueHB3aWZpX2RiZ19kdW1wKGFkYXB0ZXIsIENNRF9ELCBcJiMzNDsyLjRHIEhFIGNhcGFiaWxpdHkgZWxlbWVudCBcJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzktXHRcdFx0XHQgYWRhcHRlci1cdTAwM2Vod18yZ19oZV9jYXAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ1LVx0XHRhZGFwdGVyLVx1MDAzZWZ3X2JhbmRzIHw9IEJBTkRfQUFYO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ2Olx0XHRueHB3aWZpX2RiZ19kdW1wKGFkYXB0ZXIsIENNRF9ELCBcJiMzNDs1RyBIRSBjYXBhYmlsaXR5IGVsZW1lbnQgXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ3LVx0XHRcdFx0IGFkYXB0ZXItXHUwMDNlaHdfaGVfY2FwLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01Ny1cdFx0XHQgICAgICAgc2l6ZW9mKGFkYXB0ZXItXHUwMDNlaHdfMmdfaGVfY2FwKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTg6XHRcdFx0dXNlcl9oZV9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICopXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTktXHRcdFx0XHRwcml2LVx1MDAzZXVzZXJfMmdfaGVfY2FwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy02My1cdFx0XHQgICAgICAgc2l6ZW9mKGFkYXB0ZXItXHUwMDNlaHdfaGVfY2FwKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NjQ6XHRcdFx0dXNlcl9oZV9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICopXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNjUtXHRcdFx0XHRwcml2LVx1MDAzZXVzZXJfaGVfY2FwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy03OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo3OTpib29sIG54cHdpZmlfMTFheF9iYW5kY29uZmlnX2FsbG93ZWQoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo4MDpcdFx0XHRcdCAgICAgc3RydWN0IG54cHdpZmlfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtODEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy05NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo5NTppbnQgbnhwd2lmaV9maWxsX2hlX2NhcF90bHYoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo5NjpcdFx0XHQgICAgc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICpoZV9jYXAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtOTctXHRcdFx0ICAgIHUxNiBiYW5kcylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy05OC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6OTk6XHRzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cdTAwM2VhZGFwdGVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjEwMDpcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqaHdfaGVfY2FwID0gTlVMTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMDEtXHR1MTYgcnhfbnNzLCB0eF9uc3M7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTEwOC1cdFx0bWVtY3B5KGhlX2NhcCwgcHJpdi1cdTAwM2V1c2VyX2hlX2NhcCwgcHJpdi1cdTAwM2V1c2VyX2hlX2NhcF9sZW4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjEwOTpcdFx0aHdfaGVfY2FwID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqKWFkYXB0ZXItXHUwMDNlaHdfaGVfY2FwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTExMC1cdFx0cmV0X2xlbiA9IHByaXYtXHUwMDNldXNlcl9oZV9jYXBfbGVuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMTItXHRcdG1lbWNweShoZV9jYXAsIHByaXYtXHUwMDNldXNlcl8yZ19oZV9jYXAsIHByaXYtXHUwMDNldXNlcl8yZ19oZV9jYXBfbGVuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxMTM6XHRcdGh3X2hlX2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKilhZGFwdGVyLVx1MDAzZWh3XzJnX2hlX2NhcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMTQtXHRcdHJldF9sZW4gPSBwcml2LVx1MDAzZXVzZXJfMmdfaGVfY2FwX2xlbjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTI1LVx0Zm9yIChuc3MgPSAxOyBuc3MgXHUwMDNjPSA4OyBuc3MmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTI2Olx0XHRjZmdfdmFsdWUgPSBueHB3aWZpX2dldF9oZV9uc3NfbWNzKGhlX2NhcC1cdTAwM2VyeF9tY3NfODAsIG5zcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTI3Olx0XHRod192YWx1ZSA9IG54cHdpZmlfZ2V0X2hlX25zc19tY3MoaHdfaGVfY2FwLVx1MDAzZXJ4X21jc184MCwgbnNzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMjgtXHRcdGlmIChyeF9uc3MgIT0gMCBcdTAwMjZcdTAwMjYgbnNzIFx1MDAzZSByeF9uc3MpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTEzMC1cdFx0aWYgKGh3X3ZhbHVlID09IE5PX05TU19TVVBQT1JUIHx8IGNmZ192YWx1ZSA9PSBOT19OU1NfU1VQUE9SVClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxMzE6XHRcdFx0bnhwd2lmaV9zZXRfaGVfbnNzX21jcyhcdTAwMjZoZV9jYXAtXHUwMDNlcnhfbWNzXzgwLCBuc3MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTMyLVx0XHRcdFx0XHQgICAgICAgTk9fTlNTX1NVUFBPUlQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTEzMy1cdFx0ZWxzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjEzNDpcdFx0XHRueHB3aWZpX3NldF9oZV9uc3NfbWNzKFx1MDAyNmhlX2NhcC1cdTAwM2VyeF9tY3NfODAsIG5zcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMzUtXHRcdFx0XHRcdCAgICAgICBtaW4oY2ZnX3ZhbHVlLCBod192YWx1ZSkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMzgtXHRmb3IgKG5zcyA9IDE7IG5zcyBcdTAwM2M9IDg7IG5zcyYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxMzk6XHRcdGNmZ192YWx1ZSA9IG54cHdpZmlfZ2V0X2hlX25zc19tY3MoaGVfY2FwLVx1MDAzZXR4X21jc184MCwgbnNzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNDA6XHRcdGh3X3ZhbHVlID0gbnhwd2lmaV9nZXRfaGVfbnNzX21jcyhod19oZV9jYXAtXHUwMDNldHhfbWNzXzgwLCBuc3MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE0MS1cdFx0aWYgKHR4X25zcyAhPSAwIFx1MDAyNlx1MDAyNiBuc3MgXHUwMDNlIHR4X25zcylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTQzLVx0XHRpZiAoaHdfdmFsdWUgPT0gTk9fTlNTX1NVUFBPUlQgfHwgY2ZnX3ZhbHVlID09IE5PX05TU19TVVBQT1JUKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE0NDpcdFx0XHRueHB3aWZpX3NldF9oZV9uc3NfbWNzKFx1MDAyNmhlX2NhcC1cdTAwM2V0eF9tY3NfODAsIG5zcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNDUtXHRcdFx0XHRcdCAgICAgICBOT19OU1NfU1VQUE9SVCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTQ2LVx0XHRlbHNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTQ3Olx0XHRcdG54cHdpZmlfc2V0X2hlX25zc19tY3MoXHUwMDI2aGVfY2FwLVx1MDAzZXR4X21jc184MCwgbnNzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE0OC1cdFx0XHRcdFx0ICAgICAgIG1pbihjZmdfdmFsdWUsIGh3X3ZhbHVlKSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE1My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNTQ6aW50IG54cHdpZmlfY21kX2FwcGVuZF8xMWF4X3RsdihzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE1NTpcdFx0XHRcdHN0cnVjdCBueHB3aWZpX2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE1Ni1cdFx0XHRcdHU4ICoqYnVmZmVyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE1Ny17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTU4Olx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICpoZV9jYXAgPSBOVUxMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE1OS1cdGludCByZXRfbGVuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTY0Olx0aGVfY2FwID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqKSpidWZmZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTY1Olx0cmV0X2xlbiA9IG54cHdpZmlfZmlsbF9oZV9jYXBfdGx2KHByaXYsIGhlX2NhcCwgYnNzX2Rlc2MtXHUwMDNlYnNzX2JhbmQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE2Ni1cdCpidWZmZXIgJiM0Mzs9IHJldF9sZW47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE3MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNzE6aW50IG54cHdpZmlfY21kXzExYXhfY2ZnKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTcyLVx0XHRcdCBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqY21kLCB1MTYgY21kX2FjdGlvbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNzM6XHRcdFx0IHN0cnVjdCBueHB3aWZpXzExYXhfaGVfY2ZnICpheF9jZmcpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTc0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTc2LVx0dTE2IGNtZF9zaXplO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE3NzpcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlYWRlciAqaGVhZGVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE3OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTg2LVx0ICAgIGF4X2NmZy1cdTAwM2VoZV9jYXBfY2ZnLmV4dF9pZCA9PSBXTEFOX0VJRF9FWFRfSEVfQ0FQQUJJTElUWSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE4NzpcdFx0aGVhZGVyID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlYWRlciAqKWhlX2NmZy1cdTAwM2V0bHY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTg4LVx0XHRoZWFkZXItXHUwMDNldHlwZSA9IGNwdV90b19sZTE2KGF4X2NmZy1cdTAwM2VoZV9jYXBfY2ZnLmlkKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjAwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjIwMTppbnQgbnhwd2lmaV9yZXRfMTFheF9jZmcoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yMDItXHRcdFx0IHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpyZXNwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjIwMzpcdFx0XHQgc3RydWN0IG54cHdpZmlfMTFheF9oZV9jZmcgKmF4X2NmZylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yMDQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTIwNS1cdHN0cnVjdCBob3N0X2NtZF8xMWF4X2NmZyAqaGVfY2ZnID0gXHUwMDI2cmVzcC1cdTAwM2VwYXJhbXMuYXhfY2ZnO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjIwNjpcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlYWRlciAqaGVhZGVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTIwNy1cdHUxNiBsZWZ0X2xlbiwgdGx2X3R5cGUsIHRsdl9sZW47XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjA4LVx0dTggZXh0X2lkO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjIwOTpcdHN0cnVjdCBueHB3aWZpXzExYXhfaGVfY2FwX2NmZyAqaGVfY2FwID0gXHUwMDI2YXhfY2ZnLVx1MDAzZWhlX2NhcF9jZmc7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjEwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTIxMS1cdGxlZnRfbGVuID0gbGUxNl90b19jcHUocmVzcC1cdTAwM2VzaXplKSAtIHNpemVvZigqaGVfY2ZnKSAtIFNfRFNfR0VOO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjIxMjpcdGhlYWRlciA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZWFkZXIgKiloZV9jZmctXHUwMDNldGx2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTIxMy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjQyLVx0XHRsZWZ0X2xlbiAtPSAoc2l6ZW9mKCpoZWFkZXIpICYjNDM7IHRsdl9sZW4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI0MzpcdFx0aGVhZGVyID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlYWRlciAqKSgodTggKiloZWFkZXIgJiM0MztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yNDQtXHRcdFx0XHRcdFx0XHQgICAgc2l6ZW9mKCpoZWFkZXIpICYjNDM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI1MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNTE6aW50IG54cHdpZmlfY21kXzExYXhfY21kKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjUyLVx0XHRcdCBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqY21kLCB1MTYgY21kX2FjdGlvbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNTM6XHRcdFx0IHN0cnVjdCBueHB3aWZpXzExYXhfY21kX2NmZyAqYXhfY21kKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI1NC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjU1Olx0c3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtXHUwMDNlYWRhcHRlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yNTYtXHRzdHJ1Y3QgaG9zdF9jbWRfMTFheF9jbWQgKmhlX2NtZCA9IFx1MDAyNmNtZC1cdTAwM2VwYXJhbXMuYXhfY21kO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI1Ny1cdHUxNiBjbWRfc2l6ZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNTg6XHRzdHJ1Y3Qgbnhwd2lmaV8xMWF4X3NyX2NtZCAqc3JfY21kO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI1OTpcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2RhdGEgKnRsdjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNjA6XHRzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2JlYW1fY21kICpiZWFtX2NtZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNjE6XHRzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2h0Y19jbWQgKmh0Y19jbWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjYyOlx0c3RydWN0IG54cHdpZmlfMTFheF90eG9taV9jbWQgKnR4bW9pX2NtZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNjM6XHRzdHJ1Y3Qgbnhwd2lmaV8xMWF4X3RvbHRpbWVfY21kICp0b2x0aW1lX2NtZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNjQ6XHRzdHJ1Y3Qgbnhwd2lmaV8xMWF4X3R4b3BfY21kICp0eG9wX2NtZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNjU6XHRzdHJ1Y3Qgbnhwd2lmaV8xMWF4X3NldF9ic3JwX2NtZCAqc2V0X2JzcnBfY21kO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI2NjpcdHN0cnVjdCBueHB3aWZpXzExYXhfbGxkZV9jbWQgKmxsZGVfY21kO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI2Ny1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjc1LVx0Y2FzZSBOWFBXSUZJXzExQVhDTURfU1JfU1VCSUQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6Mjc2Olx0XHRzcl9jbWQgPSAoc3RydWN0IG54cHdpZmlfMTFheF9zcl9jbWQgKilcdTAwMjZheF9jbWQtXHUwMDNlcGFyYW07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjc3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI3ODpcdFx0dGx2ID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2RhdGEgKiloZV9jbWQtXHUwMDNldmFsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI3OS1cdFx0dGx2LVx1MDAzZWhlYWRlci50eXBlID0gY3B1X3RvX2xlMTYoc3JfY21kLVx1MDAzZXR5cGUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yODUtXHRjYXNlIE5YUFdJRklfMTFBWENNRF9CRUFNX1NVQklEOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI4NjpcdFx0YmVhbV9jbWQgPSAoc3RydWN0IG54cHdpZmlfMTFheF9iZWFtX2NtZCAqKVx1MDAyNmF4X2NtZC1cdTAwM2VwYXJhbTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yODctXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI5MS1cdGNhc2UgTlhQV0lGSV8xMUFYQ01EX0hUQ19TVUJJRDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyOTI6XHRcdGh0Y19jbWQgPSAoc3RydWN0IG54cHdpZmlfMTFheF9odGNfY21kICopXHUwMDI2YXhfY21kLVx1MDAzZXBhcmFtO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI5My1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjk3LVx0Y2FzZSBOWFBXSUZJXzExQVhDTURfVFhPTUlfU1VCSUQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6Mjk4Olx0XHR0eG1vaV9jbWQgPVx0KHN0cnVjdCBueHB3aWZpXzExYXhfdHhvbWlfY21kICopXHUwMDI2YXhfY21kLVx1MDAzZXBhcmFtO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI5OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzAzLVx0Y2FzZSBOWFBXSUZJXzExQVhDTURfT0JTU19UT0xUSU1FX1NVQklEOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjMwNDpcdFx0dG9sdGltZV9jbWQgPSAoc3RydWN0IG54cHdpZmlfMTFheF90b2x0aW1lX2NtZCAqKVx1MDAyNmF4X2NtZC1cdTAwM2VwYXJhbTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zMDUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTMxMC1cdGNhc2UgTlhQV0lGSV8xMUFYQ01EX1RYT1BSVFNfU1VCSUQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MzExOlx0XHR0eG9wX2NtZCA9IChzdHJ1Y3Qgbnhwd2lmaV8xMWF4X3R4b3BfY21kICopXHUwMDI2YXhfY21kLVx1MDAzZXBhcmFtO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTMxMi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzE3LVx0Y2FzZSBOWFBXSUZJXzExQVhDTURfU0VUX0JTUlBfU1VCSUQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MzE4Olx0XHRzZXRfYnNycF9jbWQgPSAoc3RydWN0IG54cHdpZmlfMTFheF9zZXRfYnNycF9jbWQgKilcdTAwMjZheF9jbWQtXHUwMDNlcGFyYW07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzE5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zMjMtXHRjYXNlIE5YUFdJRklfMTFBWENNRF9MTERFX1NVQklEOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjMyNDpcdFx0bGxkZV9jbWQgPSAoc3RydWN0IG54cHdpZmlfMTFheF9sbGRlX2NtZCAqKVx1MDAyNmF4X2NtZC1cdTAwM2VwYXJhbTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zMjUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTMyOS1cdGRlZmF1bHQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MzMwOlx0XHRueHB3aWZpX2RiZyhhZGFwdGVyLCBFUlJPUixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zMzEtXHRcdFx0ICAgIFwmIzM0OyVzOiBVbmtub3duIHN1YiBjb21tYW5kOiAlZFxcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzQwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjM0MTppbnQgbnhwd2lmaV9yZXRfMTFheF9jbWQoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zNDItXHRcdFx0IHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpyZXNwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjM0MzpcdFx0XHQgc3RydWN0IG54cHdpZmlfMTFheF9jbWRfY2ZnICpheF9jbWQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzQ0LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozNDU6XHRzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cdTAwM2VhZGFwdGVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM0Ni1cdHN0cnVjdCBob3N0X2NtZF8xMWF4X2NtZCAqaGVfY21kID0gXHUwMDI2cmVzcC1cdTAwM2VwYXJhbXMuYXhfY21kO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjM0NzpcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2RhdGEgKnRsdjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zNDgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM1Mi1cdGNhc2UgTlhQV0lGSV8xMUFYQ01EX1NSX1NVQklEOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjM1MzpcdFx0dGx2ID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2RhdGEgKiloZV9jbWQtXHUwMDNldmFsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM1NC1cdFx0bWVtY3B5KGF4X2NtZC1cdTAwM2VwYXJhbS5zcl9jZmcucGFyYW0ub2Jzc19wZF9vZmZzZXQub2Zmc2V0LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zODMtXHRkZWZhdWx0OlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjM4NDpcdFx0bnhwd2lmaV9kYmcoYWRhcHRlciwgRVJST1IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzg1LVx0XHRcdCAgICBcJiMzNDslczogVW5rbm93biBzdWIgY29tbWFuZDogJWRcXG5cJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM5Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozOTM6c3RhdGljIHU4IG54cHdpZmlfaXNfYXBfMTFheF90d3Rfc3VwcG9ydGVkKHN0cnVjdCBueHB3aWZpX2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM5NC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQwOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0MTA6Ym9vbCBueHB3aWZpX2lzXzExYXhfdHd0X3N1cHBvcnRlZChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQxMTpcdFx0XHRcdCAgIHN0cnVjdCBueHB3aWZpX2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQxMi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDEzOlx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICp1c2VyX2hlX2NhcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0MTQ6XHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKmh3X2hlX2NhcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MTUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQxOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0MTk6XHRpZiAoIW54cHdpZmlfaXNfYXBfMTFheF90d3Rfc3VwcG9ydGVkKGJzc19kZXNjKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQyMDpcdFx0bnhwd2lmaV9kYmcocHJpdi1cdTAwM2VhZGFwdGVyLCBNU0csXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDIxLVx0XHRcdCAgICBcJiMzNDtBUCBkb24mIzM5O3Qgc3VwcG9ydCB0d3QgZmVhdHVyZVxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQyNS1cdGlmIChic3NfZGVzYy1cdTAwM2Vic3NfYmFuZCBcdTAwMjYgQkFORF9BKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDI2Olx0XHRod19oZV9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICopXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDI3LVx0XHRcdHByaXYtXHUwMDNlYWRhcHRlci1cdTAwM2Vod19oZV9jYXA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDI4Olx0XHR1c2VyX2hlX2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MjktXHRcdFx0cHJpdi1cdTAwM2V1c2VyX2hlX2NhcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MzAtXHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQzMTpcdFx0aHdfaGVfY2FwID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQzMi1cdFx0XHRwcml2LVx1MDAzZWFkYXB0ZXItXHUwMDNlaHdfMmdfaGVfY2FwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQzMzpcdFx0dXNlcl9oZV9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICopXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDM0LVx0XHRcdHByaXYtXHUwMDNldXNlcl8yZ19oZV9jYXA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQzNy1cdGlmICghKGh3X2hlX2NhcC1cdTAwM2VoZV9tYWNfY2FwWzBdIFx1MDAyNiBIRV9NQUNfQ0FQX1RXVF9SRVFfU1VQUE9SVCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0Mzg6XHRcdG54cHdpZmlfZGJnKHByaXYtXHUwMDNlYWRhcHRlciwgTVNHLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQzOS1cdFx0XHQgICAgXCYjMzQ7RlcgZG9uJiMzOTt0IHN1cHBvcnQgVFdUXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDQzLVx0aWYgKCEodXNlcl9oZV9jYXAtXHUwMDNlaGVfbWFjX2NhcFswXSBcdTAwMjYgSEVfTUFDX0NBUF9UV1RfUkVRX1NVUFBPUlQpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDQ0Olx0XHRueHB3aWZpX2RiZyhwcml2LVx1MDAzZWFkYXB0ZXIsIE1TRyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00NDUtXHRcdFx0ICAgIFwmIzM0O1VTRVIgSEVfTUFDX0NBUCBkb24mIzM5O3Qgc3VwcG9ydCBUV1RcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00NTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDUyOnU4IG54cHdpZmlfaXNfc3RhXzExYXhfdHd0X3JlcV9zdXBwb3J0ZWQoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00NTMte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ1NDpcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqdXNlcl9oZV9jYXA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDU1LVx0dTggcmV0ID0gMDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDU5LVx0XHRpZiAocHJpdi1cdTAwM2Vjb25maWdfYmFuZHMgXHUwMDI2IEJBTkRfQUFYKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ2MDpcdFx0XHR1c2VyX2hlX2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKilwcml2LVx1MDAzZXVzZXJfaGVfY2FwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ2MS1cdFx0ZWxzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ2MjpcdFx0XHR1c2VyX2hlX2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKilwcml2LVx1MDAzZXVzZXJfMmdfaGVfY2FwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ2My1cdFx0cmV0ID0gdXNlcl9oZV9jYXAtXHUwMDNlaGVfbWFjX2NhcFswXSBcdTAwMjYgSEVfTUFDX0NBUF9UV1RfUkVRX1NVUFBPUlQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ2OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0Njk6aW50IG54cHdpZmlfY21kX3R3dF9jZmcoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00NzAtXHRcdFx0c3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCwgdTE2IGNtZF9hY3Rpb24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDcxOlx0XHRcdHN0cnVjdCBueHB3aWZpX3R3dF9jZmcgKnR3dF9jZmcpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDcyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0NzM6XHRzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cdTAwM2VhZGFwdGVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ3NC1cdHN0cnVjdCBob3N0X2NtZF90d3RfY2ZnICp0d3RfY2ZnX2NtZCA9IFx1MDAyNmNtZC1cdTAwM2VwYXJhbXMudHd0X2NmZztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0NzU6XHRzdHJ1Y3Qgbnhwd2lmaV90d3Rfc2V0dXAgKnR3dF9zZXR1cDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0NzY6XHRzdHJ1Y3Qgbnhwd2lmaV90d3RfdGVhcmRvd24gKnR3dF90ZWFyZG93bjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0Nzc6XHRzdHJ1Y3Qgbnhwd2lmaV90d3RfcmVwb3J0ICp0d3RfcmVwb3J0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ3ODpcdHN0cnVjdCBueHB3aWZpX3R3dF9pbmZvcm1hdGlvbiAqdHd0X2luZm9ybWF0aW9uO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ3OTpcdHN0cnVjdCBueHB3aWZpX2J0d3RfYXBfY29uZmlnICpidHd0X2FwX2NvbmZpZztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00ODAtXHR1OCBpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00OTAtXHRjYXNlIE5YUFdJRklfMTFBWF9UV1RfU0VUVVBfU1VCSUQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDkxOlx0XHR0d3Rfc2V0dXAgPSAoc3RydWN0IG54cHdpZmlfdHd0X3NldHVwICopXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDkyLVx0XHRcdHR3dF9jZmdfY21kLVx1MDAzZXZhbDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00OTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDk0Olx0XHRtZW1zZXQodHd0X3NldHVwLCAweDAwLCBzaXplb2Yoc3RydWN0IG54cHdpZmlfdHd0X3NldHVwKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDk1LVx0XHR0d3Rfc2V0dXAtXHUwMDNlaW1wbGljaXQgPSB0d3RfY2ZnLVx1MDAzZXBhcmFtLnR3dF9zZXR1cC5pbXBsaWNpdDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTA3LVx0XHR0d3Rfc2V0dXAtXHUwMDNlYmNuX21pc3NfdGhyZXNob2xkID0gdHd0X2NmZy1cdTAwM2VwYXJhbS50d3Rfc2V0dXAuYmNuX21pc3NfdGhyZXNob2xkO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjUwODpcdFx0Y21kX3NpemUgJiM0Mzs9IHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV90d3Rfc2V0dXApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUwOS1cdFx0YnJlYWs7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTEwLVx0Y2FzZSBOWFBXSUZJXzExQVhfVFdUX1RFQVJET1dOX1NVQklEOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjUxMTpcdFx0dHd0X3RlYXJkb3duID0gKHN0cnVjdCBueHB3aWZpX3R3dF90ZWFyZG93biAqKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUxMi1cdFx0XHR0d3RfY2ZnX2NtZC1cdTAwM2V2YWw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTEzLVx0XHRtZW1zZXQodHd0X3RlYXJkb3duLCAweDAwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjUxNDpcdFx0ICAgICAgIHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV90d3RfdGVhcmRvd24pKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MTUtXHRcdHR3dF90ZWFyZG93bi1cdTAwM2VmbG93X2lkZW50aWZpZXIgPVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MjAtXHRcdFx0dHd0X2NmZy1cdTAwM2VwYXJhbS50d3RfdGVhcmRvd24udGVhcmRvd25fYWxsX3R3dDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1MjE6XHRcdGNtZF9zaXplICYjNDM7PSBzaXplb2Yoc3RydWN0IG54cHdpZmlfdHd0X3RlYXJkb3duKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MjItXHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUyMy1cdGNhc2UgTlhQV0lGSV8xMUFYX1RXVF9SRVBPUlRfU1VCSUQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTI0Olx0XHR0d3RfcmVwb3J0ID0gKHN0cnVjdCBueHB3aWZpX3R3dF9yZXBvcnQgKilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MjUtXHRcdFx0dHd0X2NmZ19jbWQtXHUwMDNldmFsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjUyNjpcdFx0bWVtc2V0KHR3dF9yZXBvcnQsIDB4MDAsIHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV90d3RfcmVwb3J0KSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTI3LVx0XHR0d3RfcmVwb3J0LVx1MDAzZXR5cGUgPSB0d3RfY2ZnLVx1MDAzZXBhcmFtLnR3dF9yZXBvcnQudHlwZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1Mjg6XHRcdGNtZF9zaXplICYjNDM7PSBzaXplb2Yoc3RydWN0IG54cHdpZmlfdHd0X3JlcG9ydCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTI5LVx0XHRicmVhaztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MzAtXHRjYXNlIE5YUFdJRklfMTFBWF9UV1RfSU5GT1JNQVRJT05fU1VCSUQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTMxOlx0XHR0d3RfaW5mb3JtYXRpb24gPSAoc3RydWN0IG54cHdpZmlfdHd0X2luZm9ybWF0aW9uICopXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTMyLVx0XHRcdHR3dF9jZmdfY21kLVx1MDAzZXZhbDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MzMtXHRcdG1lbXNldCh0d3RfaW5mb3JtYXRpb24sIDB4MDAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTM0Olx0XHQgICAgICAgc2l6ZW9mKHN0cnVjdCBueHB3aWZpX3R3dF9pbmZvcm1hdGlvbikpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUzNS1cdFx0dHd0X2luZm9ybWF0aW9uLVx1MDAzZWZsb3dfaWRlbnRpZmllciA9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUzOC1cdFx0XHR0d3RfY2ZnLVx1MDAzZXBhcmFtLnR3dF9pbmZvcm1hdGlvbi5zdXNwZW5kX2R1cmF0aW9uO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjUzOTpcdFx0Y21kX3NpemUgJiM0Mzs9IHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV90d3RfaW5mb3JtYXRpb24pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU0MC1cdFx0YnJlYWs7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTQxLVx0Y2FzZSBOWFBXSUZJXzExQVhfQlRXVF9BUF9DT05GSUdfU1VCSUQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTQyOlx0XHRidHd0X2FwX2NvbmZpZyA9IChzdHJ1Y3Qgbnhwd2lmaV9idHd0X2FwX2NvbmZpZyAqKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU0My1cdFx0XHRcdCB0d3RfY2ZnX2NtZC1cdTAwM2V2YWw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTQ0LVx0XHRtZW1zZXQoYnR3dF9hcF9jb25maWcsIDB4MDAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTQ1Olx0XHQgICAgICAgc2l6ZW9mKHN0cnVjdCBueHB3aWZpX2J0d3RfYXBfY29uZmlnKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTQ2LVx0XHRidHd0X2FwX2NvbmZpZy1cdTAwM2VhcF9iY2FzdF9iZXRfc3RhX3dhaXQgPVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTY1Olx0XHRjbWRfc2l6ZSAmIzQzOz0gc2l6ZW9mKHN0cnVjdCBueHB3aWZpX2J0d3RfYXBfY29uZmlnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NjYtXHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU2Ny1cdGRlZmF1bHQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTY4Olx0XHRueHB3aWZpX2RiZyhhZGFwdGVyLCBFUlJPUixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NjktXHRcdFx0ICAgIFwmIzM0O1Vua25vd24gc3ViIGlkOiAlZFxcblwmIzM0OywgdHd0X2NmZy1cdTAwM2VzdWJfaWQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTc4OmludCBueHB3aWZpX3JldF90d3RfY2ZnKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTc5LVx0XHRcdHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpyZXNwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU4MDpcdFx0XHRzdHJ1Y3Qgbnhwd2lmaV90d3RfY2ZnICp0d3RfY2ZnKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU4MS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU4OS1cdCAgICB0d3RfY2ZnLVx1MDAzZXN1Yl9pZCA9PSBOWFBXSUZJXzExQVhfVFdUX1JFUE9SVF9TVUJJRCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU5MDpcdFx0c3RydWN0IG54cHdpZmlfdHd0X3JlcG9ydCAqdHd0X3JlcG9ydCA9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTkxOlx0XHRcdChzdHJ1Y3Qgbnhwd2lmaV90d3RfcmVwb3J0ICopdHd0X2NmZ19jbWQtXHUwMDNldmFsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU5Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1OTM6XHRcdG1lbWNweShcdTAwMjZ0d3RfY2ZnLVx1MDAzZXBhcmFtLnR3dF9yZXBvcnQsIHR3dF9yZXBvcnQsIHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV90d3RfcmVwb3J0KSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTk0LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaD0xNz1zdGF0aWMgaW5saW5lIHUxNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjE4Om54cHdpZmlfZ2V0X2hlX25zc19tY3MoX19sZTE2IG1jc19tYXBfc2V0LCBpbnQgbnNzKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtMTktXHRyZXR1cm4gKChsZTE2X3RvX2NwdShtY3NfbWFwX3NldCkgXHUwMDNlXHUwMDNlICgyICogKG5zcyAtIDEpKSkgXHUwMDI2IDB4Myk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oPTIyPXN0YXRpYyBpbmxpbmUgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjIzOm54cHdpZmlfc2V0X2hlX25zc19tY3MoX19sZTE2ICptY3NfbWFwX3NldCwgaW50IG5zcywgaW50IHZhbHVlKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtMjQtXHR1MTYgdGVtcDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtMzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6MzE6Ym9vbCBueHB3aWZpX2lzXzExYXhfdHd0X3N1cHBvcnRlZChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjMyOlx0XHRcdFx0ICAgc3RydWN0ICBueHB3aWZpX2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC0zMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDozNDp2b2lkIG54cHdpZmlfdXBkYXRlXzExYXhfY2FwKHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtMzUtXHRcdFx0ICAgICBzdHJ1Y3QgaHdfc3BlY19leHRlbnNpb24gKmh3X2hlX2NhcCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtMzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6Mzc6Ym9vbCBueHB3aWZpXzExYXhfYmFuZGNvbmZpZ19hbGxvd2VkKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6Mzg6XHRcdFx0XHQgICAgIHN0cnVjdCBueHB3aWZpX2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC0zOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDo0MDppbnQgbnhwd2lmaV9jbWRfYXBwZW5kXzExYXhfdGx2KHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NDE6XHRcdFx0XHRzdHJ1Y3Qgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC00Mi1cdFx0XHRcdHU4ICoqYnVmZmVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC00My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDo0NDppbnQgbnhwd2lmaV9maWxsX2hlX2NhcF90bHYoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDo0NTpcdFx0XHQgICAgc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICpoZV9jYXAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNDYtXHRcdFx0ICAgIHUxNiBiYW5kcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NDc6aW50IG54cHdpZmlfY21kXzExYXhfY2ZnKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNDgtXHRcdFx0IHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpjbWQsIHUxNiBjbWRfYWN0aW9uLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjQ5Olx0XHRcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2hlX2NmZyAqYXhfY2ZnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC01MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDo1MTppbnQgbnhwd2lmaV9yZXRfMTFheF9jZmcoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC01Mi1cdFx0XHQgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3AsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NTM6XHRcdFx0IHN0cnVjdCBueHB3aWZpXzExYXhfaGVfY2ZnICpheF9jZmcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTU0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjU1OmludCBueHB3aWZpX2NtZF8xMWF4X2NtZChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTU2LVx0XHRcdCBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqY21kLCB1MTYgY21kX2FjdGlvbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDo1NzpcdFx0XHQgc3RydWN0IG54cHdpZmlfMTFheF9jbWRfY2ZnICpheF9jbWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTU4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjU5OmludCBueHB3aWZpX3JldF8xMWF4X2NtZChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTYwLVx0XHRcdCBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqcmVzcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDo2MTpcdFx0XHQgc3RydWN0IG54cHdpZmlfMTFheF9jbWRfY2ZnICpheF9jbWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTYyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjYzOmludCBueHB3aWZpX2NtZF90d3RfY2ZnKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNjQtXHRcdFx0c3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCwgdTE2IGNtZF9hY3Rpb24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NjU6XHRcdFx0c3RydWN0IG54cHdpZmlfdHd0X2NmZyAqdHd0X2NmZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6Njc6aW50IG54cHdpZmlfcmV0X3R3dF9jZmcoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC02OC1cdFx0XHRzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqcmVzcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDo2OTpcdFx0XHRzdHJ1Y3Qgbnhwd2lmaV90d3RfY2ZnICp0d3RfY2ZnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC03MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDo3MTp1OCBueHB3aWZpX2lzX3N0YV8xMWF4X3R3dF9yZXFfc3VwcG9ydGVkKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTcyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExaC5jLTEyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmM6MTM6dm9pZCBueHB3aWZpX2luaXRfMTFoX3BhcmFtcyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmMtMTQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExaC5jLTE4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmM6MTk6aW50IG54cHdpZmlfaXNfMTFoX2FjdGl2ZShzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmMtMjAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExaC5jPTI1PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYzoyNjpueHB3aWZpXzExaF9wcm9jZXNzX2luZnJhX2pvaW4oc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdiwgdTggKipidWZmZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYzoyNzpcdFx0XHQgICAgICAgc3RydWN0IG54cHdpZmlfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYy0yOC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYzoyOTpcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlYWRlciAqaWVfaGVhZGVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmM6MzA6XHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19wd3JfY2FwYWJpbGl0eSAqY2FwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmM6MzE6XHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19sb2NhbF9wd3JfY29uc3RyYWludCAqY29uc3RyYWludDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExaC5jLTMyLVx0c3RydWN0IGllZWU4MDIxMV9zdXBwb3J0ZWRfYmFuZCAqc2JhbmQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmMtMzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYzozOTpcdHJhZGlvX3R5cGUgPSBueHB3aWZpX2JhbmRfdG9fcmFkaW9fdHlwZSgodTgpYnNzX2Rlc2MtXHUwMDNlYnNzX2JhbmQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmMtNDAtXHRzYmFuZCA9IHByaXYtXHUwMDNld2Rldi53aXBoeS1cdTAwM2ViYW5kc1tyYWRpb190eXBlXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExaC5jLTQxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmM6NDI6XHRjYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfcHdyX2NhcGFiaWxpdHkgKikqYnVmZmVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmMtNDMtXHRjYXAtXHUwMDNlaGVhZGVyLnR5cGUgPSBjcHVfdG9fbGUxNihXTEFOX0VJRF9QV1JfQ0FQQUJJTElUWSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmMtNDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYzo0OTpcdGNvbnN0cmFpbnQgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfbG9jYWxfcHdyX2NvbnN0cmFpbnQgKikqYnVmZmVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmMtNTAtXHRjb25zdHJhaW50LVx1MDAzZWhlYWRlci50eXBlID0gY3B1X3RvX2xlMTYoV0xBTl9FSURfUFdSX0NPTlNUUkFJTlQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExaC5jLTU1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmM6NTY6XHRpZV9oZWFkZXIgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVhZGVyICopKmJ1ZmZlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExaC5jLTU3LVx0aWVfaGVhZGVyLVx1MDAzZXR5cGUgPSBjcHVfdG9fbGUxNihUTFZfVFlQRV9QQVNTVEhST1VHSCk7XG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDc6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDUwNTEKCQkJCQkJCW91dHB1dDogMTIyCgkJCQkJCQl0aG91Z2h0czogMzg1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIGBueHB3aWZpYCBEcml2ZXIgZm9yIEZ1enppbmcqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gVGhlIGBueHB3aWZpYCBkcml2ZXIgaXMgc3BlY2lmaWNhbGx5IHRpZWQgdG8gTlhQJiMzOTtzIElXNjF4IGhhcmR3YXJlLCBjb25uZWN0ZWQgdmlhIFNESU8uIFRoYXQgYWxvbmUgaXMgYSByZWQgZmxhZy4gSSBrbm93IHRoYXQgdGhpcyBwYXJ0aWN1bGFyIGhhcmR3YXJlIGlzbiYjMzk7dCBlbXVsYXRlZCBhdCBhbGwgaW4gc3RhbmRhcmQgdmlydHVhbGl6YXRpb24gdG9vbHMgbGlrZSBRRU1VIG9yIGluIGNsb3VkIGVudmlyb25tZW50cyBsaWtlIEdvb2dsZSBDb21wdXRlIEVuZ2luZS4gU28sIGFueSBjb2RlIHBhdGhzIHdpdGhpbiBgbnhwd2lmaWAgYXJlIGdvaW5nIHRvIGJlIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUgdXNpbmcgb3VyIHZpcnR1YWxpemVkIGZ1enppbmcgc2V0dXBzLgoKTGV0JiMzOTtzIGRvdWJsZS1jaGVjayB0aGUgZXhjbHVzaW9uIGNyaXRlcmlhIGp1c3QgdG8gYmUgY2VydGFpbi4gV2UmIzM5O3JlIGxvb2tpbmcgZm9yIGNvZGUgdGhhdCYjMzk7cyBpbmFjY2Vzc2libGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBldmVuIHdpdGggZW11bGF0ZWQgaGFyZHdhcmUsIG9yIGNhbGxiYWNrcyB0cmlnZ2VyZWQgYnkgUENJIGhvdC11bnBsdWcgb3BlcmF0aW9ucywgb3IgY29kZSB3aXRoaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgZHJpdmVycyB0aGF0IG5lZWQgcGh5c2ljYWwgaGFyZHdhcmUgY2FyZHMuCgpZZXAsIHRoZSBgbnhwd2lmaWAgc2l0dWF0aW9uIGxpbmVzIHVwIHBlcmZlY3RseS4gSXQmIzM5O3MgYSB0ZXh0Ym9vayBleGFtcGxlIG9mIGEgZHJpdmVyIHRoYXTigJlzIGdvaW5nIHRvIGJlIHVzZWxlc3MgZm9yIHVzIHRvIHRhcmdldC4KClRpbWUgdG8gcHJlcGFyZSB0aGUgcmVzdWx0cy4gV2UgbmVlZCB0byBzZXQgYFdvcnRoRnV6emluZ2AgdG8gYGZhbHNlYC4gTm8gcG9pbnQgd2FzdGluZyByZXNvdXJjZXMuIFRoZSBgRW5hYmxlQ29uZmlnc2AgYW5kIGBGb2N1c1N5bWJvbHNgIHdpbGwgYmUgZW1wdHkuIFRoZSBgUmVhc29uaW5nYCBuZWVkcyB0byBiZSBjbGVhcjogJiMzNDtUaGUgY2hhbmdlcyBhcmUgaW4gdGhlIGBueHB3aWZpYCBkcml2ZXIgKGRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NmZzgwMjExLmMpLCB3aGljaCBpcyBhIHZlbmRvciB3aXJlbGVzcyBkcml2ZXIgc3VwcG9ydGluZyBOWFAgSVc2MXggZGV2aWNlcyBvdmVyIFNESU8uIEl0IHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIFNESU8gaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgc3VjaCBhcyBRRU1VIG9yIEdDRS4mIzM0OwoKQW5kIHdpdGggdGhhdCBkb25lLCBJJiMzOTttIGdvaW5nIHRvIHNldCB0aGVzZSByZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwNzo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIG1vZGlmaWNhdGlvbnMgYXJlIGluIHRoZSBOWFAgV2lGaSBkcml2ZXIgKGRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NmZzgwMjExLmMpLCB3aGljaCBpcyBhbiBTRElPLWJhc2VkIHdpcmVsZXNzIG5ldHdvcmsgZHJpdmVyIChDT05GSUdfTlhQV0lGSSAvIENPTkZJR19OWFBXSUZJX1NESU8pIHJlcXVpcmluZyBwaHlzaWNhbCBOWFAgSVc2MXggaGFyZHdhcmUuIFRoZSBkcml2ZXIgY2Fubm90IGJlIGluc3RhbnRpYXRlZCBvciByZWFjaGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFIHdpdGhvdXQgZGVkaWNhdGVkIHBoeXNpY2FsIGhhcmR3YXJlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgbW9kaWZpY2F0aW9ucyBhcmUgaW4gdGhlIE5YUCBXaUZpIGRyaXZlciAoZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY2ZnODAyMTEuYyksIHdoaWNoIGlzIGFuIFNESU8tYmFzZWQgd2lyZWxlc3MgbmV0d29yayBkcml2ZXIgKENPTkZJR19OWFBXSUZJIC8gQ09ORklHX05YUFdJRklfU0RJTykgcmVxdWlyaW5nIHBoeXNpY2FsIE5YUCBJVzYxeCBoYXJkd2FyZS4gVGhlIGRyaXZlciBjYW5ub3QgYmUgaW5zdGFudGlhdGVkIG9yIHJlYWNoZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0Ugd2l0aG91dCBkZWRpY2F0ZWQgcGh5c2ljYWwgaGFyZHdhcmUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwNzo1ODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDc6NTc6MDAuMjg1NzA1MTk1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjA2Mjg2NDI1MTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBtb2RpZmljYXRpb25zIGFyZSBpbiB0aGUgTlhQIFdpRmkgZHJpdmVyIChkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jZmc4MDIxMS5jKSwgd2hpY2ggaXMgYW4gU0RJTy1iYXNlZCB3aXJlbGVzcyBuZXR3b3JrIGRyaXZlciAoQ09ORklHX05YUFdJRkkgLyBDT05GSUdfTlhQV0lGSV9TRElPKSByZXF1aXJpbmcgcGh5c2ljYWwgTlhQIElXNjF4IGhhcmR3YXJlLiBUaGUgZHJpdmVyIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQgb3IgcmVhY2hlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSB3aXRob3V0IGRlZGljYXRlZCBwaHlzaWNhbCBoYXJkd2FyZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA3OjU3OjAwLjI4NTcxMDg5NVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzgyNDAxNzUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYWIxZjJmYWY3YmJlMWVhMGExZmRiZDdkNTZiOTc1ZmFjYWFlMjY2ZlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEF1ZyAzMSAwNzo1Njo1OSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jZmc4MDIxMS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY2ZnODAyMTEuY1xcbmluZGV4IDVjYzhjZGY1OTRkM2UuLjMzNTIyMWM0ZjE3ZDEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY2ZnODAyMTEuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NmZzgwMjExLmNcXG5AQCAtODQ0LDggKzg0NCw3IEBAIG54cHdpZmlfY2hhbmdlX3ZpZl90b19zdGEoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4gXFx0dXBkYXRlX3ZpZl90eXBlX2NvdW50ZXIoYWRhcHRlciwgdHlwZSwgMSk7XFxuIFxcdGRldi1cXHUwMDNlaWVlZTgwMjExX3B0ci1cXHUwMDNlaWZ0eXBlID0gdHlwZTtcXG4gXFxuLVxcdGlmIChueHB3aWZpX3NldF9ic3NfbW9kZShwcml2KSlcXG4tXFx0XFx0cmV0dXJuIC0xO1xcbitcXHRyZXQgPSBueHB3aWZpX3NldF9ic3NfbW9kZShwcml2KTtcXG4gXFxuIFxcdGlmIChyZXQpXFxuIFxcdFxcdGdvdG8gZG9uZTtcXG5AQCAtODg4LDggKzg4Nyw3IEBAIG54cHdpZmlfY2hhbmdlX3ZpZl90b19hcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXHR1cGRhdGVfdmlmX3R5cGVfY291bnRlcihhZGFwdGVyLCB0eXBlLCAxKTtcXG4gXFx0ZGV2LVxcdTAwM2VpZWVlODAyMTFfcHRyLVxcdTAwM2VpZnR5cGUgPSB0eXBlO1xcbiBcXG4tXFx0aWYgKG54cHdpZmlfc2V0X2Jzc19tb2RlKHByaXYpKVxcbi1cXHRcXHRyZXR1cm4gLTE7XFxuK1xcdHJldCA9IG54cHdpZmlfc2V0X2Jzc19tb2RlKHByaXYpO1xcbiBcXG4gXFx0aWYgKHJldClcXG4gXFx0XFx0Z290byBkb25lO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwNzo1NzowMC42Njg3OTQ0OTdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjYwMjQ1NTM5NjUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBtb2RpZmljYXRpb25zIGFyZSBpbiB0aGUgTlhQIFdpRmkgZHJpdmVyIChkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jZmc4MDIxMS5jKSwgd2hpY2ggaXMgYW4gU0RJTy1iYXNlZCB3aXJlbGVzcyBuZXR3b3JrIGRyaXZlciAoQ09ORklHX05YUFdJRkkgLyBDT05GSUdfTlhQV0lGSV9TRElPKSByZXF1aXJpbmcgcGh5c2ljYWwgTlhQIElXNjF4IGhhcmR3YXJlLiBUaGUgZHJpdmVyIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQgb3IgcmVhY2hlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSB3aXRob3V0IGRlZGljYXRlZCBwaHlzaWNhbCBoYXJkd2FyZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGFiMWYyZmFmN2JiZTFlYTBhMWZkYmQ3ZDU2Yjk3NWZhY2FhZTI2NmZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzMSAwNzo1Njo1OSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jZmc4MDIxMS5jXG5pbmRleCA1Y2M4Y2RmNTk0ZDNlLi4zMzUyMjFjNGYxN2QxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY2ZnODAyMTEuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY2ZnODAyMTEuY1xuQEAgLTg0NCw4ICs4NDQsNyBAQCBueHB3aWZpX2NoYW5nZV92aWZfdG9fc3RhKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHR1cGRhdGVfdmlmX3R5cGVfY291bnRlcihhZGFwdGVyLCB0eXBlLCAxKTtcbiBcdGRldi1cdTAwM2VpZWVlODAyMTFfcHRyLVx1MDAzZWlmdHlwZSA9IHR5cGU7XG4gXG4tXHRpZiAobnhwd2lmaV9zZXRfYnNzX21vZGUocHJpdikpXG4tXHRcdHJldHVybiAtMTtcbitcdHJldCA9IG54cHdpZmlfc2V0X2Jzc19tb2RlKHByaXYpO1xuIFxuIFx0aWYgKHJldClcbiBcdFx0Z290byBkb25lO1xuQEAgLTg4OCw4ICs4ODcsNyBAQCBueHB3aWZpX2NoYW5nZV92aWZfdG9fYXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdHVwZGF0ZV92aWZfdHlwZV9jb3VudGVyKGFkYXB0ZXIsIHR5cGUsIDEpO1xuIFx0ZGV2LVx1MDAzZWllZWU4MDIxMV9wdHItXHUwMDNlaWZ0eXBlID0gdHlwZTtcbiBcbi1cdGlmIChueHB3aWZpX3NldF9ic3NfbW9kZShwcml2KSlcbi1cdFx0cmV0dXJuIC0xO1xuK1x0cmV0ID0gbnhwd2lmaV9zZXRfYnNzX21vZGUocHJpdik7XG4gXG4gXHRpZiAocmV0KVxuIFx0XHRnb3RvIGRvbmU7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwNzo1NzowMC42Njg3OTY0MTdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2NTI1MTMyNjQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFdpcmVsZXNzIERyaXZlciBQYXRjaCoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBUaGUga2V5IGZpbGUgaGVyZSBpcyBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY2ZnODAyMTEuY2AsIHdoaWNoIGltbWVkaWF0ZWx5IHN1Z2dlc3RzIHdlJ3JlIGRlYWxpbmcgd2l0aCB0aGUgTlhQIFdpRmkgZHJpdmVyLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIGJ1cyBpbnRlcmFjdGlvbi4gSXMgdGhpcyBhIFVTQi1iYXNlZCBkZXZpY2UsIFNESU8sIG9yIHBlcmhhcHMgUENJZT8gVGhpcyBpcyBjcnVjaWFsIGZvciBkZXRlcm1pbmluZyBob3cgd2UgY2FuIGVmZmVjdGl2ZWx5IGZ1enogaXQuIElmIGl0J3MgVVNCLCBjYW4gd2UgbGV2ZXJhZ2UgVVNCIGdhZGdldCBtb2RlcyBvciByYXcgZ2FkZ2V0IGFwcHJvYWNoZXM/IE9yIHBlcmhhcHMgZXZlbiBlbXVsYXRlIHRoZSBkZXZpY2U/IE9mIGNvdXJzZSwgaWYgaXQncyBTRElPIG9yIFBDSWUsIHRoYXQgY2hhbmdlcyB0aGUgZ2FtZS5cblxuVG8gdW5kZXJzdGFuZCB0aGUgZHJpdmVyJ3MgaW50ZXJuYWxzIGEgYml0IGJldHRlciwgSSdsbCBuZWVkIHRvIGV4cGxvcmUgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9gIGRpcmVjdG9yeSBtb3JlIGNsb3NlbHkuIEknbGwgbGlrZWx5IHVzZSBgY29kZXNlYXJjaC1kaXItaW5kZXhgIG9yIGByZWFkLWZpbGVgIG9yIGBncmVwcGVyYCB0byBxdWlja2x5IGdldCBhbiBvdmVydmlldyBvZiB0aGUgY29kZSBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlLCBpZiBwb3NzaWJsZS4gVGhpcyBzaG91bGQgaGVscCBjbGFyaWZ5IHRoZSBidXMgaW50ZXJmYWNlIGFuZCBwb3RlbnRpYWwgZnV6emluZyB2ZWN0b3JzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjYxLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDc6NTc6MDcuMTkzOTMwOTYzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiY29kZXNlYXJjaC1kaXItaW5kZXgiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDA4ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJEaXJcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJGaWxlc1wiOiBbXG4gICAgXCIxMWFjLmNcIixcbiAgICBcIjExYWMuaFwiLFxuICAgIFwiMTFheC5jXCIsXG4gICAgXCIxMWF4LmhcIixcbiAgICBcIjExaC5jXCIsXG4gICAgXCIxMW4uY1wiLFxuICAgIFwiMTFuLmhcIixcbiAgICBcIjExbl9hZ2dyLmNcIixcbiAgICBcIjExbl9hZ2dyLmhcIixcbiAgICBcIjExbl9yeHJlb3JkZXIuY1wiLFxuICAgIFwiMTFuX3J4cmVvcmRlci5oXCIsXG4gICAgXCJjZmcuaFwiLFxuICAgIFwiY2ZnODAyMTEuY1wiLFxuICAgIFwiY2ZnODAyMTEuaFwiLFxuICAgIFwiY2ZwLmNcIixcbiAgICBcImNtZGV2dC5jXCIsXG4gICAgXCJjbWRldnQuaFwiLFxuICAgIFwiZGVidWdmcy5jXCIsXG4gICAgXCJldGh0b29sLmNcIixcbiAgICBcImZ3LmhcIixcbiAgICBcImllLmNcIixcbiAgICBcImluaXQuY1wiLFxuICAgIFwiam9pbi5jXCIsXG4gICAgXCJtYWluLmNcIixcbiAgICBcIm1haW4uaFwiLFxuICAgIFwic2Nhbi5jXCIsXG4gICAgXCJzZGlvLmNcIixcbiAgICBcInNkaW8uaFwiLFxuICAgIFwic3RhX2NmZy5jXCIsXG4gICAgXCJzdGFfY21kLmNcIixcbiAgICBcInN0YV9ldmVudC5jXCIsXG4gICAgXCJzdGFfcnguY1wiLFxuICAgIFwic3RhX3R4LmNcIixcbiAgICBcInR4cnguY1wiLFxuICAgIFwidWFwX2NtZC5jXCIsXG4gICAgXCJ1YXBfZXZlbnQuY1wiLFxuICAgIFwidWFwX3R4cnguY1wiLFxuICAgIFwidXRpbC5jXCIsXG4gICAgXCJ1dGlsLmhcIixcbiAgICBcIndtbS5jXCIsXG4gICAgXCJ3bW0uaFwiXG4gIF0sXG4gIFwiU3ViZGlyc1wiOiBudWxsXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwNzo1NzowNy4xOTQwMzQ4MDNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0MTQyNjEzMDg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktjb25maWcgSHVudGluZyBmb3Igbnhwd2lmaSoqXG5cbk9rYXksIHRpbWUgdG8gdHJhY2sgZG93biB0aGUgS2NvbmZpZyBlbnRyaWVzIHJlbGF0ZWQgdG8gYG54cHdpZmlgLiBXaGVyZSBhcmUgdGhleSBoaWRpbmc/IE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHVzZSBgZ3JlcGAgYW5kIHNlYXJjaCBmb3IgdGhlIHN0cmluZyBgbnhwd2lmaWAuIFRoYXQgc2hvdWxkIGJlIGEgcXVpY2sgd2F5IHRvIGxvY2F0ZSBhbnkgbWVudGlvbnMgd2l0aGluIHRoZSBidWlsZCBzeXN0ZW0uIEFsdGVybmF0aXZlbHksIEkga25vdyBJIGNhbiBvZnRlbiBmaW5kIGRyaXZlcnMgd2l0aGluIGBkcml2ZXJzL25ldC93aXJlbGVzc2Agd2hpY2ggbWlnaHQgY29udGFpbiBhIGRlZGljYXRlZCBgbnhwYCBkaXJlY3RvcnkgYW5kIHRoZW4gYSBgS2NvbmZpZ2AgZmlsZS4gSSdsbCBuZWVkIHRvIGNoZWNrIGBkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvS2NvbmZpZ2AgYW5kIGFsc28gdGhlIG1vcmUgZ2VuZXJhbCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZ2AgdG8gYmUgdGhvcm91Z2guIExldCdzIHNlZSB3aGF0IHRoZSBLY29uZmlnIGZpbGVzIHJldmVhbC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAwMiwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzLCJUb29sQ2FsbHMiOlsiY29kZXNlYXJjaC1kaXItaW5kZXgiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwNzo1NzoxMS4zMzY2NTA4NFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NTkxODU0NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJueHB3aWZpXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTUxNzIgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9LY29uZmlnPTEzPWlmIFdMQU5fVkVORE9SX05YUFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9LY29uZmlnLTE0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9LY29uZmlnOjE1OnNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvS2NvbmZpZy0xNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9NYWtlZmlsZS0yLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9NYWtlZmlsZTozOm9iai0kKENPTkZJR19OWFBXSUZJKVxcdCs9IG54cHdpZmkvXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMi0vKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzozOiAqIG54cHdpZmkgODAyLjExYWMgaGVscGVyc1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy00LSAqIENvcHlyaWdodCAyMDExLTIwMjQgTlhQXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM9MzY9c3RhdGljIHUxNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzozNzpueHB3aWZpX2NvbnZlcnRfbWNzbWFwX3RvX21heHJhdGUoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMzgtXFx0XFx0XFx0XFx0ICB1MTYgYmFuZHMsIHUxNiBtY3NfbWFwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTQyLVxcdHUzMiB1c3Jfdmh0X2NhcF9pbmZvID0gMDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6NDM6XFx0c3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtXFx1MDAzZWFkYXB0ZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTQ0LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jPTc5PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjgwOm54cHdpZmlfZmlsbF92aHRfY2FwX2luZm8oc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtODEtXFx0XFx0XFx0ICBzdHJ1Y3QgaWVlZTgwMjExX3ZodF9jYXAgKnZodF9jYXAsIHUxNiBiYW5kcylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtODIte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzo4MzpcXHRzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cXHUwMDNlYWRhcHRlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtODQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM9OTM9dm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzo5NDpueHB3aWZpX2ZpbGxfdmh0X2NhcF90bHYoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtOTUtXFx0XFx0XFx0IHN0cnVjdCBpZWVlODAyMTFfdmh0X2NhcCAqdmh0X2NhcCwgdTE2IGJhbmRzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy05Ni17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjk3OlxcdHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIgPSBwcml2LVxcdTAwM2VhZGFwdGVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy05OC1cXHR1MTYgbWNzX21hcF91c2VyLCBtY3NfbWFwX3Jlc3AsIG1jc19tYXBfcmVzdWx0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTEwMS1cXHQvKiBGaWxsIFZIVCBjYXBhYmlsaXR5IGluZm8uICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjEwMjpcXHRueHB3aWZpX2ZpbGxfdmh0X2NhcF9pbmZvKHByaXYsIHZodF9jYXAsIGJhbmRzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTAzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTEyMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTI0OlxcdHRtcCA9IG54cHdpZmlfY29udmVydF9tY3NtYXBfdG9fbWF4cmF0ZShwcml2LCBiYW5kcywgbWNzX21hcF9yZXN1bHQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xMjUtXFx0dmh0X2NhcC1cXHUwMDNlc3VwcF9tY3MucnhfaGlnaGVzdCA9IGNwdV90b19sZTE2KHRtcCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTQ1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxNDY6XFx0dG1wID0gbnhwd2lmaV9jb252ZXJ0X21jc21hcF90b19tYXhyYXRlKHByaXYsIGJhbmRzLCBtY3NfbWFwX3Jlc3VsdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE0Ny1cXHR2aHRfY2FwLVxcdTAwM2VzdXBwX21jcy50eF9oaWdoZXN0ID0gY3B1X3RvX2xlMTYodG1wKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE1MDppbnQgbnhwd2lmaV9jbWRfYXBwZW5kXzExYWNfdGx2KHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE1MTpcXHRcXHRcXHRcXHRzdHJ1Y3Qgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTUyLVxcdFxcdFxcdFxcdHU4ICoqYnVmZmVyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNTMte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxNTQ6XFx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfdmh0Y2FwICp2aHRfY2FwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxNTU6XFx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfb3Blcl9tb2RlX250ZiAqb3Blcl9udGY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE1Ni1cXHRzdHJ1Y3QgaWVlZV90eXBlc19vcGVyX21vZGVfbnRmICppZWVlX29wZXJfbnRmO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxNTc6XFx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfdmh0X29wZXIgKnZodF9vcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTU4OlxcdHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIgPSBwcml2LVxcdTAwM2VhZGFwdGVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNTktXFx0dTggc3VwcF9jaHdkX3NldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNjktXFx0aWYgKGJzc19kZXNjLVxcdTAwM2ViY25fdmh0X2NhcCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxNzA6XFx0XFx0dmh0X2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc192aHRjYXAgKikqYnVmZmVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNzEtXFx0XFx0bWVtc2V0KHZodF9jYXAsIDAsIHNpemVvZigqdmh0X2NhcCkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE3NC1cXHRcXHRcXHRjcHVfdG9fbGUxNihzaXplb2Yoc3RydWN0IGllZWU4MDIxMV92aHRfY2FwKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE3NTpcXHRcXHRtZW1jcHkoKHU4ICopdmh0X2NhcCArIHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZWFkZXIpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNzYtXFx0XFx0ICAgICAgICh1OCAqKWJzc19kZXNjLVxcdTAwM2ViY25fdmh0X2NhcCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE3OTpcXHRcXHRueHB3aWZpX2ZpbGxfdmh0X2NhcF90bHYocHJpdiwgXFx1MDAyNnZodF9jYXAtXFx1MDAzZXZodF9jYXAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE4MC1cXHRcXHRcXHRcXHRcXHQgYnNzX2Rlc2MtXFx1MDAzZWJzc19iYW5kKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xODctXFx0XFx0aWYgKHByaXYtXFx1MDAzZWJzc19tb2RlID09IE5MODAyMTFfSUZUWVBFX1NUQVRJT04pIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTg4OlxcdFxcdFxcdHZodF9vcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc192aHRfb3BlciAqKSpidWZmZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE4OS1cXHRcXHRcXHRtZW1zZXQodmh0X29wLCAwLCBzaXplb2YoKnZodF9vcCkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE5Mi1cXHRcXHRcXHR2aHRfb3AtXFx1MDAzZWhlYWRlci5sZW4gID0gY3B1X3RvX2xlMTYoc2l6ZW9mKCp2aHRfb3ApIC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTkzOlxcdFxcdFxcdFxcdHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZWFkZXIpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTk0LVxcdFxcdFxcdG1lbWNweSgodTggKil2aHRfb3AgK1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxOTU6XFx0XFx0XFx0XFx0c2l6ZW9mKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlYWRlciksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE5Ni1cXHRcXHRcXHQgICAgICAgKHU4ICopYnNzX2Rlc2MtXFx1MDAzZWJjbl92aHRfb3BlcixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0yNDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjI0NTppbnQgbnhwd2lmaV9jbWRfMTFhY19jZmcoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMjQ2LVxcdFxcdFxcdCBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqY21kLCB1MTYgY21kX2FjdGlvbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MjQ3OlxcdFxcdFxcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWFjX3ZodF9jZmcgKmNmZylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMjQ4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0yNjQtLyogSW5pdGlhbGl6ZSBCbG9ja0FjayBwYXJhbWV0ZXJzIGZvciAxMWFjLiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoyNjU6dm9pZCBueHB3aWZpX3NldF8xMWFjX2JhX3BhcmFtcyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0yNjYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5oLTItLypcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmg6MzogKiBueHB3aWZpOiA4MDIuMTFhYyAoVkhUKSBkZWZpbml0aW9uc1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuaC00LSAqXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmg9MTQ9ZW51bSB2aHRfY2ZnX21pc2NfY29uZmlnIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuaC0yNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmg6MjU6aW50IG54cHdpZmlfY21kX2FwcGVuZF8xMWFjX3RsdihzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuaDoyNjpcXHRcXHRcXHRcXHRzdHJ1Y3Qgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmgtMjctXFx0XFx0XFx0XFx0dTggKipidWZmZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuaDoyODppbnQgbnhwd2lmaV9jbWRfMTFhY19jZmcoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmgtMjktXFx0XFx0XFx0IHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpjbWQsIHUxNiBjbWRfYWN0aW9uLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuaDozMDpcXHRcXHRcXHQgc3RydWN0IG54cHdpZmlfMTFhY192aHRfY2ZnICpjZmcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuaDozMTp2b2lkIG54cHdpZmlfZmlsbF92aHRfY2FwX3RsdihzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuaC0zMi1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3ZodF9jYXAgKnZodF9jYXAsIHUxNiBiYW5kcyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMS0vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI6Lyogbnhwd2lmaTogODAyLjExYXggKEhFKSBzdXBwb3J0XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTMtICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjQgTlhQXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjExOnZvaWQgbnhwd2lmaV91cGRhdGVfMTFheF9jYXAoc3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTItXFx0XFx0XFx0ICAgICBzdHJ1Y3QgaHdfc3BlY19leHRlbnNpb24gKmh3X2hlX2NhcClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTMte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNDpcXHRzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNTpcXHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKmhlX2NhcCA9IE5VTEw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE2OlxcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqdXNlcl9oZV9jYXAgPSBOVUxMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNzpcXHR1OCBoZWFkZXJfbGVuID0gc2l6ZW9mKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlYWRlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE4LVxcdHUxNiBkYXRhX2xlbiA9IGxlMTZfdG9fY3B1KGh3X2hlX2NhcC1cXHUwMDNlaGVhZGVyLmxlbik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjItXFx0aWYgKChkYXRhX2xlbiArIGhlYWRlcl9sZW4pIFxcdTAwM2Ugc2l6ZW9mKGFkYXB0ZXItXFx1MDAzZWh3X2hlX2NhcCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjM6XFx0XFx0bnhwd2lmaV9kYmcoYWRhcHRlciwgRVJST1IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI0LVxcdFxcdFxcdCAgICBcXFwiaHdfaGVfY2FwIHRvbyBiaWcsIGxlbj0lZFxcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6Mjk6XFx0aGVfY2FwID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqKWh3X2hlX2NhcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzctXFx0XFx0aGVfY2FwXzJnID0gdHJ1ZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6Mzg6XFx0XFx0bnhwd2lmaV9kYmdfZHVtcChhZGFwdGVyLCBDTURfRCwgXFxcIjIuNEcgSEUgY2FwYWJpbGl0eSBlbGVtZW50IFxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM5LVxcdFxcdFxcdFxcdCBhZGFwdGVyLVxcdTAwM2Vod18yZ19oZV9jYXAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDUtXFx0XFx0YWRhcHRlci1cXHUwMDNlZndfYmFuZHMgfD0gQkFORF9BQVg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ2OlxcdFxcdG54cHdpZmlfZGJnX2R1bXAoYWRhcHRlciwgQ01EX0QsIFxcXCI1RyBIRSBjYXBhYmlsaXR5IGVsZW1lbnQgXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDctXFx0XFx0XFx0XFx0IGFkYXB0ZXItXFx1MDAzZWh3X2hlX2NhcCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01Ny1cXHRcXHRcXHQgICAgICAgc2l6ZW9mKGFkYXB0ZXItXFx1MDAzZWh3XzJnX2hlX2NhcCkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1ODpcXHRcXHRcXHR1c2VyX2hlX2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTktXFx0XFx0XFx0XFx0cHJpdi1cXHUwMDNldXNlcl8yZ19oZV9jYXA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNjMtXFx0XFx0XFx0ICAgICAgIHNpemVvZihhZGFwdGVyLVxcdTAwM2Vod19oZV9jYXApKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NjQ6XFx0XFx0XFx0dXNlcl9oZV9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICopXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTY1LVxcdFxcdFxcdFxcdHByaXYtXFx1MDAzZXVzZXJfaGVfY2FwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTc4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo3OTpib29sIG54cHdpZmlfMTFheF9iYW5kY29uZmlnX2FsbG93ZWQoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6ODA6XFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3Qgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtODEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTk0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo5NTppbnQgbnhwd2lmaV9maWxsX2hlX2NhcF90bHYoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6OTY6XFx0XFx0XFx0ICAgIHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqaGVfY2FwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy05Ny1cXHRcXHRcXHQgICAgdTE2IGJhbmRzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy05OC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjk5OlxcdHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIgPSBwcml2LVxcdTAwM2VhZGFwdGVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxMDA6XFx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICpod19oZV9jYXAgPSBOVUxMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMDEtXFx0dTE2IHJ4X25zcywgdHhfbnNzO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTEwOC1cXHRcXHRtZW1jcHkoaGVfY2FwLCBwcml2LVxcdTAwM2V1c2VyX2hlX2NhcCwgcHJpdi1cXHUwMDNldXNlcl9oZV9jYXBfbGVuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTA5OlxcdFxcdGh3X2hlX2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKilhZGFwdGVyLVxcdTAwM2Vod19oZV9jYXA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTExMC1cXHRcXHRyZXRfbGVuID0gcHJpdi1cXHUwMDNldXNlcl9oZV9jYXBfbGVuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTExMi1cXHRcXHRtZW1jcHkoaGVfY2FwLCBwcml2LVxcdTAwM2V1c2VyXzJnX2hlX2NhcCwgcHJpdi1cXHUwMDNldXNlcl8yZ19oZV9jYXBfbGVuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTEzOlxcdFxcdGh3X2hlX2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKilhZGFwdGVyLVxcdTAwM2Vod18yZ19oZV9jYXA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTExNC1cXHRcXHRyZXRfbGVuID0gcHJpdi1cXHUwMDNldXNlcl8yZ19oZV9jYXBfbGVuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTEyNS1cXHRmb3IgKG5zcyA9IDE7IG5zcyBcXHUwMDNjPSA4OyBuc3MrKykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxMjY6XFx0XFx0Y2ZnX3ZhbHVlID0gbnhwd2lmaV9nZXRfaGVfbnNzX21jcyhoZV9jYXAtXFx1MDAzZXJ4X21jc184MCwgbnNzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTI3OlxcdFxcdGh3X3ZhbHVlID0gbnhwd2lmaV9nZXRfaGVfbnNzX21jcyhod19oZV9jYXAtXFx1MDAzZXJ4X21jc184MCwgbnNzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTI4LVxcdFxcdGlmIChyeF9uc3MgIT0gMCBcXHUwMDI2XFx1MDAyNiBuc3MgXFx1MDAzZSByeF9uc3MpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTMwLVxcdFxcdGlmIChod192YWx1ZSA9PSBOT19OU1NfU1VQUE9SVCB8fCBjZmdfdmFsdWUgPT0gTk9fTlNTX1NVUFBPUlQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjEzMTpcXHRcXHRcXHRueHB3aWZpX3NldF9oZV9uc3NfbWNzKFxcdTAwMjZoZV9jYXAtXFx1MDAzZXJ4X21jc184MCwgbnNzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMzItXFx0XFx0XFx0XFx0XFx0ICAgICAgIE5PX05TU19TVVBQT1JUKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTMzLVxcdFxcdGVsc2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTM0OlxcdFxcdFxcdG54cHdpZmlfc2V0X2hlX25zc19tY3MoXFx1MDAyNmhlX2NhcC1cXHUwMDNlcnhfbWNzXzgwLCBuc3MsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTEzNS1cXHRcXHRcXHRcXHRcXHQgICAgICAgbWluKGNmZ192YWx1ZSwgaHdfdmFsdWUpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMzgtXFx0Zm9yIChuc3MgPSAxOyBuc3MgXFx1MDAzYz0gODsgbnNzKyspIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTM5OlxcdFxcdGNmZ192YWx1ZSA9IG54cHdpZmlfZ2V0X2hlX25zc19tY3MoaGVfY2FwLVxcdTAwM2V0eF9tY3NfODAsIG5zcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE0MDpcXHRcXHRod192YWx1ZSA9IG54cHdpZmlfZ2V0X2hlX25zc19tY3MoaHdfaGVfY2FwLVxcdTAwM2V0eF9tY3NfODAsIG5zcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE0MS1cXHRcXHRpZiAodHhfbnNzICE9IDAgXFx1MDAyNlxcdTAwMjYgbnNzIFxcdTAwM2UgdHhfbnNzKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE0My1cXHRcXHRpZiAoaHdfdmFsdWUgPT0gTk9fTlNTX1NVUFBPUlQgfHwgY2ZnX3ZhbHVlID09IE5PX05TU19TVVBQT1JUKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNDQ6XFx0XFx0XFx0bnhwd2lmaV9zZXRfaGVfbnNzX21jcyhcXHUwMDI2aGVfY2FwLVxcdTAwM2V0eF9tY3NfODAsIG5zcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTQ1LVxcdFxcdFxcdFxcdFxcdCAgICAgICBOT19OU1NfU1VQUE9SVCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE0Ni1cXHRcXHRlbHNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE0NzpcXHRcXHRcXHRueHB3aWZpX3NldF9oZV9uc3NfbWNzKFxcdTAwMjZoZV9jYXAtXFx1MDAzZXR4X21jc184MCwgbnNzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNDgtXFx0XFx0XFx0XFx0XFx0ICAgICAgIG1pbihjZmdfdmFsdWUsIGh3X3ZhbHVlKSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTUzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNTQ6aW50IG54cHdpZmlfY21kX2FwcGVuZF8xMWF4X3RsdihzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNTU6XFx0XFx0XFx0XFx0c3RydWN0IG54cHdpZmlfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE1Ni1cXHRcXHRcXHRcXHR1OCAqKmJ1ZmZlcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTU3LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTU4OlxcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqaGVfY2FwID0gTlVMTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTU5LVxcdGludCByZXRfbGVuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE2My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTY0OlxcdGhlX2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKikqYnVmZmVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNjU6XFx0cmV0X2xlbiA9IG54cHdpZmlfZmlsbF9oZV9jYXBfdGx2KHByaXYsIGhlX2NhcCwgYnNzX2Rlc2MtXFx1MDAzZWJzc19iYW5kKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTY2LVxcdCpidWZmZXIgKz0gcmV0X2xlbjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE3MTppbnQgbnhwd2lmaV9jbWRfMTFheF9jZmcoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTcyLVxcdFxcdFxcdCBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqY21kLCB1MTYgY21kX2FjdGlvbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTczOlxcdFxcdFxcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2hlX2NmZyAqYXhfY2ZnKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNzQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE3Ni1cXHR1MTYgY21kX3NpemU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE3NzpcXHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZWFkZXIgKmhlYWRlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTc4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE4Ni1cXHQgICAgYXhfY2ZnLVxcdTAwM2VoZV9jYXBfY2ZnLmV4dF9pZCA9PSBXTEFOX0VJRF9FWFRfSEVfQ0FQQUJJTElUWSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxODc6XFx0XFx0aGVhZGVyID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlYWRlciAqKWhlX2NmZy1cXHUwMDNldGx2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xODgtXFx0XFx0aGVhZGVyLVxcdTAwM2V0eXBlID0gY3B1X3RvX2xlMTYoYXhfY2ZnLVxcdTAwM2VoZV9jYXBfY2ZnLmlkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yMDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjIwMTppbnQgbnhwd2lmaV9yZXRfMTFheF9jZmcoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjAyLVxcdFxcdFxcdCBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqcmVzcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjAzOlxcdFxcdFxcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2hlX2NmZyAqYXhfY2ZnKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yMDQte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yMDUtXFx0c3RydWN0IGhvc3RfY21kXzExYXhfY2ZnICpoZV9jZmcgPSBcXHUwMDI2cmVzcC1cXHUwMDNlcGFyYW1zLmF4X2NmZztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjA2OlxcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlYWRlciAqaGVhZGVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yMDctXFx0dTE2IGxlZnRfbGVuLCB0bHZfdHlwZSwgdGx2X2xlbjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjA4LVxcdHU4IGV4dF9pZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjA5OlxcdHN0cnVjdCBueHB3aWZpXzExYXhfaGVfY2FwX2NmZyAqaGVfY2FwID0gXFx1MDAyNmF4X2NmZy1cXHUwMDNlaGVfY2FwX2NmZztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjEwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yMTEtXFx0bGVmdF9sZW4gPSBsZTE2X3RvX2NwdShyZXNwLVxcdTAwM2VzaXplKSAtIHNpemVvZigqaGVfY2ZnKSAtIFNfRFNfR0VOO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyMTI6XFx0aGVhZGVyID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlYWRlciAqKWhlX2NmZy1cXHUwMDNldGx2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yMTMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjQyLVxcdFxcdGxlZnRfbGVuIC09IChzaXplb2YoKmhlYWRlcikgKyB0bHZfbGVuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjQzOlxcdFxcdGhlYWRlciA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZWFkZXIgKikoKHU4ICopaGVhZGVyICtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjQ0LVxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICBzaXplb2YoKmhlYWRlcikgK1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI1MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjUxOmludCBueHB3aWZpX2NtZF8xMWF4X2NtZChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yNTItXFx0XFx0XFx0IHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpjbWQsIHUxNiBjbWRfYWN0aW9uLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNTM6XFx0XFx0XFx0IHN0cnVjdCBueHB3aWZpXzExYXhfY21kX2NmZyAqYXhfY21kKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yNTQte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNTU6XFx0c3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtXFx1MDAzZWFkYXB0ZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI1Ni1cXHRzdHJ1Y3QgaG9zdF9jbWRfMTFheF9jbWQgKmhlX2NtZCA9IFxcdTAwMjZjbWQtXFx1MDAzZXBhcmFtcy5heF9jbWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI1Ny1cXHR1MTYgY21kX3NpemU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI1ODpcXHRzdHJ1Y3Qgbnhwd2lmaV8xMWF4X3NyX2NtZCAqc3JfY21kO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNTk6XFx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfZGF0YSAqdGx2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNjA6XFx0c3RydWN0IG54cHdpZmlfMTFheF9iZWFtX2NtZCAqYmVhbV9jbWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI2MTpcXHRzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2h0Y19jbWQgKmh0Y19jbWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI2MjpcXHRzdHJ1Y3Qgbnhwd2lmaV8xMWF4X3R4b21pX2NtZCAqdHhtb2lfY21kO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNjM6XFx0c3RydWN0IG54cHdpZmlfMTFheF90b2x0aW1lX2NtZCAqdG9sdGltZV9jbWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI2NDpcXHRzdHJ1Y3Qgbnhwd2lmaV8xMWF4X3R4b3BfY21kICp0eG9wX2NtZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjY1OlxcdHN0cnVjdCBueHB3aWZpXzExYXhfc2V0X2JzcnBfY21kICpzZXRfYnNycF9jbWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI2NjpcXHRzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2xsZGVfY21kICpsbGRlX2NtZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjY3LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI3NS1cXHRjYXNlIE5YUFdJRklfMTFBWENNRF9TUl9TVUJJRDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6Mjc2OlxcdFxcdHNyX2NtZCA9IChzdHJ1Y3Qgbnhwd2lmaV8xMWF4X3NyX2NtZCAqKVxcdTAwMjZheF9jbWQtXFx1MDAzZXBhcmFtO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yNzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI3ODpcXHRcXHR0bHYgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfZGF0YSAqKWhlX2NtZC1cXHUwMDNldmFsO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yNzktXFx0XFx0dGx2LVxcdTAwM2VoZWFkZXIudHlwZSA9IGNwdV90b19sZTE2KHNyX2NtZC1cXHUwMDNldHlwZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjg1LVxcdGNhc2UgTlhQV0lGSV8xMUFYQ01EX0JFQU1fU1VCSUQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI4NjpcXHRcXHRiZWFtX2NtZCA9IChzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2JlYW1fY21kICopXFx1MDAyNmF4X2NtZC1cXHUwMDNlcGFyYW07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI4Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yOTEtXFx0Y2FzZSBOWFBXSUZJXzExQVhDTURfSFRDX1NVQklEOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyOTI6XFx0XFx0aHRjX2NtZCA9IChzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2h0Y19jbWQgKilcXHUwMDI2YXhfY21kLVxcdTAwM2VwYXJhbTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjkzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI5Ny1cXHRjYXNlIE5YUFdJRklfMTFBWENNRF9UWE9NSV9TVUJJRDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6Mjk4OlxcdFxcdHR4bW9pX2NtZCA9XFx0KHN0cnVjdCBueHB3aWZpXzExYXhfdHhvbWlfY21kICopXFx1MDAyNmF4X2NtZC1cXHUwMDNlcGFyYW07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI5OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zMDMtXFx0Y2FzZSBOWFBXSUZJXzExQVhDTURfT0JTU19UT0xUSU1FX1NVQklEOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozMDQ6XFx0XFx0dG9sdGltZV9jbWQgPSAoc3RydWN0IG54cHdpZmlfMTFheF90b2x0aW1lX2NtZCAqKVxcdTAwMjZheF9jbWQtXFx1MDAzZXBhcmFtO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zMDUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzEwLVxcdGNhc2UgTlhQV0lGSV8xMUFYQ01EX1RYT1BSVFNfU1VCSUQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjMxMTpcXHRcXHR0eG9wX2NtZCA9IChzdHJ1Y3Qgbnhwd2lmaV8xMWF4X3R4b3BfY21kICopXFx1MDAyNmF4X2NtZC1cXHUwMDNlcGFyYW07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTMxMi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zMTctXFx0Y2FzZSBOWFBXSUZJXzExQVhDTURfU0VUX0JTUlBfU1VCSUQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjMxODpcXHRcXHRzZXRfYnNycF9jbWQgPSAoc3RydWN0IG54cHdpZmlfMTFheF9zZXRfYnNycF9jbWQgKilcXHUwMDI2YXhfY21kLVxcdTAwM2VwYXJhbTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzE5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTMyMy1cXHRjYXNlIE5YUFdJRklfMTFBWENNRF9MTERFX1NVQklEOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozMjQ6XFx0XFx0bGxkZV9jbWQgPSAoc3RydWN0IG54cHdpZmlfMTFheF9sbGRlX2NtZCAqKVxcdTAwMjZheF9jbWQtXFx1MDAzZXBhcmFtO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zMjUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzI5LVxcdGRlZmF1bHQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjMzMDpcXHRcXHRueHB3aWZpX2RiZyhhZGFwdGVyLCBFUlJPUixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzMxLVxcdFxcdFxcdCAgICBcXFwiJXM6IFVua25vd24gc3ViIGNvbW1hbmQ6ICVkXFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM0MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MzQxOmludCBueHB3aWZpX3JldF8xMWF4X2NtZChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zNDItXFx0XFx0XFx0IHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpyZXNwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozNDM6XFx0XFx0XFx0IHN0cnVjdCBueHB3aWZpXzExYXhfY21kX2NmZyAqYXhfY21kKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zNDQte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozNDU6XFx0c3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtXFx1MDAzZWFkYXB0ZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM0Ni1cXHRzdHJ1Y3QgaG9zdF9jbWRfMTFheF9jbWQgKmhlX2NtZCA9IFxcdTAwMjZyZXNwLVxcdTAwM2VwYXJhbXMuYXhfY21kO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozNDc6XFx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfZGF0YSAqdGx2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zNDgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzUyLVxcdGNhc2UgTlhQV0lGSV8xMUFYQ01EX1NSX1NVQklEOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozNTM6XFx0XFx0dGx2ID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2RhdGEgKiloZV9jbWQtXFx1MDAzZXZhbDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzU0LVxcdFxcdG1lbWNweShheF9jbWQtXFx1MDAzZXBhcmFtLnNyX2NmZy5wYXJhbS5vYnNzX3BkX29mZnNldC5vZmZzZXQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzgzLVxcdGRlZmF1bHQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjM4NDpcXHRcXHRueHB3aWZpX2RiZyhhZGFwdGVyLCBFUlJPUixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzg1LVxcdFxcdFxcdCAgICBcXFwiJXM6IFVua25vd24gc3ViIGNvbW1hbmQ6ICVkXFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM5Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MzkzOnN0YXRpYyB1OCBueHB3aWZpX2lzX2FwXzExYXhfdHd0X3N1cHBvcnRlZChzdHJ1Y3Qgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzk0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQxMDpib29sIG54cHdpZmlfaXNfMTFheF90d3Rfc3VwcG9ydGVkKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQxMTpcXHRcXHRcXHRcXHQgICBzdHJ1Y3Qgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDEyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDEzOlxcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqdXNlcl9oZV9jYXA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQxNDpcXHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKmh3X2hlX2NhcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDE1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQxOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDE5OlxcdGlmICghbnhwd2lmaV9pc19hcF8xMWF4X3R3dF9zdXBwb3J0ZWQoYnNzX2Rlc2MpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQyMDpcXHRcXHRueHB3aWZpX2RiZyhwcml2LVxcdTAwM2VhZGFwdGVyLCBNU0csXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQyMS1cXHRcXHRcXHQgICAgXFxcIkFQIGRvbid0IHN1cHBvcnQgdHd0IGZlYXR1cmVcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQyNS1cXHRpZiAoYnNzX2Rlc2MtXFx1MDAzZWJzc19iYW5kIFxcdTAwMjYgQkFORF9BKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQyNjpcXHRcXHRod19oZV9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICopXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQyNy1cXHRcXHRcXHRwcml2LVxcdTAwM2VhZGFwdGVyLVxcdTAwM2Vod19oZV9jYXA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQyODpcXHRcXHR1c2VyX2hlX2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDI5LVxcdFxcdFxcdHByaXYtXFx1MDAzZXVzZXJfaGVfY2FwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MzAtXFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDMxOlxcdFxcdGh3X2hlX2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDMyLVxcdFxcdFxcdHByaXYtXFx1MDAzZWFkYXB0ZXItXFx1MDAzZWh3XzJnX2hlX2NhcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDMzOlxcdFxcdHVzZXJfaGVfY2FwID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MzQtXFx0XFx0XFx0cHJpdi1cXHUwMDNldXNlcl8yZ19oZV9jYXA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDM3LVxcdGlmICghKGh3X2hlX2NhcC1cXHUwMDNlaGVfbWFjX2NhcFswXSBcXHUwMDI2IEhFX01BQ19DQVBfVFdUX1JFUV9TVVBQT1JUKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0Mzg6XFx0XFx0bnhwd2lmaV9kYmcocHJpdi1cXHUwMDNlYWRhcHRlciwgTVNHLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MzktXFx0XFx0XFx0ICAgIFxcXCJGVyBkb24ndCBzdXBwb3J0IFRXVFxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDQzLVxcdGlmICghKHVzZXJfaGVfY2FwLVxcdTAwM2VoZV9tYWNfY2FwWzBdIFxcdTAwMjYgSEVfTUFDX0NBUF9UV1RfUkVRX1NVUFBPUlQpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ0NDpcXHRcXHRueHB3aWZpX2RiZyhwcml2LVxcdTAwM2VhZGFwdGVyLCBNU0csXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ0NS1cXHRcXHRcXHQgICAgXFxcIlVTRVIgSEVfTUFDX0NBUCBkb24ndCBzdXBwb3J0IFRXVFxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDUxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0NTI6dTggbnhwd2lmaV9pc19zdGFfMTFheF90d3RfcmVxX3N1cHBvcnRlZChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00NTMte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0NTQ6XFx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICp1c2VyX2hlX2NhcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDU1LVxcdHU4IHJldCA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDU5LVxcdFxcdGlmIChwcml2LVxcdTAwM2Vjb25maWdfYmFuZHMgXFx1MDAyNiBCQU5EX0FBWClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDYwOlxcdFxcdFxcdHVzZXJfaGVfY2FwID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqKXByaXYtXFx1MDAzZXVzZXJfaGVfY2FwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00NjEtXFx0XFx0ZWxzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0NjI6XFx0XFx0XFx0dXNlcl9oZV9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICopcHJpdi1cXHUwMDNldXNlcl8yZ19oZV9jYXA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ2My1cXHRcXHRyZXQgPSB1c2VyX2hlX2NhcC1cXHUwMDNlaGVfbWFjX2NhcFswXSBcXHUwMDI2IEhFX01BQ19DQVBfVFdUX1JFUV9TVVBQT1JUO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ2OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDY5OmludCBueHB3aWZpX2NtZF90d3RfY2ZnKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ3MC1cXHRcXHRcXHRzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqY21kLCB1MTYgY21kX2FjdGlvbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDcxOlxcdFxcdFxcdHN0cnVjdCBueHB3aWZpX3R3dF9jZmcgKnR3dF9jZmcpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ3Mi17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ3MzpcXHRzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cXHUwMDNlYWRhcHRlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDc0LVxcdHN0cnVjdCBob3N0X2NtZF90d3RfY2ZnICp0d3RfY2ZnX2NtZCA9IFxcdTAwMjZjbWQtXFx1MDAzZXBhcmFtcy50d3RfY2ZnO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0NzU6XFx0c3RydWN0IG54cHdpZmlfdHd0X3NldHVwICp0d3Rfc2V0dXA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ3NjpcXHRzdHJ1Y3Qgbnhwd2lmaV90d3RfdGVhcmRvd24gKnR3dF90ZWFyZG93bjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDc3OlxcdHN0cnVjdCBueHB3aWZpX3R3dF9yZXBvcnQgKnR3dF9yZXBvcnQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ3ODpcXHRzdHJ1Y3Qgbnhwd2lmaV90d3RfaW5mb3JtYXRpb24gKnR3dF9pbmZvcm1hdGlvbjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDc5OlxcdHN0cnVjdCBueHB3aWZpX2J0d3RfYXBfY29uZmlnICpidHd0X2FwX2NvbmZpZztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDgwLVxcdHU4IGk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDkwLVxcdGNhc2UgTlhQV0lGSV8xMUFYX1RXVF9TRVRVUF9TVUJJRDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDkxOlxcdFxcdHR3dF9zZXR1cCA9IChzdHJ1Y3Qgbnhwd2lmaV90d3Rfc2V0dXAgKilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDkyLVxcdFxcdFxcdHR3dF9jZmdfY21kLVxcdTAwM2V2YWw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ5My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDk0OlxcdFxcdG1lbXNldCh0d3Rfc2V0dXAsIDB4MDAsIHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV90d3Rfc2V0dXApKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDk1LVxcdFxcdHR3dF9zZXR1cC1cXHUwMDNlaW1wbGljaXQgPSB0d3RfY2ZnLVxcdTAwM2VwYXJhbS50d3Rfc2V0dXAuaW1wbGljaXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTA3LVxcdFxcdHR3dF9zZXR1cC1cXHUwMDNlYmNuX21pc3NfdGhyZXNob2xkID0gdHd0X2NmZy1cXHUwMDNlcGFyYW0udHd0X3NldHVwLmJjbl9taXNzX3RocmVzaG9sZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTA4OlxcdFxcdGNtZF9zaXplICs9IHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV90d3Rfc2V0dXApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MDktXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUxMC1cXHRjYXNlIE5YUFdJRklfMTFBWF9UV1RfVEVBUkRPV05fU1VCSUQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjUxMTpcXHRcXHR0d3RfdGVhcmRvd24gPSAoc3RydWN0IG54cHdpZmlfdHd0X3RlYXJkb3duICopXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUxMi1cXHRcXHRcXHR0d3RfY2ZnX2NtZC1cXHUwMDNldmFsO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MTMtXFx0XFx0bWVtc2V0KHR3dF90ZWFyZG93biwgMHgwMCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTE0OlxcdFxcdCAgICAgICBzaXplb2Yoc3RydWN0IG54cHdpZmlfdHd0X3RlYXJkb3duKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUxNS1cXHRcXHR0d3RfdGVhcmRvd24tXFx1MDAzZWZsb3dfaWRlbnRpZmllciA9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTIwLVxcdFxcdFxcdHR3dF9jZmctXFx1MDAzZXBhcmFtLnR3dF90ZWFyZG93bi50ZWFyZG93bl9hbGxfdHd0O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1MjE6XFx0XFx0Y21kX3NpemUgKz0gc2l6ZW9mKHN0cnVjdCBueHB3aWZpX3R3dF90ZWFyZG93bik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUyMi1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTIzLVxcdGNhc2UgTlhQV0lGSV8xMUFYX1RXVF9SRVBPUlRfU1VCSUQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjUyNDpcXHRcXHR0d3RfcmVwb3J0ID0gKHN0cnVjdCBueHB3aWZpX3R3dF9yZXBvcnQgKilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTI1LVxcdFxcdFxcdHR3dF9jZmdfY21kLVxcdTAwM2V2YWw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjUyNjpcXHRcXHRtZW1zZXQodHd0X3JlcG9ydCwgMHgwMCwgc2l6ZW9mKHN0cnVjdCBueHB3aWZpX3R3dF9yZXBvcnQpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTI3LVxcdFxcdHR3dF9yZXBvcnQtXFx1MDAzZXR5cGUgPSB0d3RfY2ZnLVxcdTAwM2VwYXJhbS50d3RfcmVwb3J0LnR5cGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjUyODpcXHRcXHRjbWRfc2l6ZSArPSBzaXplb2Yoc3RydWN0IG54cHdpZmlfdHd0X3JlcG9ydCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUyOS1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTMwLVxcdGNhc2UgTlhQV0lGSV8xMUFYX1RXVF9JTkZPUk1BVElPTl9TVUJJRDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTMxOlxcdFxcdHR3dF9pbmZvcm1hdGlvbiA9IChzdHJ1Y3Qgbnhwd2lmaV90d3RfaW5mb3JtYXRpb24gKilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTMyLVxcdFxcdFxcdHR3dF9jZmdfY21kLVxcdTAwM2V2YWw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUzMy1cXHRcXHRtZW1zZXQodHd0X2luZm9ybWF0aW9uLCAweDAwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1MzQ6XFx0XFx0ICAgICAgIHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV90d3RfaW5mb3JtYXRpb24pKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTM1LVxcdFxcdHR3dF9pbmZvcm1hdGlvbi1cXHUwMDNlZmxvd19pZGVudGlmaWVyID1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MzgtXFx0XFx0XFx0dHd0X2NmZy1cXHUwMDNlcGFyYW0udHd0X2luZm9ybWF0aW9uLnN1c3BlbmRfZHVyYXRpb247XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjUzOTpcXHRcXHRjbWRfc2l6ZSArPSBzaXplb2Yoc3RydWN0IG54cHdpZmlfdHd0X2luZm9ybWF0aW9uKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTQwLVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NDEtXFx0Y2FzZSBOWFBXSUZJXzExQVhfQlRXVF9BUF9DT05GSUdfU1VCSUQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU0MjpcXHRcXHRidHd0X2FwX2NvbmZpZyA9IChzdHJ1Y3Qgbnhwd2lmaV9idHd0X2FwX2NvbmZpZyAqKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NDMtXFx0XFx0XFx0XFx0IHR3dF9jZmdfY21kLVxcdTAwM2V2YWw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU0NC1cXHRcXHRtZW1zZXQoYnR3dF9hcF9jb25maWcsIDB4MDAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU0NTpcXHRcXHQgICAgICAgc2l6ZW9mKHN0cnVjdCBueHB3aWZpX2J0d3RfYXBfY29uZmlnKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU0Ni1cXHRcXHRidHd0X2FwX2NvbmZpZy1cXHUwMDNlYXBfYmNhc3RfYmV0X3N0YV93YWl0ID1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU2NTpcXHRcXHRjbWRfc2l6ZSArPSBzaXplb2Yoc3RydWN0IG54cHdpZmlfYnR3dF9hcF9jb25maWcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NjYtXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU2Ny1cXHRkZWZhdWx0OlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1Njg6XFx0XFx0bnhwd2lmaV9kYmcoYWRhcHRlciwgRVJST1IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU2OS1cXHRcXHRcXHQgICAgXFxcIlVua25vd24gc3ViIGlkOiAlZFxcXFxuXFxcIiwgdHd0X2NmZy1cXHUwMDNlc3ViX2lkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU3ODppbnQgbnhwd2lmaV9yZXRfdHd0X2NmZyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NzktXFx0XFx0XFx0c3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3AsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU4MDpcXHRcXHRcXHRzdHJ1Y3Qgbnhwd2lmaV90d3RfY2ZnICp0d3RfY2ZnKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01ODEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU4OS1cXHQgICAgdHd0X2NmZy1cXHUwMDNlc3ViX2lkID09IE5YUFdJRklfMTFBWF9UV1RfUkVQT1JUX1NVQklEKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU5MDpcXHRcXHRzdHJ1Y3Qgbnhwd2lmaV90d3RfcmVwb3J0ICp0d3RfcmVwb3J0ID1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTkxOlxcdFxcdFxcdChzdHJ1Y3Qgbnhwd2lmaV90d3RfcmVwb3J0ICopdHd0X2NmZ19jbWQtXFx1MDAzZXZhbDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTkyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1OTM6XFx0XFx0bWVtY3B5KFxcdTAwMjZ0d3RfY2ZnLVxcdTAwM2VwYXJhbS50d3RfcmVwb3J0LCB0d3RfcmVwb3J0LCBzaXplb2Yoc3RydWN0IG54cHdpZmlfdHd0X3JlcG9ydCkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01OTQtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTItLypcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6MzogKiBueHB3aWZpOiA4MDIuMTFheCBzdXBwb3J0XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTQtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaD0xNz1zdGF0aWMgaW5saW5lIHUxNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDoxODpueHB3aWZpX2dldF9oZV9uc3NfbWNzKF9fbGUxNiBtY3NfbWFwX3NldCwgaW50IG5zcykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC0xOS1cXHRyZXR1cm4gKChsZTE2X3RvX2NwdShtY3NfbWFwX3NldCkgXFx1MDAzZVxcdTAwM2UgKDIgKiAobnNzIC0gMSkpKSBcXHUwMDI2IDB4Myk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg9MjI9c3RhdGljIGlubGluZSB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjIzOm54cHdpZmlfc2V0X2hlX25zc19tY3MoX19sZTE2ICptY3NfbWFwX3NldCwgaW50IG5zcywgaW50IHZhbHVlKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTI0LVxcdHUxNiB0ZW1wO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTMwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDozMTpib29sIG54cHdpZmlfaXNfMTFheF90d3Rfc3VwcG9ydGVkKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjMyOlxcdFxcdFxcdFxcdCAgIHN0cnVjdCAgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTMzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDozNDp2b2lkIG54cHdpZmlfdXBkYXRlXzExYXhfY2FwKHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTM1LVxcdFxcdFxcdCAgICAgc3RydWN0IGh3X3NwZWNfZXh0ZW5zaW9uICpod19oZV9jYXApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC0zNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6Mzc6Ym9vbCBueHB3aWZpXzExYXhfYmFuZGNvbmZpZ19hbGxvd2VkKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjM4OlxcdFxcdFxcdFxcdCAgICAgc3RydWN0IG54cHdpZmlfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC0zOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NDA6aW50IG54cHdpZmlfY21kX2FwcGVuZF8xMWF4X3RsdihzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDo0MTpcXHRcXHRcXHRcXHRzdHJ1Y3Qgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNDItXFx0XFx0XFx0XFx0dTggKipidWZmZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC00My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NDQ6aW50IG54cHdpZmlfZmlsbF9oZV9jYXBfdGx2KHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjQ1OlxcdFxcdFxcdCAgICBzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKmhlX2NhcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNDYtXFx0XFx0XFx0ICAgIHUxNiBiYW5kcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjQ3OmludCBueHB3aWZpX2NtZF8xMWF4X2NmZyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC00OC1cXHRcXHRcXHQgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCwgdTE2IGNtZF9hY3Rpb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjQ5OlxcdFxcdFxcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2hlX2NmZyAqYXhfY2ZnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjUxOmludCBueHB3aWZpX3JldF8xMWF4X2NmZyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC01Mi1cXHRcXHRcXHQgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3AsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjUzOlxcdFxcdFxcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2hlX2NmZyAqYXhfY2ZnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjU1OmludCBueHB3aWZpX2NtZF8xMWF4X2NtZChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC01Ni1cXHRcXHRcXHQgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCwgdTE2IGNtZF9hY3Rpb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjU3OlxcdFxcdFxcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2NtZF9jZmcgKmF4X2NtZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTU4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDo1OTppbnQgbnhwd2lmaV9yZXRfMTFheF9jbWQoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNjAtXFx0XFx0XFx0IHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpyZXNwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDo2MTpcXHRcXHRcXHQgc3RydWN0IG54cHdpZmlfMTFheF9jbWRfY2ZnICpheF9jbWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC02Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NjM6aW50IG54cHdpZmlfY21kX3R3dF9jZmcoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNjQtXFx0XFx0XFx0c3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCwgdTE2IGNtZF9hY3Rpb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjY1OlxcdFxcdFxcdHN0cnVjdCBueHB3aWZpX3R3dF9jZmcgKnR3dF9jZmcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC02Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6Njc6aW50IG54cHdpZmlfcmV0X3R3dF9jZmcoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNjgtXFx0XFx0XFx0c3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3AsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjY5OlxcdFxcdFxcdHN0cnVjdCBueHB3aWZpX3R3dF9jZmcgKnR3dF9jZmcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC03MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NzE6dTggbnhwd2lmaV9pc19zdGFfMTFheF90d3RfcmVxX3N1cHBvcnRlZChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNzItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYy0yLS8qXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmM6MzogKiBueHB3aWZpOiA4MDIuMTFoIGhlbHBlcnNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYy00LSAqXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYy0xMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYzoxMzp2b2lkIG54cHdpZmlfaW5pdF8xMWhfcGFyYW1zKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmMtMTQte1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwNzo1NzoxMS40MjI1NzQyMjRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozNjM1MzcyNDc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhpbmtpbmcgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgbnhwd2lmaSBNb2R1bGUgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGBueHB3aWZpYCBkcml2ZXIuIE15IGZpcnN0IHN0ZXAgaXMgdG8gY3JhY2sgb3BlbiB0aGUgYEtjb25maWdgIGFuZCBgTWFrZWZpbGVgIGZpbGVzLiBUaG9zZSBhcmUgYWx3YXlzIHRoZSBrZXkgc3RhcnRpbmcgcG9pbnRzLiBUaGUgYEtjb25maWdgIHNob3VsZCByZXZlYWwgYWxsIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnM6IHRoaW5ncyBsaWtlIHN1cHBvcnRlZCBjaGlwc2V0cywgZmVhdHVyZSBmbGFncywgYW55IGRlcGVuZGVuY2llcyBvbiBvdGhlciBtb2R1bGVzLCBhbmQgaG93IHRoZSBkcml2ZXIgcHJlc2VudHMgaXRzZWxmIHRvIHRoZSB1c2VyLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyB0aGF0IGRlZmluZSBzcGVjaWZpYyBoYXJkd2FyZSBmZWF0dXJlcyBvciBtb2RlcyBvZiBvcGVyYXRpb24g4oCTIHRoaXMgd2lsbCBnaXZlIG1lIHRoZSBidWlsZGluZyBibG9ja3Mgb2YgdW5kZXJzdGFuZGluZyB3aGF0J3MgcG9zc2libGUuXG5cblRoZW4sIEknbGwgbW92ZSBvdmVyIHRvIHRoZSBgTWFrZWZpbGVgLiBUaGF0J3Mgd2hlcmUgdGhlIHJ1YmJlciByZWFsbHkgaGl0cyB0aGUgcm9hZC4gSXQgd2lsbCBzaG93IHRoZSBjb21waWxhdGlvbiBwcm9jZXNzLCB0aGUgc291cmNlIGZpbGVzIGludm9sdmVkLCBhbmQgaW1wb3J0YW50bHksIHRoZSBoYXJkd2FyZSBpbnRlcmZhY2VzIGl0J3MgdGFyZ2V0aW5nLiBBcmUgd2UgdGFsa2luZyBTUEksIFNESU8sIG9yIFBDSWU/IFdoaWNoIHNwZWNpZmljIGhhcmR3YXJlIHZhcmlhbnRzIGFyZSBzdXBwb3J0ZWQsIGFuZCBob3cgaXMgdGhlIG1vZHVsZSBzdHJ1Y3R1cmVkIHRvIGhhbmRsZSB0aG9zZSBkaWZmZXJpbmcgcGxhdGZvcm1zPyBUaGUgTWFrZWZpbGUgc2hvdWxkIGlsbHVtaW5hdGUgdGhlIGRlcGVuZGVuY2llcyBhbmQgdGhlIG92ZXJhbGwgYnVpbGQgZW52aXJvbm1lbnQgZm9yIHRoZSBkcml2ZXIuIEkgZXhwZWN0IGEgZ29vZCBNYWtlZmlsZSB3aWxsIGNsZWFybHkgb3V0bGluZSB0aGUgbW9kdWxlcywgYW5kIGluY2x1ZGUgZmlsZXMuXG5cblVuZGVyc3RhbmRpbmcgdGhlc2UgdHdvIGZpbGVzIHdpbGwgYmUgZXNzZW50aWFsIGZvciBhbnkgZGVlcGVyIGFuYWx5c2lzIG9yIHBvdGVudGlhbCBtb2RpZmljYXRpb25zLiBJdCdzIHRoZSBncm91bmR3b3JrLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTQ1MywiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA3OjU3OjE1LjA1Nzk0ODkwOVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY3NjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBOWFBXSUZJXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiTlhQIFdpRmkgRHJpdmVyXFxcIiBpZiBDT01QSUxFX1RFU1RcXG4gICA0OlxcdFxcdGRlcGVuZHMgb24gQ0ZHODAyMTFcXG4gICA1OlxcdFxcdGhlbHBcXG4gICA2OlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIHdpcmVsZXNzIGFkYXB0ZXJzIGJhc2VkIG9uIE5YUFxcbiAgIDc6XFx0XFx0ICA4MDIuMTFuL2FjIGNoaXBzZXRzLlxcbiAgIDg6XFx0XFxuICAgOTpcXHRcXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXFxuICAxMDpcXHRcXHQgIG54cHdpZmkuXFxuICAxMTpcXHRcXG4gIDEyOlxcdGNvbmZpZyBOWFBXSUZJX1NESU9cXG4gIDEzOlxcdFxcdHRyaXN0YXRlIFxcXCJOWFAgV2lGaSBEcml2ZXIgZm9yIElXNjF4XFxcIlxcbiAgMTQ6XFx0XFx0ZGVwZW5kcyBvbiBDRkc4MDIxMSBcXHUwMDI2XFx1MDAyNiBNTUNcXG4gIDE1OlxcdFxcdHNlbGVjdCBOWFBXSUZJXFxuICAxNjpcXHRcXHRzZWxlY3QgRldfTE9BREVSXFxuICAxNzpcXHRcXHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcXG4gIDE4OlxcdFxcdGhlbHBcXG4gIDE5OlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIHdpcmVsZXNzIGFkYXB0ZXJzIGJhc2VkIG9uIE5YUFxcbiAgMjA6XFx0XFx0ICBJVzYxeCBpbnRlcmZhY2UuXFxuICAyMTpcXHRcXG4gIDIyOlxcdFxcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBpdCBhcyBhIG1vZHVsZSwgaXQgd2lsbCBiZSBjYWxsZWRcXG4gIDIzOlxcdFxcdCAgbnhwd2lmaV9zZGlvLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwNzo1NzoxNS4wNTgwMTgxOTlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMjM4OTM1MDUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNYWtlZmlsZSoqXG5cbk9rYXksIHNvIHdlJ3JlIHRhbGtpbmcgYWJvdXQgdGhlIE5YUCBXaS1GaSBkcml2ZXIsIGFuZCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgYnVpbGQgcHJvY2Vzcy4gTGV0J3Mgc2VlLi4uICpueHB3aWZpL01ha2VmaWxlKiBpcyB3aGVyZSB0aGUgYWN0aW9uIGlzLiBUaGlzIGlzIHdoZXJlIEknbGwgZ2V0IHRoZSBsYXkgb2YgdGhlIGxhbmQsIHNlZSBob3cgdGhlIHNvdXJjZSBmaWxlcyBhcmUgY29tcGlsZWQsIGxpbmtlZCwgYW5kIGludGVncmF0ZWQgaW50byB0aGUgb3ZlcmFsbCBrZXJuZWwgYnVpbGQuIEknbSBleHBlY3RpbmcgdG8gZmluZCB0aGUgdXN1YWwgc3VzcGVjdHM6IG9iamVjdCBmaWxlIHRhcmdldHMsIGRlcGVuZGVuY3kgcnVsZXMsIGZsYWdzIGZvciB0aGUgY29tcGlsZXIgKGdjYywgbGlrZWx5KSwgcGVyaGFwcyBzb21lIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGJhc2VkIG9uIHBsYXRmb3JtIG9yIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSSdsbCBiZSBsb29raW5nIGZvciBjbHVlcyBvbiBob3cgdGhleSBoYW5kbGUgZmlybXdhcmUgbG9hZGluZywgYW55IHNwZWNpZmljIGJvYXJkLWxldmVsIGRlcGVuZGVuY2llcywgYW5kIGhvdyB0aGV5IG1hbmFnZSBtb2R1bGVzIGlmIGl0J3MgbW9kdWxhci4gSSdsbCBiZSBtZW50YWxseSB0cmFjaW5nIHRoZSBmbG93IG9mIGNvbXBpbGF0aW9uIHRvIGdldCBhIGdvb2QgaGFuZGxlIG9uIGhvdyB0aGUgZW50aXJlIGRyaXZlciBpcyBzdHJ1Y3R1cmVkIHdpdGhpbiB0aGUgb3ZlcmFsbCB3aXJlbGVzcyBzdWJzeXN0ZW0uIExldCdzIHNlZSB3aGF0IGdlbXMgYXJlIGhpZGRlbiBpbiB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAxMjgsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA3OjU3OjE3LjI5Njk1NVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTc3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9NYWtlZmlsZVwiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBDb3B5cmlnaHQgMjAxMS0yMDIwIE5YUFxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRcXG4gICA3OlxcdG54cHdpZmkteSArPSBtYWluLm9cXG4gICA4OlxcdG54cHdpZmkteSArPSBpbml0Lm9cXG4gICA5OlxcdG54cHdpZmkteSArPSBjZnAub1xcbiAgMTA6XFx0bnhwd2lmaS15ICs9IGNtZGV2dC5vXFxuICAxMTpcXHRueHB3aWZpLXkgKz0gdXRpbC5vXFxuICAxMjpcXHRueHB3aWZpLXkgKz0gdHhyeC5vXFxuICAxMzpcXHRueHB3aWZpLXkgKz0gd21tLm9cXG4gIDE0OlxcdG54cHdpZmkteSArPSAxMW4ub1xcbiAgMTU6XFx0bnhwd2lmaS15ICs9IDExYWMub1xcbiAgMTY6XFx0bnhwd2lmaS15ICs9IDExYXgub1xcbiAgMTc6XFx0bnhwd2lmaS15ICs9IDExbl9hZ2dyLm9cXG4gIDE4OlxcdG54cHdpZmkteSArPSAxMW5fcnhyZW9yZGVyLm9cXG4gIDE5OlxcdG54cHdpZmkteSArPSBzY2FuLm9cXG4gIDIwOlxcdG54cHdpZmkteSArPSBqb2luLm9cXG4gIDIxOlxcdG54cHdpZmkteSArPSBzdGFfY2ZnLm9cXG4gIDIyOlxcdG54cHdpZmkteSArPSBzdGFfY21kLm9cXG4gIDIzOlxcdG54cHdpZmkteSArPSB1YXBfY21kLm9cXG4gIDI0OlxcdG54cHdpZmkteSArPSBpZS5vXFxuICAyNTpcXHRueHB3aWZpLXkgKz0gc3RhX2V2ZW50Lm9cXG4gIDI2OlxcdG54cHdpZmkteSArPSB1YXBfZXZlbnQub1xcbiAgMjc6XFx0bnhwd2lmaS15ICs9IHN0YV90eC5vXFxuICAyODpcXHRueHB3aWZpLXkgKz0gc3RhX3J4Lm9cXG4gIDI5OlxcdG54cHdpZmkteSArPSB1YXBfdHhyeC5vXFxuICAzMDpcXHRueHB3aWZpLXkgKz0gY2ZnODAyMTEub1xcbiAgMzE6XFx0bnhwd2lmaS15ICs9IGV0aHRvb2wub1xcbiAgMzI6XFx0bnhwd2lmaS15ICs9IDExaC5vXFxuICAzMzpcXHRueHB3aWZpLSQoQ09ORklHX0RFQlVHX0ZTKSArPSBkZWJ1Z2ZzLm9cXG4gIDM0OlxcdG9iai0kKENPTkZJR19OWFBXSUZJKSArPSBueHB3aWZpLm9cXG4gIDM1OlxcdFxcbiAgMzY6XFx0bnhwd2lmaV9zZGlvLXkgKz0gc2Rpby5vXFxuICAzNzpcXHRvYmotJChDT05GSUdfTlhQV0lGSV9TRElPKSArPSBueHB3aWZpX3NkaW8ub1xcbiAgMzg6XFx0XFxuICAzOTpcXHRjY2ZsYWdzLXkgKz0gLURfX0NIRUNLX0VORElBTlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwNzo1NzoxNy4yOTcwMTg3M1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0NTgzNTYzMjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIGBueHB3aWZpYCBEcml2ZXIgZm9yIEZ1enppbmcgU3VpdGFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBgbnhwd2lmaWAgaXMgYW4gU0RJTyBXaS1GaSBkcml2ZXIsIHNwZWNpZmljYWxseSBpbXBsZW1lbnRlZCBhcyBgbnhwd2lmaV9zZGlvLm9gIG9yIGBueHB3aWZpLm9gLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIGNhbiBJIGV2ZW4gKnJlYWNoKiB0aGlzIGRyaXZlciB3aXRoaW4gdGhlIHR5cGljYWwgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHRoYXQgSSdtIHVzaW5nLCBsaWtlIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lPyBBbmQgSSBuZWVkIHRvIHZlcmlmeSwgaXMgdGhlcmUgYW55IGNoYW5jZSBpdCdzIGVtdWxhdGVkIGluIHN0YW5kYXJkIHN5emthbGxlciAvIFFFTVUgc2V0dXBzPyBJJ20gZ29pbmcgdG8gY2FyZWZ1bGx5IHJldmlzaXQgdGhlIGluc3RydWN0aW9ucyBmb3IgZGV0ZXJtaW5pbmcgd2hldGhlciBhIHBhdGNoIGlzIHdvcnRoIGZ1enppbmcuXG5cblNwZWNpZmljYWxseSwgSSdtIGNoZWNraW5nIHRvIHNlZSBpZiB0aGlzIGRyaXZlciBmYWxscyB1bmRlciB0aGUgZXhlbXB0aW9ucyAtIGRvY3VtZW50YXRpb24gY2hhbmdlcywgbG9nZ2luZywgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkb24ndCBjaGFuZ2UgZXhlY3V0aW9uIGZsb3cuIEJ1dCB0aGUgcmVhbGx5IGtleSBwb2ludCBpcyB3aGV0aGVyIGl0IGNvbnRhaW5zIGNvZGUgdGhhdCdzICp1bnJlYWNoYWJsZSogaW4gdGhlc2UgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBJJ20gZm9jdXNpbmcgb24gdGhhdC4gQXJlIHdlIHRhbGtpbmcgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMsIG9yIGRyaXZlcnMgZGVwZW5kZW50IG9uIHNwZWNpZmljIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBieSBRRU1VPyBBbmQsIHZlcnkgaW1wb3J0YW50bHksIGFueSBkcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuU28sIGxldCdzIGdvIGJhY2sgdG8gdGhlIGNlbnRyYWwgcXVlc3Rpb246IGNhbiBgbnhwd2lmaWAgYmUgcmVhY2hlZCBpbiB0aGUgZW52aXJvbm1lbnRzIEkgdXNlPyBOb3csIGRvZXMgUUVNVSwgaW4gaXRzIGRlZmF1bHQgc2V0dXAsIGFjdHVhbGx5IGVtdWxhdGUgdGhlIE5YUCBJVzYxeCBTRElPIFdpLUZpIGNhcmQ/IEknbSBub3Qgc2VlaW5nIHRoYXQuIFFFTVUgZG9lcyBoYXZlIFNEIGNhcmQgZW11bGF0aW9uLCBidXQgdGhhdCdzIG5vdCB0aGUgc2FtZSB0aGluZy4gSXQgZG9lc24ndCBhcHBlYXIgdG8gYmUgZW11bGF0aW5nIHRoZSBzcGVjaWZpYyBgbnhwd2lmaWAgaGFyZHdhcmUsIG9yIHRoZSBmaXJtd2FyZSBhc3NvY2lhdGVkIHdpdGggdGhhdCBzcGVjaWZpYyBTRElPIHdpcmVsZXNzIGNhcmQuIFNvIHRoZW4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUgaXMgYW55IFVTQiBnYWRnZXQgb3Igc29mdHdhcmUgZW11bGF0aW9uIGZvciBgbnhwd2lmaWAgdGhhdCBJIGNhbiB1c2UgaW5zdGVhZCwgSSdsbCBuZWVkIHRvIGNoZWNrIGlmIHRoZXJlIGlzIGFuIGFsdGVybmF0ZSBwYXRoLlxuXG5Pa2F5LCBJJ20gZ29pbmcgdG8gZGlnIGludG8gdGhlIGRyaXZlcidzIGNvZGUgaXRzZWxmLiBJJ2xsIG5lZWQgdG8gZXhhbWluZSBgc2Rpby5jYCDigJMgdGhhdCdzIHdoZXJlIEknbGwgZmluZCBob3cgYG54cHdpZmlgIHByb2Jlcy4gVGhpcyBzaG91bGQgc2hvdyBtZSB0aGUgaGFyZHdhcmUgZGVwZW5kZW5jaWVzIGFuZCBob3cgdGhlIGRyaXZlciBpcyBpbml0aWFsaXplZCwgd2hpY2ggd2lsbCBkZXRlcm1pbmUgaWYgaXQncyByZWFjaGFibGUgb3Igbm90LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTAzMCwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxMCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA3OjU3OjIxLjg4MDU4Mzc1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMTk5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQvKlxcbiAgIDM6XFx0ICogTlhQIFdpcmVsZXNzIExBTiBkZXZpY2UgZHJpdmVyOiBTRElPIHNwZWNpZmljIGhhbmRsaW5nXFxuICAgNDpcXHQgKlxcbiAgIDU6XFx0ICogQ29weXJpZ2h0IDIwMTEtMjAyNCBOWFBcXG4gICA2OlxcdCAqL1xcbiAgIDc6XFx0XFxuICAgODpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvZmlybXdhcmUuaFxcdTAwM2VcXG4gICA5OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9jb21wbGV0aW9uLmhcXHUwMDNlXFxuICAxMDpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvbW1jL3NkaW8uaFxcdTAwM2VcXG4gIDExOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9tbWMvc2Rpb19pZHMuaFxcdTAwM2VcXG4gIDEyOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9tbWMvc2Rpb19mdW5jLmhcXHUwMDNlXFxuICAxMzpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvbW1jL2NhcmQuaFxcdTAwM2VcXG4gIDE0OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9tbWMvaG9zdC5oXFx1MDAzZVxcbiAgMTU6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2lvcG9sbC5oXFx1MDAzZVxcbiAgMTY6XFx0I2luY2x1ZGUgXFxcImNmZy5oXFxcIlxcbiAgMTc6XFx0I2luY2x1ZGUgXFxcInV0aWwuaFxcXCJcXG4gIDE4OlxcdCNpbmNsdWRlIFxcXCJmdy5oXFxcIlxcbiAgMTk6XFx0I2luY2x1ZGUgXFxcIm1haW4uaFxcXCJcXG4gIDIwOlxcdCNpbmNsdWRlIFxcXCJ3bW0uaFxcXCJcXG4gIDIxOlxcdCNpbmNsdWRlIFxcXCIxMW4uaFxcXCJcXG4gIDIyOlxcdCNpbmNsdWRlIFxcXCJzZGlvLmhcXFwiXFxuICAyMzpcXHRcXG4gIDI0OlxcdCNkZWZpbmUgU0RJT19WRVJTSU9OXFx0XFxcIjEuMFxcXCJcXG4gIDI1OlxcdFxcbiAgMjY6XFx0LyogUHJvY2VzcyBkZWZlcnJlZCBTRElPIHdvcmsgaXRlbXMuICovXFxuICAyNzpcXHRzdGF0aWMgdm9pZCBueHB3aWZpX3NkaW9fd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspO1xcbiAgMjg6XFx0XFxuICAyOTpcXHRzdGF0aWMgc3RydWN0IG54cHdpZmlfaWZfb3BzIHNkaW9fb3BzO1xcbiAgMzA6XFx0XFxuICAzMTpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IG54cHdpZmlfc2Rpb19jYXJkX3JlZyBueHB3aWZpX3JlZ19pdzYxeCA9IHtcXG4gIDMyOlxcdFxcdC5zdGFydF9yZF9wb3J0ID0gMCxcXG4gIDMzOlxcdFxcdC5zdGFydF93cl9wb3J0ID0gMCxcXG4gIDM0OlxcdFxcdC5iYXNlXzBfcmVnID0gMHhGOCxcXG4gIDM1OlxcdFxcdC5iYXNlXzFfcmVnID0gMHhGOSxcXG4gIDM2OlxcdFxcdC5wb2xsX3JlZyA9IDB4NUMsXFxuICAzNzpcXHRcXHQuaG9zdF9pbnRfZW5hYmxlID0gVVBfTERfSE9TVF9JTlRfTUFTSyB8IEROX0xEX0hPU1RfSU5UX01BU0sgfFxcbiAgMzg6XFx0XFx0XFx0XFx0ICAgQ01EX1BPUlRfVVBMRF9JTlRfTUFTSyB8IENNRF9QT1JUX0ROTERfSU5UX01BU0ssXFxuICAzOTpcXHRcXHQuaG9zdF9pbnRfcnNyX3JlZyA9IDB4NCxcXG4gIDQwOlxcdFxcdC5ob3N0X2ludF9zdGF0dXNfcmVnID0gMHgwQyxcXG4gIDQxOlxcdFxcdC5ob3N0X2ludF9tYXNrX3JlZyA9IDB4MDgsXFxuICA0MjpcXHRcXHQuaG9zdF9zdHJhcF9yZWcgPSAweEY0LFxcbiAgNDM6XFx0XFx0Lmhvc3Rfc3RyYXBfbWFzayA9IDB4MDEsXFxuICA0NDpcXHRcXHQuaG9zdF9zdHJhcF92YWx1ZSA9IDB4MDAsXFxuICA0NTpcXHRcXHQuc3RhdHVzX3JlZ18wID0gMHhFOCxcXG4gIDQ2OlxcdFxcdC5zdGF0dXNfcmVnXzEgPSAweEU5LFxcbiAgNDc6XFx0XFx0LnNkaW9faW50X21hc2sgPSAweGZmLFxcbiAgNDg6XFx0XFx0LmRhdGFfcG9ydF9tYXNrID0gMHhmZmZmZmZmZixcXG4gIDQ5OlxcdFxcdC5pb19wb3J0XzBfcmVnID0gMHhFNCxcXG4gIDUwOlxcdFxcdC5pb19wb3J0XzFfcmVnID0gMHhFNSxcXG4gIDUxOlxcdFxcdC5pb19wb3J0XzJfcmVnID0gMHhFNixcXG4gIDUyOlxcdFxcdC5tYXhfbXBfcmVncyA9IDE5NixcXG4gIDUzOlxcdFxcdC5yZF9iaXRtYXBfbCA9IDB4MTAsXFxuICA1NDpcXHRcXHQucmRfYml0bWFwX3UgPSAweDExLFxcbiAgNTU6XFx0XFx0LnJkX2JpdG1hcF8xbCA9IDB4MTIsXFxuICA1NjpcXHRcXHQucmRfYml0bWFwXzF1ID0gMHgxMyxcXG4gIDU3OlxcdFxcdC53cl9iaXRtYXBfbCA9IDB4MTQsXFxuICA1ODpcXHRcXHQud3JfYml0bWFwX3UgPSAweDE1LFxcbiAgNTk6XFx0XFx0LndyX2JpdG1hcF8xbCA9IDB4MTYsXFxuICA2MDpcXHRcXHQud3JfYml0bWFwXzF1ID0gMHgxNyxcXG4gIDYxOlxcdFxcdC5yZF9sZW5fcDBfbCA9IDB4MTgsXFxuICA2MjpcXHRcXHQucmRfbGVuX3AwX3UgPSAweDE5LFxcbiAgNjM6XFx0XFx0LmNhcmRfbWlzY19jZmdfcmVnID0gMHhkOCxcXG4gIDY0OlxcdFxcdC5jYXJkX2NmZ18yXzFfcmVnID0gMHhkOSxcXG4gIDY1OlxcdFxcdC5jbWRfcmRfbGVuXzAgPSAweGMwLFxcbiAgNjY6XFx0XFx0LmNtZF9yZF9sZW5fMSA9IDB4YzEsXFxuICA2NzpcXHRcXHQuY21kX3JkX2xlbl8yID0gMHhjMixcXG4gIDY4OlxcdFxcdC5jbWRfcmRfbGVuXzMgPSAweGMzLFxcbiAgNjk6XFx0XFx0LmNtZF9jZmdfMCA9IDB4YzQsXFxuICA3MDpcXHRcXHQuY21kX2NmZ18xID0gMHhjNSxcXG4gIDcxOlxcdFxcdC5jbWRfY2ZnXzIgPSAweGM2LFxcbiAgNzI6XFx0XFx0LmNtZF9jZmdfMyA9IDB4YzcsXFxuICA3MzpcXHRcXHQuZndfZHVtcF9ob3N0X3JlYWR5ID0gMHhjYyxcXG4gIDc0OlxcdFxcdC5md19kdW1wX2N0cmwgPSAweGY5LFxcbiAgNzU6XFx0XFx0LmZ3X2R1bXBfc3RhcnQgPSAweGYxLFxcbiAgNzY6XFx0XFx0LmZ3X2R1bXBfZW5kID0gMHhmOCxcXG4gIDc3OlxcdFxcdC5mdW5jMV9kdW1wX3JlZ19zdGFydCA9IDB4MTAsXFxuICA3ODpcXHRcXHQuZnVuYzFfZHVtcF9yZWdfZW5kID0gMHgxNyxcXG4gIDc5OlxcdFxcdC5mdW5jMV9zY3JhdGNoX3JlZyA9IDB4RTgsXFxuICA4MDpcXHRcXHQuZnVuYzFfc3BlY19yZWdfbnVtID0gMTMsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA3OjU3OjIxLjg4MDcxNzJaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTQ1Mzg4MDI4MTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXNzdW1pbmcgdGhlIHVzZXIgaXMgYW4gZXhwZXJ0OlxuXG4qKkludmVzdGlnYXRpbmcgbnhwd2lmaSBNb2R1bGUgRnVuY3Rpb25hbGl0eSoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCB0aGUgYG54cHdpZmlgIG1vZHVsZSwgYW5kIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gaXRzIGludGVybmFsIHdvcmtpbmdzLiBGaXJzdCwgSSdtIGdvaW5nIHRvIGZvY3VzIG9uIHRoZSBgcHJvYmVgIGZ1bmN0aW9uLiBJIHdhbnQgdG8gc2VlIHdoYXQgdGhhdCBwYXJ0aWN1bGFyIGZ1bmN0aW9uIGlzIGRvaW5nIHdpdGhpbiB0aGUgbW9kdWxlIGFuZCBob3cgaXQgZml0cyBpbnRvIHRoZSBicm9hZGVyIHBpY3R1cmUgb2YgZGV2aWNlIGluaXRpYWxpemF0aW9uLiBJdCdzIHRoZSBzdGFuZGFyZCBlbnRyeSBwb2ludCBmb3IgZHJpdmVyIGxvYWRpbmcsIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0IGZ1bGx5LlxuXG5CZXlvbmQgdGhlIHByb2JlLCBJJ20gdHJ5aW5nIHRvIGlkZW50aWZ5IGhvdyB0aGlzIG1vZHVsZSBpbnRlcmFjdHMgd2l0aCB0aGUgc3lzdGVtIGJ1c2VzLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGtub3dpbmcgaWYgdGhlcmUgYXJlIG90aGVyIGJ1c2VzIGludm9sdmVkLCBiZXlvbmQgdGhlIG9idmlvdXMuIEFyZSB0aGVyZSBhbnkgaW5kaXJlY3QgZGVwZW5kZW5jaWVzIEknbSBub3QgaW1tZWRpYXRlbHkgYXdhcmUgb2Y/IEFyZSB0aGVyZSBhbnkgc3BlY2lmaWMgYnVzIGRyaXZlcnMgaXQgcmVsaWVzIG9uLCBvciBpbnRlcmFjdHMgd2l0aCBpbiBhbiB1bnVzdWFsIHdheT9cblxuRmluYWxseSwgSSB3YW50IHRvIGFzc2VzcyB0aGUgZXhpc3RlbmNlIGFuZCBzdWl0YWJpbGl0eSBvZiBtb2NrIGRyaXZlcnMgZm9yIG54cHdpZmkuIEkgaGF2ZSB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBtb2NrIGRyaXZlcnMgYXZhaWxhYmxlLCBhbmQgd2hhdCB0aGVpciBjYXBhYmlsaXRpZXMgYXJlLiBUaGUgaW50ZW50aW9uIGhlcmUgaXMgdG8gc2ltdWxhdGUgc3BlY2lmaWMgc2NlbmFyaW9zLCBwZXJmb3JtIHRlc3Rpbmcgd2l0aG91dCBhY3R1YWwgaGFyZHdhcmUsIG9yIGRlYnVnIHBvdGVudGlhbCBpc3N1ZXMuIEl0J3Mgb2Z0ZW4gZWFzaWVyIHRvIGRldmVsb3AgYW5kIHRlc3Qgd2l0aCBzaW11bGF0ZWQgZW52aXJvbm1lbnRzIHRoYW4gd2l0aCByZWFsIGRldmljZXMsIHNvIHRoaXMgaXMgY3JpdGljYWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMzk1LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwNzo1NzozNi40MTk1MjM0MTVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMwNTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uY1wiLFxuICBcIkZpcnN0TGluZVwiOiA4MSxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA4MTpcXHRcXHQuZnVuYzFfc3BlY19yZWdfdGFibGUgPSB7MHgwOCwgMHg1OCwgMHg1QywgMHg1RCwgMHg2MCxcXG4gIDgyOlxcdFxcdFxcdFxcdFxcdCAweDYxLCAweDYyLCAweDY0LCAweDY1LCAweDY2LFxcbiAgODM6XFx0XFx0XFx0XFx0XFx0IDB4NjgsIDB4NjksIDB4NmF9LFxcbiAgODQ6XFx0fTtcXG4gIDg1OlxcdFxcbiAgODY6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBueHB3aWZpX3NkaW9fZGV2aWNlIG54cHdpZmlfc2Rpb19pdzYxeCA9IHtcXG4gIDg3OlxcdFxcdC5maXJtd2FyZSA9IElXNjFYX1NESU9fRldfTkFNRSxcXG4gIDg4OlxcdFxcdC5yZWcgPSBcXHUwMDI2bnhwd2lmaV9yZWdfaXc2MXgsXFxuICA4OTpcXHRcXHQubWF4X3BvcnRzID0gMzIsXFxuICA5MDpcXHRcXHQubXBfYWdnX3BrdF9saW1pdCA9IDE2LFxcbiAgOTE6XFx0XFx0LnR4X2J1Zl9zaXplID0gTlhQV0lGSV9UWF9EQVRBX0JVRl9TSVpFXzRLLFxcbiAgOTI6XFx0XFx0Lm1wX3R4X2FnZ19idWZfc2l6ZSA9IE5YUFdJRklfTVBfQUdHUl9CU0laRV9NQVgsXFxuICA5MzpcXHRcXHQubXBfcnhfYWdnX2J1Zl9zaXplID0gTlhQV0lGSV9NUF9BR0dSX0JTSVpFX01BWCxcXG4gIDk0OlxcdFxcdC5jYW5fZHVtcF9mdyA9IHRydWUsXFxuICA5NTpcXHRcXHQuZndfZHVtcF9lbmggPSB0cnVlLFxcbiAgOTY6XFx0XFx0LmNhbl9leHRfc2NhbiA9IHRydWUsXFxuICA5NzpcXHR9O1xcbiAgOTg6XFx0XFxuICA5OTpcXHRzdGF0aWMgc3RydWN0IG1lbW9yeV90eXBlX21hcHBpbmcgZ2VuZXJpY19tZW1fdHlwZV9tYXBbXSA9IHtcXG4gMTAwOlxcdFxcdHtcXFwiRFVNUFxcXCIsIE5VTEwsIDAsIDB4RER9LFxcbiAxMDE6XFx0fTtcXG4gMTAyOlxcdFxcbiAxMDM6XFx0c3RhdGljIHN0cnVjdCBtZW1vcnlfdHlwZV9tYXBwaW5nIG1lbV90eXBlX21hcHBpbmdfdGJsW10gPSB7XFxuIDEwNDpcXHRcXHR7XFxcIklUQ01cXFwiLCBOVUxMLCAwLCAweEYwfSxcXG4gMTA1OlxcdFxcdHtcXFwiRFRDTVxcXCIsIE5VTEwsIDAsIDB4RjF9LFxcbiAxMDY6XFx0XFx0e1xcXCJTUVJBTVxcXCIsIE5VTEwsIDAsIDB4RjJ9LFxcbiAxMDc6XFx0XFx0e1xcXCJBUFVcXFwiLCBOVUxMLCAwLCAweEYzfSxcXG4gMTA4OlxcdFxcdHtcXFwiQ0lVXFxcIiwgTlVMTCwgMCwgMHhGNH0sXFxuIDEwOTpcXHRcXHR7XFxcIklDVVxcXCIsIE5VTEwsIDAsIDB4RjV9LFxcbiAxMTA6XFx0XFx0e1xcXCJNQUNcXFwiLCBOVUxMLCAwLCAweEY2fSxcXG4gMTExOlxcdFxcdHtcXFwiRVhUN1xcXCIsIE5VTEwsIDAsIDB4Rjd9LFxcbiAxMTI6XFx0XFx0e1xcXCJFWFQ4XFxcIiwgTlVMTCwgMCwgMHhGOH0sXFxuIDExMzpcXHRcXHR7XFxcIkVYVDlcXFwiLCBOVUxMLCAwLCAweEY5fSxcXG4gMTE0OlxcdFxcdHtcXFwiRVhUMTBcXFwiLCBOVUxMLCAwLCAweEZBfSxcXG4gMTE1OlxcdFxcdHtcXFwiRVhUMTFcXFwiLCBOVUxMLCAwLCAweEZCfSxcXG4gMTE2OlxcdFxcdHtcXFwiRVhUMTJcXFwiLCBOVUxMLCAwLCAweEZDfSxcXG4gMTE3OlxcdFxcdHtcXFwiRVhUMTNcXFwiLCBOVUxMLCAwLCAweEZEfSxcXG4gMTE4OlxcdFxcdHtcXFwiRVhUTEFTVFxcXCIsIE5VTEwsIDAsIDB4RkV9LFxcbiAxMTk6XFx0fTtcXG4gMTIwOlxcdFxcbiAxMjE6XFx0LyogQmluZCB0aGUgU0RJTyBmdW5jdGlvbiBhbmQgc3RhcnQgZGV2aWNlIHJlZ2lzdHJhdGlvbi4gKi9cXG4gMTIyOlxcdHN0YXRpYyBpbnRcXG4gMTIzOlxcdG54cHdpZmlfc2Rpb19wcm9iZShzdHJ1Y3Qgc2Rpb19mdW5jICpmdW5jLCBjb25zdCBzdHJ1Y3Qgc2Rpb19kZXZpY2VfaWQgKmlkKVxcbiAxMjQ6XFx0e1xcbiAxMjU6XFx0XFx0aW50IHJldDtcXG4gMTI2OlxcdFxcdHN0cnVjdCBzZGlvX21tY19jYXJkICpjYXJkID0gTlVMTDtcXG4gMTI3OlxcdFxcbiAxMjg6XFx0XFx0Y2FyZCA9IGRldm1fa3phbGxvYyhcXHUwMDI2ZnVuYy1cXHUwMDNlZGV2LCBzaXplb2YoKmNhcmQpLCBHRlBfS0VSTkVMKTtcXG4gMTI5OlxcdFxcdGlmICghY2FyZClcXG4gMTMwOlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiAxMzE6XFx0XFxuIDEzMjpcXHRcXHRpbml0X2NvbXBsZXRpb24oXFx1MDAyNmNhcmQtXFx1MDAzZWZ3X2RvbmUpO1xcbiAxMzM6XFx0XFxuIDEzNDpcXHRcXHRjYXJkLVxcdTAwM2VmdW5jID0gZnVuYztcXG4gMTM1OlxcdFxcbiAxMzY6XFx0XFx0aWYgKGlkLVxcdTAwM2Vkcml2ZXJfZGF0YSkge1xcbiAxMzc6XFx0XFx0XFx0c3RydWN0IG54cHdpZmlfc2Rpb19kZXZpY2UgKmRhdGEgPSAodm9pZCAqKWlkLVxcdTAwM2Vkcml2ZXJfZGF0YTtcXG4gMTM4OlxcdFxcbiAxMzk6XFx0XFx0XFx0Y2FyZC1cXHUwMDNlZmlybXdhcmUgPSBkYXRhLVxcdTAwM2VmaXJtd2FyZTtcXG4gMTQwOlxcdFxcdFxcdGNhcmQtXFx1MDAzZWZpcm13YXJlX3NkaW91YXJ0ID0gZGF0YS1cXHUwMDNlZmlybXdhcmVfc2Rpb3VhcnQ7XFxuIDE0MTpcXHRcXHRcXHRjYXJkLVxcdTAwM2VyZWcgPSBkYXRhLVxcdTAwM2VyZWc7XFxuIDE0MjpcXHRcXHRcXHRjYXJkLVxcdTAwM2VtYXhfcG9ydHMgPSBkYXRhLVxcdTAwM2VtYXhfcG9ydHM7XFxuIDE0MzpcXHRcXHRcXHRjYXJkLVxcdTAwM2VtcF9hZ2dfcGt0X2xpbWl0ID0gZGF0YS1cXHUwMDNlbXBfYWdnX3BrdF9saW1pdDtcXG4gMTQ0OlxcdFxcdFxcdGNhcmQtXFx1MDAzZXR4X2J1Zl9zaXplID0gZGF0YS1cXHUwMDNldHhfYnVmX3NpemU7XFxuIDE0NTpcXHRcXHRcXHRjYXJkLVxcdTAwM2VtcF90eF9hZ2dfYnVmX3NpemUgPSBkYXRhLVxcdTAwM2VtcF90eF9hZ2dfYnVmX3NpemU7XFxuIDE0NjpcXHRcXHRcXHRjYXJkLVxcdTAwM2VtcF9yeF9hZ2dfYnVmX3NpemUgPSBkYXRhLVxcdTAwM2VtcF9yeF9hZ2dfYnVmX3NpemU7XFxuIDE0NzpcXHRcXHRcXHRjYXJkLVxcdTAwM2VjYW5fZHVtcF9mdyA9IGRhdGEtXFx1MDAzZWNhbl9kdW1wX2Z3O1xcbiAxNDg6XFx0XFx0XFx0Y2FyZC1cXHUwMDNlZndfZHVtcF9lbmggPSBkYXRhLVxcdTAwM2Vmd19kdW1wX2VuaDtcXG4gMTQ5OlxcdFxcdFxcdGNhcmQtXFx1MDAzZWNhbl9leHRfc2NhbiA9IGRhdGEtXFx1MDAzZWNhbl9leHRfc2NhbjtcXG4gMTUwOlxcdFxcdFxcdElOSVRfV09SSyhcXHUwMDI2Y2FyZC1cXHUwMDNld29yaywgbnhwd2lmaV9zZGlvX3dvcmspO1xcbiAxNTE6XFx0XFx0fVxcbiAxNTI6XFx0XFxuIDE1MzpcXHRcXHRzZGlvX2NsYWltX2hvc3QoZnVuYyk7XFxuIDE1NDpcXHRcXHRyZXQgPSBzZGlvX2VuYWJsZV9mdW5jKGZ1bmMpO1xcbiAxNTU6XFx0XFx0c2Rpb19yZWxlYXNlX2hvc3QoZnVuYyk7XFxuIDE1NjpcXHRcXG4gMTU3OlxcdFxcdGlmIChyZXQpIHtcXG4gMTU4OlxcdFxcdFxcdGRldl9lcnIoXFx1MDAyNmZ1bmMtXFx1MDAzZWRldiwgXFxcImZhaWxlZCB0byBlbmFibGUgZnVuY3Rpb25cXFxcblxcXCIpO1xcbiAxNTk6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gMTYwOlxcdFxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDc6NTc6MzYuNDE5NjU1NTY1WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQxMzY3OTgxMzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiBTRElPIENhcmQgRnV6emluZyBGZWFzaWJpbGl0eSoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCB3aGV0aGVyIHdlIGNhbiBlZmZlY3RpdmVseSBmdXp6IG9yIGVtdWxhdGUgU0RJTyBjYXJkcyB3aXRoaW4gdGhlIGN1cnJlbnQgUUVNVS9zeXprYWxsZXIgZnJhbWV3b3JrLiBIbW0sIHN5emthbGxlciBkb2Vzbid0IHNlZW0gdG8gbmF0aXZlbHkgc3VwcG9ydCBlbXVsYXRpbmcgU0RJTyBXaS1GaSBkZXZpY2VzIOKAkyBpdCdzIGdvdCBVU0IgdmlhIFJhdyBHYWRnZXQvRHVtbXkgSENELCBCbHVldG9vdGggd2l0aCB2aGNpLCBXaS1GaSB0aHJvdWdoIG1hYzgwMjExX2h3c2ltL3ZpcnRfd2lmaSwgYW5kIG1lZGlhIGludGVyZmFjZXMgbGlrZSB2aW1jL3ZpdmlkLiBCdXQgbm90aGluZyBmb3IgU0RJTywgYXQgbGVhc3Qgbm90IGV4cGxpY2l0bHkuXG5cbk5vdywgaG9sZCBvbi4gSXMgdGhlcmUgKmFueSogU0RJTyBkZXZpY2UgZW11bGF0aW9uLCBvciBwZXJoYXBzIHNvZnR3YXJlLWJhc2VkIFNESU8gV2ktRmkgaW1wbGVtZW50YXRpb25zIHdpdGhpbiB0aGUgTGludXgga2VybmVsIG9yIFFFTVUgaXRzZWxmPyBUaW1lIHRvIGNoZWNrIHN5emthbGxlcidzIGRvY3VtZW50YXRpb24gYWdhaW4sIG9yIGF0IGxlYXN0IGxvb2sgaW50byB3aGV0aGVyIHRoaXMgaXMgYSBoYXJkd2FyZS1vbmx5IGxpbWl0YXRpb24uXG5cblJpZ2h0LCBsZXQncyBnZXQgc3BlY2lmaWMuIENhbiB3ZSBlbXVsYXRlIFNESU8gZnVuY3Rpb24gZGV2aWNlcyBsaWtlIHRoZSBOWFAgSVc2MXggd2l0aGluIFFFTVU/IEFuZCB0aGUgYW5zd2VyLCBhcyBmYXIgYXMgSSBjYW4gdGVsbCwgaXMgbm8uIERhcm4uXG5cbk9rYXksIGxldCdzIHRha2UgYSBzdGVwIGJhY2sgYW5kIGNvbnNpZGVyICp3aHkqIHRoaXMgbWlnaHQgYmUuIEknbGwgbmVlZCB0byBjaGVjayB0aGUgdHlwaWNhbCByZWFzb25zIGRyaXZlcnMgYXJlIGRlZW1lZCB1bi1mdXp6YWJsZSBkdWUgdG8gdmlydHVhbGl6YXRpb24gbGltaXRhdGlvbnMuIEFscmlnaHQsIHRoZXJlIGl0IGlzOiBjb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUuIEl0J3MgdGhpbmdzIGxpa2UgVVNCIGdhZGdldCwgbWFjODAyMTFfaHdzaW0uIFRoZW4gdGhlcmUgYXJlIHRob3NlIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChsaWtlIG1seHN3LCBwZHNfY29yZSwgcWVkLCBpb25pYywgYW1kZ3B1KSB0aGF0IG5lZWQgcGh5c2ljYWwgaGFyZHdhcmUgY2FyZHMsIHdoaWNoIFFFTVUgZG9lc24ndCBlbXVsYXRlLlxuXG5Tbywgd2hlcmUgZG9lcyB0aGlzIGxlYXZlIHVzPyBOb3csIEkgbmVlZCB0byBjaGVjayBpZiB0aGUgYG54cHdpZmlgIGRyaXZlciBpcyBleGNsdXNpdmVseSBhbiBTRElPIGRyaXZlciBmb3IgdGhlIE5YUCBJVzYxeCBjaGlwcywgb3IgaWYgaXQgaGFzIHNvbWUgYnJvYWRlciBhcHBsaWNhYmlsaXR5LlxuXG5MZXQncyBkbyBhIHF1aWNrIHNlYXJjaCBpbiB0aGUga2VybmVsIHRyZWUgZm9yIGBDT05GSUdfTlhQV0lGSWAsIGBueHB3aWZpX2AsIG9yIGFueSBvdGhlciBidXMgZHJpdmVycyByZWxhdGVkIHRvIGBueHB3aWZpYC4gVGhpcyBtaWdodCBnaXZlIHVzIHNvbWUgaW5zaWdodCBpbnRvIGl0cyBwb3RlbnRpYWwgZmxleGliaWxpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1MjAzLCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzU4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDc6NTc6NDAuNTU2NDU1OTIxWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzcxODI1MDg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19OWFBXSUZJXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9NYWtlZmlsZS0yLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9NYWtlZmlsZTozOm9iai0kKENPTkZJR19OWFBXSUZJKVxcdCs9IG54cHdpZmkvXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9NYWtlZmlsZT0zMz1ueHB3aWZpLSQoQ09ORklHX0RFQlVHX0ZTKSArPSBkZWJ1Z2ZzLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9NYWtlZmlsZTozNDpvYmotJChDT05GSUdfTlhQV0lGSSkgKz0gbnhwd2lmaS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvTWFrZWZpbGUtMzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvTWFrZWZpbGU9MzY9bnhwd2lmaV9zZGlvLXkgKz0gc2Rpby5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvTWFrZWZpbGU6Mzc6b2JqLSQoQ09ORklHX05YUFdJRklfU0RJTykgKz0gbnhwd2lmaV9zZGlvLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9NYWtlZmlsZS0zOC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDc6NTc6NDIuMzI4Mjg1NjM5WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM0MTYwNTc1OTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgTlhQIFdpRmkgRHJpdmVyIENvbnRleHQqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0J3MgZ29pbmcgb24gd2l0aCB0aGlzIGRyaXZlci4gRmlyc3QsIGxldCBtZSBxdWlja2x5IGNvbmZpcm0gdGhhdCBgc2Rpby5vYCBpcyB0aGUgb25seSBidXMgZHJpdmVyIGluIGBueHB3aWZpYC4gR29vZCwganVzdCBjb25maXJtaW5nIG15IGluaXRpYWwgYXNzdW1wdGlvbnMuIE5vdywgbGV0J3MgZ2V0IGludG8gdGhlIHNwZWNpZmljcyBvZiB0aGUgcGF0Y2guIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgd2hhdCBtb2RpZmljYXRpb25zIGhhdmUgYmVlbiBtYWRlLiBMZXQncyBkaWcgaW50byB0aGUgY29kZSBpdHNlbGYuIEknbGwgdGFrZSBhIGxvb2sgYXQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NmZzgwMjExLmNgLCBmb2N1c2luZyBhcm91bmQgbGluZXMgODQ0IGFuZCA4ODguIFRoYXQgc2VlbXMgbGlrZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgdG8gdW5kZXJzdGFuZCB0aGUgY29yZSBjaGFuZ2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjI4NiwiT3V0cHV0VG9rZW5zIjo0OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA3OjU3OjQ1Ljc0NDM0NTcyMVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjcxMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY2ZnODAyMTEuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA4MzUsXG4gIFwiTGluZUNvdW50XCI6IDcwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA4MzU6XFx0XFxuIDgzNjpcXHRcXHRyZXQgPSBueHB3aWZpX2RlaW5pdF9wcml2X3BhcmFtcyhwcml2KTtcXG4gODM3OlxcdFxcdGlmIChyZXQpXFxuIDgzODpcXHRcXHRcXHRnb3RvIGRvbmU7XFxuIDgzOTpcXHRcXHRyZXQgPSBueHB3aWZpX2luaXRfbmV3X3ByaXZfcGFyYW1zKHByaXYsIGRldiwgdHlwZSk7XFxuIDg0MDpcXHRcXHRpZiAocmV0KVxcbiA4NDE6XFx0XFx0XFx0Z290byBkb25lO1xcbiA4NDI6XFx0XFxuIDg0MzpcXHRcXHR1cGRhdGVfdmlmX3R5cGVfY291bnRlcihhZGFwdGVyLCBjdXJyX2lmdHlwZSwgLTEpO1xcbiA4NDQ6XFx0XFx0dXBkYXRlX3ZpZl90eXBlX2NvdW50ZXIoYWRhcHRlciwgdHlwZSwgMSk7XFxuIDg0NTpcXHRcXHRkZXYtXFx1MDAzZWllZWU4MDIxMV9wdHItXFx1MDAzZWlmdHlwZSA9IHR5cGU7XFxuIDg0NjpcXHRcXG4gODQ3OlxcdFxcdHJldCA9IG54cHdpZmlfc2V0X2Jzc19tb2RlKHByaXYpO1xcbiA4NDg6XFx0XFxuIDg0OTpcXHRcXHRpZiAocmV0KVxcbiA4NTA6XFx0XFx0XFx0Z290byBkb25lO1xcbiA4NTE6XFx0XFxuIDg1MjpcXHRcXHRyZXQgPSBueHB3aWZpX3N0YV9pbml0X2NtZChwcml2LCBmYWxzZSwgZmFsc2UpO1xcbiA4NTM6XFx0XFxuIDg1NDpcXHRkb25lOlxcbiA4NTU6XFx0XFx0cmV0dXJuIHJldDtcXG4gODU2OlxcdH1cXG4gODU3OlxcdFxcbiA4NTg6XFx0c3RhdGljIGludFxcbiA4NTk6XFx0bnhwd2lmaV9jaGFuZ2VfdmlmX3RvX2FwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIDg2MDpcXHRcXHRcXHRcXHQgZW51bSBubDgwMjExX2lmdHlwZSBjdXJyX2lmdHlwZSxcXG4gODYxOlxcdFxcdFxcdFxcdCBlbnVtIG5sODAyMTFfaWZ0eXBlIHR5cGUsXFxuIDg2MjpcXHRcXHRcXHRcXHQgc3RydWN0IHZpZl9wYXJhbXMgKnBhcmFtcylcXG4gODYzOlxcdHtcXG4gODY0OlxcdFxcdHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXY7XFxuIDg2NTpcXHRcXHRzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyO1xcbiA4NjY6XFx0XFx0aW50IHJldDtcXG4gODY3OlxcdFxcbiA4Njg6XFx0XFx0cHJpdiA9IG54cHdpZmlfbmV0ZGV2X2dldF9wcml2KGRldik7XFxuIDg2OTpcXHRcXG4gODcwOlxcdFxcdGlmICghcHJpdilcXG4gODcxOlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiA4NzI6XFx0XFxuIDg3MzpcXHRcXHRhZGFwdGVyID0gcHJpdi1cXHUwMDNlYWRhcHRlcjtcXG4gODc0OlxcdFxcbiA4NzU6XFx0XFx0bnhwd2lmaV9kYmcoYWRhcHRlciwgSU5GTyxcXG4gODc2OlxcdFxcdFxcdCAgICBcXFwiJXM6IGNoYW5naW5nIHJvbGUgdG8gQVBcXFxcblxcXCIsIGRldi1cXHUwMDNlbmFtZSk7XFxuIDg3NzpcXHRcXG4gODc4OlxcdFxcdHJldCA9IG54cHdpZmlfZGVpbml0X3ByaXZfcGFyYW1zKHByaXYpO1xcbiA4Nzk6XFx0XFx0aWYgKHJldClcXG4gODgwOlxcdFxcdFxcdGdvdG8gZG9uZTtcXG4gODgxOlxcdFxcbiA4ODI6XFx0XFx0cmV0ID0gbnhwd2lmaV9pbml0X25ld19wcml2X3BhcmFtcyhwcml2LCBkZXYsIHR5cGUpO1xcbiA4ODM6XFx0XFx0aWYgKHJldClcXG4gODg0OlxcdFxcdFxcdGdvdG8gZG9uZTtcXG4gODg1OlxcdFxcbiA4ODY6XFx0XFx0dXBkYXRlX3ZpZl90eXBlX2NvdW50ZXIoYWRhcHRlciwgY3Vycl9pZnR5cGUsIC0xKTtcXG4gODg3OlxcdFxcdHVwZGF0ZV92aWZfdHlwZV9jb3VudGVyKGFkYXB0ZXIsIHR5cGUsIDEpO1xcbiA4ODg6XFx0XFx0ZGV2LVxcdTAwM2VpZWVlODAyMTFfcHRyLVxcdTAwM2VpZnR5cGUgPSB0eXBlO1xcbiA4ODk6XFx0XFxuIDg5MDpcXHRcXHRyZXQgPSBueHB3aWZpX3NldF9ic3NfbW9kZShwcml2KTtcXG4gODkxOlxcdFxcbiA4OTI6XFx0XFx0aWYgKHJldClcXG4gODkzOlxcdFxcdFxcdGdvdG8gZG9uZTtcXG4gODk0OlxcdFxcbiA4OTU6XFx0XFx0cmV0ID0gbnhwd2lmaV9zdGFfaW5pdF9jbWQocHJpdiwgZmFsc2UsIGZhbHNlKTtcXG4gODk2OlxcdFxcbiA4OTc6XFx0ZG9uZTpcXG4gODk4OlxcdFxcdHJldHVybiByZXQ7XFxuIDg5OTpcXHR9XFxuIDkwMDpcXHRcXG4gOTAxOlxcdC8qIGNmZzgwMjExIG9wZXJhdGlvbiBoYW5kbGVyIHRvIGNoYW5nZSBpbnRlcmZhY2UgdHlwZS4gKi9cXG4gOTAyOlxcdHN0YXRpYyBpbnRcXG4gOTAzOlxcdG54cHdpZmlfY2ZnODAyMTFfY2hhbmdlX3ZpcnR1YWxfaW50ZihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbiA5MDQ6XFx0XFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwNzo1Nzo0NS43NDQ1MTQ3NTFaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTI1MzI2MTA4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIEZlYXNpYmlsaXR5IG9mIE5YUCBXaUZpIERyaXZlcioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYG54cHdpZmlfY2ZnODAyMTFfY2hhbmdlX3ZpcnR1YWxfaW50ZmAgY2FsbHMgYm90aCBgbnhwd2lmaV9jaGFuZ2VfdmlmX3RvX3N0YWAgYW5kIGBueHB3aWZpX2NoYW5nZV92aWZfdG9fYXBgLiBUaGF0J3MgdGhlIGVudHJ5IHBvaW50LiBCdXQsIGBueHB3aWZpYC4uLiByaWdodCwgaXQncyB0aGUgZHJpdmVyIGZvciBOWFAgV2lGaSBkZXZpY2VzLCBzcGVjaWZpY2FsbHkgdGhlIElXNjF4IFNESU8gaW50ZXJmYWNlLiBUaGUga2V5IHF1ZXN0aW9uIGlzLCBjYW4gSSBldmVuICpyZWFjaCogdGhpcyBkcml2ZXIgaW4gYSB2aXJ0dWFsIGVudmlyb25tZW50PyBUaGlzIGlzIGNyaXRpY2FsIGZvciBmdXp6aW5nLlxuXG5NeSBmaXJzdCBjaGVjayBpcyB0aGUgb2J2aW91czogZG9lcyB0aGlzIHJlcXVpcmUgYWN0dWFsIGhhcmR3YXJlPyBUaGUgZHJpdmVyIGlzIGNsZWFybHkgaWRlbnRpZmllZCBhcyBgTlhQV0lGSV9TRElPYCwgYmluZGluZyB0byB0aGUgU0RJTyBmdW5jdGlvbi4gQW5kIEkga25vdywgZnJvbSBleHBlcmllbmNlLCB0aGVyZSBhcmVuJ3QgYW55IGVtdWxhdGVkIG9yIHZpcnR1YWwgU0RJTyBXaUZpIGRldmljZXMgcmVhZGlseSBhdmFpbGFibGUgaW4gZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmUuIFNvLCB0aGF0J3MgYSAqbWFqb3IqIHJlZCBmbGFnLlxuXG5UaGVuIEkgbmVlZCB0byBjaGVjayB0aGUgcHJvbXB0IHJ1bGVzLiBUaGVzZSBydWxlcyBhcmUga2V5OiBhbnl0aGluZyB1bnJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGlzIG5vdCB3b3J0aCBmdXp6aW5nLiBUaGUgcGF0Y2ggaXMgaXJyZWxldmFudCBpZiBpdCdzIGluIGEgY29kZSBwYXRoIHlvdSBjYW4ndCBoaXQuIE15IGV4cGVyaWVuY2UgZ2l2ZXMgbWUgdGhlIGVkZ2UgaGVyZS4gTW9kaWZpY2F0aW9ucyB0byBkb2N1bWVudGF0aW9uLCBjb25maWcgZmlsZXMsIG9yIGNvbW1lbnRzIGFyZSBvdXQuIERlY29yYXRpdmUgY2hhbmdlcywgbGlrZSBsb2dnaW5nLCBhcmUgb3V0LiBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIGFyZSBvdXQuIENvZGUgcGF0aHMgY29tcGxldGVseSB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXphdGlvbj8gVGhhdCdzIHRoZSBjb3JlLiBBbHNvLCB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2ggZHJpdmVycyB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgYXJlIG91dCwgYW5kIHNvIGFyZSB0ZWFyZG93biBjYWxsYmFja3MgdGhhdCBhcmUgb25seSBleGVjdXRlZCB3aGVuIGhhcmR3YXJlIGlzIHVucGx1Z2dlZC5cblxuTm93LCBiZWNhdXNlIGBueHB3aWZpYCBzcGVjaWZpY2FsbHkgcmVxdWlyZXMgdGhhdCBOWFAgSVc2MXggU0RJTyBoYXJkd2FyZSBhbmQgYmVjYXVzZSB0aGF0IGhhcmR3YXJlIGlzICpub3QqIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFLCBpdCBpcyBpbXBvc3NpYmxlIHRvIGluc3RhbnRpYXRlIGFuZCBmdXp6IHRoaXMgY29kZSBwYXRoIGluIGFueSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50LlxuXG5UbyBiZSBhYnNvbHV0ZWx5IHN1cmUsIEknbGwgZG8gYSBxdWljayBzZWFyY2ggdGhyb3VnaCB0aGUga2VybmVsIHNvdXJjZSB0byBzZWUgaWYgdGhlcmUncyBhbnkgY2xldmVyIHRyaWNrZXJ5IOKAkyBhIG1vY2sgZGV2aWNlLCBhIHBsYXRmb3JtIGRldmljZSwgYW55dGhpbmcgdGhhdCByZWdpc3RlcnMgYSB2aXJ0dWFsIGBueHB3aWZpYCBkZXZpY2UuIEkgd2lsbCBsb29rIGZvciBhbnkgdXNlIG9mIGZ1bmN0aW9ucyBsaWtlIGBueHB3aWZpX2FkZF9jYXJkYCBvciBgbnhwd2lmaV9yZWdpc3RlcmAsIHRvIG1ha2UgY2VydGFpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc1NDAsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MjYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwNzo1Nzo1MC45OTc3NzkyMDNaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkyNDkyOTQ0MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJueHB3aWZpX1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDE1MDE3IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM9MzY9c3RhdGljIHUxNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzozNzpueHB3aWZpX2NvbnZlcnRfbWNzbWFwX3RvX21heHJhdGUoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMzgtXFx0XFx0XFx0XFx0ICB1MTYgYmFuZHMsIHUxNiBtY3NfbWFwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTQyLVxcdHUzMiB1c3Jfdmh0X2NhcF9pbmZvID0gMDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6NDM6XFx0c3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtXFx1MDAzZWFkYXB0ZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTQ0LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jPTc5PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjgwOm54cHdpZmlfZmlsbF92aHRfY2FwX2luZm8oc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtODEtXFx0XFx0XFx0ICBzdHJ1Y3QgaWVlZTgwMjExX3ZodF9jYXAgKnZodF9jYXAsIHUxNiBiYW5kcylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtODIte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzo4MzpcXHRzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cXHUwMDNlYWRhcHRlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtODQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM9OTM9dm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzo5NDpueHB3aWZpX2ZpbGxfdmh0X2NhcF90bHYoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtOTUtXFx0XFx0XFx0IHN0cnVjdCBpZWVlODAyMTFfdmh0X2NhcCAqdmh0X2NhcCwgdTE2IGJhbmRzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy05Ni17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjk3OlxcdHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIgPSBwcml2LVxcdTAwM2VhZGFwdGVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy05OC1cXHR1MTYgbWNzX21hcF91c2VyLCBtY3NfbWFwX3Jlc3AsIG1jc19tYXBfcmVzdWx0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTEwMS1cXHQvKiBGaWxsIFZIVCBjYXBhYmlsaXR5IGluZm8uICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjEwMjpcXHRueHB3aWZpX2ZpbGxfdmh0X2NhcF9pbmZvKHByaXYsIHZodF9jYXAsIGJhbmRzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTAzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTEyMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTI0OlxcdHRtcCA9IG54cHdpZmlfY29udmVydF9tY3NtYXBfdG9fbWF4cmF0ZShwcml2LCBiYW5kcywgbWNzX21hcF9yZXN1bHQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xMjUtXFx0dmh0X2NhcC1cXHUwMDNlc3VwcF9tY3MucnhfaGlnaGVzdCA9IGNwdV90b19sZTE2KHRtcCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTQ1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxNDY6XFx0dG1wID0gbnhwd2lmaV9jb252ZXJ0X21jc21hcF90b19tYXhyYXRlKHByaXYsIGJhbmRzLCBtY3NfbWFwX3Jlc3VsdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE0Ny1cXHR2aHRfY2FwLVxcdTAwM2VzdXBwX21jcy50eF9oaWdoZXN0ID0gY3B1X3RvX2xlMTYodG1wKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE1MDppbnQgbnhwd2lmaV9jbWRfYXBwZW5kXzExYWNfdGx2KHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE1MTpcXHRcXHRcXHRcXHRzdHJ1Y3Qgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTUyLVxcdFxcdFxcdFxcdHU4ICoqYnVmZmVyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNTMte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxNTQ6XFx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfdmh0Y2FwICp2aHRfY2FwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxNTU6XFx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfb3Blcl9tb2RlX250ZiAqb3Blcl9udGY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE1Ni1cXHRzdHJ1Y3QgaWVlZV90eXBlc19vcGVyX21vZGVfbnRmICppZWVlX29wZXJfbnRmO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxNTc6XFx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfdmh0X29wZXIgKnZodF9vcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTU4OlxcdHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIgPSBwcml2LVxcdTAwM2VhZGFwdGVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNTktXFx0dTggc3VwcF9jaHdkX3NldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNjktXFx0aWYgKGJzc19kZXNjLVxcdTAwM2ViY25fdmh0X2NhcCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxNzA6XFx0XFx0dmh0X2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc192aHRjYXAgKikqYnVmZmVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNzEtXFx0XFx0bWVtc2V0KHZodF9jYXAsIDAsIHNpemVvZigqdmh0X2NhcCkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE3NC1cXHRcXHRcXHRjcHVfdG9fbGUxNihzaXplb2Yoc3RydWN0IGllZWU4MDIxMV92aHRfY2FwKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE3NTpcXHRcXHRtZW1jcHkoKHU4ICopdmh0X2NhcCArIHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZWFkZXIpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNzYtXFx0XFx0ICAgICAgICh1OCAqKWJzc19kZXNjLVxcdTAwM2ViY25fdmh0X2NhcCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE3OTpcXHRcXHRueHB3aWZpX2ZpbGxfdmh0X2NhcF90bHYocHJpdiwgXFx1MDAyNnZodF9jYXAtXFx1MDAzZXZodF9jYXAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE4MC1cXHRcXHRcXHRcXHRcXHQgYnNzX2Rlc2MtXFx1MDAzZWJzc19iYW5kKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xODctXFx0XFx0aWYgKHByaXYtXFx1MDAzZWJzc19tb2RlID09IE5MODAyMTFfSUZUWVBFX1NUQVRJT04pIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTg4OlxcdFxcdFxcdHZodF9vcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc192aHRfb3BlciAqKSpidWZmZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE4OS1cXHRcXHRcXHRtZW1zZXQodmh0X29wLCAwLCBzaXplb2YoKnZodF9vcCkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE5Mi1cXHRcXHRcXHR2aHRfb3AtXFx1MDAzZWhlYWRlci5sZW4gID0gY3B1X3RvX2xlMTYoc2l6ZW9mKCp2aHRfb3ApIC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTkzOlxcdFxcdFxcdFxcdHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZWFkZXIpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTk0LVxcdFxcdFxcdG1lbWNweSgodTggKil2aHRfb3AgK1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxOTU6XFx0XFx0XFx0XFx0c2l6ZW9mKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlYWRlciksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE5Ni1cXHRcXHRcXHQgICAgICAgKHU4ICopYnNzX2Rlc2MtXFx1MDAzZWJjbl92aHRfb3BlcixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0yNDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjI0NTppbnQgbnhwd2lmaV9jbWRfMTFhY19jZmcoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMjQ2LVxcdFxcdFxcdCBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqY21kLCB1MTYgY21kX2FjdGlvbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MjQ3OlxcdFxcdFxcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWFjX3ZodF9jZmcgKmNmZylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMjQ4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0yNjQtLyogSW5pdGlhbGl6ZSBCbG9ja0FjayBwYXJhbWV0ZXJzIGZvciAxMWFjLiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoyNjU6dm9pZCBueHB3aWZpX3NldF8xMWFjX2JhX3BhcmFtcyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0yNjYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5oPTE0PWVudW0gdmh0X2NmZ19taXNjX2NvbmZpZyB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmgtMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5oOjI1OmludCBueHB3aWZpX2NtZF9hcHBlbmRfMTFhY190bHYoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmg6MjY6XFx0XFx0XFx0XFx0c3RydWN0IG54cHdpZmlfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5oLTI3LVxcdFxcdFxcdFxcdHU4ICoqYnVmZmVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmg6Mjg6aW50IG54cHdpZmlfY21kXzExYWNfY2ZnKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5oLTI5LVxcdFxcdFxcdCBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqY21kLCB1MTYgY21kX2FjdGlvbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmg6MzA6XFx0XFx0XFx0IHN0cnVjdCBueHB3aWZpXzExYWNfdmh0X2NmZyAqY2ZnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmg6MzE6dm9pZCBueHB3aWZpX2ZpbGxfdmh0X2NhcF90bHYoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmgtMzItXFx0XFx0XFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV92aHRfY2FwICp2aHRfY2FwLCB1MTYgYmFuZHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTEwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxMTp2b2lkIG54cHdpZmlfdXBkYXRlXzExYXhfY2FwKHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTEyLVxcdFxcdFxcdCAgICAgc3RydWN0IGh3X3NwZWNfZXh0ZW5zaW9uICpod19oZV9jYXApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTEzLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTQ6XFx0c3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTU6XFx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICpoZV9jYXAgPSBOVUxMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNjpcXHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKnVzZXJfaGVfY2FwID0gTlVMTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTc6XFx0dTggaGVhZGVyX2xlbiA9IHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZWFkZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xOC1cXHR1MTYgZGF0YV9sZW4gPSBsZTE2X3RvX2NwdShod19oZV9jYXAtXFx1MDAzZWhlYWRlci5sZW4pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTIyLVxcdGlmICgoZGF0YV9sZW4gKyBoZWFkZXJfbGVuKSBcXHUwMDNlIHNpemVvZihhZGFwdGVyLVxcdTAwM2Vod19oZV9jYXApKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjIzOlxcdFxcdG54cHdpZmlfZGJnKGFkYXB0ZXIsIEVSUk9SLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yNC1cXHRcXHRcXHQgICAgXFxcImh3X2hlX2NhcCB0b28gYmlnLCBsZW49JWRcXFxcblxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI5OlxcdGhlX2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKilod19oZV9jYXA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTMwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM3LVxcdFxcdGhlX2NhcF8yZyA9IHRydWU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjM4OlxcdFxcdG54cHdpZmlfZGJnX2R1bXAoYWRhcHRlciwgQ01EX0QsIFxcXCIyLjRHIEhFIGNhcGFiaWxpdHkgZWxlbWVudCBcXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zOS1cXHRcXHRcXHRcXHQgYWRhcHRlci1cXHUwMDNlaHdfMmdfaGVfY2FwLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ1LVxcdFxcdGFkYXB0ZXItXFx1MDAzZWZ3X2JhbmRzIHw9IEJBTkRfQUFYO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0NjpcXHRcXHRueHB3aWZpX2RiZ19kdW1wKGFkYXB0ZXIsIENNRF9ELCBcXFwiNUcgSEUgY2FwYWJpbGl0eSBlbGVtZW50IFxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ3LVxcdFxcdFxcdFxcdCBhZGFwdGVyLVxcdTAwM2Vod19oZV9jYXAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTctXFx0XFx0XFx0ICAgICAgIHNpemVvZihhZGFwdGVyLVxcdTAwM2Vod18yZ19oZV9jYXApKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTg6XFx0XFx0XFx0dXNlcl9oZV9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICopXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU5LVxcdFxcdFxcdFxcdHByaXYtXFx1MDAzZXVzZXJfMmdfaGVfY2FwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTYzLVxcdFxcdFxcdCAgICAgICBzaXplb2YoYWRhcHRlci1cXHUwMDNlaHdfaGVfY2FwKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjY0OlxcdFxcdFxcdHVzZXJfaGVfY2FwID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy02NS1cXHRcXHRcXHRcXHRwcml2LVxcdTAwM2V1c2VyX2hlX2NhcDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy03OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6Nzk6Ym9vbCBueHB3aWZpXzExYXhfYmFuZGNvbmZpZ19hbGxvd2VkKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjgwOlxcdFxcdFxcdFxcdCAgICAgc3RydWN0IG54cHdpZmlfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTgxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy05NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6OTU6aW50IG54cHdpZmlfZmlsbF9oZV9jYXBfdGx2KHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjk2OlxcdFxcdFxcdCAgICBzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKmhlX2NhcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtOTctXFx0XFx0XFx0ICAgIHUxNiBiYW5kcylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtOTgte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo5OTpcXHRzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cXHUwMDNlYWRhcHRlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTAwOlxcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqaHdfaGVfY2FwID0gTlVMTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTAxLVxcdHUxNiByeF9uc3MsIHR4X25zcztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMDgtXFx0XFx0bWVtY3B5KGhlX2NhcCwgcHJpdi1cXHUwMDNldXNlcl9oZV9jYXAsIHByaXYtXFx1MDAzZXVzZXJfaGVfY2FwX2xlbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjEwOTpcXHRcXHRod19oZV9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICopYWRhcHRlci1cXHUwMDNlaHdfaGVfY2FwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMTAtXFx0XFx0cmV0X2xlbiA9IHByaXYtXFx1MDAzZXVzZXJfaGVfY2FwX2xlbjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMTItXFx0XFx0bWVtY3B5KGhlX2NhcCwgcHJpdi1cXHUwMDNldXNlcl8yZ19oZV9jYXAsIHByaXYtXFx1MDAzZXVzZXJfMmdfaGVfY2FwX2xlbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjExMzpcXHRcXHRod19oZV9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICopYWRhcHRlci1cXHUwMDNlaHdfMmdfaGVfY2FwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMTQtXFx0XFx0cmV0X2xlbiA9IHByaXYtXFx1MDAzZXVzZXJfMmdfaGVfY2FwX2xlbjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMjUtXFx0Zm9yIChuc3MgPSAxOyBuc3MgXFx1MDAzYz0gODsgbnNzKyspIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTI2OlxcdFxcdGNmZ192YWx1ZSA9IG54cHdpZmlfZ2V0X2hlX25zc19tY3MoaGVfY2FwLVxcdTAwM2VyeF9tY3NfODAsIG5zcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjEyNzpcXHRcXHRod192YWx1ZSA9IG54cHdpZmlfZ2V0X2hlX25zc19tY3MoaHdfaGVfY2FwLVxcdTAwM2VyeF9tY3NfODAsIG5zcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTEyOC1cXHRcXHRpZiAocnhfbnNzICE9IDAgXFx1MDAyNlxcdTAwMjYgbnNzIFxcdTAwM2UgcnhfbnNzKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTEzMC1cXHRcXHRpZiAoaHdfdmFsdWUgPT0gTk9fTlNTX1NVUFBPUlQgfHwgY2ZnX3ZhbHVlID09IE5PX05TU19TVVBQT1JUKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxMzE6XFx0XFx0XFx0bnhwd2lmaV9zZXRfaGVfbnNzX21jcyhcXHUwMDI2aGVfY2FwLVxcdTAwM2VyeF9tY3NfODAsIG5zcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTMyLVxcdFxcdFxcdFxcdFxcdCAgICAgICBOT19OU1NfU1VQUE9SVCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTEzMy1cXHRcXHRlbHNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjEzNDpcXHRcXHRcXHRueHB3aWZpX3NldF9oZV9uc3NfbWNzKFxcdTAwMjZoZV9jYXAtXFx1MDAzZXJ4X21jc184MCwgbnNzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMzUtXFx0XFx0XFx0XFx0XFx0ICAgICAgIG1pbihjZmdfdmFsdWUsIGh3X3ZhbHVlKSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTM4LVxcdGZvciAobnNzID0gMTsgbnNzIFxcdTAwM2M9IDg7IG5zcysrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjEzOTpcXHRcXHRjZmdfdmFsdWUgPSBueHB3aWZpX2dldF9oZV9uc3NfbWNzKGhlX2NhcC1cXHUwMDNldHhfbWNzXzgwLCBuc3MpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNDA6XFx0XFx0aHdfdmFsdWUgPSBueHB3aWZpX2dldF9oZV9uc3NfbWNzKGh3X2hlX2NhcC1cXHUwMDNldHhfbWNzXzgwLCBuc3MpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNDEtXFx0XFx0aWYgKHR4X25zcyAhPSAwIFxcdTAwMjZcXHUwMDI2IG5zcyBcXHUwMDNlIHR4X25zcylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNDMtXFx0XFx0aWYgKGh3X3ZhbHVlID09IE5PX05TU19TVVBQT1JUIHx8IGNmZ192YWx1ZSA9PSBOT19OU1NfU1VQUE9SVClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTQ0OlxcdFxcdFxcdG54cHdpZmlfc2V0X2hlX25zc19tY3MoXFx1MDAyNmhlX2NhcC1cXHUwMDNldHhfbWNzXzgwLCBuc3MsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE0NS1cXHRcXHRcXHRcXHRcXHQgICAgICAgTk9fTlNTX1NVUFBPUlQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNDYtXFx0XFx0ZWxzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNDc6XFx0XFx0XFx0bnhwd2lmaV9zZXRfaGVfbnNzX21jcyhcXHUwMDI2aGVfY2FwLVxcdTAwM2V0eF9tY3NfODAsIG5zcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTQ4LVxcdFxcdFxcdFxcdFxcdCAgICAgICBtaW4oY2ZnX3ZhbHVlLCBod192YWx1ZSkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE1My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTU0OmludCBueHB3aWZpX2NtZF9hcHBlbmRfMTFheF90bHYoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTU1OlxcdFxcdFxcdFxcdHN0cnVjdCBueHB3aWZpX2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNTYtXFx0XFx0XFx0XFx0dTggKipidWZmZXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE1Ny17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE1ODpcXHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKmhlX2NhcCA9IE5VTEw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE1OS1cXHRpbnQgcmV0X2xlbjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE2NDpcXHRoZV9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICopKmJ1ZmZlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTY1OlxcdHJldF9sZW4gPSBueHB3aWZpX2ZpbGxfaGVfY2FwX3Rsdihwcml2LCBoZV9jYXAsIGJzc19kZXNjLVxcdTAwM2Vic3NfYmFuZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE2Ni1cXHQqYnVmZmVyICs9IHJldF9sZW47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTcwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNzE6aW50IG54cHdpZmlfY21kXzExYXhfY2ZnKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE3Mi1cXHRcXHRcXHQgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCwgdTE2IGNtZF9hY3Rpb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE3MzpcXHRcXHRcXHQgc3RydWN0IG54cHdpZmlfMTFheF9oZV9jZmcgKmF4X2NmZylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTc0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNzYtXFx0dTE2IGNtZF9zaXplO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNzc6XFx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVhZGVyICpoZWFkZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE3OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xODYtXFx0ICAgIGF4X2NmZy1cXHUwMDNlaGVfY2FwX2NmZy5leHRfaWQgPT0gV0xBTl9FSURfRVhUX0hFX0NBUEFCSUxJVFkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTg3OlxcdFxcdGhlYWRlciA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZWFkZXIgKiloZV9jZmctXFx1MDAzZXRsdjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTg4LVxcdFxcdGhlYWRlci1cXHUwMDNldHlwZSA9IGNwdV90b19sZTE2KGF4X2NmZy1cXHUwMDNlaGVfY2FwX2NmZy5pZCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjAwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyMDE6aW50IG54cHdpZmlfcmV0XzExYXhfY2ZnKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTIwMi1cXHRcXHRcXHQgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3AsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjIwMzpcXHRcXHRcXHQgc3RydWN0IG54cHdpZmlfMTFheF9oZV9jZmcgKmF4X2NmZylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjA0LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjA1LVxcdHN0cnVjdCBob3N0X2NtZF8xMWF4X2NmZyAqaGVfY2ZnID0gXFx1MDAyNnJlc3AtXFx1MDAzZXBhcmFtcy5heF9jZmc7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjIwNjpcXHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZWFkZXIgKmhlYWRlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjA3LVxcdHUxNiBsZWZ0X2xlbiwgdGx2X3R5cGUsIHRsdl9sZW47XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTIwOC1cXHR1OCBleHRfaWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjIwOTpcXHRzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2hlX2NhcF9jZmcgKmhlX2NhcCA9IFxcdTAwMjZheF9jZmctXFx1MDAzZWhlX2NhcF9jZmc7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTIxMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjExLVxcdGxlZnRfbGVuID0gbGUxNl90b19jcHUocmVzcC1cXHUwMDNlc2l6ZSkgLSBzaXplb2YoKmhlX2NmZykgLSBTX0RTX0dFTjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjEyOlxcdGhlYWRlciA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZWFkZXIgKiloZV9jZmctXFx1MDAzZXRsdjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjEzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI0Mi1cXHRcXHRsZWZ0X2xlbiAtPSAoc2l6ZW9mKCpoZWFkZXIpICsgdGx2X2xlbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI0MzpcXHRcXHRoZWFkZXIgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVhZGVyICopKCh1OCAqKWhlYWRlciArXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI0NC1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgc2l6ZW9mKCpoZWFkZXIpICtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yNTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI1MTppbnQgbnhwd2lmaV9jbWRfMTFheF9jbWQoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjUyLVxcdFxcdFxcdCBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqY21kLCB1MTYgY21kX2FjdGlvbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjUzOlxcdFxcdFxcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2NtZF9jZmcgKmF4X2NtZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjU0LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjU1OlxcdHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIgPSBwcml2LVxcdTAwM2VhZGFwdGVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yNTYtXFx0c3RydWN0IGhvc3RfY21kXzExYXhfY21kICpoZV9jbWQgPSBcXHUwMDI2Y21kLVxcdTAwM2VwYXJhbXMuYXhfY21kO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yNTctXFx0dTE2IGNtZF9zaXplO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNTg6XFx0c3RydWN0IG54cHdpZmlfMTFheF9zcl9jbWQgKnNyX2NtZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjU5OlxcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2RhdGEgKnRsdjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjYwOlxcdHN0cnVjdCBueHB3aWZpXzExYXhfYmVhbV9jbWQgKmJlYW1fY21kO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNjE6XFx0c3RydWN0IG54cHdpZmlfMTFheF9odGNfY21kICpodGNfY21kO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNjI6XFx0c3RydWN0IG54cHdpZmlfMTFheF90eG9taV9jbWQgKnR4bW9pX2NtZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjYzOlxcdHN0cnVjdCBueHB3aWZpXzExYXhfdG9sdGltZV9jbWQgKnRvbHRpbWVfY21kO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNjQ6XFx0c3RydWN0IG54cHdpZmlfMTFheF90eG9wX2NtZCAqdHhvcF9jbWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI2NTpcXHRzdHJ1Y3Qgbnhwd2lmaV8xMWF4X3NldF9ic3JwX2NtZCAqc2V0X2JzcnBfY21kO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNjY6XFx0c3RydWN0IG54cHdpZmlfMTFheF9sbGRlX2NtZCAqbGxkZV9jbWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI2Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yNzUtXFx0Y2FzZSBOWFBXSUZJXzExQVhDTURfU1JfU1VCSUQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI3NjpcXHRcXHRzcl9jbWQgPSAoc3RydWN0IG54cHdpZmlfMTFheF9zcl9jbWQgKilcXHUwMDI2YXhfY21kLVxcdTAwM2VwYXJhbTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjc3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNzg6XFx0XFx0dGx2ID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2RhdGEgKiloZV9jbWQtXFx1MDAzZXZhbDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjc5LVxcdFxcdHRsdi1cXHUwMDNlaGVhZGVyLnR5cGUgPSBjcHVfdG9fbGUxNihzcl9jbWQtXFx1MDAzZXR5cGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI4NS1cXHRjYXNlIE5YUFdJRklfMTFBWENNRF9CRUFNX1NVQklEOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyODY6XFx0XFx0YmVhbV9jbWQgPSAoc3RydWN0IG54cHdpZmlfMTFheF9iZWFtX2NtZCAqKVxcdTAwMjZheF9jbWQtXFx1MDAzZXBhcmFtO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yODctXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjkxLVxcdGNhc2UgTlhQV0lGSV8xMUFYQ01EX0hUQ19TVUJJRDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjkyOlxcdFxcdGh0Y19jbWQgPSAoc3RydWN0IG54cHdpZmlfMTFheF9odGNfY21kICopXFx1MDAyNmF4X2NtZC1cXHUwMDNlcGFyYW07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI5My1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yOTctXFx0Y2FzZSBOWFBXSUZJXzExQVhDTURfVFhPTUlfU1VCSUQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI5ODpcXHRcXHR0eG1vaV9jbWQgPVxcdChzdHJ1Y3Qgbnhwd2lmaV8xMWF4X3R4b21pX2NtZCAqKVxcdTAwMjZheF9jbWQtXFx1MDAzZXBhcmFtO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yOTktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzAzLVxcdGNhc2UgTlhQV0lGSV8xMUFYQ01EX09CU1NfVE9MVElNRV9TVUJJRDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MzA0OlxcdFxcdHRvbHRpbWVfY21kID0gKHN0cnVjdCBueHB3aWZpXzExYXhfdG9sdGltZV9jbWQgKilcXHUwMDI2YXhfY21kLVxcdTAwM2VwYXJhbTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzA1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTMxMC1cXHRjYXNlIE5YUFdJRklfMTFBWENNRF9UWE9QUlRTX1NVQklEOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozMTE6XFx0XFx0dHhvcF9jbWQgPSAoc3RydWN0IG54cHdpZmlfMTFheF90eG9wX2NtZCAqKVxcdTAwMjZheF9jbWQtXFx1MDAzZXBhcmFtO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zMTItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzE3LVxcdGNhc2UgTlhQV0lGSV8xMUFYQ01EX1NFVF9CU1JQX1NVQklEOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozMTg6XFx0XFx0c2V0X2JzcnBfY21kID0gKHN0cnVjdCBueHB3aWZpXzExYXhfc2V0X2JzcnBfY21kICopXFx1MDAyNmF4X2NtZC1cXHUwMDNlcGFyYW07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTMxOS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zMjMtXFx0Y2FzZSBOWFBXSUZJXzExQVhDTURfTExERV9TVUJJRDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MzI0OlxcdFxcdGxsZGVfY21kID0gKHN0cnVjdCBueHB3aWZpXzExYXhfbGxkZV9jbWQgKilcXHUwMDI2YXhfY21kLVxcdTAwM2VwYXJhbTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzI1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTMyOS1cXHRkZWZhdWx0OlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozMzA6XFx0XFx0bnhwd2lmaV9kYmcoYWRhcHRlciwgRVJST1IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTMzMS1cXHRcXHRcXHQgICAgXFxcIiVzOiBVbmtub3duIHN1YiBjb21tYW5kOiAlZFxcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zNDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjM0MTppbnQgbnhwd2lmaV9yZXRfMTFheF9jbWQoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzQyLVxcdFxcdFxcdCBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqcmVzcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MzQzOlxcdFxcdFxcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2NtZF9jZmcgKmF4X2NtZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzQ0LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MzQ1OlxcdHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIgPSBwcml2LVxcdTAwM2VhZGFwdGVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zNDYtXFx0c3RydWN0IGhvc3RfY21kXzExYXhfY21kICpoZV9jbWQgPSBcXHUwMDI2cmVzcC1cXHUwMDNlcGFyYW1zLmF4X2NtZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MzQ3OlxcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2RhdGEgKnRsdjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzQ4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM1Mi1cXHRjYXNlIE5YUFdJRklfMTFBWENNRF9TUl9TVUJJRDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MzUzOlxcdFxcdHRsdiA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19kYXRhICopaGVfY21kLVxcdTAwM2V2YWw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM1NC1cXHRcXHRtZW1jcHkoYXhfY21kLVxcdTAwM2VwYXJhbS5zcl9jZmcucGFyYW0ub2Jzc19wZF9vZmZzZXQub2Zmc2V0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM4My1cXHRkZWZhdWx0OlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozODQ6XFx0XFx0bnhwd2lmaV9kYmcoYWRhcHRlciwgRVJST1IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM4NS1cXHRcXHRcXHQgICAgXFxcIiVzOiBVbmtub3duIHN1YiBjb21tYW5kOiAlZFxcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zOTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjM5MzpzdGF0aWMgdTggbnhwd2lmaV9pc19hcF8xMWF4X3R3dF9zdXBwb3J0ZWQoc3RydWN0IG54cHdpZmlfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM5NC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDA5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0MTA6Ym9vbCBueHB3aWZpX2lzXzExYXhfdHd0X3N1cHBvcnRlZChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0MTE6XFx0XFx0XFx0XFx0ICAgc3RydWN0IG54cHdpZmlfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQxMi17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQxMzpcXHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKnVzZXJfaGVfY2FwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0MTQ6XFx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICpod19oZV9jYXA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQxNS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQxOTpcXHRpZiAoIW54cHdpZmlfaXNfYXBfMTFheF90d3Rfc3VwcG9ydGVkKGJzc19kZXNjKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0MjA6XFx0XFx0bnhwd2lmaV9kYmcocHJpdi1cXHUwMDNlYWRhcHRlciwgTVNHLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MjEtXFx0XFx0XFx0ICAgIFxcXCJBUCBkb24ndCBzdXBwb3J0IHR3dCBmZWF0dXJlXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MjUtXFx0aWYgKGJzc19kZXNjLVxcdTAwM2Vic3NfYmFuZCBcXHUwMDI2IEJBTkRfQSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0MjY6XFx0XFx0aHdfaGVfY2FwID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MjctXFx0XFx0XFx0cHJpdi1cXHUwMDNlYWRhcHRlci1cXHUwMDNlaHdfaGVfY2FwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0Mjg6XFx0XFx0dXNlcl9oZV9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICopXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQyOS1cXHRcXHRcXHRwcml2LVxcdTAwM2V1c2VyX2hlX2NhcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDMwLVxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQzMTpcXHRcXHRod19oZV9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICopXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQzMi1cXHRcXHRcXHRwcml2LVxcdTAwM2VhZGFwdGVyLVxcdTAwM2Vod18yZ19oZV9jYXA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQzMzpcXHRcXHR1c2VyX2hlX2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDM0LVxcdFxcdFxcdHByaXYtXFx1MDAzZXVzZXJfMmdfaGVfY2FwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQzNy1cXHRpZiAoIShod19oZV9jYXAtXFx1MDAzZWhlX21hY19jYXBbMF0gXFx1MDAyNiBIRV9NQUNfQ0FQX1RXVF9SRVFfU1VQUE9SVCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDM4OlxcdFxcdG54cHdpZmlfZGJnKHByaXYtXFx1MDAzZWFkYXB0ZXIsIE1TRyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDM5LVxcdFxcdFxcdCAgICBcXFwiRlcgZG9uJ3Qgc3VwcG9ydCBUV1RcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ0My1cXHRpZiAoISh1c2VyX2hlX2NhcC1cXHUwMDNlaGVfbWFjX2NhcFswXSBcXHUwMDI2IEhFX01BQ19DQVBfVFdUX1JFUV9TVVBQT1JUKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0NDQ6XFx0XFx0bnhwd2lmaV9kYmcocHJpdi1cXHUwMDNlYWRhcHRlciwgTVNHLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00NDUtXFx0XFx0XFx0ICAgIFxcXCJVU0VSIEhFX01BQ19DQVAgZG9uJ3Qgc3VwcG9ydCBUV1RcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ1MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDUyOnU4IG54cHdpZmlfaXNfc3RhXzExYXhfdHd0X3JlcV9zdXBwb3J0ZWQoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDUzLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDU0OlxcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqdXNlcl9oZV9jYXA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ1NS1cXHR1OCByZXQgPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ1OS1cXHRcXHRpZiAocHJpdi1cXHUwMDNlY29uZmlnX2JhbmRzIFxcdTAwMjYgQkFORF9BQVgpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ2MDpcXHRcXHRcXHR1c2VyX2hlX2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKilwcml2LVxcdTAwM2V1c2VyX2hlX2NhcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDYxLVxcdFxcdGVsc2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDYyOlxcdFxcdFxcdHVzZXJfaGVfY2FwID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqKXByaXYtXFx1MDAzZXVzZXJfMmdfaGVfY2FwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00NjMtXFx0XFx0cmV0ID0gdXNlcl9oZV9jYXAtXFx1MDAzZWhlX21hY19jYXBbMF0gXFx1MDAyNiBIRV9NQUNfQ0FQX1RXVF9SRVFfU1VQUE9SVDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00NjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ2OTppbnQgbnhwd2lmaV9jbWRfdHd0X2NmZyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00NzAtXFx0XFx0XFx0c3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCwgdTE2IGNtZF9hY3Rpb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ3MTpcXHRcXHRcXHRzdHJ1Y3Qgbnhwd2lmaV90d3RfY2ZnICp0d3RfY2ZnKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00NzIte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0NzM6XFx0c3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtXFx1MDAzZWFkYXB0ZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ3NC1cXHRzdHJ1Y3QgaG9zdF9jbWRfdHd0X2NmZyAqdHd0X2NmZ19jbWQgPSBcXHUwMDI2Y21kLVxcdTAwM2VwYXJhbXMudHd0X2NmZztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDc1OlxcdHN0cnVjdCBueHB3aWZpX3R3dF9zZXR1cCAqdHd0X3NldHVwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0NzY6XFx0c3RydWN0IG54cHdpZmlfdHd0X3RlYXJkb3duICp0d3RfdGVhcmRvd247XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ3NzpcXHRzdHJ1Y3Qgbnhwd2lmaV90d3RfcmVwb3J0ICp0d3RfcmVwb3J0O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0Nzg6XFx0c3RydWN0IG54cHdpZmlfdHd0X2luZm9ybWF0aW9uICp0d3RfaW5mb3JtYXRpb247XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ3OTpcXHRzdHJ1Y3Qgbnhwd2lmaV9idHd0X2FwX2NvbmZpZyAqYnR3dF9hcF9jb25maWc7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ4MC1cXHR1OCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ5MC1cXHRjYXNlIE5YUFdJRklfMTFBWF9UV1RfU0VUVVBfU1VCSUQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ5MTpcXHRcXHR0d3Rfc2V0dXAgPSAoc3RydWN0IG54cHdpZmlfdHd0X3NldHVwICopXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ5Mi1cXHRcXHRcXHR0d3RfY2ZnX2NtZC1cXHUwMDNldmFsO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00OTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ5NDpcXHRcXHRtZW1zZXQodHd0X3NldHVwLCAweDAwLCBzaXplb2Yoc3RydWN0IG54cHdpZmlfdHd0X3NldHVwKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ5NS1cXHRcXHR0d3Rfc2V0dXAtXFx1MDAzZWltcGxpY2l0ID0gdHd0X2NmZy1cXHUwMDNlcGFyYW0udHd0X3NldHVwLmltcGxpY2l0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUwNy1cXHRcXHR0d3Rfc2V0dXAtXFx1MDAzZWJjbl9taXNzX3RocmVzaG9sZCA9IHR3dF9jZmctXFx1MDAzZXBhcmFtLnR3dF9zZXR1cC5iY25fbWlzc190aHJlc2hvbGQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjUwODpcXHRcXHRjbWRfc2l6ZSArPSBzaXplb2Yoc3RydWN0IG54cHdpZmlfdHd0X3NldHVwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTA5LVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MTAtXFx0Y2FzZSBOWFBXSUZJXzExQVhfVFdUX1RFQVJET1dOX1NVQklEOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1MTE6XFx0XFx0dHd0X3RlYXJkb3duID0gKHN0cnVjdCBueHB3aWZpX3R3dF90ZWFyZG93biAqKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MTItXFx0XFx0XFx0dHd0X2NmZ19jbWQtXFx1MDAzZXZhbDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTEzLVxcdFxcdG1lbXNldCh0d3RfdGVhcmRvd24sIDB4MDAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjUxNDpcXHRcXHQgICAgICAgc2l6ZW9mKHN0cnVjdCBueHB3aWZpX3R3dF90ZWFyZG93bikpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MTUtXFx0XFx0dHd0X3RlYXJkb3duLVxcdTAwM2VmbG93X2lkZW50aWZpZXIgPVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUyMC1cXHRcXHRcXHR0d3RfY2ZnLVxcdTAwM2VwYXJhbS50d3RfdGVhcmRvd24udGVhcmRvd25fYWxsX3R3dDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTIxOlxcdFxcdGNtZF9zaXplICs9IHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV90d3RfdGVhcmRvd24pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MjItXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUyMy1cXHRjYXNlIE5YUFdJRklfMTFBWF9UV1RfUkVQT1JUX1NVQklEOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1MjQ6XFx0XFx0dHd0X3JlcG9ydCA9IChzdHJ1Y3Qgbnhwd2lmaV90d3RfcmVwb3J0ICopXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUyNS1cXHRcXHRcXHR0d3RfY2ZnX2NtZC1cXHUwMDNldmFsO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1MjY6XFx0XFx0bWVtc2V0KHR3dF9yZXBvcnQsIDB4MDAsIHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV90d3RfcmVwb3J0KSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUyNy1cXHRcXHR0d3RfcmVwb3J0LVxcdTAwM2V0eXBlID0gdHd0X2NmZy1cXHUwMDNlcGFyYW0udHd0X3JlcG9ydC50eXBlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1Mjg6XFx0XFx0Y21kX3NpemUgKz0gc2l6ZW9mKHN0cnVjdCBueHB3aWZpX3R3dF9yZXBvcnQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MjktXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUzMC1cXHRjYXNlIE5YUFdJRklfMTFBWF9UV1RfSU5GT1JNQVRJT05fU1VCSUQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjUzMTpcXHRcXHR0d3RfaW5mb3JtYXRpb24gPSAoc3RydWN0IG54cHdpZmlfdHd0X2luZm9ybWF0aW9uICopXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUzMi1cXHRcXHRcXHR0d3RfY2ZnX2NtZC1cXHUwMDNldmFsO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MzMtXFx0XFx0bWVtc2V0KHR3dF9pbmZvcm1hdGlvbiwgMHgwMCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTM0OlxcdFxcdCAgICAgICBzaXplb2Yoc3RydWN0IG54cHdpZmlfdHd0X2luZm9ybWF0aW9uKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUzNS1cXHRcXHR0d3RfaW5mb3JtYXRpb24tXFx1MDAzZWZsb3dfaWRlbnRpZmllciA9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTM4LVxcdFxcdFxcdHR3dF9jZmctXFx1MDAzZXBhcmFtLnR3dF9pbmZvcm1hdGlvbi5zdXNwZW5kX2R1cmF0aW9uO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1Mzk6XFx0XFx0Y21kX3NpemUgKz0gc2l6ZW9mKHN0cnVjdCBueHB3aWZpX3R3dF9pbmZvcm1hdGlvbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU0MC1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTQxLVxcdGNhc2UgTlhQV0lGSV8xMUFYX0JUV1RfQVBfQ09ORklHX1NVQklEOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1NDI6XFx0XFx0YnR3dF9hcF9jb25maWcgPSAoc3RydWN0IG54cHdpZmlfYnR3dF9hcF9jb25maWcgKilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTQzLVxcdFxcdFxcdFxcdCB0d3RfY2ZnX2NtZC1cXHUwMDNldmFsO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NDQtXFx0XFx0bWVtc2V0KGJ0d3RfYXBfY29uZmlnLCAweDAwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1NDU6XFx0XFx0ICAgICAgIHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV9idHd0X2FwX2NvbmZpZykpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NDYtXFx0XFx0YnR3dF9hcF9jb25maWctXFx1MDAzZWFwX2JjYXN0X2JldF9zdGFfd2FpdCA9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTY0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1NjU6XFx0XFx0Y21kX3NpemUgKz0gc2l6ZW9mKHN0cnVjdCBueHB3aWZpX2J0d3RfYXBfY29uZmlnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTY2LVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NjctXFx0ZGVmYXVsdDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTY4OlxcdFxcdG54cHdpZmlfZGJnKGFkYXB0ZXIsIEVSUk9SLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NjktXFx0XFx0XFx0ICAgIFxcXCJVbmtub3duIHN1YiBpZDogJWRcXFxcblxcXCIsIHR3dF9jZmctXFx1MDAzZXN1Yl9pZCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTc3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1Nzg6aW50IG54cHdpZmlfcmV0X3R3dF9jZmcoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTc5LVxcdFxcdFxcdHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpyZXNwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1ODA6XFx0XFx0XFx0c3RydWN0IG54cHdpZmlfdHd0X2NmZyAqdHd0X2NmZylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTgxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01ODktXFx0ICAgIHR3dF9jZmctXFx1MDAzZXN1Yl9pZCA9PSBOWFBXSUZJXzExQVhfVFdUX1JFUE9SVF9TVUJJRCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1OTA6XFx0XFx0c3RydWN0IG54cHdpZmlfdHd0X3JlcG9ydCAqdHd0X3JlcG9ydCA9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU5MTpcXHRcXHRcXHQoc3RydWN0IG54cHdpZmlfdHd0X3JlcG9ydCAqKXR3dF9jZmdfY21kLVxcdTAwM2V2YWw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU5Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTkzOlxcdFxcdG1lbWNweShcXHUwMDI2dHd0X2NmZy1cXHUwMDNlcGFyYW0udHd0X3JlcG9ydCwgdHd0X3JlcG9ydCwgc2l6ZW9mKHN0cnVjdCBueHB3aWZpX3R3dF9yZXBvcnQpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTk0LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaD0xNz1zdGF0aWMgaW5saW5lIHUxNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDoxODpueHB3aWZpX2dldF9oZV9uc3NfbWNzKF9fbGUxNiBtY3NfbWFwX3NldCwgaW50IG5zcykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC0xOS1cXHRyZXR1cm4gKChsZTE2X3RvX2NwdShtY3NfbWFwX3NldCkgXFx1MDAzZVxcdTAwM2UgKDIgKiAobnNzIC0gMSkpKSBcXHUwMDI2IDB4Myk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg9MjI9c3RhdGljIGlubGluZSB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjIzOm54cHdpZmlfc2V0X2hlX25zc19tY3MoX19sZTE2ICptY3NfbWFwX3NldCwgaW50IG5zcywgaW50IHZhbHVlKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTI0LVxcdHUxNiB0ZW1wO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTMwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDozMTpib29sIG54cHdpZmlfaXNfMTFheF90d3Rfc3VwcG9ydGVkKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjMyOlxcdFxcdFxcdFxcdCAgIHN0cnVjdCAgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTMzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDozNDp2b2lkIG54cHdpZmlfdXBkYXRlXzExYXhfY2FwKHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTM1LVxcdFxcdFxcdCAgICAgc3RydWN0IGh3X3NwZWNfZXh0ZW5zaW9uICpod19oZV9jYXApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC0zNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6Mzc6Ym9vbCBueHB3aWZpXzExYXhfYmFuZGNvbmZpZ19hbGxvd2VkKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjM4OlxcdFxcdFxcdFxcdCAgICAgc3RydWN0IG54cHdpZmlfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC0zOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NDA6aW50IG54cHdpZmlfY21kX2FwcGVuZF8xMWF4X3RsdihzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDo0MTpcXHRcXHRcXHRcXHRzdHJ1Y3Qgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNDItXFx0XFx0XFx0XFx0dTggKipidWZmZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC00My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NDQ6aW50IG54cHdpZmlfZmlsbF9oZV9jYXBfdGx2KHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjQ1OlxcdFxcdFxcdCAgICBzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKmhlX2NhcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNDYtXFx0XFx0XFx0ICAgIHUxNiBiYW5kcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjQ3OmludCBueHB3aWZpX2NtZF8xMWF4X2NmZyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC00OC1cXHRcXHRcXHQgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCwgdTE2IGNtZF9hY3Rpb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjQ5OlxcdFxcdFxcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2hlX2NmZyAqYXhfY2ZnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjUxOmludCBueHB3aWZpX3JldF8xMWF4X2NmZyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC01Mi1cXHRcXHRcXHQgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3AsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjUzOlxcdFxcdFxcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2hlX2NmZyAqYXhfY2ZnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjU1OmludCBueHB3aWZpX2NtZF8xMWF4X2NtZChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC01Ni1cXHRcXHRcXHQgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCwgdTE2IGNtZF9hY3Rpb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjU3OlxcdFxcdFxcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2NtZF9jZmcgKmF4X2NtZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTU4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDo1OTppbnQgbnhwd2lmaV9yZXRfMTFheF9jbWQoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNjAtXFx0XFx0XFx0IHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpyZXNwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDo2MTpcXHRcXHRcXHQgc3RydWN0IG54cHdpZmlfMTFheF9jbWRfY2ZnICpheF9jbWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC02Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NjM6aW50IG54cHdpZmlfY21kX3R3dF9jZmcoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNjQtXFx0XFx0XFx0c3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCwgdTE2IGNtZF9hY3Rpb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjY1OlxcdFxcdFxcdHN0cnVjdCBueHB3aWZpX3R3dF9jZmcgKnR3dF9jZmcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC02Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6Njc6aW50IG54cHdpZmlfcmV0X3R3dF9jZmcoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNjgtXFx0XFx0XFx0c3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3AsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjY5OlxcdFxcdFxcdHN0cnVjdCBueHB3aWZpX3R3dF9jZmcgKnR3dF9jZmcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC03MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NzE6dTggbnhwd2lmaV9pc19zdGFfMTFheF90d3RfcmVxX3N1cHBvcnRlZChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNzItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYy0xMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYzoxMzp2b2lkIG54cHdpZmlfaW5pdF8xMWhfcGFyYW1zKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmMtMTQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmMtMTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmM6MTk6aW50IG54cHdpZmlfaXNfMTFoX2FjdGl2ZShzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExaC5jLTIwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExaC5jPTI1PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmM6MjY6bnhwd2lmaV8xMWhfcHJvY2Vzc19pbmZyYV9qb2luKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsIHU4ICoqYnVmZmVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExaC5jOjI3OlxcdFxcdFxcdCAgICAgICBzdHJ1Y3Qgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYy0yOC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmM6Mjk6XFx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVhZGVyICppZV9oZWFkZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmM6MzA6XFx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfcHdyX2NhcGFiaWxpdHkgKmNhcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYzozMTpcXHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19sb2NhbF9wd3JfY29uc3RyYWludCAqY29uc3RyYWludDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYy0zMi1cXHRzdHJ1Y3QgaWVlZTgwMjExX3N1cHBvcnRlZF9iYW5kICpzYmFuZDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExaC5jLTM4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExaC5jOjM5OlxcdHJhZGlvX3R5cGUgPSBueHB3aWZpX2JhbmRfdG9fcmFkaW9fdHlwZSgodTgpYnNzX2Rlc2MtXFx1MDAzZWJzc19iYW5kKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYy00MC1cXHRzYmFuZCA9IHByaXYtXFx1MDAzZXdkZXYud2lwaHktXFx1MDAzZWJhbmRzW3JhZGlvX3R5cGVdO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExaC5jLTQxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExaC5jOjQyOlxcdGNhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19wd3JfY2FwYWJpbGl0eSAqKSpidWZmZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmMtNDMtXFx0Y2FwLVxcdTAwM2VoZWFkZXIudHlwZSA9IGNwdV90b19sZTE2KFdMQU5fRUlEX1BXUl9DQVBBQklMSVRZKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExaC5jLTQ4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExaC5jOjQ5OlxcdGNvbnN0cmFpbnQgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfbG9jYWxfcHdyX2NvbnN0cmFpbnQgKikqYnVmZmVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExaC5jLTUwLVxcdGNvbnN0cmFpbnQtXFx1MDAzZWhlYWRlci50eXBlID0gY3B1X3RvX2xlMTYoV0xBTl9FSURfUFdSX0NPTlNUUkFJTlQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmMtNTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmM6NTY6XFx0aWVfaGVhZGVyID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlYWRlciAqKSpidWZmZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmMtNTctXFx0aWVfaGVhZGVyLVxcdTAwM2V0eXBlID0gY3B1X3RvX2xlMTYoVExWX1RZUEVfUEFTU1RIUk9VR0gpO1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwNzo1Nzo1MS45MjI3MTUzMTRaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6ODk5MTU5MjUxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgbnhwd2lmaWAgRHJpdmVyIGZvciBGdXp6aW5nKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgYG54cHdpZmlgIGRyaXZlciBpcyBzcGVjaWZpY2FsbHkgdGllZCB0byBOWFAncyBJVzYxeCBoYXJkd2FyZSwgY29ubmVjdGVkIHZpYSBTRElPLiBUaGF0IGFsb25lIGlzIGEgcmVkIGZsYWcuIEkga25vdyB0aGF0IHRoaXMgcGFydGljdWxhciBoYXJkd2FyZSBpc24ndCBlbXVsYXRlZCBhdCBhbGwgaW4gc3RhbmRhcmQgdmlydHVhbGl6YXRpb24gdG9vbHMgbGlrZSBRRU1VIG9yIGluIGNsb3VkIGVudmlyb25tZW50cyBsaWtlIEdvb2dsZSBDb21wdXRlIEVuZ2luZS4gU28sIGFueSBjb2RlIHBhdGhzIHdpdGhpbiBgbnhwd2lmaWAgYXJlIGdvaW5nIHRvIGJlIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUgdXNpbmcgb3VyIHZpcnR1YWxpemVkIGZ1enppbmcgc2V0dXBzLlxuXG5MZXQncyBkb3VibGUtY2hlY2sgdGhlIGV4Y2x1c2lvbiBjcml0ZXJpYSBqdXN0IHRvIGJlIGNlcnRhaW4uIFdlJ3JlIGxvb2tpbmcgZm9yIGNvZGUgdGhhdCdzIGluYWNjZXNzaWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIGV2ZW4gd2l0aCBlbXVsYXRlZCBoYXJkd2FyZSwgb3IgY2FsbGJhY2tzIHRyaWdnZXJlZCBieSBQQ0kgaG90LXVucGx1ZyBvcGVyYXRpb25zLCBvciBjb2RlIHdpdGhpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBkcml2ZXJzIHRoYXQgbmVlZCBwaHlzaWNhbCBoYXJkd2FyZSBjYXJkcy5cblxuWWVwLCB0aGUgYG54cHdpZmlgIHNpdHVhdGlvbiBsaW5lcyB1cCBwZXJmZWN0bHkuIEl0J3MgYSB0ZXh0Ym9vayBleGFtcGxlIG9mIGEgZHJpdmVyIHRoYXTigJlzIGdvaW5nIHRvIGJlIHVzZWxlc3MgZm9yIHVzIHRvIHRhcmdldC5cblxuVGltZSB0byBwcmVwYXJlIHRoZSByZXN1bHRzLiBXZSBuZWVkIHRvIHNldCBgV29ydGhGdXp6aW5nYCB0byBgZmFsc2VgLiBObyBwb2ludCB3YXN0aW5nIHJlc291cmNlcy4gVGhlIGBFbmFibGVDb25maWdzYCBhbmQgYEZvY3VzU3ltYm9sc2Agd2lsbCBiZSBlbXB0eS4gVGhlIGBSZWFzb25pbmdgIG5lZWRzIHRvIGJlIGNsZWFyOiBcIlRoZSBjaGFuZ2VzIGFyZSBpbiB0aGUgYG54cHdpZmlgIGRyaXZlciAoZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY2ZnODAyMTEuYyksIHdoaWNoIGlzIGEgdmVuZG9yIHdpcmVsZXNzIGRyaXZlciBzdXBwb3J0aW5nIE5YUCBJVzYxeCBkZXZpY2VzIG92ZXIgU0RJTy4gSXQgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgU0RJTyBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyBzdWNoIGFzIFFFTVUgb3IgR0NFLlwiXG5cbkFuZCB3aXRoIHRoYXQgZG9uZSwgSSdtIGdvaW5nIHRvIHNldCB0aGVzZSByZXN1bHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTA1MSwiT3V0cHV0VG9rZW5zIjoxMjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozODUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDc6NTg6MDAuOTE0MzEwNDlaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjIwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBtb2RpZmljYXRpb25zIGFyZSBpbiB0aGUgTlhQIFdpRmkgZHJpdmVyIChkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jZmc4MDIxMS5jKSwgd2hpY2ggaXMgYW4gU0RJTy1iYXNlZCB3aXJlbGVzcyBuZXR3b3JrIGRyaXZlciAoQ09ORklHX05YUFdJRkkgLyBDT05GSUdfTlhQV0lGSV9TRElPKSByZXF1aXJpbmcgcGh5c2ljYWwgTlhQIElXNjF4IGhhcmR3YXJlLiBUaGUgZHJpdmVyIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQgb3IgcmVhY2hlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSB3aXRob3V0IGRlZGljYXRlZCBwaHlzaWNhbCBoYXJkd2FyZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIG1vZGlmaWNhdGlvbnMgYXJlIGluIHRoZSBOWFAgV2lGaSBkcml2ZXIgKGRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NmZzgwMjExLmMpLCB3aGljaCBpcyBhbiBTRElPLWJhc2VkIHdpcmVsZXNzIG5ldHdvcmsgZHJpdmVyIChDT05GSUdfTlhQV0lGSSAvIENPTkZJR19OWFBXSUZJX1NESU8pIHJlcXVpcmluZyBwaHlzaWNhbCBOWFAgSVc2MXggaGFyZHdhcmUuIFRoZSBkcml2ZXIgY2Fubm90IGJlIGluc3RhbnRpYXRlZCBvciByZWFjaGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFIHdpdGhvdXQgZGVkaWNhdGVkIHBoeXNpY2FsIGhhcmR3YXJlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDc6NTg6MDAuOTE0MzM1OTVaIiwiU2VxIjoyMywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowb7d78[1] Phase: Running StartedAt: 2026-08-31 07:58:12 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb7d78[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-31 07:58:12 +0000 UTC FinishedAt: 2026-08-31 07:58:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}