Name: series-workflowbjwsw Phase: Failed StartedAt: 2026-06-26 09:15:35 +0000 UTC FinishedAt: 2026-06-26 09:44:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbjwsw[0] Phase: Succeeded StartedAt: 2026-06-26 09:15:35 +0000 UTC FinishedAt: 2026-06-26 09:43:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbjwsw[0].run-triage Phase: Succeeded StartedAt: 2026-06-26 09:15:35 +0000 UTC FinishedAt: 2026-06-26 09:43:59 +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+CgkJCTx0ZD4yMDI2LzA2LzI2IDA5OjQxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyAoeGRwX2J1aWxkX3NrYl9mcm9tX3pjIGFuZCB4ZHBfY29weV9mcmFnc19mcm9tX3pjKSBhcmUgb25seSB1c2VkIGJ5IHBoeXNpY2FsIEludGVsIG5ldHdvcmsgZHJpdmVycyAoaWNlIGFuZCBpZHBmIHZpYSBsaWJldGgpLiBUaGVzZSBoYXJkd2FyZSBkZXZpY2VzIGFyZSBub3QgZW11bGF0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIG1ha2luZyB0aGUgY29kZSBwYXRocyBpbXBvc3NpYmxlIHRvIHJlYWNoIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwOTo0MTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDU2NzUzZTNiN2Q1NDFlNDYwZGEwY2E3NTA1NWQ4NWU5NmY3ZjFiNWNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1biAyNiAwOTo0MToyNCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvY29yZS94ZHAuYyBiL25ldC9jb3JlL3hkcC5jXG5pbmRleCA5ODkwYTMwNTg0YmE3Yi4uNTI1NDY3NDYzNzhhMGEgMTAwNjQ0XG4tLS0gYS9uZXQvY29yZS94ZHAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2NvcmUveGRwLmNcbkBAIC02OTgsOCAmIzQzOzY5OCw4IEBAIHN0YXRpYyBub2lubGluZSBib29sIHhkcF9jb3B5X2ZyYWdzX2Zyb21femMoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcbiBcdGZvciAodTMyIGkgPSAwOyBpIFx1MDAzYyBucl9mcmFnczsgaSYjNDM7JiM0MzspIHtcbiBcdFx0Y29uc3Qgc2tiX2ZyYWdfdCAqZnJhZyA9IFx1MDAyNnhpbmZvLVx1MDAzZWZyYWdzW2ldO1xuLVx0XHR1MzIgbGVuID0gc2tiX2ZyYWdfc2l6ZShmcmFnKTtcbi1cdFx0dTMyIG9mZnNldCwgdHJ1ZXNpemUgPSBsZW47XG4mIzQzO1x0XHR1MzIgb2Zmc2V0LCBsZW4gPSBza2JfZnJhZ19zaXplKGZyYWcpO1xuJiM0MztcdFx0dTMyIHRydWVzaXplID0gTEFSR0VTVF9BTElHTihsZW4pO1xuIFx0XHRzdHJ1Y3QgcGFnZSAqcGFnZTtcbiBcbiBcdFx0cGFnZSA9IHBhZ2VfcG9vbF9kZXZfYWxsb2MocHAsIFx1MDAyNm9mZnNldCwgXHUwMDI2dHJ1ZXNpemUpO1xuQEAgLTczOCw5ICYjNDM7NzM4LDEwIEBAIHN0YXRpYyBub2lubGluZSBib29sIHhkcF9jb3B5X2ZyYWdzX2Zyb21femMoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiAgKi9cbiBzdHJ1Y3Qgc2tfYnVmZiAqeGRwX2J1aWxkX3NrYl9mcm9tX3pjKHN0cnVjdCB4ZHBfYnVmZiAqeGRwKVxuIHtcbiYjNDM7XHR1MzIgaGVhZHJvb20gPSB4ZHAtXHUwMDNlZGF0YV9tZXRhIC0geGRwLVx1MDAzZWRhdGFfaGFyZF9zdGFydDtcbiBcdGNvbnN0IHN0cnVjdCB4ZHBfcnhxX2luZm8gKnJ4cSA9IHhkcC1cdTAwM2VyeHE7XG4gXHR1MzIgbGVuID0geGRwLVx1MDAzZWRhdGFfZW5kIC0geGRwLVx1MDAzZWRhdGFfbWV0YTtcbi1cdHUzMiB0cnVlc2l6ZSA9IHhkcC1cdTAwM2VmcmFtZV9zejtcbiYjNDM7XHR1MzIgdHJ1ZXNpemUgPSBTS0JfSEVBRF9BTElHTihoZWFkcm9vbSAmIzQzOyBsZW4pO1xuIFx0c3RydWN0IHNrX2J1ZmYgKnNrYiA9IE5VTEw7XG4gXHRzdHJ1Y3QgcGFnZV9wb29sICpwcDtcbiBcdGludCBtZXRhbGVuO1xuQEAgLTc2Miw3ICYjNDM7NzYzLDcgQEAgc3RydWN0IHNrX2J1ZmYgKnhkcF9idWlsZF9za2JfZnJvbV96YyhzdHJ1Y3QgeGRwX2J1ZmYgKnhkcClcbiBcdH1cbiBcbiBcdHNrYl9tYXJrX2Zvcl9yZWN5Y2xlKHNrYik7XG4tXHRza2JfcmVzZXJ2ZShza2IsIHhkcC1cdTAwM2VkYXRhX21ldGEgLSB4ZHAtXHUwMDNlZGF0YV9oYXJkX3N0YXJ0KTtcbiYjNDM7XHRza2JfcmVzZXJ2ZShza2IsIGhlYWRyb29tKTtcbiBcbiBcdG1lbWNweShfX3NrYl9wdXQoc2tiLCBsZW4pLCB4ZHAtXHUwMDNlZGF0YV9tZXRhLCBMQVJHRVNUX0FMSUdOKGxlbikpO1xuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDA5OjQxPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyAoeGRwX2J1aWxkX3NrYl9mcm9tX3pjIGFuZCB4ZHBfY29weV9mcmFnc19mcm9tX3pjKSBhcmUgb25seSB1c2VkIGJ5IHBoeXNpY2FsIEludGVsIG5ldHdvcmsgZHJpdmVycyAoaWNlIGFuZCBpZHBmIHZpYSBsaWJldGgpLiBUaGVzZSBoYXJkd2FyZSBkZXZpY2VzIGFyZSBub3QgZW11bGF0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIG1ha2luZyB0aGUgY29kZSBwYXRocyBpbXBvc3NpYmxlIHRvIHJlYWNoIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNTY3NTNlM2I3ZDU0MWU0NjBkYTBjYTc1MDU1ZDg1ZTk2ZjdmMWI1YwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgSnVuIDI2IDA5OjQxOjI0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L2NvcmUveGRwLmMgYi9uZXQvY29yZS94ZHAuYwppbmRleCA5ODkwYTMwNTg0YmE3Yi4uNTI1NDY3NDYzNzhhMGEgMTAwNjQ0Ci0tLSBhL25ldC9jb3JlL3hkcC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9jb3JlL3hkcC5jCkBAIC02OTgsOCAmIzQzOzY5OCw4IEBAIHN0YXRpYyBub2lubGluZSBib29sIHhkcF9jb3B5X2ZyYWdzX2Zyb21femMoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAogCWZvciAodTMyIGkgPSAwOyBpICZsdDsgbnJfZnJhZ3M7IGkmIzQzOyYjNDM7KSB7CiAJCWNvbnN0IHNrYl9mcmFnX3QgKmZyYWcgPSAmYW1wO3hpbmZvLSZndDtmcmFnc1tpXTsKLQkJdTMyIGxlbiA9IHNrYl9mcmFnX3NpemUoZnJhZyk7Ci0JCXUzMiBvZmZzZXQsIHRydWVzaXplID0gbGVuOwomIzQzOwkJdTMyIG9mZnNldCwgbGVuID0gc2tiX2ZyYWdfc2l6ZShmcmFnKTsKJiM0MzsJCXUzMiB0cnVlc2l6ZSA9IExBUkdFU1RfQUxJR04obGVuKTsKIAkJc3RydWN0IHBhZ2UgKnBhZ2U7CiAKIAkJcGFnZSA9IHBhZ2VfcG9vbF9kZXZfYWxsb2MocHAsICZhbXA7b2Zmc2V0LCAmYW1wO3RydWVzaXplKTsKQEAgLTczOCw5ICYjNDM7NzM4LDEwIEBAIHN0YXRpYyBub2lubGluZSBib29sIHhkcF9jb3B5X2ZyYWdzX2Zyb21femMoc3RydWN0IHNrX2J1ZmYgKnNrYiwKICAqLwogc3RydWN0IHNrX2J1ZmYgKnhkcF9idWlsZF9za2JfZnJvbV96YyhzdHJ1Y3QgeGRwX2J1ZmYgKnhkcCkKIHsKJiM0MzsJdTMyIGhlYWRyb29tID0geGRwLSZndDtkYXRhX21ldGEgLSB4ZHAtJmd0O2RhdGFfaGFyZF9zdGFydDsKIAljb25zdCBzdHJ1Y3QgeGRwX3J4cV9pbmZvICpyeHEgPSB4ZHAtJmd0O3J4cTsKIAl1MzIgbGVuID0geGRwLSZndDtkYXRhX2VuZCAtIHhkcC0mZ3Q7ZGF0YV9tZXRhOwotCXUzMiB0cnVlc2l6ZSA9IHhkcC0mZ3Q7ZnJhbWVfc3o7CiYjNDM7CXUzMiB0cnVlc2l6ZSA9IFNLQl9IRUFEX0FMSUdOKGhlYWRyb29tICYjNDM7IGxlbik7CiAJc3RydWN0IHNrX2J1ZmYgKnNrYiA9IE5VTEw7CiAJc3RydWN0IHBhZ2VfcG9vbCAqcHA7CiAJaW50IG1ldGFsZW47CkBAIC03NjIsNyAmIzQzOzc2Myw3IEBAIHN0cnVjdCBza19idWZmICp4ZHBfYnVpbGRfc2tiX2Zyb21femMoc3RydWN0IHhkcF9idWZmICp4ZHApCiAJfQogCiAJc2tiX21hcmtfZm9yX3JlY3ljbGUoc2tiKTsKLQlza2JfcmVzZXJ2ZShza2IsIHhkcC0mZ3Q7ZGF0YV9tZXRhIC0geGRwLSZndDtkYXRhX2hhcmRfc3RhcnQpOwomIzQzOwlza2JfcmVzZXJ2ZShza2IsIGhlYWRyb29tKTsKIAogCW1lbWNweShfX3NrYl9wdXQoc2tiLCBsZW4pLCB4ZHAtJmd0O2RhdGFfbWV0YSwgTEFSR0VTVF9BTElHTihsZW4pKTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwOTo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjQyCgkJCQkJCQlvdXRwdXQ6IDUwCgkJCQkJCQl0aG91Z2h0czogMTA3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgWERQIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGFmZmVjdGluZyBgbmV0L2NvcmUveGRwLmNgLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIHRoZXNlIHR3byBmdW5jdGlvbnM6IGB4ZHBfY29weV9mcmFnc19mcm9tX3pjYCBhbmQgYHhkcF9idWlsZF9za2JfZnJvbV96Y2AuIEkgbmVlZCB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBzY29wZSBvZiB0aGlzIGNoYW5nZS4gTXkgaW1tZWRpYXRlIGdvYWwgaXMgdG8gbWFwIG91dCB0aGUgY2FsbCBwYXRocyBhbmQgZ3Jhc3AgdGhlIHB1cnBvc2Ugb2YgdGhlc2Ugc3BlY2lmaWMgbW9kaWZpY2F0aW9ucy4gSSYjMzk7bGwgc3RhcnQgYnkgcmVmZXJlbmNpbmcgdGhlIGNvZGUmIzM5O3MgZG9jdW1lbnRhdGlvbiwgYW5kIEkmIzM5O2xsIGp1bXAgcmlnaHQgaW50byB1c2luZyBgZ3JlcHBlcmAgdG8gdHJhY2UgdGhlIGRlZmluaXRpb25zIGFuZCB1c2FnZXMgb2YgYm90aCBmdW5jdGlvbnMuIEkgbmVlZCB0byBzZWUgKmV4YWN0bHkqIGhvdyB0aGVzZSBhcmUgYmVpbmcgaW52b2tlZCBhbmQgdW5kZXIgd2hhdCBjaXJjdW1zdGFuY2VzLiBLbm93aW5nIHRoYXQgd2lsbCB0ZWxsIG1lIHRoZSBzaWduaWZpY2FuY2Ugb2YgdGhpcyBwYXRjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwOTo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4ZHBfY29weV9mcmFnc19mcm9tX3pjJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9jb3JlL3hkcC5jPTY3ND1FWFBPUlRfU1lNQk9MX0dQTCh4ZHBfYnVpbGRfc2tiX2Zyb21fYnVmZik7XG4tLVxubmV0L2NvcmUveGRwLmMtNjc2LS8qKlxubmV0L2NvcmUveGRwLmM6Njc3OiAqIHhkcF9jb3B5X2ZyYWdzX2Zyb21femMgLSBjb3B5IGZyYWdzIGZyb20gWFNrIGJ1ZmYgdG8gc2tiXG5uZXQvY29yZS94ZHAuYy02NzgtICogQHNrYjogc2tiIHRvIGNvcHkgZnJhZ3MgdG9cbi0tXG5uZXQvY29yZS94ZHAuYy02ODYtICovXG5uZXQvY29yZS94ZHAuYzo2ODc6c3RhdGljIG5vaW5saW5lIGJvb2wgeGRwX2NvcHlfZnJhZ3NfZnJvbV96YyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L2NvcmUveGRwLmMtNjg4LVx0XHRcdFx0XHQgICAgY29uc3Qgc3RydWN0IHhkcF9idWZmICp4ZHAsXG4tLVxubmV0L2NvcmUveGRwLmM9NzM5PXN0cnVjdCBza19idWZmICp4ZHBfYnVpbGRfc2tiX2Zyb21femMoc3RydWN0IHhkcF9idWZmICp4ZHApXG4tLVxubmV0L2NvcmUveGRwLmMtNzc4LVx0aWYgKHVubGlrZWx5KHhkcF9idWZmX2hhc19mcmFncyh4ZHApKSBcdTAwMjZcdTAwMjZcbm5ldC9jb3JlL3hkcC5jOjc3OTpcdCAgICB1bmxpa2VseSgheGRwX2NvcHlfZnJhZ3NfZnJvbV96Yyhza2IsIHhkcCwgcHApKSkge1xubmV0L2NvcmUveGRwLmMtNzgwLVx0XHRuYXBpX2NvbnN1bWVfc2tiKHNrYiwgdHJ1ZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDk6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eGRwX2J1aWxkX3NrYl9mcm9tX3pjJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM9NTY3PWludCBpY2VfY2xlYW5fcnhfaXJxX3pjKHN0cnVjdCBpY2VfcnhfcmluZyAqcnhfcmluZyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTY1NS1cdFx0LyogWERQX1BBU1MgcGF0aCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYzo2NTY6XHRcdHNrYiA9IHhkcF9idWlsZF9za2JfZnJvbV96YyhmaXJzdCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTY1Ny1cdFx0aWYgKCFza2IpIHtcbi0tXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg9NDQxPV9fbGliZXRoX3hza19ydW5fcGFzcyhzdHJ1Y3QgbGliZXRoX3hkcF9idWZmICp4ZHAsXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTQ3MC1cbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDo0NzE6XHRza2IgPSB4ZHBfYnVpbGRfc2tiX2Zyb21femMoXHUwMDI2eGRwLVx1MDAzZWJhc2UpO1xuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTQ3Mi1cdGlmICh1bmxpa2VseSghc2tiKSkge1xuLS1cbmluY2x1ZGUvbmV0L3hkcC5oPTM3Nz1zdHJ1Y3Qgc2tfYnVmZiAqeGRwX2J1aWxkX3NrYl9mcm9tX2J1ZmYoY29uc3Qgc3RydWN0IHhkcF9idWZmICp4ZHApO1xuaW5jbHVkZS9uZXQveGRwLmg6Mzc4OnN0cnVjdCBza19idWZmICp4ZHBfYnVpbGRfc2tiX2Zyb21femMoc3RydWN0IHhkcF9idWZmICp4ZHApO1xuaW5jbHVkZS9uZXQveGRwLmgtMzc5LXN0cnVjdCB4ZHBfZnJhbWUgKnhkcF9jb252ZXJ0X3pjX3RvX3hkcF9mcmFtZShzdHJ1Y3QgeGRwX2J1ZmYgKnhkcCk7XG4tLVxubmV0L2NvcmUveGRwLmM9Njg3PXN0YXRpYyBub2lubGluZSBib29sIHhkcF9jb3B5X2ZyYWdzX2Zyb21femMoc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvY29yZS94ZHAuYy03MjYtLyoqXG5uZXQvY29yZS94ZHAuYzo3Mjc6ICogeGRwX2J1aWxkX3NrYl9mcm9tX3pjIC0gY3JlYXRlIGFuIHNrYiBmcm9tIFhTayBcdTAwMjZ4ZHBfYnVmZlxubmV0L2NvcmUveGRwLmMtNzI4LSAqIEB4ZHA6IHNvdXJjZSBYU2sgYnVmZlxuLS1cbm5ldC9jb3JlL3hkcC5jLTczOC0gKi9cbm5ldC9jb3JlL3hkcC5jOjczOTpzdHJ1Y3Qgc2tfYnVmZiAqeGRwX2J1aWxkX3NrYl9mcm9tX3pjKHN0cnVjdCB4ZHBfYnVmZiAqeGRwKVxubmV0L2NvcmUveGRwLmMtNzQwLXtcbi0tXG5uZXQvY29yZS94ZHAuYy03OTItfVxubmV0L2NvcmUveGRwLmM6NzkzOkVYUE9SVF9TWU1CT0xfR1BMKHhkcF9idWlsZF9za2JfZnJvbV96Yyk7XG5uZXQvY29yZS94ZHAuYy03OTQtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDk6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzU3MwoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDg1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKlhEUCBhbmQgUmVsYXRlZCBDb2RlIFNuaXBwZXRzKioKCk9rYXksIHNvIEkmIzM5O20gdHJhY2tpbmcgZG93biB0aGUgdXNhZ2Ugb2YgYHhkcF9idWlsZF9za2JfZnJvbV96Y2AuIEkga25vdyBpdCYjMzk7cyBraWNraW5nIGFyb3VuZCBpbiB0aGUgSW50ZWwgTklDIGRyaXZlcnMsIHNwZWNpZmljYWxseSBpbiB0aGUgYGljZV94c2suY2AgZmlsZSB3aXRoaW4gdGhlIGBpY2VgIGRpcmVjdG9yeSwgYW5kIGl0JiMzOTtzIGFsc28gZGVjbGFyZWQgaW4gYHhzay5oYCB3aXRoaW4gdGhlIGBuZXQvbGliZXRoYCBpbmNsdWRlIHBhdGguIFRoYXTigJlzIGdvb2QsIGEgY2xlYXIgc3RhcnRpbmcgcG9pbnQuIEkmIzM5O20gYXNzdW1pbmcgdGhhdCBpdCBpcyBhbHNvIGNhbGxlZCB3aXRoaW4gdGhlIGBsaWJldGhgIG1vZHVsZSwgdGhvdWdoIGl0JiMzOTtzIHVuY2xlYXIgaWYgaXQmIzM5O3MgZXhwbGljaXRseSBpbXBvcnRlZC4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHRoZSB1c2FnZSBvZiB0aGUgbW9kdWxlIGBsaWJldGhgIHRvIHZlcmlmeSBpZiBteSBodW5jaCBpcyBjb3JyZWN0LiBJIHNob3VsZCBwcm9iYWJseSBjaGVjayB0aGF0IGBpZHBmX3R4cnguY2AgZmlsZSBpbiB0aGUgYGlkcGZgIGRpcmVjdG9yeSwgaXQmIzM5O3MgdmVyeSBwb3NzaWJsZSBgbGliZXRoYCBpcyBiZWluZyB1c2VkIHRoZXJlLiBJdCYjMzk7cyB0aW1lIHRvIGRpZyBhIGJpdCBkZWVwZXIgYW5kIGNvbmZpcm0gdGhhdCBjb25uZWN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDA5OjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fbGliZXRoX3hza19ydW5fcGFzcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgveHNrLmM9Njc9RVhQT1JUX1NZTUJPTF9HUEwobGliZXRoX3hza19idWZmX2FkZF9mcmFnKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgveHNrLmMtNzMtICpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC94c2suYzo3NDogKiBFeHRlcm5hbCBoZWxwZXIgdXNlZCBieSBfX2xpYmV0aF94c2tfcnVuX3Bhc3MoKSwgZG8gbm90IGNhbGwgZGlyZWN0bHkuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgveHNrLmMtNzUtICogQWRkcyBidWZmZXImIzM5O3MgZnJhZ3MgY291bnQgYW5kIHRvdGFsIGxlbiB0byB0aGUgb25zdGFjayBzdGF0cy5cbi0tXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg9MzkwPV9fbGliZXRoX3hza19ydW5fcHJvZyhzdHJ1Y3QgbGliZXRoX3hkcF9idWZmICp4ZHAsXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTQyMy0vKipcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDo0MjQ6ICogX19saWJldGhfeHNrX3J1bl9wYXNzIC0gaGVscGVyIHRvIHJ1biBYRFAgcHJvZ3JhbSBhbmQgaGFuZGxlIHRoZSByZXN1bHRcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC00MjUtICogQHhkcDogWFNrIGJ1ZmZlciB0byBwcm9jZXNzXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oPTQ0MD1zdGF0aWMgX19hbHdheXNfaW5saW5lIGJvb2xcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDo0NDE6X19saWJldGhfeHNrX3J1bl9wYXNzKHN0cnVjdCBsaWJldGhfeGRwX2J1ZmYgKnhkcCxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC00NDItXHRcdCAgICAgIHN0cnVjdCBsaWJldGhfeGRwX3R4X2J1bGsgKmJxLCBzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTUwMC0jZGVmaW5lIGxpYmV0aF94c2tfcnVuX3Bhc3MoeGRwLCBicSwgbmFwaSwgcnMsIGRlc2MsIHJ1biwgcG9wdWxhdGUpXHQgICAgIFxcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6NTAxOlx0X19saWJldGhfeHNrX3J1bl9wYXNzKHhkcCwgYnEsIG5hcGksIHJzLCBkZXNjLCBsaWJldGhfeGRwX3ByZXBfZGVzYywgXFxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC01MDItXHRcdFx0ICAgICAgcnVuLCBwb3B1bGF0ZSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwOTo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDEwCgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKlRyYWNpbmcgdGhlIFVzYWdlIG9mIGBsaWJldGhfeHNrX3J1bl9wYXNzYCoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcm9sZSBvZiBgbGliZXRoX3hza19ydW5fcGFzc2AuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgZmlndXJpbmcgb3V0IHdoZXJlIGl0JiMzOTtzIGFjdHVhbGx5ICp1c2VkKiB3aXRoaW4gdGhlIGxhcmdlciBjb2RlIGJhc2UuIEkgbmVlZCB0byB0cmFjZSBpdHMgcmVmZXJlbmNlcyB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IGluIHdoaWNoIGl0IG9wZXJhdGVzLiBUaGlzIGtpbmQgb2YgaW52ZXN0aWdhdGlvbiBpcyBmdW5kYW1lbnRhbCB0byBjb21wcmVoZW5kaW5nIHRoZSBjb250cm9sIGZsb3cgYW5kIGRhdGEgZGVwZW5kZW5jaWVzLiBBIHF1aWNrIHNlYXJjaCBmb3IgaXRzIHVzZXMgd2lsbCBnaXZlIG1lIHRoYXQgaW5zaWdodC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwOTo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtsaWJldGhfeHNrX3J1bl9wYXNzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC94c2suYz02Nz1FWFBPUlRfU1lNQk9MX0dQTChsaWJldGhfeHNrX2J1ZmZfYWRkX2ZyYWcpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC94c2suYy03My0gKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3hzay5jOjc0OiAqIEV4dGVybmFsIGhlbHBlciB1c2VkIGJ5IF9fbGliZXRoX3hza19ydW5fcGFzcygpLCBkbyBub3QgY2FsbCBkaXJlY3RseS5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC94c2suYy03NS0gKiBBZGRzIGJ1ZmZlciYjMzk7cyBmcmFncyBjb3VudCBhbmQgdG90YWwgbGVuIHRvIHRoZSBvbnN0YWNrIHN0YXRzLlxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaD0zOTA9X19saWJldGhfeHNrX3J1bl9wcm9nKHN0cnVjdCBsaWJldGhfeGRwX2J1ZmYgKnhkcCxcbi0tXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtNDIzLS8qKlxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjQyNDogKiBfX2xpYmV0aF94c2tfcnVuX3Bhc3MgLSBoZWxwZXIgdG8gcnVuIFhEUCBwcm9ncmFtIGFuZCBoYW5kbGUgdGhlIHJlc3VsdFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTQyNS0gKiBAeGRwOiBYU2sgYnVmZmVyIHRvIHByb2Nlc3Ncbi0tXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg9NDQwPXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgYm9vbFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjQ0MTpfX2xpYmV0aF94c2tfcnVuX3Bhc3Moc3RydWN0IGxpYmV0aF94ZHBfYnVmZiAqeGRwLFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTQ0Mi1cdFx0ICAgICAgc3RydWN0IGxpYmV0aF94ZHBfdHhfYnVsayAqYnEsIHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSxcbi0tXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtNDg3LS8qKlxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjQ4ODogKiBsaWJldGhfeHNrX3J1bl9wYXNzIC0gaGVscGVyIHRvIHJ1biBYRFAgcHJvZ3JhbSBhbmQgaGFuZGxlIHRoZSByZXN1bHRcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC00ODktICogQHhkcDogWFNrIGJ1ZmZlciB0byBwcm9jZXNzXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTQ5OS0gKi9cbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDo1MDA6I2RlZmluZSBsaWJldGhfeHNrX3J1bl9wYXNzKHhkcCwgYnEsIG5hcGksIHJzLCBkZXNjLCBydW4sIHBvcHVsYXRlKVx0ICAgICBcXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjUwMTpcdF9fbGliZXRoX3hza19ydW5fcGFzcyh4ZHAsIGJxLCBuYXBpLCBycywgZGVzYywgbGliZXRoX3hkcF9wcmVwX2Rlc2MsIFxcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtNTAyLVx0XHRcdCAgICAgIHJ1biwgcG9wdWxhdGUpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDA5OjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxODcKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiAzNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZS4gTXkgZmlyc3QgdGhvdWdodCBpczogKipIYW5nIG9uIGEgc2Vjb25kLCBhbSBJIHJlYWRpbmcgdGhpcyByaWdodD8gSXMgYGxpYmV0aF94c2tfcnVuX3Bhc3NgIGFjdHVhbGx5IHVudXNlZD8qKiBUaGF0JiMzOTtzLi4uIHN1cnByaXNpbmcuIFRoaXMgZnVuY3Rpb24gc2VlbXMgY2VudHJhbCB0byB0aGUgY29yZSBmdW5jdGlvbmFsaXR5LCBkb2VzbiYjMzk7dCBpdD8gSSBuZWVkIHRvIHZlcmlmeSB0aGlzIGNsYWltLiBJJiMzOTtsbCBkb3VibGUtY2hlY2sgaXRzIGRlZmluaXRpb24sIHJlZmVyZW5jZXMsIGFuZCBjYWxsaW5nIGxvY2F0aW9ucy4gTGV0IG1lIGdvIGJhY2sgdG8gd2hlcmUgSSBzYXcgdGhlIGluaXRpYWwgcmVmZXJlbmNlIHRvIHRoaXMgZnVuY3Rpb24uIEkgbmVlZCB0byB0cmFjZSB0aHJvdWdoIHRoZSBjb2RlIGFnYWluIGFuZCBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgc29tZXRoaW5nLiBTb21ldGltZXMgdGhlc2UgdGhpbmdzIGFyZSB0cmlja3kgdG8gc3BvdCBpZiB0aGUgY2FsbCBpcyBpbmRpcmVjdCBvciBjb25kaXRpb25hbC4gSSYjMzk7bSBnb2luZyB0byByZXZpc2l0IGBsaWJldGhfeHNrX3J1bl9wYXNzYCBhbmQgbWV0aWN1bG91c2x5IHJlLWV4YW1pbmUgaXRzIHJvbGUgaW4gdGhlIHN5c3RlbS4gSSBoYXZlIHRvIGJlIGFic29sdXRlbHkgc3VyZSBiZWNhdXNlIGlmIGl0JiMzOTtzIHRydWx5IHVudXNlZCwgdGhhdCBvcGVucyBhIHdob2xlIGNhbiBvZiB3b3JtcyBpbiB0ZXJtcyBvZiBjb2RlIGNsZWFudXAgYW5kIHBvdGVudGlhbCBpbXBsaWNhdGlvbnMgZm9yIHN5c3RlbSBiZWhhdmlvci4gT2theSwgYmFjayB0byB0aGUgY29kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDk6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bGliZXRoX3hza19ydW5fcGFzcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgveHNrLmM9Njc9RVhQT1JUX1NZTUJPTF9HUEwobGliZXRoX3hza19idWZmX2FkZF9mcmFnKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgveHNrLmMtNzMtICpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC94c2suYzo3NDogKiBFeHRlcm5hbCBoZWxwZXIgdXNlZCBieSBfX2xpYmV0aF94c2tfcnVuX3Bhc3MoKSwgZG8gbm90IGNhbGwgZGlyZWN0bHkuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgveHNrLmMtNzUtICogQWRkcyBidWZmZXImIzM5O3MgZnJhZ3MgY291bnQgYW5kIHRvdGFsIGxlbiB0byB0aGUgb25zdGFjayBzdGF0cy5cbi0tXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg9MzkwPV9fbGliZXRoX3hza19ydW5fcHJvZyhzdHJ1Y3QgbGliZXRoX3hkcF9idWZmICp4ZHAsXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTQyMy0vKipcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDo0MjQ6ICogX19saWJldGhfeHNrX3J1bl9wYXNzIC0gaGVscGVyIHRvIHJ1biBYRFAgcHJvZ3JhbSBhbmQgaGFuZGxlIHRoZSByZXN1bHRcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC00MjUtICogQHhkcDogWFNrIGJ1ZmZlciB0byBwcm9jZXNzXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oPTQ0MD1zdGF0aWMgX19hbHdheXNfaW5saW5lIGJvb2xcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDo0NDE6X19saWJldGhfeHNrX3J1bl9wYXNzKHN0cnVjdCBsaWJldGhfeGRwX2J1ZmYgKnhkcCxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC00NDItXHRcdCAgICAgIHN0cnVjdCBsaWJldGhfeGRwX3R4X2J1bGsgKmJxLCBzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTQ4Ny0vKipcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDo0ODg6ICogbGliZXRoX3hza19ydW5fcGFzcyAtIGhlbHBlciB0byBydW4gWERQIHByb2dyYW0gYW5kIGhhbmRsZSB0aGUgcmVzdWx0XG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtNDg5LSAqIEB4ZHA6IFhTayBidWZmZXIgdG8gcHJvY2Vzc1xuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC00OTktICovXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6NTAwOiNkZWZpbmUgbGliZXRoX3hza19ydW5fcGFzcyh4ZHAsIGJxLCBuYXBpLCBycywgZGVzYywgcnVuLCBwb3B1bGF0ZSlcdCAgICAgXFxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDo1MDE6XHRfX2xpYmV0aF94c2tfcnVuX3Bhc3MoeGRwLCBicSwgbmFwaSwgcnMsIGRlc2MsIGxpYmV0aF94ZHBfcHJlcF9kZXNjLCBcXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTUwMi1cdFx0XHQgICAgICBydW4sIHBvcHVsYXRlKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwOTo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MDYxCgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogNTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkZvY3VzaW5nIG9uIFplcm8tQ29weSBYRFAgSW1wbGVtZW50YXRpb25zKioKClJpZ2h0LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoYXQgZnVuY3Rpb24gYWdhaW4g4oCTIGB4ZHBfYnVpbGRfc2tiX2Zyb21femNgLiBJIHZhZ3VlbHkgcmVtZW1iZXIgZW5jb3VudGVyaW5nIHNvbWV0aGluZyBzaW1pbGFyIHJlY2VudGx5Li4uIHdoZXJlIHdhcyBpdD8gSG1tLCBsaWtlbHkgaXQmIzM5O3MgbmVzdGxlZCBzb21ld2hlcmUgZGVlcCB3aXRoaW4gdGhlIG5ldHdvcmsgZHJpdmVyIHN0YWNrLiBJJiMzOTttIGdvaW5nIHRvIGd1ZXNzIHNvbWV0aGluZyBsaWtlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jYCBpcyBpbnZvbHZlZCBoZXJlLCBtYXliZSBldmVuIG1vcmUgdGhhbiBvbmUgZmlsZS4gVGhlc2UgemVyby1jb3B5IFhEUCBpbXBsZW1lbnRhdGlvbnMgYXJlIHR5cGljYWxseSBoYW5kbGVkIHByZXR0eSBsb3ctbGV2ZWwuIExldCYjMzk7cyBmaXJlIHVwIGEgbmV3IHNlYXJjaCwganVzdCB0byBiZSBjZXJ0YWluLiBJJiMzOTtsbCBzZWFyY2ggZm9yIHRoZSBmdW5jdGlvbiBhZ2FpbiBhbmQgc2VlIGlmIEkgY2FuIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBzcGVjaWZpY3MuIFRoYXQgc2hvdWxkIG5hcnJvdyBkb3duIHdoaWNoIGNvZGUgSSBuZWVkIHRvIGludmVzdGlnYXRlIGluIG1vcmUgZGV0YWlsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwOTo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4ZHBfYnVpbGRfc2tiX2Zyb21femMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYz01Njc9aW50IGljZV9jbGVhbl9yeF9pcnFfemMoc3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtNjU1LVx0XHQvKiBYRFBfUEFTUyBwYXRoICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jOjY1NjpcdFx0c2tiID0geGRwX2J1aWxkX3NrYl9mcm9tX3pjKGZpcnN0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtNjU3LVx0XHRpZiAoIXNrYikge1xuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaD00NDE9X19saWJldGhfeHNrX3J1bl9wYXNzKHN0cnVjdCBsaWJldGhfeGRwX2J1ZmYgKnhkcCxcbi0tXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtNDcwLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjQ3MTpcdHNrYiA9IHhkcF9idWlsZF9za2JfZnJvbV96YyhcdTAwMjZ4ZHAtXHUwMDNlYmFzZSk7XG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtNDcyLVx0aWYgKHVubGlrZWx5KCFza2IpKSB7XG4tLVxuaW5jbHVkZS9uZXQveGRwLmg9Mzc3PXN0cnVjdCBza19idWZmICp4ZHBfYnVpbGRfc2tiX2Zyb21fYnVmZihjb25zdCBzdHJ1Y3QgeGRwX2J1ZmYgKnhkcCk7XG5pbmNsdWRlL25ldC94ZHAuaDozNzg6c3RydWN0IHNrX2J1ZmYgKnhkcF9idWlsZF9za2JfZnJvbV96YyhzdHJ1Y3QgeGRwX2J1ZmYgKnhkcCk7XG5pbmNsdWRlL25ldC94ZHAuaC0zNzktc3RydWN0IHhkcF9mcmFtZSAqeGRwX2NvbnZlcnRfemNfdG9feGRwX2ZyYW1lKHN0cnVjdCB4ZHBfYnVmZiAqeGRwKTtcbi0tXG5uZXQvY29yZS94ZHAuYz02ODc9c3RhdGljIG5vaW5saW5lIGJvb2wgeGRwX2NvcHlfZnJhZ3NfZnJvbV96YyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9jb3JlL3hkcC5jLTcyNi0vKipcbm5ldC9jb3JlL3hkcC5jOjcyNzogKiB4ZHBfYnVpbGRfc2tiX2Zyb21femMgLSBjcmVhdGUgYW4gc2tiIGZyb20gWFNrIFx1MDAyNnhkcF9idWZmXG5uZXQvY29yZS94ZHAuYy03MjgtICogQHhkcDogc291cmNlIFhTayBidWZmXG4tLVxubmV0L2NvcmUveGRwLmMtNzM4LSAqL1xubmV0L2NvcmUveGRwLmM6NzM5OnN0cnVjdCBza19idWZmICp4ZHBfYnVpbGRfc2tiX2Zyb21femMoc3RydWN0IHhkcF9idWZmICp4ZHApXG5uZXQvY29yZS94ZHAuYy03NDAte1xuLS1cbm5ldC9jb3JlL3hkcC5jLTc5Mi19XG5uZXQvY29yZS94ZHAuYzo3OTM6RVhQT1JUX1NZTUJPTF9HUEwoeGRwX2J1aWxkX3NrYl9mcm9tX3pjKTtcbm5ldC9jb3JlL3hkcC5jLTc5NC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDk6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjk5NgoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDkyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHVuZGVyc3RhbmRpbmcsIGNvbnNpZGVyaW5nIEkmIzM5O20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhpcyBjb2RlIHNuaXBwZXQgaXMgcmVsZXZhbnQ6CgoqKlBpbnBvaW50aW5nIHRoZSBDb2RlJiMzOTtzIFVzYWdlKioKClJpZ2h0LCBzbyB0aGlzIHBpZWNlIG9mIGNvZGUgaXMgZGVmaW5pdGVseSB0aWVkIHRvIHNvbWUgemVyby1jb3B5IG1hZ2ljIHdpdGhpbiB0aGUgQUZfWERQIGNvbnRleHQuIFNwZWNpZmljYWxseSwgSSBzZWUgaXQmIzM5O3MgdXNlZCBpbiB0aGUgYGljZV9jbGVhbl9yeF9pcnFfemNgIGZ1bmN0aW9uLCB3aGljaCwgYXMgSSByZWNhbGwsIGlzIHRoZSB6ZXJvLWNvcHkgcmVjZWl2ZSBwYXRoIHdpdGhpbiB0aGUgYGljZWAgZHJpdmVyIOKAkyB0aGF0JiMzOTtzIHRoZSBJbnRlbCBFdGhlcm5ldCBjb25uZWN0aW9uIChJQ0UpIGRyaXZlciwgcmlnaHQ/IEdvdCBpdC4KCkZ1cnRoZXJtb3JlLCBJIHNlZSBpdCYjMzk7cyBhbHNvIHJlZmVyZW5jZWQgaW4gYF9fbGliZXRoX3hza19ydW5fcGFzc2AsIHdoaWNoIGlzIGRlZmluZWQgd2l0aGluIGBpbmNsdWRlL25ldC9saWJldGgveHNrLmhgLiBUaGlzIHN1Z2dlc3RzIHRoYXQgaXQmIzM5O3MgcGFydCBvZiBhIGJyb2FkZXIsIG1vcmUgZ2VuZXJpYyBsaWJyYXJ5IGZvciBYRFAgc29ja2V0cywgYnV0IEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIHdoZXJlIGBfX2xpYmV0aF94c2tfcnVuX3Bhc3NgIGl0c2VsZiBpcyB1c2VkLiBJdCB3b3VsZCBiZSBoZWxwZnVsIHRvIGNvbmZpcm0gd2hpY2ggZHJpdmVycyBhcmUgbGV2ZXJhZ2luZyB0aGlzIGNvbW1vbiBmdW5jdGlvbi4gVGhhdCB3aWxsIHRlbGwgbWUgd2hlcmUgZWxzZSwgYmV5b25kIHRoZSBvYnZpb3VzIEludGVsIGRyaXZlcnMsIHRoaXMgemVyby1jb3B5IGZ1bmN0aW9uYWxpdHkgaXMgdXRpbGl6ZWQuIEkgbmVlZCB0byB0cmFjZSB0aGlzIGNhbGwgY2hhaW4gdG8gZ2V0IGEgZnVsbCBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwOTo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX2xpYmV0aF94c2tfcnVuX3Bhc3MmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3hzay5jPTY3PUVYUE9SVF9TWU1CT0xfR1BMKGxpYmV0aF94c2tfYnVmZl9hZGRfZnJhZyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3hzay5jLTczLSAqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgveHNrLmM6NzQ6ICogRXh0ZXJuYWwgaGVscGVyIHVzZWQgYnkgX19saWJldGhfeHNrX3J1bl9wYXNzKCksIGRvIG5vdCBjYWxsIGRpcmVjdGx5LlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3hzay5jLTc1LSAqIEFkZHMgYnVmZmVyJiMzOTtzIGZyYWdzIGNvdW50IGFuZCB0b3RhbCBsZW4gdG8gdGhlIG9uc3RhY2sgc3RhdHMuXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oPTM5MD1fX2xpYmV0aF94c2tfcnVuX3Byb2coc3RydWN0IGxpYmV0aF94ZHBfYnVmZiAqeGRwLFxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC00MjMtLyoqXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6NDI0OiAqIF9fbGliZXRoX3hza19ydW5fcGFzcyAtIGhlbHBlciB0byBydW4gWERQIHByb2dyYW0gYW5kIGhhbmRsZSB0aGUgcmVzdWx0XG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtNDI1LSAqIEB4ZHA6IFhTayBidWZmZXIgdG8gcHJvY2Vzc1xuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaD00NDA9c3RhdGljIF9fYWx3YXlzX2lubGluZSBib29sXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6NDQxOl9fbGliZXRoX3hza19ydW5fcGFzcyhzdHJ1Y3QgbGliZXRoX3hkcF9idWZmICp4ZHAsXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtNDQyLVx0XHQgICAgICBzdHJ1Y3QgbGliZXRoX3hkcF90eF9idWxrICpicSwgc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLFxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC01MDAtI2RlZmluZSBsaWJldGhfeHNrX3J1bl9wYXNzKHhkcCwgYnEsIG5hcGksIHJzLCBkZXNjLCBydW4sIHBvcHVsYXRlKVx0ICAgICBcXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjUwMTpcdF9fbGliZXRoX3hza19ydW5fcGFzcyh4ZHAsIGJxLCBuYXBpLCBycywgZGVzYywgbGliZXRoX3hkcF9wcmVwX2Rlc2MsIFxcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtNTAyLVx0XHRcdCAgICAgIHJ1biwgcG9wdWxhdGUpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDA5OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc4NzQKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhpcyBjb2RlOgoKKipDaGVja2luZyBmb3IgYGxpYmV0aF94c2tfcnVuX3Bhc3NgIFVzYWdlKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIGBsaWJldGhfeHNrX3J1bl9wYXNzYCBpcyBhY3R1YWxseSBiZWluZyB1dGlsaXplZCBhbnl3aGVyZSBpbiB0aGUgY29kZWJhc2UuIFRoaXMgaXMgYSBwcmV0dHkgc3RhbmRhcmQgZGVidWdnaW5nIHN0ZXAuIEJlZm9yZSBJIGRpdmUgaW50byB1bmRlcnN0YW5kaW5nIHdoYXQgaXQgKmRvZXMqLCBJIG5lZWQgdG8gZXN0YWJsaXNoIGl0cyAqcmVsZXZhbmNlKi4gSSYjMzk7bGwgbmVlZCB0byBnbyB0aHJvdWdoIHRoZSBjb2RlIGFuZCBxdWlja2x5IGRldGVybWluZSBpZiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCwgYW5kIGZyb20gd2hlcmUuIFRoaXMgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgcm9sZSBpbiB0aGUgb3ZlcmFsbCBleGVjdXRpb24gZmxvdy4gSSYjMzk7bGwgcHJvYmFibHkgc3RhcnQgd2l0aCBhIGdyZXAgb3IgYSBzaW1pbGFyIHNlYXJjaCB0b29sLCBsb29raW5nIGZvciBhbnkgaW5zdGFuY2VzIG9mIHRoYXQgZnVuY3Rpb24gbmFtZS4gVGhlbiwgSSBjYW4gc3RhcnQgdG8gcmVhc29uIHRocm91Z2ggdGhlIGNhbGwgc3RhY2sgb2YgdGhhdCBmdW5jdGlvbiBhbmQgaXRzIHJlbGF0aW9ucyB3aXRoIG90aGVyIGNvbXBvbmVudHMsIGFmdGVyIGlkZW50aWZ5aW5nIHRoZW0uIFVuZGVyc3RhbmRpbmcgaXRzIHVzYWdlIHdpbGwgZGljdGF0ZSBob3cgbXVjaCBmdXJ0aGVyIGVmZm9ydCBJIG5lZWQgdG8gaW52ZXN0IGluIHVuZGVyc3RhbmRpbmcgaXRzIHB1cnBvc2UgYW5kIGltcGxlbWVudGF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwOTo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtsaWJldGhfeHNrX3J1bl9wYXNzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC94c2suYz02Nz1FWFBPUlRfU1lNQk9MX0dQTChsaWJldGhfeHNrX2J1ZmZfYWRkX2ZyYWcpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC94c2suYy03My0gKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3hzay5jOjc0OiAqIEV4dGVybmFsIGhlbHBlciB1c2VkIGJ5IF9fbGliZXRoX3hza19ydW5fcGFzcygpLCBkbyBub3QgY2FsbCBkaXJlY3RseS5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC94c2suYy03NS0gKiBBZGRzIGJ1ZmZlciYjMzk7cyBmcmFncyBjb3VudCBhbmQgdG90YWwgbGVuIHRvIHRoZSBvbnN0YWNrIHN0YXRzLlxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaD0zOTA9X19saWJldGhfeHNrX3J1bl9wcm9nKHN0cnVjdCBsaWJldGhfeGRwX2J1ZmYgKnhkcCxcbi0tXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtNDIzLS8qKlxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjQyNDogKiBfX2xpYmV0aF94c2tfcnVuX3Bhc3MgLSBoZWxwZXIgdG8gcnVuIFhEUCBwcm9ncmFtIGFuZCBoYW5kbGUgdGhlIHJlc3VsdFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTQyNS0gKiBAeGRwOiBYU2sgYnVmZmVyIHRvIHByb2Nlc3Ncbi0tXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg9NDQwPXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgYm9vbFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjQ0MTpfX2xpYmV0aF94c2tfcnVuX3Bhc3Moc3RydWN0IGxpYmV0aF94ZHBfYnVmZiAqeGRwLFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTQ0Mi1cdFx0ICAgICAgc3RydWN0IGxpYmV0aF94ZHBfdHhfYnVsayAqYnEsIHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSxcbi0tXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtNDg3LS8qKlxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjQ4ODogKiBsaWJldGhfeHNrX3J1bl9wYXNzIC0gaGVscGVyIHRvIHJ1biBYRFAgcHJvZ3JhbSBhbmQgaGFuZGxlIHRoZSByZXN1bHRcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC00ODktICogQHhkcDogWFNrIGJ1ZmZlciB0byBwcm9jZXNzXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTQ5OS0gKi9cbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDo1MDA6I2RlZmluZSBsaWJldGhfeHNrX3J1bl9wYXNzKHhkcCwgYnEsIG5hcGksIHJzLCBkZXNjLCBydW4sIHBvcHVsYXRlKVx0ICAgICBcXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjUwMTpcdF9fbGliZXRoX3hza19ydW5fcGFzcyh4ZHAsIGJxLCBuYXBpLCBycywgZGVzYywgbGliZXRoX3hkcF9wcmVwX2Rlc2MsIFxcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtNTAyLVx0XHRcdCAgICAgIHJ1biwgcG9wdWxhdGUpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDA5OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg3MjUKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiA4OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIHRoZSBgeGRwX2J1aWxkX3NrYl9mcm9tX3pjYCBGdW5jdGlvbioqCgpPa2F5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgYHhkcF9idWlsZF9za2JfZnJvbV96Y2AgaXMgYmVpbmcgdXNlZC4gRmlyc3QsIEkgcmVtZW1iZXIgYWxyZWFkeSBzZWFyY2hpbmcgZm9yIGBsaWJldGhfeHNrX3J1bl9wYXNzYCwgc28gbGV0JiMzOTtzIHNlZSB3aGVyZSB0aGF0IHRha2VzIHVzLiBOb3csIGlzIHRoZXJlIGFueSBvdGhlciBkcml2ZXIgbWFraW5nIHVzZSBvZiB0aGUgYHhkcF9idWlsZF9za2JfZnJvbV96Y2AgZnVuY3Rpb24gYXNpZGUgZnJvbSB0aGUgb25lcyBJJiMzOTt2ZSBwcmV2aW91c2x5IG5vdGVkPyBCYXNlZCBvbiBteSBwcmlvciBzZWFyY2hlcywgaXQgYXBwZWFycyB0aGUgb25seSB1c2VycyBhcmUgYGljZWAgYW5kIGBsaWJldGhgLiBBaCwgcmlnaHQsIGBsaWJldGhgIGlzIHRoZSBsaWJyYXJ5IGNvbXBvbmVudCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byBJbnRlbCBFdGhlcm5ldCBkcml2ZXJzLiBOb3cgSSBuZWVkIHRvIGJyb2FkZW4gdGhlIHNjb3BlOyBsZXQmIzM5O3Mgc2VhcmNoICphbGwqIGZpbGVzIGZvciBgeGRwX2J1aWxkX3NrYl9mcm9tX3pjYCB0byBtYWtlIHN1cmUgbm90aGluZyBoYXMgZXNjYXBlZCBteSBhdHRlbnRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDA5OjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hkcF9idWlsZF9za2JfZnJvbV96YyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jPTU2Nz1pbnQgaWNlX2NsZWFuX3J4X2lycV96YyhzdHJ1Y3QgaWNlX3J4X3JpbmcgKnJ4X3JpbmcsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy02NTUtXHRcdC8qIFhEUF9QQVNTIHBhdGggKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM6NjU2Olx0XHRza2IgPSB4ZHBfYnVpbGRfc2tiX2Zyb21femMoZmlyc3QpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy02NTctXHRcdGlmICghc2tiKSB7XG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oPTQ0MT1fX2xpYmV0aF94c2tfcnVuX3Bhc3Moc3RydWN0IGxpYmV0aF94ZHBfYnVmZiAqeGRwLFxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC00NzAtXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6NDcxOlx0c2tiID0geGRwX2J1aWxkX3NrYl9mcm9tX3pjKFx1MDAyNnhkcC1cdTAwM2ViYXNlKTtcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC00NzItXHRpZiAodW5saWtlbHkoIXNrYikpIHtcbi0tXG5pbmNsdWRlL25ldC94ZHAuaD0zNzc9c3RydWN0IHNrX2J1ZmYgKnhkcF9idWlsZF9za2JfZnJvbV9idWZmKGNvbnN0IHN0cnVjdCB4ZHBfYnVmZiAqeGRwKTtcbmluY2x1ZGUvbmV0L3hkcC5oOjM3ODpzdHJ1Y3Qgc2tfYnVmZiAqeGRwX2J1aWxkX3NrYl9mcm9tX3pjKHN0cnVjdCB4ZHBfYnVmZiAqeGRwKTtcbmluY2x1ZGUvbmV0L3hkcC5oLTM3OS1zdHJ1Y3QgeGRwX2ZyYW1lICp4ZHBfY29udmVydF96Y190b194ZHBfZnJhbWUoc3RydWN0IHhkcF9idWZmICp4ZHApO1xuLS1cbm5ldC9jb3JlL3hkcC5jPTY4Nz1zdGF0aWMgbm9pbmxpbmUgYm9vbCB4ZHBfY29weV9mcmFnc19mcm9tX3pjKHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L2NvcmUveGRwLmMtNzI2LS8qKlxubmV0L2NvcmUveGRwLmM6NzI3OiAqIHhkcF9idWlsZF9za2JfZnJvbV96YyAtIGNyZWF0ZSBhbiBza2IgZnJvbSBYU2sgXHUwMDI2eGRwX2J1ZmZcbm5ldC9jb3JlL3hkcC5jLTcyOC0gKiBAeGRwOiBzb3VyY2UgWFNrIGJ1ZmZcbi0tXG5uZXQvY29yZS94ZHAuYy03MzgtICovXG5uZXQvY29yZS94ZHAuYzo3Mzk6c3RydWN0IHNrX2J1ZmYgKnhkcF9idWlsZF9za2JfZnJvbV96YyhzdHJ1Y3QgeGRwX2J1ZmYgKnhkcClcbm5ldC9jb3JlL3hkcC5jLTc0MC17XG4tLVxubmV0L2NvcmUveGRwLmMtNzkyLX1cbm5ldC9jb3JlL3hkcC5jOjc5MzpFWFBPUlRfU1lNQk9MX0dQTCh4ZHBfYnVpbGRfc2tiX2Zyb21femMpO1xubmV0L2NvcmUveGRwLmMtNzk0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwOTo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NjkxCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMjE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVGFyZ2V0IERyaXZlciBhbmQgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgc28gdGhlIGBpY2VgIGRyaXZlciBpcyB0aGUgb25seSBvbmUgSSBzZWUgdXNpbmcgdGhpcywgYWxvbmcgd2l0aCBgbGliZXRoYCwgd2hpY2ggbWlnaHQgYWxzbyBiZSBsaW5rZWQgdG8gYGlkcGZgIG9yIGBpYXZmYC4gQnV0IGBpY2VgLi4uIHRoYXQmIzM5O3MgYSAqcGh5c2ljYWwqIG5ldHdvcmsgY2FyZCBkcml2ZXIsIHJpZ2h0PyBIbW0sIGNhbiB3ZSBldmVuIGZ1enogc29tZXRoaW5nIGxpa2UgdGhhdCBlZmZlY3RpdmVseT8gVHlwaWNhbGx5LCBwaHlzaWNhbCBuZXR3b3JrIGNhcmQgZHJpdmVycyBkb24mIzM5O3QgbGVuZCB0aGVtc2VsdmVzIHRvIGZ1enppbmcgZGlyZWN0bHkgaW4gYSB2aXJ0dWFsaXplZCBzZXR0aW5nLCB1bmxlc3Mgd2UmIzM5O3ZlIGdvdCBhIHNvZnR3YXJlIGVtdWxhdG9yIGluIHRoZSBtaXgsIG9yIGNhbiBsZXZlcmFnZSBzb21ldGhpbmcgbGlrZSBgdmV0aGAgb3IgYHR1bmAvYG1hY3ZsYW5gLgoKV2FpdCBhIG1pbnV0ZSwgSSYjMzk7bSBqdXN0IGdldHRpbmcgbXkgdGhpbmtpbmcgc3RyYWlnaHQgLSBgeGRwX2J1aWxkX3NrYl9mcm9tX3pjYCBpcyBhIHBhcnQgb2YgdGhlIFhEUCB6ZXJvLWNvcHkgKEFGX1hEUCkgcGF0aCwgaXNuJiMzOTt0IGl0PyBBRl9YRFAgemVyby1jb3B5IGlzIHJlc3RyaWN0ZWQgdG8gc3BlY2lmaWMgZHJpdmVycy4gTm93LCBsZXQmIzM5O3Mgc2VlLCBpZiBJIGxvb2sgYXQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmNgIHRoYXQmIzM5O3MgdGhlIGBpY2VgIGRyaXZlciBhZ2Fpbi4gT2theSwgc28gd2UmIzM5O3ZlIGVzdGFibGlzaGVkIHRoYXQgdGhlIGNvZGUgaXMgd2l0aGluIHRoZSBgaWNlYCBkcml2ZXIuCgpUaGUgbWlsbGlvbi1kb2xsYXIgcXVlc3Rpb24gbm93IGlzIHdoZXRoZXIgYW55IG9mIHRoZSAqdmlydHVhbCogZHJpdmVycyBhY3R1YWxseSB1c2UgYHhkcF9idWlsZF9za2JfZnJvbV96Y2AuIEkgbmVlZCB0byBjaGVjayBpZiBgdmV0aGAgc3VwcG9ydHMgQUZfWERQIHplcm8tY29weSwgYmVjYXVzZSBpZiBpdCBkb2VzLCBpdCYjMzk7cyBhIHBvdGVudGlhbCBhdmVudWUgZm9yIGZ1enppbmcsIGJ5cGFzc2luZyB0aGUgbmVlZCBmb3IgYSBwaHlzaWNhbCBuZXR3b3JrIGNhcmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDA5OjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eGRwX2J1aWxkX3NrYl9mcm9tX3pjJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdmV0aC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDk6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAyODUKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqQXNzZXNzaW5nIGB2ZXRoYCBmb3IgWmVyby1Db3B5IENhcGFiaWxpdGllcyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgdGhlIGB2ZXRoYCBpbnRlcmZhY2UsIHRoYXQgdmlydHVhbCBFdGhlcm5ldCBicmlkZ2UsIHN1cHBvcnRzIHplcm8tY29weSBvcGVyYXRpb25zLiBUaGlzIGlzIGNydWNpYWwgZm9yIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiBpbiBtYW55IG5ldHdvcmsgYXBwbGljYXRpb25zIEkmIzM5O20gZGVhbGluZyB3aXRoLiBJIGtub3cgdGhlIHRoZW9yeSwgb2YgY291cnNlLCBidXQgbm93IEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIHByYWN0aWNhbCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLiBJcyB0aGlzIHNvbWV0aGluZyB0aGF0JiMzOTtzIG5hdGl2ZWx5IGJ1aWx0IGludG8gdGhlIGB2ZXRoYCBkcml2ZXIsIG9yIHdvdWxkIEkgbmVlZCB0byBkbyBzb21lIG1vcmUgY29tcGxleCBjb25maWd1cmF0aW9uIG9yIGFwcGxpY2F0aW9uLWxldmVsIGhhbmRsaW5nIHRvIGFjaGlldmUgdHJ1ZSB6ZXJvLWNvcHkgYmVoYXZpb3I/IEkmIzM5O20gcGljdHVyaW5nIHRoZSBkYXRhIGZsb3cuLi4gaXMgaXQgZGlyZWN0bHkgcGFzc2luZyBidWZmZXJzLCBvciBpcyB0aGVyZSBhbiB1bm5lY2Vzc2FyeSBjb3B5IGludHJvZHVjZWQgc29tZXdoZXJlIGluIHRoZSBrZXJuZWwmIzM5O3MgcHJvY2Vzc2luZyBjaGFpbj8gVGltZSB0byBkaXZlIGludG8gdGhlIGRvY3VtZW50YXRpb24sIGxvb2sgYXQgdGhlIHNvdXJjZSBjb2RlLCBtYXliZSBldmVuIHJ1biBzb21lIHF1aWNrIHRlc3RzIGlmIEkgY2FuJiMzOTt0IGZpbmQgYSBkZWZpbml0aXZlIGFuc3dlci4gVWx0aW1hdGVseSwgZWZmaWNpZW50IGRhdGEgdHJhbnNmZXIgaXMga2V5IHRvIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZSwgc28gdGhpcyBpbml0aWFsIGFzc2Vzc21lbnQgaXMgYSByZWFsbHkgaW1wb3J0YW50IGZpcnN0IHN0ZXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDA5OjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7WERQX1NFVFVQX1hTS19QT09MJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdmV0aC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDk6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA1NjMKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipYRFAgWmVyby1Db3B5IGFuZCB0aGUgYHZldGhgIEludGVyZmFjZSoqCgpIbW0sIGhvbGQgb24gYSBzZWNvbmQuIEkgaGFkIGEgbW9tZW50YXJ5IGxhcHNlIHRoZXJlLiBJdCBqdXN0IGhpdCBtZSDigJMgYHZldGhgICpkb2VzKiBhY3R1YWxseSBzdXBwb3J0IEFGX1hEUCB6ZXJvLWNvcHksIGRvZXNuJiMzOTt0IGl0PyBNeSBpbml0aWFsIGltcHJlc3Npb24gd2FzIG9mZi4gSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBpbW1lZGlhdGVseS4gTGV0JiMzOTtzIHNlZS4uLiB3aGF0IGFib3V0IHRoZSBmdW5jdGlvbiBgdmV0aF94c2tfcG9vbF9lbmFibGVgPyBUaGF0IHJpbmdzIGEgYmVsbC4gVGltZSB0byByZWZyZXNoIG15IG1lbW9yeSBhbmQgY2hlY2sgdGhhdCBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiB0byBiZSBzdXJlLiBJJiMzOTttIGxpa2VseSBmb3JnZXR0aW5nIHNvbWUgc3VidGxlIGRldGFpbCwgYW5kIEkgZG9uJiMzOTt0IHdhbnQgdG8gcHJvcGFnYXRlIG91dGRhdGVkIGluZm9ybWF0aW9uLiBUaGUgZGV2aWwmIzM5O3MgYWx3YXlzIGluIHRob3NlIGxvdy1sZXZlbCBkZXRhaWxzIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwOTo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hza19wb29sX2VuYWJsZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3ZldGguYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDA5OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwODAyCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6CgoqKkludmVzdGlnYXRpbmcgYHZldGhgIGFuZCBgeHNrYCBDb21wYXRpYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGludGVncmF0aW9uIG9mIGB2ZXRoYCBhbmQgYHhza2AuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHZlcmlmeSBob3cgdGhlc2UgdHdvIHRlY2hub2xvZ2llcyBpbnRlcmFjdCBhbmQgd2hhdCBwb3RlbnRpYWwgY29uc2lkZXJhdGlvbnMgdGhlcmUgYXJlLiBNeSBpbml0aWFsIHF1ZXN0aW9uIGlzOiB3aGF0JiMzOTtzIHRoZSBhY3R1YWwgcmVsYXRpb25zaGlwPyBJIG5lZWQgdG8gZGlnIGludG8gdGhlIHRlY2huaWNhbCBkZXRhaWxzIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSBrbm93biBpc3N1ZXMgb3IgbGltaXRhdGlvbnMgd2hlbiB1c2luZyB0aGVtIHRvZ2V0aGVyLiBJJiMzOTtsbCBuZWVkIHRvIHJlc2VhcmNoIGFueSBleGlzdGluZyBkb2N1bWVudGF0aW9uLCBleGFtcGxlcywgb3IgcGVyZm9ybWFuY2UgbWV0cmljcy4gSXQmIzM5O3MgdGltZSB0byBjaGVjayB0aGUgc3RhdHVzIG9mIGFueSBwYXRjaGVzIG9yIHVwZGF0ZXMgdGhhdCBtaWdodCBiZSByZWxldmFudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDk6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4c2smIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC92ZXRoLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwOTo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDk5OAoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCYjMzk7cyBwZXJzcGVjdGl2ZToKCioqSW52ZXN0aWdhdGluZyB0aGUgTWlzc2luZyBYU0sgU3VwcG9ydCBpbiB2ZXRoKioKCkhtbSwgaG9sZCBvbiBhIHNlY29uZC4gSXQgc2VlbXMgSSYjMzk7dmUgZW5jb3VudGVyZWQgYSBzaXR1YXRpb24gd2hlcmUgSSB3YXMgZXhwZWN0aW5nIGB2ZXRoYCDigJMgdGhlIHZpcnR1YWwgRXRoZXJuZXQgcGFpciDigJMgdG8gaGF2ZSBgeHNrYCAoQUZfWERQIHNvY2tldCkgc3VwcG9ydCwgYnV0IEkmIzM5O20gbm90IHNlZWluZyBpdC4gVGhhdCYjMzk7cyB1bnVzdWFsLCBhbmQgaXQmIzM5O3MgdGhyb3dpbmcgdXAgYSByZWQgZmxhZyBpbiBteSBtaW5kLiBUaGUgbmF0dXJhbCBmaXJzdCBzdGVwIHRvIHVuZGVyc3RhbmQgdGhpcyBpcyB0byBkaXZlIGRpcmVjdGx5IGludG8gdGhlIGtlcm5lbCBzb3VyY2UgY29kZSwgc3BlY2lmaWNhbGx5IHRoZSBgZHJpdmVycy9uZXQvdmV0aC5jYCBmaWxlLiBUaW1lIHRvIGNvbmZpcm0gd2hldGhlciBteSBpbml0aWFsIGFzc3VtcHRpb24gd2FzIGluY29ycmVjdCwgb3IgaWYgdGhlcmUmIzM5O3MgYSBzcGVjaWZpYyByZWFzb24gd2h5IGB4c2tgIGlzbiYjMzk7dCBlbmFibGVkIHRoZXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGlzIGlzIGFuIG92ZXJzaWdodCwgYSBkZWxpYmVyYXRlIGRlc2lnbiBjaG9pY2UsIG9yIGlmIHRoZXJlIGFyZSBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIHByZXZlbnRpbmcgYHhza2AgaW50ZWdyYXRpb24gd2l0aCBgdmV0aGAuIExldCYjMzk7cyBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLiBJIGV4cGVjdCB0aGUgYW5zd2VyIHRvIGJlIGluIHRoZSBjb2RlIGl0c2VsZi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDk6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4c2smIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC92ZXRoJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDk6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEyODcKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiAxMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBYRFAgYW5kIFZpcnR1YWxpemF0aW9uKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGluLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gYHhkcF9idWlsZF9za2JfZnJvbV96Y2AgYW5kIHBvdGVudGlhbCB2aXJ0dWFsaXphdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGNoZWNrIG91dCBgbmV0L2NvcmUveGRwLmNgLCBhcyB0aGF0JiMzOTtzIHdoZXJlIEkmIzM5O2QgZXhwZWN0IHRvIGZpbmQgdGhlIGRlZmluaXRpb24gb2YgYHhkcF9idWlsZF9za2JfZnJvbV96Y2AuIEl0JiMzOTtzIGEgZnVuZGFtZW50YWwgZnVuY3Rpb24sIHNvIHRoYXQgc2VlbXMgbGlrZSB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludC4KClRoZSBjb3JlIHF1ZXN0aW9uIGlzLCBjYW4gd2UgYWN0dWFsbHkgcmVhY2ggYHhkcF9idWlsZF9za2JfZnJvbV96Y2Agd2l0aGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IE15IGNvbmNlcm4gaXMgdGhhdCBpZiBpdCYjMzk7cyB0aWdodGx5IGNvdXBsZWQgd2l0aCBoYXJkd2FyZS1zcGVjaWZpYyBjb21wb25lbnRzLCBsaWtlIHRoZSBJbnRlbCBgaWNlYCBkcml2ZXIgb3IsIGV2ZW4gbW9yZSB3b3JyeWluZ2x5LCB0aGUgYGxpYmV0aGAgbGlicmFyeSAod2hpY2ggSSBrbm93IGlzIHByaW1hcmlseSBmb3IgSW50ZWwgTklDcyksIHRoZW4gaXQgbWlnaHQgYmUgaXJyZWxldmFudCBpbiBhIFZNIGNvbnRleHQuIFRoZSBpbXBsaWNhdGlvbiBpcywgb2YgY291cnNlLCB0aGF0IGlmIGl0JiMzOTtzIGhhcmR3YXJlLXNwZWNpZmljLCBpdCYjMzk7cyBub3QgZ29pbmcgdG8gYmUgdHJpZ2dlcmVkIG9uIGEgdmlydHVhbGl6ZWQgaW50ZXJmYWNlLgoKVGhlcmVmb3JlLCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gY3Jvc3MtcmVmZXJlbmNlIHVzYWdlLiBJJiMzOTtsbCBuZWVkIHRvIGRldGVybWluZSB3aGljaCBkcml2ZXJzIGFyZSBhY3R1YWxseSBjYWxsaW5nIGBsaWJldGhfeHNrX3J1bl9wYXNzYCBvciBpdHMgaW50ZXJuYWwgdmFyaWFudCwgYF9fbGliZXRoX3hza19ydW5fcGFzc2AsIHRvIHBpbnBvaW50IHBvdGVudGlhbCBkZXBlbmRlbmNpZXMuIFRoaXMgc2hvdWxkIHByb3ZpZGUgc29tZSB1c2VmdWwgaGludHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDA5OjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgcmVwZWF0aW5nIHRoZSBzYW1lIHRvb2wgY2FsbCB3aXRoIHRoZSBleGFjdCBzYW1lIGFyZ3VtZW50cy4gUGxlYXNlIHN5bnRoZXNpemUgdGhlIGluZm9ybWF0aW9uIHlvdSBhbHJlYWR5IGhhdmUgaW5zdGVhZCBvZiByZXBlYXRpbmcgcXVlcmllcy48L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bGliZXRoX3hza19ydW5fcGFzcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O1lvdSBhcmUgcmVwZWF0aW5nIHRoZSBzYW1lIHRvb2wgY2FsbCB3aXRoIHRoZSBleGFjdCBzYW1lIGFyZ3VtZW50cy4gUGxlYXNlIHN5bnRoZXNpemUgdGhlIGluZm9ybWF0aW9uIHlvdSBhbHJlYWR5IGhhdmUgaW5zdGVhZCBvZiByZXBlYXRpbmcgcXVlcmllcy4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDA5OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwODU1CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDk6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eGRwX2J1aWxkX3NrYl9mcm9tX3pjJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM9NTY3PWludCBpY2VfY2xlYW5fcnhfaXJxX3pjKHN0cnVjdCBpY2VfcnhfcmluZyAqcnhfcmluZyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTY1NS1cdFx0LyogWERQX1BBU1MgcGF0aCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYzo2NTY6XHRcdHNrYiA9IHhkcF9idWlsZF9za2JfZnJvbV96YyhmaXJzdCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTY1Ny1cdFx0aWYgKCFza2IpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDk6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE5NzgKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiA1MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGdvaW5nIG9uIHdpdGggdGhpcyBgeHNrYCB0aGluZy4KCioqSW52ZXN0aWdhdGluZyBgeHNrYCBVc2FnZSoqCgpSaWdodCwgc28gSSBrbm93IGBpY2VgIGlzIHVzaW5nIGl0IGRpcmVjdGx5IGluIGBkcml2ZXJzL25ldC9gLiBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludCwgYnV0IEkgbmVlZCBhIG1vcmUgY29tcGxldGUgcGljdHVyZS4gVGhlIHF1ZXN0aW9uIG5vdyBpczogd2hhdCBlbHNlIGlzIHRvdWNoaW5nIGB4c2tgPyBJJiMzOTt2ZSBnb3QgdG8gY29uc2lkZXIgYWxsIHRoZSBwb3NzaWJpbGl0aWVzLgoKSSByZW1lbWJlciBzZWVpbmcgYGluY2x1ZGUvbmV0L2xpYmV0aC94c2suaGAuIExldCYjMzk7cyBkaWcgZGVlcGVyIGFuZCBmaWd1cmUgb3V0IHdoZXJlIHRoYXQgaGVhZGVyIGZpbGUgaXMgYWN0dWFsbHkgYmVpbmcgaW5jbHVkZWQgd2l0aGluIHRoZSBwcm9qZWN0LiBLbm93aW5nIHRoZSBpbmNsdWRlIGdyYXBoIGlzIGNydWNpYWwgdG8gdW5kZXJzdGFuZGluZyB0aGUgZnVsbCBzY29wZSBvZiBob3cgYHhza2AgaXMgYmVpbmcgdXRpbGl6ZWQgYW5kIHBvdGVudGlhbGx5IG1vZGlmaWVkIGFjcm9zcyB0aGUgY29kZWJhc2UuIFRpbWUgdG8gaHVudCBkb3duIHRob3NlIGluY2x1ZGUgc3RhdGVtZW50cyEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDk6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7I2luY2x1ZGUgXHUwMDNjbmV0L2xpYmV0aC94c2suaFx1MDAzZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jLTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jOjQ6I2luY2x1ZGUgXHUwMDNjbmV0L2xpYmV0aC94c2suaFx1MDAzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi94c2suYy01LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC94c2suYy03LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3hzay5jOjg6I2luY2x1ZGUgXHUwMDNjbmV0L2xpYmV0aC94c2suaFx1MDAzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3hzay5jLTktXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDA5OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMzc4CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMjU5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIGB4ZHBfYnVpbGRfc2tiX2Zyb21femNgIFJlYWNoYWJpbGl0eSoqCgpPa2F5LCBzbyBgaWRwZmAgdXNlcyB0aGlzLiBSaWdodCwgYGlkcGZgIGlzIHRoZSBJbnRlbCBJbmZyYXN0cnVjdHVyZSBEYXRhIFBhdGggRnVuY3Rpb24gZHJpdmVyIOKAkyBhIHBoeXNpY2FsIGhhcmR3YXJlIGRyaXZlciwganVzdCBsaWtlIGBpY2VgLiBUaGUgcXVlc3Rpb24gdGhlbiBiZWNvbWVzLCBjYW4gdGhlc2UgYmUgZnV6emVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IEdlbmVyYWxseSwgeW91IGNhbiYjMzk7dCBmdXp6IHBoeXNpY2FsIFBDSWUgZGV2aWNlcyBkaXJlY3RseSB1bmxlc3MgUUVNVSBwcm92aWRlcyBlbXVsYXRpb24gZm9yIHRoZW0uIERvZXMgUUVNVSBldmVuICplbXVsYXRlKiBgaWNlYCAodGhlIEludGVsIEU4MDAgc2VyaWVzKSwgb3IgYGlkcGZgPwoKTm8sIHR5cGljYWwgUUVNVSBlbXVsYXRpb25zIGNvdmVyIGBlMTAwMGAsIGBlMTAwMGVgLCBgaWdiYCwgYHJ0bDgxMzlgLCBgdmlydGlvLW5ldGAsIGB2bXhuZXQzYCwgYHBjbmV0YCwgYG5lMmtfcGNpYCwgYW5kIGB0dWxpcGAuIEl0JiMzOTtzIG5vdCB0aGUgdXN1YWwgbGluZXVwLiBJdCAqZG9lc24mIzM5O3QqIGVtdWxhdGUgYGljZWAgb3IgYGlkcGZgLiBUaGF0IHBvaW50cyBtZSB0byB0aGUgYHhkcF9idWlsZF9za2JfZnJvbV96Y2AgY29kZSBwYXRoIGJlaW5nIHJlYWNoYWJsZSBvbmx5IGlmIGFuIEFGX1hEUCB6ZXJvLWNvcHkgY2FwYWJsZSBkcml2ZXIgY2FsbHMgaXQuCgpXYWl0LCBob2xkIG9uIGEgc2Vjb25k4oCmIElzIHRoYXQgKnJlYWxseSogdGhlIG9ubHkgd2F5IHRvIGdldCB0aGVyZT8gQXJlIHRoZXJlIGFueSBvdGhlciBwYXRocyB0byBgeGRwX2J1aWxkX3NrYl9mcm9tX3pjYD8gTGV0IG1lIHF1aWNrbHkgY2hlY2sgaWYgdGhpcyBmdW5jdGlvbiBpcyBhbHNvIGNhbGxlZCBmcm9tIHNvbWUgY29yZSBuZXR3b3JrIGNvZGUuIEdvdHRhIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBzb21ldGhpbmcgb2J2aW91cyBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwOTo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4ZHBfYnVpbGRfc2tiX2Zyb21femMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9jb3JlL3hkcC5jPTY4Nz1zdGF0aWMgbm9pbmxpbmUgYm9vbCB4ZHBfY29weV9mcmFnc19mcm9tX3pjKHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L2NvcmUveGRwLmMtNzI2LS8qKlxubmV0L2NvcmUveGRwLmM6NzI3OiAqIHhkcF9idWlsZF9za2JfZnJvbV96YyAtIGNyZWF0ZSBhbiBza2IgZnJvbSBYU2sgXHUwMDI2eGRwX2J1ZmZcbm5ldC9jb3JlL3hkcC5jLTcyOC0gKiBAeGRwOiBzb3VyY2UgWFNrIGJ1ZmZcbi0tXG5uZXQvY29yZS94ZHAuYy03MzgtICovXG5uZXQvY29yZS94ZHAuYzo3Mzk6c3RydWN0IHNrX2J1ZmYgKnhkcF9idWlsZF9za2JfZnJvbV96YyhzdHJ1Y3QgeGRwX2J1ZmYgKnhkcClcbm5ldC9jb3JlL3hkcC5jLTc0MC17XG4tLVxubmV0L2NvcmUveGRwLmMtNzkyLX1cbm5ldC9jb3JlL3hkcC5jOjc5MzpFWFBPUlRfU1lNQk9MX0dQTCh4ZHBfYnVpbGRfc2tiX2Zyb21femMpO1xubmV0L2NvcmUveGRwLmMtNzk0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwOTo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzI0NwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDIxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBgeGRwX2J1aWxkX3NrYl9mcm9tX3pjYCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYHhkcF9idWlsZF9za2JfZnJvbV96Y2AuIEkgc2VlIGl0JiMzOTtzIGRlZmluZWQgYW5kIGV4cG9ydGVkIG9ubHkgaW4gYG5ldC9jb3JlL3hkcC5jYCwgYW5kIHRoZSBwcmltYXJ5IGNvbnN1bWVycyBhcHBlYXIgdG8gYmUgdGhlIGBpY2VgIGFuZCBgbGliZXRoYCBkcml2ZXJzIOKAkyB0aGUgbGF0dGVyIGJlaW5nIHV0aWxpemVkIGJ5IGBpZHBmYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB0aGlzIGlzIGxpa2VseSBkZWFkIGNvZGUgaW4gb3VyIHR5cGljYWwgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBOZWl0aGVyIGBpY2VgIG5vciBgaWRwZmAgYXJlIGVtdWxhdGVkIGluIFFFTVUsIHNvIHRoZSBjb2RlIHBhdGggc2VlbXMgaW1wb3NzaWJsZSB0byBoaXQsIGVzcGVjaWFsbHkgaW4gcGxhY2VzIGxpa2UgR0NFIG9yIG91ciBRRU1VIHNldHVwcy4KCkJ1dCB3YWl0LCBob2xkIG9uIGEgc2Vjb25kLi4uIENvdWxkIHRoZXJlIGJlIGEgc2l0dWF0aW9uIHdoZXJlIGB4ZHBfYnVpbGRfc2tiX2Zyb21femNgIGlzIGNhbGxlZCBpbmRpcmVjdGx5LCBwZXJoYXBzIHRocm91Z2ggYSBCUEYgaGVscGVyIGZ1bmN0aW9uPyBJIG5lZWQgdG8gcnVsZSB0aGF0IG91dC4gTGV0IG1lIHJlZnJlc2ggbXkgbWVtb3J5Li4uIHJpZ2h0LCBpdCYjMzk7cyBhIGtlcm5lbCBmdW5jdGlvbiwgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIGZvciBkcml2ZXJzLiBJdCYjMzk7cyBtZWFudCB0byBiZSB1c2VkIHdoZW4gYSBkcml2ZXIgcmVjZWl2ZXMgcGFja2V0cyBpbiB6ZXJvLWNvcHkgbW9kZSBhbmQgYW4gWERQIHByb2dyYW0gcmV0dXJucyBgWERQX1BBU1NgLiBUaGUgZHJpdmVyIHRoZW4gbmVlZHMgdG8gY29uc3RydWN0IGFuIGBza2JgIChzb2NrZXQgYnVmZmVyKSBmcm9tIHRoZSB6ZXJvLWNvcHkgYnVmZmVyIHRvIGdldCB0aGUgcGFja2V0IHVwIHRoZSBuZXR3b3JrIHN0YWNrLgoKU28sIGxvZ2ljYWxseSwgSSBoYXZlIHRvIGNvbnNpZGVyIHdoZXRoZXIgYW55IHZpcnR1YWwgZHJpdmVycyBhcmUgdXNpbmcgdGhpcy4gSSYjMzk7bSBwcmV0dHkgY29uZmlkZW50IG5vIGN1cnJlbnQgdmlydHVhbCBkcml2ZXJzIHVzZSB6ZXJvLWNvcHkgWERQLCBidXQgSSBuZWVkIHRvIGJlIGNlcnRhaW4uIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0aGlua2luZyBvZiBkcml2ZXJzIGxpa2UgYHZldGhgLCBgdmlydGlvX25ldGAsIGFuZCBgdHVuYCB0aGF0IGFyZSBjb21tb25seSB1c2VkIGluIHRoZSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gQmVjYXVzZSwgaWYgbm9uZSBvZiB0aGVzZSBpbXBsZW1lbnQgemVyby1jb3B5IFhEUCwgdGhlbiB0aGlzIGZ1bmN0aW9uIGlzIGluZGVlZCB1bnJlYWNoYWJsZS4KCkkgYmV0dGVyIGRvdWJsZS1jaGVjayBgdmlydGlvX25ldGAuIEkgY2FuJiMzOTt0IGJlIHN1cmUgdW50aWwgSSYjMzk7dmUgdmVyaWZpZWQgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDA5OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hkcF9idWlsZF9za2ImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdmlydGlvX25ldC5jPTIwMzA9c3RhdGljIHZvaWQgbWVyZ2VhYmxlX2J1Zl9mcmVlKHN0cnVjdCByZWNlaXZlX3F1ZXVlICpycSwgaW50IG51bV9idWYsXG4tLVxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTIwNTEtXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6MjA1MjovKiBXaHkgbm90IHVzZSB4ZHBfYnVpbGRfc2tiX2Zyb21fZnJhbWUoKSA/XG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtMjA1My0gKiBYRFAgY29yZSBhc3N1bWVzIHRoYXQgeGRwIGZyYWdzIGFyZSBQQUdFX1NJWkUgaW4gbGVuZ3RoLCB3aGlsZSBpblxuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy0yMDU1LSAqICAxLiBUaGUgc2l6ZSBvZiB0aGUgcHJlZmlsbGVkIGJ1ZmZlciBpcyBub3QgZml4ZWQgYmVmb3JlIHhkcCBpcyBzZXQuXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6MjA1NjogKiAgMi4geGRwX2J1aWxkX3NrYl9mcm9tX2ZyYW1lKCkgZG9lcyBtb3JlIGNoZWNrcyB0aGF0IHdlIGRvbiYjMzk7dCBuZWVkLFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTIwNTctICogICAgIGxpa2UgZXRoX3R5cGVfdHJhbnMoKSAod2hpY2ggdmlydGlvLW5ldCBkb2VzIGluIHJlY2VpdmVfYnVmKCkpLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwOTo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDE1MgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgaW5pdGlhbCB0aG91Z2h0cywgZnJhbWVkIGFzIGEgY29uY2lzZSBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgTmV0d29yayBEZXZpY2UgSW1wbGVtZW50YXRpb25zKioKCkhtbSwgc28gSSB3YXMganVzdCBtZW50YWxseSByZXZpZXdpbmcgbmV0d29yayBkZXZpY2UgaW1wbGVtZW50YXRpb25zLCBhbmQgdGhlIGZpcnN0IHRoaW5nIHRoYXQgcG9wcGVkIGludG8gbXkgaGVhZCB3YXMsICYjMzQ7d2FpdCwgZG9lc24mIzM5O3QgYHZpcnRpb19uZXRgICphdm9pZCogdGhlIGZlYXR1cmUgSSB3YXMganVzdCBsb29raW5nIGF0PyYjMzQ7LiBJIHRob3VnaHQgaXQgZGlkLCBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayB0aGUgc3BlY2lmaWNzIGxhdGVyLiBUaGVuIEkgaW1tZWRpYXRlbHkgd29uZGVyZWQsIHdoYXQgYWJvdXQgYHZldGhgPyBEb2VzIHRoYXQgYXBwcm9hY2ggdXNlIHRoaXMgc2FtZSB0aGluZyBvciBub3Q/IEkgbmVlZCB0byBjbGFyaWZ5IGhvdyBpdCYjMzk7cyBpbXBsZW1lbnRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDk6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eGRwX2J1aWxkX3NrYiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3ZldGguYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC92ZXRoLmM9NzA5PXN0YXRpYyB2b2lkIHZldGhfeGRwX3Jjdl9idWxrX3NrYihzdHJ1Y3QgdmV0aF9ycSAqcnEsIHZvaWQgKipmcmFtZXMsXG4tLVxuZHJpdmVycy9uZXQvdmV0aC5jLTcyNi1cbmRyaXZlcnMvbmV0L3ZldGguYzo3Mjc6XHRcdHNrYiA9IF9feGRwX2J1aWxkX3NrYl9mcm9tX2ZyYW1lKGZyYW1lc1tpXSwgc2tiLFxuZHJpdmVycy9uZXQvdmV0aC5jLTcyOC1cdFx0XHRcdFx0XHQgcnEtXHUwMDNlZGV2KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDk6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ0NTgKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgcGVyc29uYWwgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKlhEUCBhbmQgU0tCIENyZWF0aW9uOiBBIFF1aWNrIENvbnNpZGVyYXRpb24qKgoKQWxyaWdodCwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCBYRFAgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCBkaWZmZXJlbnQgaW50ZXJmYWNlcy4gU3BlY2lmaWNhbGx5LCBJIHNlZSB0aGF0IHRoZSBgdmV0aGAgaW50ZXJmYWNlIGltcGxlbWVudGF0aW9uIGRvZXNuJiMzOTt0IHVzZSB0aGUgYHhkcF9idWlsZF9za2JfZnJvbV96Y2AgZnVuY3Rpb24gZm9yIGJ1aWxkaW5nIFNLQnMgZnJvbSBmcmFtZXMuIEluc3RlYWQsIGl0IHJlbGllcyBvbiBgX194ZHBfYnVpbGRfc2tiX2Zyb21fZnJhbWVgLiBUaGF0JiMzOTtzIGludGVyZXN0aW5nLCBhbmQgZGVmaW5pdGVseSB3b3J0aCBub3RpbmcuIGBfX3hkcF9idWlsZF9za2JfZnJvbV9mcmFtZWAgaGFzIGRpZmZlcmVudCBwZXJmb3JtYW5jZSBjaGFyYWN0ZXJpc3RpY3MgYW5kIGltcGxlbWVudGF0aW9uIGRldGFpbHMsIHdoaWNoIEkgbmVlZCB0byBrZWVwIGluIG1pbmQgd2hlbiBjb21wYXJpbmcgYW5kIGNvbnRyYXN0aW5nIGRpZmZlcmVudCBpbnRlcmZhY2VzIGFuZCB0aGVpciBYRFAgYmVoYXZpb3IuCgpOb3csIG15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gYHR1bmAuIEhvdyBkb2VzIHRoZSBgdHVuYCBpbnRlcmZhY2UgaGFuZGxlIHRoaXM/IERvZXMgaXQgZm9sbG93IHRoZSBgdmV0aGAgYXBwcm9hY2gsIG9yIGRvZXMgaXQgZG8gc29tZXRoaW5nIGNvbXBsZXRlbHkgZGlmZmVyZW50PyBLbm93aW5nIHRoYXQgd2lsbCBiZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgZnVsbCBsYW5kc2NhcGUgb2YgWERQIGFuZCBTS0IgY3JlYXRpb24gYWNyb3NzIHZhcmlvdXMgaW50ZXJmYWNlIHR5cGVzLiBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgdGhhdCB0byBmaWxsIGluIHRoZSBmdWxsIHBpY3R1cmUgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDk6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4ZHBfYnVpbGRfc2tiJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdHVuLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwOTo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDc4MgoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEkmIzM5O20gc3BlYWtpbmcgdG8gYW4gZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIE5ldHdvcmsgVmlydHVhbGl6YXRpb24gT3B0aW9ucyoqCgpBbHJpZ2h0LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCBuZXR3b3JrIHZpcnR1YWxpemF0aW9uLCBhbmQgdGhlIGZpcnN0IHRoaW5nIHRoYXQgcG9wcyBpbnRvIG15IGhlYWQgaXMgYG1hY3ZsYW5gLiBJdCYjMzk7cyBhIHNvbGlkLCBpZiBzb21ldGltZXMgb3Zlcmxvb2tlZCwgb3B0aW9uLiBJJiMzOTttIGltbWVkaWF0ZWx5IHdvbmRlcmluZyBhYm91dCBpdHMgc3VpdGFiaWxpdHkgZm9yIHRoaXMgcGFydGljdWxhciB1c2UgY2FzZS4gSSBuZWVkIHRvIHF1aWNrbHkgYXNzZXNzIGlmIGl0JiMzOTtzIHRoZSByaWdodCBmaXQsIGNvbnNpZGVyaW5nIGl0cyBzdHJlbmd0aHMgYW5kIHdlYWtuZXNzZXMgY29tcGFyZWQgdG8gb3RoZXIgYXBwcm9hY2hlcy4gV2hhdCBhcmUgdGhlIHByb3MgYW5kIGNvbnMgaW4gdGhpcyBzY2VuYXJpbz8gSSBuZWVkIHRvIHF1aWNrbHkgcnVuIHRocm91Z2ggdGhlIGJhc2ljcyB0byByZW1lbWJlciBhbmQgbWFrZSBhIHF1aWNrIGRlY2lzaW9uLiBJcyBpdCB0aGUgYXBwcm9wcmlhdGUgdG9vbCBmb3IgdGhlIGpvYj8KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDk6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4ZHBfYnVpbGRfc2tiJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbWFjdmxhbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDk6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ5ODUKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiA5OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipYRFAgWmVyby1Db3B5IGFuZCBGdXp6aW5nIFJlbGV2YW5jZSoqCgpPa2F5LCBzbyBsb29raW5nIGF0IHRoZSBjb2RlLCBpdCYjMzk7cyBjbGVhciB0aGF0IGB4ZHBfYnVpbGRfc2tiX2Zyb21femNgIGlzICpvbmx5KiB1c2VkIGJ5IHRoZSBgaWNlYCBhbmQgYGlkcGZgIGRyaXZlcnMuIEFuZCBJIHJlbWVtYmVyIHRoYXQgdGhvc2UgYXJlIHBoeXNpY2FsIE5JQyBkcml2ZXJzLCBub3QgdGhlIGVtdWxhdGVkIG9uZXMgd2UgdHlwaWNhbGx5IGRlYWwgd2l0aCBpbiBRRU1VIG9yIEdDRS4gVGhhdCBtZWFucyBhbnkgY29kZSBjaGFuZ2VzIGluIHRoZXJlIGFyZSBlc3NlbnRpYWxseSBkZWFkIGNvZGUgYXMgZmFyIGFzIG91ciBmdXp6aW5nIHNldHVwIGlzIGNvbmNlcm5lZC4gVGhlcmVmb3JlLCB0aGUgYFdvcnRoRnV6emluZ2AgZmxhZyBmb3IgdGhpcyBhcmVhIHNob3VsZCBiZSBzZXQgdG8gYGZhbHNlYC4gTm8gcG9pbnQgd2FzdGluZyBjeWNsZXMgb24gc29tZXRoaW5nIHdlIGNhbiYjMzk7dCBhY3R1YWxseSB0cmlnZ2VyIHRocm91Z2ggb3VyIHRlc3RpbmcuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgbGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBjb2RlIGJhc2UgdG8gc2VlIGlmIGB4ZHBfY29weV9mcmFnc19mcm9tX3pjYCBpcyB1c2VkIGFueXdoZXJlIGVsc2UuIEp1c3QgYSBzYW5pdHkgY2hlY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDA5OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hkcF9jb3B5X2ZyYWdzX2Zyb21femMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2NvcmUveGRwLmM9Njc0PUVYUE9SVF9TWU1CT0xfR1BMKHhkcF9idWlsZF9za2JfZnJvbV9idWZmKTtcbi0tXG5uZXQvY29yZS94ZHAuYy02NzYtLyoqXG5uZXQvY29yZS94ZHAuYzo2Nzc6ICogeGRwX2NvcHlfZnJhZ3NfZnJvbV96YyAtIGNvcHkgZnJhZ3MgZnJvbSBYU2sgYnVmZiB0byBza2Jcbm5ldC9jb3JlL3hkcC5jLTY3OC0gKiBAc2tiOiBza2IgdG8gY29weSBmcmFncyB0b1xuLS1cbm5ldC9jb3JlL3hkcC5jLTY4Ni0gKi9cbm5ldC9jb3JlL3hkcC5jOjY4NzpzdGF0aWMgbm9pbmxpbmUgYm9vbCB4ZHBfY29weV9mcmFnc19mcm9tX3pjKHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvY29yZS94ZHAuYy02ODgtXHRcdFx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgeGRwX2J1ZmYgKnhkcCxcbi0tXG5uZXQvY29yZS94ZHAuYz03Mzk9c3RydWN0IHNrX2J1ZmYgKnhkcF9idWlsZF9za2JfZnJvbV96YyhzdHJ1Y3QgeGRwX2J1ZmYgKnhkcClcbi0tXG5uZXQvY29yZS94ZHAuYy03NzgtXHRpZiAodW5saWtlbHkoeGRwX2J1ZmZfaGFzX2ZyYWdzKHhkcCkpIFx1MDAyNlx1MDAyNlxubmV0L2NvcmUveGRwLmM6Nzc5Olx0ICAgIHVubGlrZWx5KCF4ZHBfY29weV9mcmFnc19mcm9tX3pjKHNrYiwgeGRwLCBwcCkpKSB7XG5uZXQvY29yZS94ZHAuYy03ODAtXHRcdG5hcGlfY29uc3VtZV9za2Ioc2tiLCB0cnVlKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDk6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU2NDMKCQkJCQkJCW91dHB1dDogMTA2CgkJCQkJCQl0aG91Z2h0czogMTc2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZyBEZWNpc2lvbioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGcm9tIHdoYXQgSSBjYW4gdGVsbCwgYHhkcF9jb3B5X2ZyYWdzX2Zyb21femNgIGlzIGV4Y2x1c2l2ZWx5IHRpZWQgdG8gYHhkcF9idWlsZF9za2JfZnJvbV96Y2AuIEFscmlnaHQsIHRoYXQgbmFycm93cyB0aGUgc2NvcGUgb2YgdGhpcyBwYXRjaCBjb25zaWRlcmFibHkuIE5vdywgYHhkcF9idWlsZF9za2JfZnJvbV96Y2AgaXRzZWxmIGlzIG9ubHkgY2FsbGVkIGJ5IHRoZSBgaWNlYCBhbmQgYGlkcGZgIGRyaXZlcnMuIEFuZCB0aG9zZSwgaWYgSSByZWNhbGwgY29ycmVjdGx5LCBhcmUgc3BlY2lmaWNhbGx5IGRyaXZlcnMgZm9yIEludGVsJiMzOTtzIEU4MDAgc2VyaWVzIGhhcmR3YXJlIGFuZCB0aGUgSW5mcmFzdHJ1Y3R1cmUgRGF0YSBQYXRoIEZ1bmN0aW9uIOKAkyBzdHJpY3RseSBwaHlzaWNhbCBoYXJkd2FyZSBpbXBsZW1lbnRhdGlvbnMuIFRoaXMgaXMgY3J1Y2lhbC4KCktub3dpbmcgdGhlIHR5cGljYWwgc3l6a2FsbGVyIHNldHVwLCBhbmQgaG93IGl04oCZcyB1c2VkIGluIG91ciBmdXp6aW5nIHdvcmtmbG93cywgSSBrbm93IGl0JiMzOTtzIHZpcnR1YWxpemVkLCBhbmQgcnVucyBpbiBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4gVGhlc2UgZW52aXJvbm1lbnRzICpkb24mIzM5O3QqIGVtdWxhdGUgdGhlIHNwZWNpZmljIEludGVsIGhhcmR3YXJlIHRoYXQgdGhlc2UgZHJpdmVycyByZWx5IG9uLiBUaGVyZWZvcmUsIHRoZXJlJiMzOTtzIG5vIHdheSB0aGlzIGNvZGUgcGF0aCBjYW4gYmUgdHJpZ2dlcmVkIGR1cmluZyBmdXp6aW5nLiBDb25zZXF1ZW50bHksIEkmIzM5O20gZ29pbmcgdG8gcmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZS4gVGhlIHJlYXNvbmluZyBpcyBjbGVhcjogdGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyBhcmUgaXNvbGF0ZWQgd2l0aGluIHBoeXNpY2FsIGhhcmR3YXJlIGRyaXZlcnMgdGhhdCBhcmUgc2ltcGx5IGluYWNjZXNzaWJsZSBpbiBvdXIgZnV6emluZyBlbnZpcm9ubWVudHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDA5OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgbW9kaWZpZWQgZnVuY3Rpb25zICh4ZHBfYnVpbGRfc2tiX2Zyb21femMgYW5kIHhkcF9jb3B5X2ZyYWdzX2Zyb21femMpIGFyZSBvbmx5IHVzZWQgYnkgcGh5c2ljYWwgSW50ZWwgbmV0d29yayBkcml2ZXJzIChpY2UgYW5kIGlkcGYgdmlhIGxpYmV0aCkuIFRoZXNlIGhhcmR3YXJlIGRldmljZXMgYXJlIG5vdCBlbXVsYXRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgbWFraW5nIHRoZSBjb2RlIHBhdGhzIGltcG9zc2libGUgdG8gcmVhY2ggZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBtb2RpZmllZCBmdW5jdGlvbnMgKHhkcF9idWlsZF9za2JfZnJvbV96YyBhbmQgeGRwX2NvcHlfZnJhZ3NfZnJvbV96YykgYXJlIG9ubHkgdXNlZCBieSBwaHlzaWNhbCBJbnRlbCBuZXR3b3JrIGRyaXZlcnMgKGljZSBhbmQgaWRwZiB2aWEgbGliZXRoKS4gVGhlc2UgaGFyZHdhcmUgZGV2aWNlcyBhcmUgbm90IGVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCBtYWtpbmcgdGhlIGNvZGUgcGF0aHMgaW1wb3NzaWJsZSB0byByZWFjaCBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwOTo0MToyNS41NzEyMjg4MDRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDI5ODg4MTIyMjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyAoeGRwX2J1aWxkX3NrYl9mcm9tX3pjIGFuZCB4ZHBfY29weV9mcmFnc19mcm9tX3pjKSBhcmUgb25seSB1c2VkIGJ5IHBoeXNpY2FsIEludGVsIG5ldHdvcmsgZHJpdmVycyAoaWNlIGFuZCBpZHBmIHZpYSBsaWJldGgpLiBUaGVzZSBoYXJkd2FyZSBkZXZpY2VzIGFyZSBub3QgZW11bGF0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIG1ha2luZyB0aGUgY29kZSBwYXRocyBpbXBvc3NpYmxlIHRvIHJlYWNoIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDk6NDE6MjUuNTcxMjM0NjM0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODM5OTQ3NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA1Njc1M2UzYjdkNTQxZTQ2MGRhMGNhNzUwNTVkODVlOTZmN2YxYjVjXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgSnVuIDI2IDA5OjQxOjI0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9jb3JlL3hkcC5jIGIvbmV0L2NvcmUveGRwLmNcXG5pbmRleCA5ODkwYTMwNTg0YmE3Yi4uNTI1NDY3NDYzNzhhMGEgMTAwNjQ0XFxuLS0tIGEvbmV0L2NvcmUveGRwLmNcXG4rKysgYi9uZXQvY29yZS94ZHAuY1xcbkBAIC02OTgsOCArNjk4LDggQEAgc3RhdGljIG5vaW5saW5lIGJvb2wgeGRwX2NvcHlfZnJhZ3NfZnJvbV96YyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXG4gXFx0Zm9yICh1MzIgaSA9IDA7IGkgXFx1MDAzYyBucl9mcmFnczsgaSsrKSB7XFxuIFxcdFxcdGNvbnN0IHNrYl9mcmFnX3QgKmZyYWcgPSBcXHUwMDI2eGluZm8tXFx1MDAzZWZyYWdzW2ldO1xcbi1cXHRcXHR1MzIgbGVuID0gc2tiX2ZyYWdfc2l6ZShmcmFnKTtcXG4tXFx0XFx0dTMyIG9mZnNldCwgdHJ1ZXNpemUgPSBsZW47XFxuK1xcdFxcdHUzMiBvZmZzZXQsIGxlbiA9IHNrYl9mcmFnX3NpemUoZnJhZyk7XFxuK1xcdFxcdHUzMiB0cnVlc2l6ZSA9IExBUkdFU1RfQUxJR04obGVuKTtcXG4gXFx0XFx0c3RydWN0IHBhZ2UgKnBhZ2U7XFxuIFxcbiBcXHRcXHRwYWdlID0gcGFnZV9wb29sX2Rldl9hbGxvYyhwcCwgXFx1MDAyNm9mZnNldCwgXFx1MDAyNnRydWVzaXplKTtcXG5AQCAtNzM4LDkgKzczOCwxMCBAQCBzdGF0aWMgbm9pbmxpbmUgYm9vbCB4ZHBfY29weV9mcmFnc19mcm9tX3pjKHN0cnVjdCBza19idWZmICpza2IsXFxuICAqL1xcbiBzdHJ1Y3Qgc2tfYnVmZiAqeGRwX2J1aWxkX3NrYl9mcm9tX3pjKHN0cnVjdCB4ZHBfYnVmZiAqeGRwKVxcbiB7XFxuK1xcdHUzMiBoZWFkcm9vbSA9IHhkcC1cXHUwMDNlZGF0YV9tZXRhIC0geGRwLVxcdTAwM2VkYXRhX2hhcmRfc3RhcnQ7XFxuIFxcdGNvbnN0IHN0cnVjdCB4ZHBfcnhxX2luZm8gKnJ4cSA9IHhkcC1cXHUwMDNlcnhxO1xcbiBcXHR1MzIgbGVuID0geGRwLVxcdTAwM2VkYXRhX2VuZCAtIHhkcC1cXHUwMDNlZGF0YV9tZXRhO1xcbi1cXHR1MzIgdHJ1ZXNpemUgPSB4ZHAtXFx1MDAzZWZyYW1lX3N6O1xcbitcXHR1MzIgdHJ1ZXNpemUgPSBTS0JfSEVBRF9BTElHTihoZWFkcm9vbSArIGxlbik7XFxuIFxcdHN0cnVjdCBza19idWZmICpza2IgPSBOVUxMO1xcbiBcXHRzdHJ1Y3QgcGFnZV9wb29sICpwcDtcXG4gXFx0aW50IG1ldGFsZW47XFxuQEAgLTc2Miw3ICs3NjMsNyBAQCBzdHJ1Y3Qgc2tfYnVmZiAqeGRwX2J1aWxkX3NrYl9mcm9tX3pjKHN0cnVjdCB4ZHBfYnVmZiAqeGRwKVxcbiBcXHR9XFxuIFxcbiBcXHRza2JfbWFya19mb3JfcmVjeWNsZShza2IpO1xcbi1cXHRza2JfcmVzZXJ2ZShza2IsIHhkcC1cXHUwMDNlZGF0YV9tZXRhIC0geGRwLVxcdTAwM2VkYXRhX2hhcmRfc3RhcnQpO1xcbitcXHRza2JfcmVzZXJ2ZShza2IsIGhlYWRyb29tKTtcXG4gXFxuIFxcdG1lbWNweShfX3NrYl9wdXQoc2tiLCBsZW4pLCB4ZHAtXFx1MDAzZWRhdGFfbWV0YSwgTEFSR0VTVF9BTElHTihsZW4pKTtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDA5OjQxOjI2LjE1NjAzMTE1M1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTQyNDA0MDA1MDY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBtb2RpZmllZCBmdW5jdGlvbnMgKHhkcF9idWlsZF9za2JfZnJvbV96YyBhbmQgeGRwX2NvcHlfZnJhZ3NfZnJvbV96YykgYXJlIG9ubHkgdXNlZCBieSBwaHlzaWNhbCBJbnRlbCBuZXR3b3JrIGRyaXZlcnMgKGljZSBhbmQgaWRwZiB2aWEgbGliZXRoKS4gVGhlc2UgaGFyZHdhcmUgZGV2aWNlcyBhcmUgbm90IGVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCBtYWtpbmcgdGhlIGNvZGUgcGF0aHMgaW1wb3NzaWJsZSB0byByZWFjaCBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNTY3NTNlM2I3ZDU0MWU0NjBkYTBjYTc1MDU1ZDg1ZTk2ZjdmMWI1Y1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVuIDI2IDA5OjQxOjI0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2NvcmUveGRwLmMgYi9uZXQvY29yZS94ZHAuY1xuaW5kZXggOTg5MGEzMDU4NGJhN2IuLjUyNTQ2NzQ2Mzc4YTBhIDEwMDY0NFxuLS0tIGEvbmV0L2NvcmUveGRwLmNcbisrKyBiL25ldC9jb3JlL3hkcC5jXG5AQCAtNjk4LDggKzY5OCw4IEBAIHN0YXRpYyBub2lubGluZSBib29sIHhkcF9jb3B5X2ZyYWdzX2Zyb21femMoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcbiBcdGZvciAodTMyIGkgPSAwOyBpIFx1MDAzYyBucl9mcmFnczsgaSsrKSB7XG4gXHRcdGNvbnN0IHNrYl9mcmFnX3QgKmZyYWcgPSBcdTAwMjZ4aW5mby1cdTAwM2VmcmFnc1tpXTtcbi1cdFx0dTMyIGxlbiA9IHNrYl9mcmFnX3NpemUoZnJhZyk7XG4tXHRcdHUzMiBvZmZzZXQsIHRydWVzaXplID0gbGVuO1xuK1x0XHR1MzIgb2Zmc2V0LCBsZW4gPSBza2JfZnJhZ19zaXplKGZyYWcpO1xuK1x0XHR1MzIgdHJ1ZXNpemUgPSBMQVJHRVNUX0FMSUdOKGxlbik7XG4gXHRcdHN0cnVjdCBwYWdlICpwYWdlO1xuIFxuIFx0XHRwYWdlID0gcGFnZV9wb29sX2Rldl9hbGxvYyhwcCwgXHUwMDI2b2Zmc2V0LCBcdTAwMjZ0cnVlc2l6ZSk7XG5AQCAtNzM4LDkgKzczOCwxMCBAQCBzdGF0aWMgbm9pbmxpbmUgYm9vbCB4ZHBfY29weV9mcmFnc19mcm9tX3pjKHN0cnVjdCBza19idWZmICpza2IsXG4gICovXG4gc3RydWN0IHNrX2J1ZmYgKnhkcF9idWlsZF9za2JfZnJvbV96YyhzdHJ1Y3QgeGRwX2J1ZmYgKnhkcClcbiB7XG4rXHR1MzIgaGVhZHJvb20gPSB4ZHAtXHUwMDNlZGF0YV9tZXRhIC0geGRwLVx1MDAzZWRhdGFfaGFyZF9zdGFydDtcbiBcdGNvbnN0IHN0cnVjdCB4ZHBfcnhxX2luZm8gKnJ4cSA9IHhkcC1cdTAwM2VyeHE7XG4gXHR1MzIgbGVuID0geGRwLVx1MDAzZWRhdGFfZW5kIC0geGRwLVx1MDAzZWRhdGFfbWV0YTtcbi1cdHUzMiB0cnVlc2l6ZSA9IHhkcC1cdTAwM2VmcmFtZV9zejtcbitcdHUzMiB0cnVlc2l6ZSA9IFNLQl9IRUFEX0FMSUdOKGhlYWRyb29tICsgbGVuKTtcbiBcdHN0cnVjdCBza19idWZmICpza2IgPSBOVUxMO1xuIFx0c3RydWN0IHBhZ2VfcG9vbCAqcHA7XG4gXHRpbnQgbWV0YWxlbjtcbkBAIC03NjIsNyArNzYzLDcgQEAgc3RydWN0IHNrX2J1ZmYgKnhkcF9idWlsZF9za2JfZnJvbV96YyhzdHJ1Y3QgeGRwX2J1ZmYgKnhkcClcbiBcdH1cbiBcbiBcdHNrYl9tYXJrX2Zvcl9yZWN5Y2xlKHNrYik7XG4tXHRza2JfcmVzZXJ2ZShza2IsIHhkcC1cdTAwM2VkYXRhX21ldGEgLSB4ZHAtXHUwMDNlZGF0YV9oYXJkX3N0YXJ0KTtcbitcdHNrYl9yZXNlcnZlKHNrYiwgaGVhZHJvb20pO1xuIFxuIFx0bWVtY3B5KF9fc2tiX3B1dChza2IsIGxlbiksIHhkcC1cdTAwM2VkYXRhX21ldGEsIExBUkdFU1RfQUxJR04obGVuKSk7XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwOTo0MToyNi4xNTYwMzIyNzNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTk1NTg2NzgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgWERQIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBhZmZlY3RpbmcgYG5ldC9jb3JlL3hkcC5jYC4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiB0aGVzZSB0d28gZnVuY3Rpb25zOiBgeGRwX2NvcHlfZnJhZ3NfZnJvbV96Y2AgYW5kIGB4ZHBfYnVpbGRfc2tiX2Zyb21femNgLiBJIG5lZWQgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgdGhpcyBjaGFuZ2UuIE15IGltbWVkaWF0ZSBnb2FsIGlzIHRvIG1hcCBvdXQgdGhlIGNhbGwgcGF0aHMgYW5kIGdyYXNwIHRoZSBwdXJwb3NlIG9mIHRoZXNlIHNwZWNpZmljIG1vZGlmaWNhdGlvbnMuIEknbGwgc3RhcnQgYnkgcmVmZXJlbmNpbmcgdGhlIGNvZGUncyBkb2N1bWVudGF0aW9uLCBhbmQgSSdsbCBqdW1wIHJpZ2h0IGludG8gdXNpbmcgYGdyZXBwZXJgIHRvIHRyYWNlIHRoZSBkZWZpbml0aW9ucyBhbmQgdXNhZ2VzIG9mIGJvdGggZnVuY3Rpb25zLiBJIG5lZWQgdG8gc2VlICpleGFjdGx5KiBob3cgdGhlc2UgYXJlIGJlaW5nIGludm9rZWQgYW5kIHVuZGVyIHdoYXQgY2lyY3Vtc3RhbmNlcy4gS25vd2luZyB0aGF0IHdpbGwgdGVsbCBtZSB0aGUgc2lnbmlmaWNhbmNlIG9mIHRoaXMgcGF0Y2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyNDIsIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwOTo0MTozMC4zNTE2MjA4NjVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzY3MDQwNTM1NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4ZHBfY29weV9mcmFnc19mcm9tX3pjXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jb3JlL3hkcC5jPTY3ND1FWFBPUlRfU1lNQk9MX0dQTCh4ZHBfYnVpbGRfc2tiX2Zyb21fYnVmZik7XFxuLS1cXG5uZXQvY29yZS94ZHAuYy02NzYtLyoqXFxubmV0L2NvcmUveGRwLmM6Njc3OiAqIHhkcF9jb3B5X2ZyYWdzX2Zyb21femMgLSBjb3B5IGZyYWdzIGZyb20gWFNrIGJ1ZmYgdG8gc2tiXFxubmV0L2NvcmUveGRwLmMtNjc4LSAqIEBza2I6IHNrYiB0byBjb3B5IGZyYWdzIHRvXFxuLS1cXG5uZXQvY29yZS94ZHAuYy02ODYtICovXFxubmV0L2NvcmUveGRwLmM6Njg3OnN0YXRpYyBub2lubGluZSBib29sIHhkcF9jb3B5X2ZyYWdzX2Zyb21femMoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvY29yZS94ZHAuYy02ODgtXFx0XFx0XFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCB4ZHBfYnVmZiAqeGRwLFxcbi0tXFxubmV0L2NvcmUveGRwLmM9NzM5PXN0cnVjdCBza19idWZmICp4ZHBfYnVpbGRfc2tiX2Zyb21femMoc3RydWN0IHhkcF9idWZmICp4ZHApXFxuLS1cXG5uZXQvY29yZS94ZHAuYy03NzgtXFx0aWYgKHVubGlrZWx5KHhkcF9idWZmX2hhc19mcmFncyh4ZHApKSBcXHUwMDI2XFx1MDAyNlxcbm5ldC9jb3JlL3hkcC5jOjc3OTpcXHQgICAgdW5saWtlbHkoIXhkcF9jb3B5X2ZyYWdzX2Zyb21femMoc2tiLCB4ZHAsIHBwKSkpIHtcXG5uZXQvY29yZS94ZHAuYy03ODAtXFx0XFx0bmFwaV9jb25zdW1lX3NrYihza2IsIHRydWUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwOTo0MTozNC4wMjIwMzEwODFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY2NjgxNjc5MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4ZHBfYnVpbGRfc2tiX2Zyb21femNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYz01Njc9aW50IGljZV9jbGVhbl9yeF9pcnFfemMoc3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy02NTUtXFx0XFx0LyogWERQX1BBU1MgcGF0aCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM6NjU2OlxcdFxcdHNrYiA9IHhkcF9idWlsZF9za2JfZnJvbV96YyhmaXJzdCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy02NTctXFx0XFx0aWYgKCFza2IpIHtcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaD00NDE9X19saWJldGhfeHNrX3J1bl9wYXNzKHN0cnVjdCBsaWJldGhfeGRwX2J1ZmYgKnhkcCxcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC00NzAtXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjQ3MTpcXHRza2IgPSB4ZHBfYnVpbGRfc2tiX2Zyb21femMoXFx1MDAyNnhkcC1cXHUwMDNlYmFzZSk7XFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTQ3Mi1cXHRpZiAodW5saWtlbHkoIXNrYikpIHtcXG4tLVxcbmluY2x1ZGUvbmV0L3hkcC5oPTM3Nz1zdHJ1Y3Qgc2tfYnVmZiAqeGRwX2J1aWxkX3NrYl9mcm9tX2J1ZmYoY29uc3Qgc3RydWN0IHhkcF9idWZmICp4ZHApO1xcbmluY2x1ZGUvbmV0L3hkcC5oOjM3ODpzdHJ1Y3Qgc2tfYnVmZiAqeGRwX2J1aWxkX3NrYl9mcm9tX3pjKHN0cnVjdCB4ZHBfYnVmZiAqeGRwKTtcXG5pbmNsdWRlL25ldC94ZHAuaC0zNzktc3RydWN0IHhkcF9mcmFtZSAqeGRwX2NvbnZlcnRfemNfdG9feGRwX2ZyYW1lKHN0cnVjdCB4ZHBfYnVmZiAqeGRwKTtcXG4tLVxcbm5ldC9jb3JlL3hkcC5jPTY4Nz1zdGF0aWMgbm9pbmxpbmUgYm9vbCB4ZHBfY29weV9mcmFnc19mcm9tX3pjKHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvY29yZS94ZHAuYy03MjYtLyoqXFxubmV0L2NvcmUveGRwLmM6NzI3OiAqIHhkcF9idWlsZF9za2JfZnJvbV96YyAtIGNyZWF0ZSBhbiBza2IgZnJvbSBYU2sgXFx1MDAyNnhkcF9idWZmXFxubmV0L2NvcmUveGRwLmMtNzI4LSAqIEB4ZHA6IHNvdXJjZSBYU2sgYnVmZlxcbi0tXFxubmV0L2NvcmUveGRwLmMtNzM4LSAqL1xcbm5ldC9jb3JlL3hkcC5jOjczOTpzdHJ1Y3Qgc2tfYnVmZiAqeGRwX2J1aWxkX3NrYl9mcm9tX3pjKHN0cnVjdCB4ZHBfYnVmZiAqeGRwKVxcbm5ldC9jb3JlL3hkcC5jLTc0MC17XFxuLS1cXG5uZXQvY29yZS94ZHAuYy03OTItfVxcbm5ldC9jb3JlL3hkcC5jOjc5MzpFWFBPUlRfU1lNQk9MX0dQTCh4ZHBfYnVpbGRfc2tiX2Zyb21femMpO1xcbm5ldC9jb3JlL3hkcC5jLTc5NC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDk6NDE6MzYuNjg4ODUzNzczWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQyMTk5NzY1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqWERQIGFuZCBSZWxhdGVkIENvZGUgU25pcHBldHMqKlxuXG5Pa2F5LCBzbyBJJ20gdHJhY2tpbmcgZG93biB0aGUgdXNhZ2Ugb2YgYHhkcF9idWlsZF9za2JfZnJvbV96Y2AuIEkga25vdyBpdCdzIGtpY2tpbmcgYXJvdW5kIGluIHRoZSBJbnRlbCBOSUMgZHJpdmVycywgc3BlY2lmaWNhbGx5IGluIHRoZSBgaWNlX3hzay5jYCBmaWxlIHdpdGhpbiB0aGUgYGljZWAgZGlyZWN0b3J5LCBhbmQgaXQncyBhbHNvIGRlY2xhcmVkIGluIGB4c2suaGAgd2l0aGluIHRoZSBgbmV0L2xpYmV0aGAgaW5jbHVkZSBwYXRoLiBUaGF04oCZcyBnb29kLCBhIGNsZWFyIHN0YXJ0aW5nIHBvaW50LiBJJ20gYXNzdW1pbmcgdGhhdCBpdCBpcyBhbHNvIGNhbGxlZCB3aXRoaW4gdGhlIGBsaWJldGhgIG1vZHVsZSwgdGhvdWdoIGl0J3MgdW5jbGVhciBpZiBpdCdzIGV4cGxpY2l0bHkgaW1wb3J0ZWQuIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHRoZSB1c2FnZSBvZiB0aGUgbW9kdWxlIGBsaWJldGhgIHRvIHZlcmlmeSBpZiBteSBodW5jaCBpcyBjb3JyZWN0LiBJIHNob3VsZCBwcm9iYWJseSBjaGVjayB0aGF0IGBpZHBmX3R4cnguY2AgZmlsZSBpbiB0aGUgYGlkcGZgIGRpcmVjdG9yeSwgaXQncyB2ZXJ5IHBvc3NpYmxlIGBsaWJldGhgIGlzIGJlaW5nIHVzZWQgdGhlcmUuIEl0J3MgdGltZSB0byBkaWcgYSBiaXQgZGVlcGVyIGFuZCBjb25maXJtIHRoYXQgY29ubmVjdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzU3MywiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciIsImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwOTo0MTo0MS4xMTA4NTM1MjFaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI2NDI5MzU2MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX2xpYmV0aF94c2tfcnVuX3Bhc3NcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3hzay5jPTY3PUVYUE9SVF9TWU1CT0xfR1BMKGxpYmV0aF94c2tfYnVmZl9hZGRfZnJhZyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgveHNrLmMtNzMtICpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgveHNrLmM6NzQ6ICogRXh0ZXJuYWwgaGVscGVyIHVzZWQgYnkgX19saWJldGhfeHNrX3J1bl9wYXNzKCksIGRvIG5vdCBjYWxsIGRpcmVjdGx5LlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC94c2suYy03NS0gKiBBZGRzIGJ1ZmZlcidzIGZyYWdzIGNvdW50IGFuZCB0b3RhbCBsZW4gdG8gdGhlIG9uc3RhY2sgc3RhdHMuXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg9MzkwPV9fbGliZXRoX3hza19ydW5fcHJvZyhzdHJ1Y3QgbGliZXRoX3hkcF9idWZmICp4ZHAsXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtNDIzLS8qKlxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDo0MjQ6ICogX19saWJldGhfeHNrX3J1bl9wYXNzIC0gaGVscGVyIHRvIHJ1biBYRFAgcHJvZ3JhbSBhbmQgaGFuZGxlIHRoZSByZXN1bHRcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtNDI1LSAqIEB4ZHA6IFhTayBidWZmZXIgdG8gcHJvY2Vzc1xcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oPTQ0MD1zdGF0aWMgX19hbHdheXNfaW5saW5lIGJvb2xcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6NDQxOl9fbGliZXRoX3hza19ydW5fcGFzcyhzdHJ1Y3QgbGliZXRoX3hkcF9idWZmICp4ZHAsXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTQ0Mi1cXHRcXHQgICAgICBzdHJ1Y3QgbGliZXRoX3hkcF90eF9idWxrICpicSwgc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLFxcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTUwMC0jZGVmaW5lIGxpYmV0aF94c2tfcnVuX3Bhc3MoeGRwLCBicSwgbmFwaSwgcnMsIGRlc2MsIHJ1biwgcG9wdWxhdGUpXFx0ICAgICBcXFxcXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjUwMTpcXHRfX2xpYmV0aF94c2tfcnVuX3Bhc3MoeGRwLCBicSwgbmFwaSwgcnMsIGRlc2MsIGxpYmV0aF94ZHBfcHJlcF9kZXNjLCBcXFxcXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTUwMi1cXHRcXHRcXHQgICAgICBydW4sIHBvcHVsYXRlKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwOTo0MTo0My4zNzUxNTE2NzRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNTQ4NTE3ODc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqVHJhY2luZyB0aGUgVXNhZ2Ugb2YgYGxpYmV0aF94c2tfcnVuX3Bhc3NgKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJvbGUgb2YgYGxpYmV0aF94c2tfcnVuX3Bhc3NgLiBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgZmlndXJpbmcgb3V0IHdoZXJlIGl0J3MgYWN0dWFsbHkgKnVzZWQqIHdpdGhpbiB0aGUgbGFyZ2VyIGNvZGUgYmFzZS4gSSBuZWVkIHRvIHRyYWNlIGl0cyByZWZlcmVuY2VzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgaW4gd2hpY2ggaXQgb3BlcmF0ZXMuIFRoaXMga2luZCBvZiBpbnZlc3RpZ2F0aW9uIGlzIGZ1bmRhbWVudGFsIHRvIGNvbXByZWhlbmRpbmcgdGhlIGNvbnRyb2wgZmxvdyBhbmQgZGF0YSBkZXBlbmRlbmNpZXMuIEEgcXVpY2sgc2VhcmNoIGZvciBpdHMgdXNlcyB3aWxsIGdpdmUgbWUgdGhhdCBpbnNpZ2h0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDEwLCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDk6NDE6NDUuOTIzNjcxNTU4WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNzgxNzExMDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibGliZXRoX3hza19ydW5fcGFzc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgveHNrLmM9Njc9RVhQT1JUX1NZTUJPTF9HUEwobGliZXRoX3hza19idWZmX2FkZF9mcmFnKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC94c2suYy03My0gKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC94c2suYzo3NDogKiBFeHRlcm5hbCBoZWxwZXIgdXNlZCBieSBfX2xpYmV0aF94c2tfcnVuX3Bhc3MoKSwgZG8gbm90IGNhbGwgZGlyZWN0bHkuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3hzay5jLTc1LSAqIEFkZHMgYnVmZmVyJ3MgZnJhZ3MgY291bnQgYW5kIHRvdGFsIGxlbiB0byB0aGUgb25zdGFjayBzdGF0cy5cXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaD0zOTA9X19saWJldGhfeHNrX3J1bl9wcm9nKHN0cnVjdCBsaWJldGhfeGRwX2J1ZmYgKnhkcCxcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC00MjMtLyoqXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjQyNDogKiBfX2xpYmV0aF94c2tfcnVuX3Bhc3MgLSBoZWxwZXIgdG8gcnVuIFhEUCBwcm9ncmFtIGFuZCBoYW5kbGUgdGhlIHJlc3VsdFxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC00MjUtICogQHhkcDogWFNrIGJ1ZmZlciB0byBwcm9jZXNzXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg9NDQwPXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgYm9vbFxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDo0NDE6X19saWJldGhfeHNrX3J1bl9wYXNzKHN0cnVjdCBsaWJldGhfeGRwX2J1ZmYgKnhkcCxcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtNDQyLVxcdFxcdCAgICAgIHN0cnVjdCBsaWJldGhfeGRwX3R4X2J1bGsgKmJxLCBzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtNDg3LS8qKlxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDo0ODg6ICogbGliZXRoX3hza19ydW5fcGFzcyAtIGhlbHBlciB0byBydW4gWERQIHByb2dyYW0gYW5kIGhhbmRsZSB0aGUgcmVzdWx0XFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTQ4OS0gKiBAeGRwOiBYU2sgYnVmZmVyIHRvIHByb2Nlc3NcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC00OTktICovXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjUwMDojZGVmaW5lIGxpYmV0aF94c2tfcnVuX3Bhc3MoeGRwLCBicSwgbmFwaSwgcnMsIGRlc2MsIHJ1biwgcG9wdWxhdGUpXFx0ICAgICBcXFxcXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjUwMTpcXHRfX2xpYmV0aF94c2tfcnVuX3Bhc3MoeGRwLCBicSwgbmFwaSwgcnMsIGRlc2MsIGxpYmV0aF94ZHBfcHJlcF9kZXNjLCBcXFxcXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTUwMi1cXHRcXHRcXHQgICAgICBydW4sIHBvcHVsYXRlKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwOTo0MTo0OC4yMDE4NDc4OFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTMyNzA0OTkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUuIE15IGZpcnN0IHRob3VnaHQgaXM6ICoqSGFuZyBvbiBhIHNlY29uZCwgYW0gSSByZWFkaW5nIHRoaXMgcmlnaHQ/IElzIGBsaWJldGhfeHNrX3J1bl9wYXNzYCBhY3R1YWxseSB1bnVzZWQ/KiogVGhhdCdzLi4uIHN1cnByaXNpbmcuIFRoaXMgZnVuY3Rpb24gc2VlbXMgY2VudHJhbCB0byB0aGUgY29yZSBmdW5jdGlvbmFsaXR5LCBkb2Vzbid0IGl0PyBJIG5lZWQgdG8gdmVyaWZ5IHRoaXMgY2xhaW0uIEknbGwgZG91YmxlLWNoZWNrIGl0cyBkZWZpbml0aW9uLCByZWZlcmVuY2VzLCBhbmQgY2FsbGluZyBsb2NhdGlvbnMuIExldCBtZSBnbyBiYWNrIHRvIHdoZXJlIEkgc2F3IHRoZSBpbml0aWFsIHJlZmVyZW5jZSB0byB0aGlzIGZ1bmN0aW9uLiBJIG5lZWQgdG8gdHJhY2UgdGhyb3VnaCB0aGUgY29kZSBhZ2FpbiBhbmQgbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgc29tZXRoaW5nLiBTb21ldGltZXMgdGhlc2UgdGhpbmdzIGFyZSB0cmlja3kgdG8gc3BvdCBpZiB0aGUgY2FsbCBpcyBpbmRpcmVjdCBvciBjb25kaXRpb25hbC4gSSdtIGdvaW5nIHRvIHJldmlzaXQgYGxpYmV0aF94c2tfcnVuX3Bhc3NgIGFuZCBtZXRpY3Vsb3VzbHkgcmUtZXhhbWluZSBpdHMgcm9sZSBpbiB0aGUgc3lzdGVtLiBJIGhhdmUgdG8gYmUgYWJzb2x1dGVseSBzdXJlIGJlY2F1c2UgaWYgaXQncyB0cnVseSB1bnVzZWQsIHRoYXQgb3BlbnMgYSB3aG9sZSBjYW4gb2Ygd29ybXMgaW4gdGVybXMgb2YgY29kZSBjbGVhbnVwIGFuZCBwb3RlbnRpYWwgaW1wbGljYXRpb25zIGZvciBzeXN0ZW0gYmVoYXZpb3IuIE9rYXksIGJhY2sgdG8gdGhlIGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUxODcsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwOTo0MTo1MS4xMzQ1NTUzNDFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMzcwNzExNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibGliZXRoX3hza19ydW5fcGFzc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgveHNrLmM9Njc9RVhQT1JUX1NZTUJPTF9HUEwobGliZXRoX3hza19idWZmX2FkZF9mcmFnKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC94c2suYy03My0gKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC94c2suYzo3NDogKiBFeHRlcm5hbCBoZWxwZXIgdXNlZCBieSBfX2xpYmV0aF94c2tfcnVuX3Bhc3MoKSwgZG8gbm90IGNhbGwgZGlyZWN0bHkuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3hzay5jLTc1LSAqIEFkZHMgYnVmZmVyJ3MgZnJhZ3MgY291bnQgYW5kIHRvdGFsIGxlbiB0byB0aGUgb25zdGFjayBzdGF0cy5cXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaD0zOTA9X19saWJldGhfeHNrX3J1bl9wcm9nKHN0cnVjdCBsaWJldGhfeGRwX2J1ZmYgKnhkcCxcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC00MjMtLyoqXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjQyNDogKiBfX2xpYmV0aF94c2tfcnVuX3Bhc3MgLSBoZWxwZXIgdG8gcnVuIFhEUCBwcm9ncmFtIGFuZCBoYW5kbGUgdGhlIHJlc3VsdFxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC00MjUtICogQHhkcDogWFNrIGJ1ZmZlciB0byBwcm9jZXNzXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg9NDQwPXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgYm9vbFxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDo0NDE6X19saWJldGhfeHNrX3J1bl9wYXNzKHN0cnVjdCBsaWJldGhfeGRwX2J1ZmYgKnhkcCxcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtNDQyLVxcdFxcdCAgICAgIHN0cnVjdCBsaWJldGhfeGRwX3R4X2J1bGsgKmJxLCBzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtNDg3LS8qKlxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDo0ODg6ICogbGliZXRoX3hza19ydW5fcGFzcyAtIGhlbHBlciB0byBydW4gWERQIHByb2dyYW0gYW5kIGhhbmRsZSB0aGUgcmVzdWx0XFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTQ4OS0gKiBAeGRwOiBYU2sgYnVmZmVyIHRvIHByb2Nlc3NcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC00OTktICovXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjUwMDojZGVmaW5lIGxpYmV0aF94c2tfcnVuX3Bhc3MoeGRwLCBicSwgbmFwaSwgcnMsIGRlc2MsIHJ1biwgcG9wdWxhdGUpXFx0ICAgICBcXFxcXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjUwMTpcXHRfX2xpYmV0aF94c2tfcnVuX3Bhc3MoeGRwLCBicSwgbmFwaSwgcnMsIGRlc2MsIGxpYmV0aF94ZHBfcHJlcF9kZXNjLCBcXFxcXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTUwMi1cXHRcXHRcXHQgICAgICBydW4sIHBvcHVsYXRlKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwOTo0MTo1My40NzE2MzI3ODFaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg0NTI5NTMxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqRm9jdXNpbmcgb24gWmVyby1Db3B5IFhEUCBJbXBsZW1lbnRhdGlvbnMqKlxuXG5SaWdodCwgc28gSSdtIHRoaW5raW5nIGFib3V0IHRoYXQgZnVuY3Rpb24gYWdhaW4g4oCTIGB4ZHBfYnVpbGRfc2tiX2Zyb21femNgLiBJIHZhZ3VlbHkgcmVtZW1iZXIgZW5jb3VudGVyaW5nIHNvbWV0aGluZyBzaW1pbGFyIHJlY2VudGx5Li4uIHdoZXJlIHdhcyBpdD8gSG1tLCBsaWtlbHkgaXQncyBuZXN0bGVkIHNvbWV3aGVyZSBkZWVwIHdpdGhpbiB0aGUgbmV0d29yayBkcml2ZXIgc3RhY2suIEknbSBnb2luZyB0byBndWVzcyBzb21ldGhpbmcgbGlrZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguY2AgaXMgaW52b2x2ZWQgaGVyZSwgbWF5YmUgZXZlbiBtb3JlIHRoYW4gb25lIGZpbGUuIFRoZXNlIHplcm8tY29weSBYRFAgaW1wbGVtZW50YXRpb25zIGFyZSB0eXBpY2FsbHkgaGFuZGxlZCBwcmV0dHkgbG93LWxldmVsLiBMZXQncyBmaXJlIHVwIGEgbmV3IHNlYXJjaCwganVzdCB0byBiZSBjZXJ0YWluLiBJJ2xsIHNlYXJjaCBmb3IgdGhlIGZ1bmN0aW9uIGFnYWluIGFuZCBzZWUgaWYgSSBjYW4gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIHNwZWNpZmljcy4gVGhhdCBzaG91bGQgbmFycm93IGRvd24gd2hpY2ggY29kZSBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgaW4gbW9yZSBkZXRhaWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYwNjEsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwOTo0MTo1Ni4zMTY5MzEwOTZaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNTg0MjM1ODYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieGRwX2J1aWxkX3NrYl9mcm9tX3pjXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM9NTY3PWludCBpY2VfY2xlYW5fcnhfaXJxX3pjKHN0cnVjdCBpY2VfcnhfcmluZyAqcnhfcmluZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtNjU1LVxcdFxcdC8qIFhEUF9QQVNTIHBhdGggKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jOjY1NjpcXHRcXHRza2IgPSB4ZHBfYnVpbGRfc2tiX2Zyb21femMoZmlyc3QpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtNjU3LVxcdFxcdGlmICghc2tiKSB7XFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg9NDQxPV9fbGliZXRoX3hza19ydW5fcGFzcyhzdHJ1Y3QgbGliZXRoX3hkcF9idWZmICp4ZHAsXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtNDcwLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDo0NzE6XFx0c2tiID0geGRwX2J1aWxkX3NrYl9mcm9tX3pjKFxcdTAwMjZ4ZHAtXFx1MDAzZWJhc2UpO1xcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC00NzItXFx0aWYgKHVubGlrZWx5KCFza2IpKSB7XFxuLS1cXG5pbmNsdWRlL25ldC94ZHAuaD0zNzc9c3RydWN0IHNrX2J1ZmYgKnhkcF9idWlsZF9za2JfZnJvbV9idWZmKGNvbnN0IHN0cnVjdCB4ZHBfYnVmZiAqeGRwKTtcXG5pbmNsdWRlL25ldC94ZHAuaDozNzg6c3RydWN0IHNrX2J1ZmYgKnhkcF9idWlsZF9za2JfZnJvbV96YyhzdHJ1Y3QgeGRwX2J1ZmYgKnhkcCk7XFxuaW5jbHVkZS9uZXQveGRwLmgtMzc5LXN0cnVjdCB4ZHBfZnJhbWUgKnhkcF9jb252ZXJ0X3pjX3RvX3hkcF9mcmFtZShzdHJ1Y3QgeGRwX2J1ZmYgKnhkcCk7XFxuLS1cXG5uZXQvY29yZS94ZHAuYz02ODc9c3RhdGljIG5vaW5saW5lIGJvb2wgeGRwX2NvcHlfZnJhZ3NfZnJvbV96YyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L2NvcmUveGRwLmMtNzI2LS8qKlxcbm5ldC9jb3JlL3hkcC5jOjcyNzogKiB4ZHBfYnVpbGRfc2tiX2Zyb21femMgLSBjcmVhdGUgYW4gc2tiIGZyb20gWFNrIFxcdTAwMjZ4ZHBfYnVmZlxcbm5ldC9jb3JlL3hkcC5jLTcyOC0gKiBAeGRwOiBzb3VyY2UgWFNrIGJ1ZmZcXG4tLVxcbm5ldC9jb3JlL3hkcC5jLTczOC0gKi9cXG5uZXQvY29yZS94ZHAuYzo3Mzk6c3RydWN0IHNrX2J1ZmYgKnhkcF9idWlsZF9za2JfZnJvbV96YyhzdHJ1Y3QgeGRwX2J1ZmYgKnhkcClcXG5uZXQvY29yZS94ZHAuYy03NDAte1xcbi0tXFxubmV0L2NvcmUveGRwLmMtNzkyLX1cXG5uZXQvY29yZS94ZHAuYzo3OTM6RVhQT1JUX1NZTUJPTF9HUEwoeGRwX2J1aWxkX3NrYl9mcm9tX3pjKTtcXG5uZXQvY29yZS94ZHAuYy03OTQtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDA5OjQxOjU4LjU3NTM1ODc4MloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDgzMjAzNjY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdW5kZXJzdGFuZGluZywgY29uc2lkZXJpbmcgSSdtIHRyeWluZyB0byBmaWd1cmUgb3V0IHdoZXJlIHRoaXMgY29kZSBzbmlwcGV0IGlzIHJlbGV2YW50OlxuXG4qKlBpbnBvaW50aW5nIHRoZSBDb2RlJ3MgVXNhZ2UqKlxuXG5SaWdodCwgc28gdGhpcyBwaWVjZSBvZiBjb2RlIGlzIGRlZmluaXRlbHkgdGllZCB0byBzb21lIHplcm8tY29weSBtYWdpYyB3aXRoaW4gdGhlIEFGX1hEUCBjb250ZXh0LiBTcGVjaWZpY2FsbHksIEkgc2VlIGl0J3MgdXNlZCBpbiB0aGUgYGljZV9jbGVhbl9yeF9pcnFfemNgIGZ1bmN0aW9uLCB3aGljaCwgYXMgSSByZWNhbGwsIGlzIHRoZSB6ZXJvLWNvcHkgcmVjZWl2ZSBwYXRoIHdpdGhpbiB0aGUgYGljZWAgZHJpdmVyIOKAkyB0aGF0J3MgdGhlIEludGVsIEV0aGVybmV0IGNvbm5lY3Rpb24gKElDRSkgZHJpdmVyLCByaWdodD8gR290IGl0LlxuXG5GdXJ0aGVybW9yZSwgSSBzZWUgaXQncyBhbHNvIHJlZmVyZW5jZWQgaW4gYF9fbGliZXRoX3hza19ydW5fcGFzc2AsIHdoaWNoIGlzIGRlZmluZWQgd2l0aGluIGBpbmNsdWRlL25ldC9saWJldGgveHNrLmhgLiBUaGlzIHN1Z2dlc3RzIHRoYXQgaXQncyBwYXJ0IG9mIGEgYnJvYWRlciwgbW9yZSBnZW5lcmljIGxpYnJhcnkgZm9yIFhEUCBzb2NrZXRzLCBidXQgSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgd2hlcmUgYF9fbGliZXRoX3hza19ydW5fcGFzc2AgaXRzZWxmIGlzIHVzZWQuIEl0IHdvdWxkIGJlIGhlbHBmdWwgdG8gY29uZmlybSB3aGljaCBkcml2ZXJzIGFyZSBsZXZlcmFnaW5nIHRoaXMgY29tbW9uIGZ1bmN0aW9uLiBUaGF0IHdpbGwgdGVsbCBtZSB3aGVyZSBlbHNlLCBiZXlvbmQgdGhlIG9idmlvdXMgSW50ZWwgZHJpdmVycywgdGhpcyB6ZXJvLWNvcHkgZnVuY3Rpb25hbGl0eSBpcyB1dGlsaXplZC4gSSBuZWVkIHRvIHRyYWNlIHRoaXMgY2FsbCBjaGFpbiB0byBnZXQgYSBmdWxsIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY5OTYsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwOTo0MjowMy4wNTg1NjQwODFaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1MDM3MTQyNzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19saWJldGhfeHNrX3J1bl9wYXNzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC94c2suYz02Nz1FWFBPUlRfU1lNQk9MX0dQTChsaWJldGhfeHNrX2J1ZmZfYWRkX2ZyYWcpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3hzay5jLTczLSAqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3hzay5jOjc0OiAqIEV4dGVybmFsIGhlbHBlciB1c2VkIGJ5IF9fbGliZXRoX3hza19ydW5fcGFzcygpLCBkbyBub3QgY2FsbCBkaXJlY3RseS5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgveHNrLmMtNzUtICogQWRkcyBidWZmZXIncyBmcmFncyBjb3VudCBhbmQgdG90YWwgbGVuIHRvIHRoZSBvbnN0YWNrIHN0YXRzLlxcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oPTM5MD1fX2xpYmV0aF94c2tfcnVuX3Byb2coc3RydWN0IGxpYmV0aF94ZHBfYnVmZiAqeGRwLFxcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTQyMy0vKipcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6NDI0OiAqIF9fbGliZXRoX3hza19ydW5fcGFzcyAtIGhlbHBlciB0byBydW4gWERQIHByb2dyYW0gYW5kIGhhbmRsZSB0aGUgcmVzdWx0XFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTQyNS0gKiBAeGRwOiBYU2sgYnVmZmVyIHRvIHByb2Nlc3NcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaD00NDA9c3RhdGljIF9fYWx3YXlzX2lubGluZSBib29sXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjQ0MTpfX2xpYmV0aF94c2tfcnVuX3Bhc3Moc3RydWN0IGxpYmV0aF94ZHBfYnVmZiAqeGRwLFxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC00NDItXFx0XFx0ICAgICAgc3RydWN0IGxpYmV0aF94ZHBfdHhfYnVsayAqYnEsIHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSxcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC01MDAtI2RlZmluZSBsaWJldGhfeHNrX3J1bl9wYXNzKHhkcCwgYnEsIG5hcGksIHJzLCBkZXNjLCBydW4sIHBvcHVsYXRlKVxcdCAgICAgXFxcXFxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDo1MDE6XFx0X19saWJldGhfeHNrX3J1bl9wYXNzKHhkcCwgYnEsIG5hcGksIHJzLCBkZXNjLCBsaWJldGhfeGRwX3ByZXBfZGVzYywgXFxcXFxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC01MDItXFx0XFx0XFx0ICAgICAgcnVuLCBwb3B1bGF0ZSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDk6NDI6MDUuNTYyMjgzMzY2WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNTI2Njg1ODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhpcyBjb2RlOlxuXG4qKkNoZWNraW5nIGZvciBgbGliZXRoX3hza19ydW5fcGFzc2AgVXNhZ2UqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBgbGliZXRoX3hza19ydW5fcGFzc2AgaXMgYWN0dWFsbHkgYmVpbmcgdXRpbGl6ZWQgYW55d2hlcmUgaW4gdGhlIGNvZGViYXNlLiBUaGlzIGlzIGEgcHJldHR5IHN0YW5kYXJkIGRlYnVnZ2luZyBzdGVwLiBCZWZvcmUgSSBkaXZlIGludG8gdW5kZXJzdGFuZGluZyB3aGF0IGl0ICpkb2VzKiwgSSBuZWVkIHRvIGVzdGFibGlzaCBpdHMgKnJlbGV2YW5jZSouIEknbGwgbmVlZCB0byBnbyB0aHJvdWdoIHRoZSBjb2RlIGFuZCBxdWlja2x5IGRldGVybWluZSBpZiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCwgYW5kIGZyb20gd2hlcmUuIFRoaXMgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgcm9sZSBpbiB0aGUgb3ZlcmFsbCBleGVjdXRpb24gZmxvdy4gSSdsbCBwcm9iYWJseSBzdGFydCB3aXRoIGEgZ3JlcCBvciBhIHNpbWlsYXIgc2VhcmNoIHRvb2wsIGxvb2tpbmcgZm9yIGFueSBpbnN0YW5jZXMgb2YgdGhhdCBmdW5jdGlvbiBuYW1lLiBUaGVuLCBJIGNhbiBzdGFydCB0byByZWFzb24gdGhyb3VnaCB0aGUgY2FsbCBzdGFjayBvZiB0aGF0IGZ1bmN0aW9uIGFuZCBpdHMgcmVsYXRpb25zIHdpdGggb3RoZXIgY29tcG9uZW50cywgYWZ0ZXIgaWRlbnRpZnlpbmcgdGhlbS4gVW5kZXJzdGFuZGluZyBpdHMgdXNhZ2Ugd2lsbCBkaWN0YXRlIGhvdyBtdWNoIGZ1cnRoZXIgZWZmb3J0IEkgbmVlZCB0byBpbnZlc3QgaW4gdW5kZXJzdGFuZGluZyBpdHMgcHVycG9zZSBhbmQgaW1wbGVtZW50YXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc4NzQsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwOTo0MjowOC43MTQ5NTQwMThaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0NTg5MzQ1NDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibGliZXRoX3hza19ydW5fcGFzc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgveHNrLmM9Njc9RVhQT1JUX1NZTUJPTF9HUEwobGliZXRoX3hza19idWZmX2FkZF9mcmFnKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC94c2suYy03My0gKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC94c2suYzo3NDogKiBFeHRlcm5hbCBoZWxwZXIgdXNlZCBieSBfX2xpYmV0aF94c2tfcnVuX3Bhc3MoKSwgZG8gbm90IGNhbGwgZGlyZWN0bHkuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3hzay5jLTc1LSAqIEFkZHMgYnVmZmVyJ3MgZnJhZ3MgY291bnQgYW5kIHRvdGFsIGxlbiB0byB0aGUgb25zdGFjayBzdGF0cy5cXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaD0zOTA9X19saWJldGhfeHNrX3J1bl9wcm9nKHN0cnVjdCBsaWJldGhfeGRwX2J1ZmYgKnhkcCxcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC00MjMtLyoqXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjQyNDogKiBfX2xpYmV0aF94c2tfcnVuX3Bhc3MgLSBoZWxwZXIgdG8gcnVuIFhEUCBwcm9ncmFtIGFuZCBoYW5kbGUgdGhlIHJlc3VsdFxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC00MjUtICogQHhkcDogWFNrIGJ1ZmZlciB0byBwcm9jZXNzXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg9NDQwPXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgYm9vbFxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDo0NDE6X19saWJldGhfeHNrX3J1bl9wYXNzKHN0cnVjdCBsaWJldGhfeGRwX2J1ZmYgKnhkcCxcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtNDQyLVxcdFxcdCAgICAgIHN0cnVjdCBsaWJldGhfeGRwX3R4X2J1bGsgKmJxLCBzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtNDg3LS8qKlxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDo0ODg6ICogbGliZXRoX3hza19ydW5fcGFzcyAtIGhlbHBlciB0byBydW4gWERQIHByb2dyYW0gYW5kIGhhbmRsZSB0aGUgcmVzdWx0XFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTQ4OS0gKiBAeGRwOiBYU2sgYnVmZmVyIHRvIHByb2Nlc3NcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC00OTktICovXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjUwMDojZGVmaW5lIGxpYmV0aF94c2tfcnVuX3Bhc3MoeGRwLCBicSwgbmFwaSwgcnMsIGRlc2MsIHJ1biwgcG9wdWxhdGUpXFx0ICAgICBcXFxcXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjUwMTpcXHRfX2xpYmV0aF94c2tfcnVuX3Bhc3MoeGRwLCBicSwgbmFwaSwgcnMsIGRlc2MsIGxpYmV0aF94ZHBfcHJlcF9kZXNjLCBcXFxcXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTUwMi1cXHRcXHRcXHQgICAgICBydW4sIHBvcHVsYXRlKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwOTo0MjoxMS4xNzM4OTMwMTNaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU0MTMyNjUzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIHRoZSBgeGRwX2J1aWxkX3NrYl9mcm9tX3pjYCBGdW5jdGlvbioqXG5cbk9rYXksIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBgeGRwX2J1aWxkX3NrYl9mcm9tX3pjYCBpcyBiZWluZyB1c2VkLiBGaXJzdCwgSSByZW1lbWJlciBhbHJlYWR5IHNlYXJjaGluZyBmb3IgYGxpYmV0aF94c2tfcnVuX3Bhc3NgLCBzbyBsZXQncyBzZWUgd2hlcmUgdGhhdCB0YWtlcyB1cy4gTm93LCBpcyB0aGVyZSBhbnkgb3RoZXIgZHJpdmVyIG1ha2luZyB1c2Ugb2YgdGhlIGB4ZHBfYnVpbGRfc2tiX2Zyb21femNgIGZ1bmN0aW9uIGFzaWRlIGZyb20gdGhlIG9uZXMgSSd2ZSBwcmV2aW91c2x5IG5vdGVkPyBCYXNlZCBvbiBteSBwcmlvciBzZWFyY2hlcywgaXQgYXBwZWFycyB0aGUgb25seSB1c2VycyBhcmUgYGljZWAgYW5kIGBsaWJldGhgLiBBaCwgcmlnaHQsIGBsaWJldGhgIGlzIHRoZSBsaWJyYXJ5IGNvbXBvbmVudCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byBJbnRlbCBFdGhlcm5ldCBkcml2ZXJzLiBOb3cgSSBuZWVkIHRvIGJyb2FkZW4gdGhlIHNjb3BlOyBsZXQncyBzZWFyY2ggKmFsbCogZmlsZXMgZm9yIGB4ZHBfYnVpbGRfc2tiX2Zyb21femNgIHRvIG1ha2Ugc3VyZSBub3RoaW5nIGhhcyBlc2NhcGVkIG15IGF0dGVudGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6ODcyNSwiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDA5OjQyOjE0LjcxNTIyMTc5NloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjg2MjY2MzIxMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4ZHBfYnVpbGRfc2tiX2Zyb21femNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYz01Njc9aW50IGljZV9jbGVhbl9yeF9pcnFfemMoc3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy02NTUtXFx0XFx0LyogWERQX1BBU1MgcGF0aCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM6NjU2OlxcdFxcdHNrYiA9IHhkcF9idWlsZF9za2JfZnJvbV96YyhmaXJzdCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy02NTctXFx0XFx0aWYgKCFza2IpIHtcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaD00NDE9X19saWJldGhfeHNrX3J1bl9wYXNzKHN0cnVjdCBsaWJldGhfeGRwX2J1ZmYgKnhkcCxcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC00NzAtXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjQ3MTpcXHRza2IgPSB4ZHBfYnVpbGRfc2tiX2Zyb21femMoXFx1MDAyNnhkcC1cXHUwMDNlYmFzZSk7XFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTQ3Mi1cXHRpZiAodW5saWtlbHkoIXNrYikpIHtcXG4tLVxcbmluY2x1ZGUvbmV0L3hkcC5oPTM3Nz1zdHJ1Y3Qgc2tfYnVmZiAqeGRwX2J1aWxkX3NrYl9mcm9tX2J1ZmYoY29uc3Qgc3RydWN0IHhkcF9idWZmICp4ZHApO1xcbmluY2x1ZGUvbmV0L3hkcC5oOjM3ODpzdHJ1Y3Qgc2tfYnVmZiAqeGRwX2J1aWxkX3NrYl9mcm9tX3pjKHN0cnVjdCB4ZHBfYnVmZiAqeGRwKTtcXG5pbmNsdWRlL25ldC94ZHAuaC0zNzktc3RydWN0IHhkcF9mcmFtZSAqeGRwX2NvbnZlcnRfemNfdG9feGRwX2ZyYW1lKHN0cnVjdCB4ZHBfYnVmZiAqeGRwKTtcXG4tLVxcbm5ldC9jb3JlL3hkcC5jPTY4Nz1zdGF0aWMgbm9pbmxpbmUgYm9vbCB4ZHBfY29weV9mcmFnc19mcm9tX3pjKHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvY29yZS94ZHAuYy03MjYtLyoqXFxubmV0L2NvcmUveGRwLmM6NzI3OiAqIHhkcF9idWlsZF9za2JfZnJvbV96YyAtIGNyZWF0ZSBhbiBza2IgZnJvbSBYU2sgXFx1MDAyNnhkcF9idWZmXFxubmV0L2NvcmUveGRwLmMtNzI4LSAqIEB4ZHA6IHNvdXJjZSBYU2sgYnVmZlxcbi0tXFxubmV0L2NvcmUveGRwLmMtNzM4LSAqL1xcbm5ldC9jb3JlL3hkcC5jOjczOTpzdHJ1Y3Qgc2tfYnVmZiAqeGRwX2J1aWxkX3NrYl9mcm9tX3pjKHN0cnVjdCB4ZHBfYnVmZiAqeGRwKVxcbm5ldC9jb3JlL3hkcC5jLTc0MC17XFxuLS1cXG5uZXQvY29yZS94ZHAuYy03OTItfVxcbm5ldC9jb3JlL3hkcC5jOjc5MzpFWFBPUlRfU1lNQk9MX0dQTCh4ZHBfYnVpbGRfc2tiX2Zyb21femMpO1xcbm5ldC9jb3JlL3hkcC5jLTc5NC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDk6NDI6MTcuNTc3ODk2Mjk3WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk3NzI0NDkxNjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBUYXJnZXQgRHJpdmVyIGFuZCBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIHRoZSBgaWNlYCBkcml2ZXIgaXMgdGhlIG9ubHkgb25lIEkgc2VlIHVzaW5nIHRoaXMsIGFsb25nIHdpdGggYGxpYmV0aGAsIHdoaWNoIG1pZ2h0IGFsc28gYmUgbGlua2VkIHRvIGBpZHBmYCBvciBgaWF2ZmAuIEJ1dCBgaWNlYC4uLiB0aGF0J3MgYSAqcGh5c2ljYWwqIG5ldHdvcmsgY2FyZCBkcml2ZXIsIHJpZ2h0PyBIbW0sIGNhbiB3ZSBldmVuIGZ1enogc29tZXRoaW5nIGxpa2UgdGhhdCBlZmZlY3RpdmVseT8gVHlwaWNhbGx5LCBwaHlzaWNhbCBuZXR3b3JrIGNhcmQgZHJpdmVycyBkb24ndCBsZW5kIHRoZW1zZWx2ZXMgdG8gZnV6emluZyBkaXJlY3RseSBpbiBhIHZpcnR1YWxpemVkIHNldHRpbmcsIHVubGVzcyB3ZSd2ZSBnb3QgYSBzb2Z0d2FyZSBlbXVsYXRvciBpbiB0aGUgbWl4LCBvciBjYW4gbGV2ZXJhZ2Ugc29tZXRoaW5nIGxpa2UgYHZldGhgIG9yIGB0dW5gL2BtYWN2bGFuYC5cblxuV2FpdCBhIG1pbnV0ZSwgSSdtIGp1c3QgZ2V0dGluZyBteSB0aGlua2luZyBzdHJhaWdodCAtIGB4ZHBfYnVpbGRfc2tiX2Zyb21femNgIGlzIGEgcGFydCBvZiB0aGUgWERQIHplcm8tY29weSAoQUZfWERQKSBwYXRoLCBpc24ndCBpdD8gQUZfWERQIHplcm8tY29weSBpcyByZXN0cmljdGVkIHRvIHNwZWNpZmljIGRyaXZlcnMuIE5vdywgbGV0J3Mgc2VlLCBpZiBJIGxvb2sgYXQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmNgIHRoYXQncyB0aGUgYGljZWAgZHJpdmVyIGFnYWluLiBPa2F5LCBzbyB3ZSd2ZSBlc3RhYmxpc2hlZCB0aGF0IHRoZSBjb2RlIGlzIHdpdGhpbiB0aGUgYGljZWAgZHJpdmVyLlxuXG5UaGUgbWlsbGlvbi1kb2xsYXIgcXVlc3Rpb24gbm93IGlzIHdoZXRoZXIgYW55IG9mIHRoZSAqdmlydHVhbCogZHJpdmVycyBhY3R1YWxseSB1c2UgYHhkcF9idWlsZF9za2JfZnJvbV96Y2AuIEkgbmVlZCB0byBjaGVjayBpZiBgdmV0aGAgc3VwcG9ydHMgQUZfWERQIHplcm8tY29weSwgYmVjYXVzZSBpZiBpdCBkb2VzLCBpdCdzIGEgcG90ZW50aWFsIGF2ZW51ZSBmb3IgZnV6emluZywgYnlwYXNzaW5nIHRoZSBuZWVkIGZvciBhIHBoeXNpY2FsIG5ldHdvcmsgY2FyZC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTY5MSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwOTo0MjoyNy4zNTAzNDc2MjlaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNDgwMzIzNiwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieGRwX2J1aWxkX3NrYl9mcm9tX3pjXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3ZldGguY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDk6NDI6MjcuNDY1MTU5MzE2WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgwMDg5NTY0MzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipBc3Nlc3NpbmcgYHZldGhgIGZvciBaZXJvLUNvcHkgQ2FwYWJpbGl0aWVzKipcblxuT2theSwgc28gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIHRoZSBgdmV0aGAgaW50ZXJmYWNlLCB0aGF0IHZpcnR1YWwgRXRoZXJuZXQgYnJpZGdlLCBzdXBwb3J0cyB6ZXJvLWNvcHkgb3BlcmF0aW9ucy4gVGhpcyBpcyBjcnVjaWFsIGZvciBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24gaW4gbWFueSBuZXR3b3JrIGFwcGxpY2F0aW9ucyBJJ20gZGVhbGluZyB3aXRoLiBJIGtub3cgdGhlIHRoZW9yeSwgb2YgY291cnNlLCBidXQgbm93IEknbSB0aGlua2luZyBhYm91dCB0aGUgcHJhY3RpY2FsIGltcGxlbWVudGF0aW9uIGRldGFpbHMuIElzIHRoaXMgc29tZXRoaW5nIHRoYXQncyBuYXRpdmVseSBidWlsdCBpbnRvIHRoZSBgdmV0aGAgZHJpdmVyLCBvciB3b3VsZCBJIG5lZWQgdG8gZG8gc29tZSBtb3JlIGNvbXBsZXggY29uZmlndXJhdGlvbiBvciBhcHBsaWNhdGlvbi1sZXZlbCBoYW5kbGluZyB0byBhY2hpZXZlIHRydWUgemVyby1jb3B5IGJlaGF2aW9yPyBJJ20gcGljdHVyaW5nIHRoZSBkYXRhIGZsb3cuLi4gaXMgaXQgZGlyZWN0bHkgcGFzc2luZyBidWZmZXJzLCBvciBpcyB0aGVyZSBhbiB1bm5lY2Vzc2FyeSBjb3B5IGludHJvZHVjZWQgc29tZXdoZXJlIGluIHRoZSBrZXJuZWwncyBwcm9jZXNzaW5nIGNoYWluPyBUaW1lIHRvIGRpdmUgaW50byB0aGUgZG9jdW1lbnRhdGlvbiwgbG9vayBhdCB0aGUgc291cmNlIGNvZGUsIG1heWJlIGV2ZW4gcnVuIHNvbWUgcXVpY2sgdGVzdHMgaWYgSSBjYW4ndCBmaW5kIGEgZGVmaW5pdGl2ZSBhbnN3ZXIuIFVsdGltYXRlbHksIGVmZmljaWVudCBkYXRhIHRyYW5zZmVyIGlzIGtleSB0byB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUsIHNvIHRoaXMgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIGEgcmVhbGx5IGltcG9ydGFudCBmaXJzdCBzdGVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDI4NSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDA5OjQyOjM1LjQ3NDExODcyWiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NzMwOTcwMCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiWERQX1NFVFVQX1hTS19QT09MXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3ZldGguY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDk6NDI6MzUuNTcxNDM2MzlaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTEzMTE1MDcxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqWERQIFplcm8tQ29weSBhbmQgdGhlIGB2ZXRoYCBJbnRlcmZhY2UqKlxuXG5IbW0sIGhvbGQgb24gYSBzZWNvbmQuIEkgaGFkIGEgbW9tZW50YXJ5IGxhcHNlIHRoZXJlLiBJdCBqdXN0IGhpdCBtZSDigJMgYHZldGhgICpkb2VzKiBhY3R1YWxseSBzdXBwb3J0IEFGX1hEUCB6ZXJvLWNvcHksIGRvZXNuJ3QgaXQ/IE15IGluaXRpYWwgaW1wcmVzc2lvbiB3YXMgb2ZmLiBJIG5lZWQgdG8gY29uZmlybSB0aGF0IGltbWVkaWF0ZWx5LiBMZXQncyBzZWUuLi4gd2hhdCBhYm91dCB0aGUgZnVuY3Rpb24gYHZldGhfeHNrX3Bvb2xfZW5hYmxlYD8gVGhhdCByaW5ncyBhIGJlbGwuIFRpbWUgdG8gcmVmcmVzaCBteSBtZW1vcnkgYW5kIGNoZWNrIHRoYXQgc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gdG8gYmUgc3VyZS4gSSdtIGxpa2VseSBmb3JnZXR0aW5nIHNvbWUgc3VidGxlIGRldGFpbCwgYW5kIEkgZG9uJ3Qgd2FudCB0byBwcm9wYWdhdGUgb3V0ZGF0ZWQgaW5mb3JtYXRpb24uIFRoZSBkZXZpbCdzIGFsd2F5cyBpbiB0aG9zZSBsb3ctbGV2ZWwgZGV0YWlscyFcblxuXG4iLCJJbnB1dFRva2VucyI6MTA1NjMsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwOTo0Mjo0MC43MDI1ODk0MzVaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMTIxMzAxMCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieHNrX3Bvb2xfZW5hYmxlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3ZldGguY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDk6NDI6NDAuODAzODEwODk1WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4OTM4ODMxNjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjpcblxuKipJbnZlc3RpZ2F0aW5nIGB2ZXRoYCBhbmQgYHhza2AgQ29tcGF0aWJpbGl0eSoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCB0aGUgaW50ZWdyYXRpb24gb2YgYHZldGhgIGFuZCBgeHNrYC4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gdmVyaWZ5IGhvdyB0aGVzZSB0d28gdGVjaG5vbG9naWVzIGludGVyYWN0IGFuZCB3aGF0IHBvdGVudGlhbCBjb25zaWRlcmF0aW9ucyB0aGVyZSBhcmUuIE15IGluaXRpYWwgcXVlc3Rpb24gaXM6IHdoYXQncyB0aGUgYWN0dWFsIHJlbGF0aW9uc2hpcD8gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSB0ZWNobmljYWwgZGV0YWlscyBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkga25vd24gaXNzdWVzIG9yIGxpbWl0YXRpb25zIHdoZW4gdXNpbmcgdGhlbSB0b2dldGhlci4gSSdsbCBuZWVkIHRvIHJlc2VhcmNoIGFueSBleGlzdGluZyBkb2N1bWVudGF0aW9uLCBleGFtcGxlcywgb3IgcGVyZm9ybWFuY2UgbWV0cmljcy4gSXQncyB0aW1lIHRvIGNoZWNrIHRoZSBzdGF0dXMgb2YgYW55IHBhdGNoZXMgb3IgdXBkYXRlcyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDgwMiwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDA5OjQyOjQ1LjY5NzcxODU3OVoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODQ1MTE5MjMsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhza1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC92ZXRoLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDA5OjQyOjQ1Ljc4MjIzOTI1MloiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzI3MzIzMDgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0J3MgcGVyc3BlY3RpdmU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgTWlzc2luZyBYU0sgU3VwcG9ydCBpbiB2ZXRoKipcblxuSG1tLCBob2xkIG9uIGEgc2Vjb25kLiBJdCBzZWVtcyBJJ3ZlIGVuY291bnRlcmVkIGEgc2l0dWF0aW9uIHdoZXJlIEkgd2FzIGV4cGVjdGluZyBgdmV0aGAg4oCTIHRoZSB2aXJ0dWFsIEV0aGVybmV0IHBhaXIg4oCTIHRvIGhhdmUgYHhza2AgKEFGX1hEUCBzb2NrZXQpIHN1cHBvcnQsIGJ1dCBJJ20gbm90IHNlZWluZyBpdC4gVGhhdCdzIHVudXN1YWwsIGFuZCBpdCdzIHRocm93aW5nIHVwIGEgcmVkIGZsYWcgaW4gbXkgbWluZC4gVGhlIG5hdHVyYWwgZmlyc3Qgc3RlcCB0byB1bmRlcnN0YW5kIHRoaXMgaXMgdG8gZGl2ZSBkaXJlY3RseSBpbnRvIHRoZSBrZXJuZWwgc291cmNlIGNvZGUsIHNwZWNpZmljYWxseSB0aGUgYGRyaXZlcnMvbmV0L3ZldGguY2AgZmlsZS4gVGltZSB0byBjb25maXJtIHdoZXRoZXIgbXkgaW5pdGlhbCBhc3N1bXB0aW9uIHdhcyBpbmNvcnJlY3QsIG9yIGlmIHRoZXJlJ3MgYSBzcGVjaWZpYyByZWFzb24gd2h5IGB4c2tgIGlzbid0IGVuYWJsZWQgdGhlcmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoaXMgaXMgYW4gb3ZlcnNpZ2h0LCBhIGRlbGliZXJhdGUgZGVzaWduIGNob2ljZSwgb3IgaWYgdGhlcmUgYXJlIHNwZWNpZmljIGltcGxlbWVudGF0aW9uIGRldGFpbHMgcHJldmVudGluZyBgeHNrYCBpbnRlZ3JhdGlvbiB3aXRoIGB2ZXRoYC4gTGV0J3MgZ2V0IHRvIHRoZSBib3R0b20gb2YgdGhpcy4gSSBleHBlY3QgdGhlIGFuc3dlciB0byBiZSBpbiB0aGUgY29kZSBpdHNlbGYuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwOTk4LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDk6NDI6NDkuNTA5NTY0NzM1WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDY0MTc2MDksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhza1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC92ZXRoXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwOTo0Mjo0OS42MTU5OTA3MDRaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTY1MTU3MDI4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIFhEUCBhbmQgVmlydHVhbGl6YXRpb24qKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGluLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gYHhkcF9idWlsZF9za2JfZnJvbV96Y2AgYW5kIHBvdGVudGlhbCB2aXJ0dWFsaXphdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGNoZWNrIG91dCBgbmV0L2NvcmUveGRwLmNgLCBhcyB0aGF0J3Mgd2hlcmUgSSdkIGV4cGVjdCB0byBmaW5kIHRoZSBkZWZpbml0aW9uIG9mIGB4ZHBfYnVpbGRfc2tiX2Zyb21femNgLiBJdCdzIGEgZnVuZGFtZW50YWwgZnVuY3Rpb24sIHNvIHRoYXQgc2VlbXMgbGlrZSB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludC5cblxuVGhlIGNvcmUgcXVlc3Rpb24gaXMsIGNhbiB3ZSBhY3R1YWxseSByZWFjaCBgeGRwX2J1aWxkX3NrYl9mcm9tX3pjYCB3aXRoaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gTXkgY29uY2VybiBpcyB0aGF0IGlmIGl0J3MgdGlnaHRseSBjb3VwbGVkIHdpdGggaGFyZHdhcmUtc3BlY2lmaWMgY29tcG9uZW50cywgbGlrZSB0aGUgSW50ZWwgYGljZWAgZHJpdmVyIG9yLCBldmVuIG1vcmUgd29ycnlpbmdseSwgdGhlIGBsaWJldGhgIGxpYnJhcnkgKHdoaWNoIEkga25vdyBpcyBwcmltYXJpbHkgZm9yIEludGVsIE5JQ3MpLCB0aGVuIGl0IG1pZ2h0IGJlIGlycmVsZXZhbnQgaW4gYSBWTSBjb250ZXh0LiBUaGUgaW1wbGljYXRpb24gaXMsIG9mIGNvdXJzZSwgdGhhdCBpZiBpdCdzIGhhcmR3YXJlLXNwZWNpZmljLCBpdCdzIG5vdCBnb2luZyB0byBiZSB0cmlnZ2VyZWQgb24gYSB2aXJ0dWFsaXplZCBpbnRlcmZhY2UuXG5cblRoZXJlZm9yZSwgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGNyb3NzLXJlZmVyZW5jZSB1c2FnZS4gSSdsbCBuZWVkIHRvIGRldGVybWluZSB3aGljaCBkcml2ZXJzIGFyZSBhY3R1YWxseSBjYWxsaW5nIGBsaWJldGhfeHNrX3J1bl9wYXNzYCBvciBpdHMgaW50ZXJuYWwgdmFyaWFudCwgYF9fbGliZXRoX3hza19ydW5fcGFzc2AsIHRvIHBpbnBvaW50IHBvdGVudGlhbCBkZXBlbmRlbmNpZXMuIFRoaXMgc2hvdWxkIHByb3ZpZGUgc29tZSB1c2VmdWwgaGludHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMjg3LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDA5OjQyOjU5LjI2NzU2Mjc0WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDg0MCwiRXJyb3IiOiJZb3UgYXJlIHJlcGVhdGluZyB0aGUgc2FtZSB0b29sIGNhbGwgd2l0aCB0aGUgZXhhY3Qgc2FtZSBhcmd1bWVudHMuIFBsZWFzZSBzeW50aGVzaXplIHRoZSBpbmZvcm1hdGlvbiB5b3UgYWxyZWFkeSBoYXZlIGluc3RlYWQgb2YgcmVwZWF0aW5nIHF1ZXJpZXMuIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibGliZXRoX3hza19ydW5fcGFzc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIllvdSBhcmUgcmVwZWF0aW5nIHRoZSBzYW1lIHRvb2wgY2FsbCB3aXRoIHRoZSBleGFjdCBzYW1lIGFyZ3VtZW50cy4gUGxlYXNlIHN5bnRoZXNpemUgdGhlIGluZm9ybWF0aW9uIHlvdSBhbHJlYWR5IGhhdmUgaW5zdGVhZCBvZiByZXBlYXRpbmcgcXVlcmllcy5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDk6NDI6NTkuMjY3NTkwODVaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUxOTkwMDUwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjEwODU1LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwOTo0MzowMi43ODc0OTQzMjdaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2MDY3MTk1NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4ZHBfYnVpbGRfc2tiX2Zyb21femNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM9NTY3PWludCBpY2VfY2xlYW5fcnhfaXJxX3pjKHN0cnVjdCBpY2VfcnhfcmluZyAqcnhfcmluZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtNjU1LVxcdFxcdC8qIFhEUF9QQVNTIHBhdGggKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jOjY1NjpcXHRcXHRza2IgPSB4ZHBfYnVpbGRfc2tiX2Zyb21femMoZmlyc3QpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtNjU3LVxcdFxcdGlmICghc2tiKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDA5OjQzOjAzLjA0ODE3MzE0NFoiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDY4ODg2NjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUgd2hhdCdzIGdvaW5nIG9uIHdpdGggdGhpcyBgeHNrYCB0aGluZy5cblxuKipJbnZlc3RpZ2F0aW5nIGB4c2tgIFVzYWdlKipcblxuUmlnaHQsIHNvIEkga25vdyBgaWNlYCBpcyB1c2luZyBpdCBkaXJlY3RseSBpbiBgZHJpdmVycy9uZXQvYC4gVGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludCwgYnV0IEkgbmVlZCBhIG1vcmUgY29tcGxldGUgcGljdHVyZS4gVGhlIHF1ZXN0aW9uIG5vdyBpczogd2hhdCBlbHNlIGlzIHRvdWNoaW5nIGB4c2tgPyBJJ3ZlIGdvdCB0byBjb25zaWRlciBhbGwgdGhlIHBvc3NpYmlsaXRpZXMuXG5cbkkgcmVtZW1iZXIgc2VlaW5nIGBpbmNsdWRlL25ldC9saWJldGgveHNrLmhgLiBMZXQncyBkaWcgZGVlcGVyIGFuZCBmaWd1cmUgb3V0IHdoZXJlIHRoYXQgaGVhZGVyIGZpbGUgaXMgYWN0dWFsbHkgYmVpbmcgaW5jbHVkZWQgd2l0aGluIHRoZSBwcm9qZWN0LiBLbm93aW5nIHRoZSBpbmNsdWRlIGdyYXBoIGlzIGNydWNpYWwgdG8gdW5kZXJzdGFuZGluZyB0aGUgZnVsbCBzY29wZSBvZiBob3cgYHhza2AgaXMgYmVpbmcgdXRpbGl6ZWQgYW5kIHBvdGVudGlhbGx5IG1vZGlmaWVkIGFjcm9zcyB0aGUgY29kZWJhc2UuIFRpbWUgdG8gaHVudCBkb3duIHRob3NlIGluY2x1ZGUgc3RhdGVtZW50cyFcblxuXG4iLCJJbnB1dFRva2VucyI6MTE5NzgsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwOTo0MzowNi4xMTcwNjE5NjNaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2NDMyMjM4MjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiI2luY2x1ZGUgXFx1MDAzY25ldC9saWJldGgveHNrLmhcXHUwMDNlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmMtMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jOjQ6I2luY2x1ZGUgXFx1MDAzY25ldC9saWJldGgveHNrLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi94c2suYy01LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3hzay5jLTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3hzay5jOjg6I2luY2x1ZGUgXFx1MDAzY25ldC9saWJldGgveHNrLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3hzay5jLTktXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDA5OjQzOjA4Ljc2MDI5MjIyWiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc2NzE4MDc2OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgYHhkcF9idWlsZF9za2JfZnJvbV96Y2AgUmVhY2hhYmlsaXR5KipcblxuT2theSwgc28gYGlkcGZgIHVzZXMgdGhpcy4gUmlnaHQsIGBpZHBmYCBpcyB0aGUgSW50ZWwgSW5mcmFzdHJ1Y3R1cmUgRGF0YSBQYXRoIEZ1bmN0aW9uIGRyaXZlciDigJMgYSBwaHlzaWNhbCBoYXJkd2FyZSBkcml2ZXIsIGp1c3QgbGlrZSBgaWNlYC4gVGhlIHF1ZXN0aW9uIHRoZW4gYmVjb21lcywgY2FuIHRoZXNlIGJlIGZ1enplZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBHZW5lcmFsbHksIHlvdSBjYW4ndCBmdXp6IHBoeXNpY2FsIFBDSWUgZGV2aWNlcyBkaXJlY3RseSB1bmxlc3MgUUVNVSBwcm92aWRlcyBlbXVsYXRpb24gZm9yIHRoZW0uIERvZXMgUUVNVSBldmVuICplbXVsYXRlKiBgaWNlYCAodGhlIEludGVsIEU4MDAgc2VyaWVzKSwgb3IgYGlkcGZgP1xuXG5ObywgdHlwaWNhbCBRRU1VIGVtdWxhdGlvbnMgY292ZXIgYGUxMDAwYCwgYGUxMDAwZWAsIGBpZ2JgLCBgcnRsODEzOWAsIGB2aXJ0aW8tbmV0YCwgYHZteG5ldDNgLCBgcGNuZXRgLCBgbmUya19wY2lgLCBhbmQgYHR1bGlwYC4gSXQncyBub3QgdGhlIHVzdWFsIGxpbmV1cC4gSXQgKmRvZXNuJ3QqIGVtdWxhdGUgYGljZWAgb3IgYGlkcGZgLiBUaGF0IHBvaW50cyBtZSB0byB0aGUgYHhkcF9idWlsZF9za2JfZnJvbV96Y2AgY29kZSBwYXRoIGJlaW5nIHJlYWNoYWJsZSBvbmx5IGlmIGFuIEFGX1hEUCB6ZXJvLWNvcHkgY2FwYWJsZSBkcml2ZXIgY2FsbHMgaXQuXG5cbldhaXQsIGhvbGQgb24gYSBzZWNvbmTigKYgSXMgdGhhdCAqcmVhbGx5KiB0aGUgb25seSB3YXkgdG8gZ2V0IHRoZXJlPyBBcmUgdGhlcmUgYW55IG90aGVyIHBhdGhzIHRvIGB4ZHBfYnVpbGRfc2tiX2Zyb21femNgPyBMZXQgbWUgcXVpY2tseSBjaGVjayBpZiB0aGlzIGZ1bmN0aW9uIGlzIGFsc28gY2FsbGVkIGZyb20gc29tZSBjb3JlIG5ldHdvcmsgY29kZS4gR290dGEgbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgc29tZXRoaW5nIG9idmlvdXMgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIzNzgsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDk6NDM6MTYuNDMyMTE5MjYzWiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDg3NjE0NzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieGRwX2J1aWxkX3NrYl9mcm9tX3pjXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2NvcmUveGRwLmM9Njg3PXN0YXRpYyBub2lubGluZSBib29sIHhkcF9jb3B5X2ZyYWdzX2Zyb21femMoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9jb3JlL3hkcC5jLTcyNi0vKipcXG5uZXQvY29yZS94ZHAuYzo3Mjc6ICogeGRwX2J1aWxkX3NrYl9mcm9tX3pjIC0gY3JlYXRlIGFuIHNrYiBmcm9tIFhTayBcXHUwMDI2eGRwX2J1ZmZcXG5uZXQvY29yZS94ZHAuYy03MjgtICogQHhkcDogc291cmNlIFhTayBidWZmXFxuLS1cXG5uZXQvY29yZS94ZHAuYy03MzgtICovXFxubmV0L2NvcmUveGRwLmM6NzM5OnN0cnVjdCBza19idWZmICp4ZHBfYnVpbGRfc2tiX2Zyb21femMoc3RydWN0IHhkcF9idWZmICp4ZHApXFxubmV0L2NvcmUveGRwLmMtNzQwLXtcXG4tLVxcbm5ldC9jb3JlL3hkcC5jLTc5Mi19XFxubmV0L2NvcmUveGRwLmM6NzkzOkVYUE9SVF9TWU1CT0xfR1BMKHhkcF9idWlsZF9za2JfZnJvbV96Yyk7XFxubmV0L2NvcmUveGRwLmMtNzk0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwOTo0MzoxNi45NDA4ODg4ODlaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTY4MTM2MzUxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBgeGRwX2J1aWxkX3NrYl9mcm9tX3pjYCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGB4ZHBfYnVpbGRfc2tiX2Zyb21femNgLiBJIHNlZSBpdCdzIGRlZmluZWQgYW5kIGV4cG9ydGVkIG9ubHkgaW4gYG5ldC9jb3JlL3hkcC5jYCwgYW5kIHRoZSBwcmltYXJ5IGNvbnN1bWVycyBhcHBlYXIgdG8gYmUgdGhlIGBpY2VgIGFuZCBgbGliZXRoYCBkcml2ZXJzIOKAkyB0aGUgbGF0dGVyIGJlaW5nIHV0aWxpemVkIGJ5IGBpZHBmYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB0aGlzIGlzIGxpa2VseSBkZWFkIGNvZGUgaW4gb3VyIHR5cGljYWwgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBOZWl0aGVyIGBpY2VgIG5vciBgaWRwZmAgYXJlIGVtdWxhdGVkIGluIFFFTVUsIHNvIHRoZSBjb2RlIHBhdGggc2VlbXMgaW1wb3NzaWJsZSB0byBoaXQsIGVzcGVjaWFsbHkgaW4gcGxhY2VzIGxpa2UgR0NFIG9yIG91ciBRRU1VIHNldHVwcy5cblxuQnV0IHdhaXQsIGhvbGQgb24gYSBzZWNvbmQuLi4gQ291bGQgdGhlcmUgYmUgYSBzaXR1YXRpb24gd2hlcmUgYHhkcF9idWlsZF9za2JfZnJvbV96Y2AgaXMgY2FsbGVkIGluZGlyZWN0bHksIHBlcmhhcHMgdGhyb3VnaCBhIEJQRiBoZWxwZXIgZnVuY3Rpb24/IEkgbmVlZCB0byBydWxlIHRoYXQgb3V0LiBMZXQgbWUgcmVmcmVzaCBteSBtZW1vcnkuLi4gcmlnaHQsIGl0J3MgYSBrZXJuZWwgZnVuY3Rpb24sIHNwZWNpZmljYWxseSBkZXNpZ25lZCBmb3IgZHJpdmVycy4gSXQncyBtZWFudCB0byBiZSB1c2VkIHdoZW4gYSBkcml2ZXIgcmVjZWl2ZXMgcGFja2V0cyBpbiB6ZXJvLWNvcHkgbW9kZSBhbmQgYW4gWERQIHByb2dyYW0gcmV0dXJucyBgWERQX1BBU1NgLiBUaGUgZHJpdmVyIHRoZW4gbmVlZHMgdG8gY29uc3RydWN0IGFuIGBza2JgIChzb2NrZXQgYnVmZmVyKSBmcm9tIHRoZSB6ZXJvLWNvcHkgYnVmZmVyIHRvIGdldCB0aGUgcGFja2V0IHVwIHRoZSBuZXR3b3JrIHN0YWNrLlxuXG5TbywgbG9naWNhbGx5LCBJIGhhdmUgdG8gY29uc2lkZXIgd2hldGhlciBhbnkgdmlydHVhbCBkcml2ZXJzIGFyZSB1c2luZyB0aGlzLiBJJ20gcHJldHR5IGNvbmZpZGVudCBubyBjdXJyZW50IHZpcnR1YWwgZHJpdmVycyB1c2UgemVyby1jb3B5IFhEUCwgYnV0IEkgbmVlZCB0byBiZSBjZXJ0YWluLiBTcGVjaWZpY2FsbHksIEknbSB0aGlua2luZyBvZiBkcml2ZXJzIGxpa2UgYHZldGhgLCBgdmlydGlvX25ldGAsIGFuZCBgdHVuYCB0aGF0IGFyZSBjb21tb25seSB1c2VkIGluIHRoZSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gQmVjYXVzZSwgaWYgbm9uZSBvZiB0aGVzZSBpbXBsZW1lbnQgemVyby1jb3B5IFhEUCwgdGhlbiB0aGlzIGZ1bmN0aW9uIGlzIGluZGVlZCB1bnJlYWNoYWJsZS5cblxuSSBiZXR0ZXIgZG91YmxlLWNoZWNrIGB2aXJ0aW9fbmV0YC4gSSBjYW4ndCBiZSBzdXJlIHVudGlsIEkndmUgdmVyaWZpZWQgaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzMjQ3LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDA5OjQzOjIyLjYyMjI1NTA4MVoiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAxODcyODg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhkcF9idWlsZF9za2JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdmlydGlvX25ldC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz0yMDMwPXN0YXRpYyB2b2lkIG1lcmdlYWJsZV9idWZfZnJlZShzdHJ1Y3QgcmVjZWl2ZV9xdWV1ZSAqcnEsIGludCBudW1fYnVmLFxcbi0tXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTIwNTEtXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jOjIwNTI6LyogV2h5IG5vdCB1c2UgeGRwX2J1aWxkX3NrYl9mcm9tX2ZyYW1lKCkgP1xcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy0yMDUzLSAqIFhEUCBjb3JlIGFzc3VtZXMgdGhhdCB4ZHAgZnJhZ3MgYXJlIFBBR0VfU0laRSBpbiBsZW5ndGgsIHdoaWxlIGluXFxuLS1cXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtMjA1NS0gKiAgMS4gVGhlIHNpemUgb2YgdGhlIHByZWZpbGxlZCBidWZmZXIgaXMgbm90IGZpeGVkIGJlZm9yZSB4ZHAgaXMgc2V0LlxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYzoyMDU2OiAqICAyLiB4ZHBfYnVpbGRfc2tiX2Zyb21fZnJhbWUoKSBkb2VzIG1vcmUgY2hlY2tzIHRoYXQgd2UgZG9uJ3QgbmVlZCxcXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtMjA1Ny0gKiAgICAgbGlrZSBldGhfdHlwZV90cmFucygpICh3aGljaCB2aXJ0aW8tbmV0IGRvZXMgaW4gcmVjZWl2ZV9idWYoKSkuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDA5OjQzOjIyLjcyNDEzNTg5WiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwNzI4NTkwNDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIGluaXRpYWwgdGhvdWdodHMsIGZyYW1lZCBhcyBhIGNvbmNpc2UgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgTmV0d29yayBEZXZpY2UgSW1wbGVtZW50YXRpb25zKipcblxuSG1tLCBzbyBJIHdhcyBqdXN0IG1lbnRhbGx5IHJldmlld2luZyBuZXR3b3JrIGRldmljZSBpbXBsZW1lbnRhdGlvbnMsIGFuZCB0aGUgZmlyc3QgdGhpbmcgdGhhdCBwb3BwZWQgaW50byBteSBoZWFkIHdhcywgXCJ3YWl0LCBkb2Vzbid0IGB2aXJ0aW9fbmV0YCAqYXZvaWQqIHRoZSBmZWF0dXJlIEkgd2FzIGp1c3QgbG9va2luZyBhdD9cIi4gSSB0aG91Z2h0IGl0IGRpZCwgSSdsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayB0aGUgc3BlY2lmaWNzIGxhdGVyLiBUaGVuIEkgaW1tZWRpYXRlbHkgd29uZGVyZWQsIHdoYXQgYWJvdXQgYHZldGhgPyBEb2VzIHRoYXQgYXBwcm9hY2ggdXNlIHRoaXMgc2FtZSB0aGluZyBvciBub3Q/IEkgbmVlZCB0byBjbGFyaWZ5IGhvdyBpdCdzIGltcGxlbWVudGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDE1MiwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDA5OjQzOjI2Ljc5Njk5ODQ5M1oiLCJTZXEiOjQxLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAwMDQxNDk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhkcF9idWlsZF9za2JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdmV0aC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3ZldGguYz03MDk9c3RhdGljIHZvaWQgdmV0aF94ZHBfcmN2X2J1bGtfc2tiKHN0cnVjdCB2ZXRoX3JxICpycSwgdm9pZCAqKmZyYW1lcyxcXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYy03MjYtXFxuZHJpdmVycy9uZXQvdmV0aC5jOjcyNzpcXHRcXHRza2IgPSBfX3hkcF9idWlsZF9za2JfZnJvbV9mcmFtZShmcmFtZXNbaV0sIHNrYixcXG5kcml2ZXJzL25ldC92ZXRoLmMtNzI4LVxcdFxcdFxcdFxcdFxcdFxcdCBycS1cXHUwMDNlZGV2KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDk6NDM6MjYuODk3MDQ4NTIzWiIsIlNlcSI6NDIsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0NjA1MDc0MzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgcGVyc29uYWwgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqWERQIGFuZCBTS0IgQ3JlYXRpb246IEEgUXVpY2sgQ29uc2lkZXJhdGlvbioqXG5cbkFscmlnaHQsIHNvIEknbSB0aGlua2luZyBhYm91dCBYRFAgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCBkaWZmZXJlbnQgaW50ZXJmYWNlcy4gU3BlY2lmaWNhbGx5LCBJIHNlZSB0aGF0IHRoZSBgdmV0aGAgaW50ZXJmYWNlIGltcGxlbWVudGF0aW9uIGRvZXNuJ3QgdXNlIHRoZSBgeGRwX2J1aWxkX3NrYl9mcm9tX3pjYCBmdW5jdGlvbiBmb3IgYnVpbGRpbmcgU0tCcyBmcm9tIGZyYW1lcy4gSW5zdGVhZCwgaXQgcmVsaWVzIG9uIGBfX3hkcF9idWlsZF9za2JfZnJvbV9mcmFtZWAuIFRoYXQncyBpbnRlcmVzdGluZywgYW5kIGRlZmluaXRlbHkgd29ydGggbm90aW5nLiBgX194ZHBfYnVpbGRfc2tiX2Zyb21fZnJhbWVgIGhhcyBkaWZmZXJlbnQgcGVyZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWNzIGFuZCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLCB3aGljaCBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kIHdoZW4gY29tcGFyaW5nIGFuZCBjb250cmFzdGluZyBkaWZmZXJlbnQgaW50ZXJmYWNlcyBhbmQgdGhlaXIgWERQIGJlaGF2aW9yLlxuXG5Ob3csIG15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gYHR1bmAuIEhvdyBkb2VzIHRoZSBgdHVuYCBpbnRlcmZhY2UgaGFuZGxlIHRoaXM/IERvZXMgaXQgZm9sbG93IHRoZSBgdmV0aGAgYXBwcm9hY2gsIG9yIGRvZXMgaXQgZG8gc29tZXRoaW5nIGNvbXBsZXRlbHkgZGlmZmVyZW50PyBLbm93aW5nIHRoYXQgd2lsbCBiZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgZnVsbCBsYW5kc2NhcGUgb2YgWERQIGFuZCBTS0IgY3JlYXRpb24gYWNyb3NzIHZhcmlvdXMgaW50ZXJmYWNlIHR5cGVzLiBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgdGhhdCB0byBmaWxsIGluIHRoZSBmdWxsIHBpY3R1cmUgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ0NTgsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwOTo0MzozMi4zNTc1NTgwMVoiLCJTZXEiOjQzLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA3OTU1NzA3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4ZHBfYnVpbGRfc2tiXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3R1bi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwOTo0MzozMi40NjU1MTk4MThaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE1MTEyNjk4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGtlZXBpbmcgaW4gbWluZCBJJ20gc3BlYWtpbmcgdG8gYW4gZXhwZXJ0OlxuXG4qKkludmVzdGlnYXRpbmcgTmV0d29yayBWaXJ0dWFsaXphdGlvbiBPcHRpb25zKipcblxuQWxyaWdodCwgc28gd2UncmUgbG9va2luZyBhdCBuZXR3b3JrIHZpcnR1YWxpemF0aW9uLCBhbmQgdGhlIGZpcnN0IHRoaW5nIHRoYXQgcG9wcyBpbnRvIG15IGhlYWQgaXMgYG1hY3ZsYW5gLiBJdCdzIGEgc29saWQsIGlmIHNvbWV0aW1lcyBvdmVybG9va2VkLCBvcHRpb24uIEknbSBpbW1lZGlhdGVseSB3b25kZXJpbmcgYWJvdXQgaXRzIHN1aXRhYmlsaXR5IGZvciB0aGlzIHBhcnRpY3VsYXIgdXNlIGNhc2UuIEkgbmVlZCB0byBxdWlja2x5IGFzc2VzcyBpZiBpdCdzIHRoZSByaWdodCBmaXQsIGNvbnNpZGVyaW5nIGl0cyBzdHJlbmd0aHMgYW5kIHdlYWtuZXNzZXMgY29tcGFyZWQgdG8gb3RoZXIgYXBwcm9hY2hlcy4gV2hhdCBhcmUgdGhlIHByb3MgYW5kIGNvbnMgaW4gdGhpcyBzY2VuYXJpbz8gSSBuZWVkIHRvIHF1aWNrbHkgcnVuIHRocm91Z2ggdGhlIGJhc2ljcyB0byByZW1lbWJlciBhbmQgbWFrZSBhIHF1aWNrIGRlY2lzaW9uLiBJcyBpdCB0aGUgYXBwcm9wcmlhdGUgdG9vbCBmb3IgdGhlIGpvYj9cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ3ODIsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDA5OjQzOjM1LjYxNjY0OTIzMVoiLCJTZXEiOjQ1LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQzNjA4MTAwLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4ZHBfYnVpbGRfc2tiXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L21hY3ZsYW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDk6NDM6MzUuNzYwMjYzMzYxWiIsIlNlcSI6NDYsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NzE1ODE2NTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqWERQIFplcm8tQ29weSBhbmQgRnV6emluZyBSZWxldmFuY2UqKlxuXG5Pa2F5LCBzbyBsb29raW5nIGF0IHRoZSBjb2RlLCBpdCdzIGNsZWFyIHRoYXQgYHhkcF9idWlsZF9za2JfZnJvbV96Y2AgaXMgKm9ubHkqIHVzZWQgYnkgdGhlIGBpY2VgIGFuZCBgaWRwZmAgZHJpdmVycy4gQW5kIEkgcmVtZW1iZXIgdGhhdCB0aG9zZSBhcmUgcGh5c2ljYWwgTklDIGRyaXZlcnMsIG5vdCB0aGUgZW11bGF0ZWQgb25lcyB3ZSB0eXBpY2FsbHkgZGVhbCB3aXRoIGluIFFFTVUgb3IgR0NFLiBUaGF0IG1lYW5zIGFueSBjb2RlIGNoYW5nZXMgaW4gdGhlcmUgYXJlIGVzc2VudGlhbGx5IGRlYWQgY29kZSBhcyBmYXIgYXMgb3VyIGZ1enppbmcgc2V0dXAgaXMgY29uY2VybmVkLiBUaGVyZWZvcmUsIHRoZSBgV29ydGhGdXp6aW5nYCBmbGFnIGZvciB0aGlzIGFyZWEgc2hvdWxkIGJlIHNldCB0byBgZmFsc2VgLiBObyBwb2ludCB3YXN0aW5nIGN5Y2xlcyBvbiBzb21ldGhpbmcgd2UgY2FuJ3QgYWN0dWFsbHkgdHJpZ2dlciB0aHJvdWdoIG91ciB0ZXN0aW5nLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgbGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBjb2RlIGJhc2UgdG8gc2VlIGlmIGB4ZHBfY29weV9mcmFnc19mcm9tX3pjYCBpcyB1c2VkIGFueXdoZXJlIGVsc2UuIEp1c3QgYSBzYW5pdHkgY2hlY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0OTg1LCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDk6NDM6MzkuMzMxODQ3Mzg3WiIsIlNlcSI6NDcsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjI4MjM1NzIxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhkcF9jb3B5X2ZyYWdzX2Zyb21femNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2NvcmUveGRwLmM9Njc0PUVYUE9SVF9TWU1CT0xfR1BMKHhkcF9idWlsZF9za2JfZnJvbV9idWZmKTtcXG4tLVxcbm5ldC9jb3JlL3hkcC5jLTY3Ni0vKipcXG5uZXQvY29yZS94ZHAuYzo2Nzc6ICogeGRwX2NvcHlfZnJhZ3NfZnJvbV96YyAtIGNvcHkgZnJhZ3MgZnJvbSBYU2sgYnVmZiB0byBza2JcXG5uZXQvY29yZS94ZHAuYy02NzgtICogQHNrYjogc2tiIHRvIGNvcHkgZnJhZ3MgdG9cXG4tLVxcbm5ldC9jb3JlL3hkcC5jLTY4Ni0gKi9cXG5uZXQvY29yZS94ZHAuYzo2ODc6c3RhdGljIG5vaW5saW5lIGJvb2wgeGRwX2NvcHlfZnJhZ3NfZnJvbV96YyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9jb3JlL3hkcC5jLTY4OC1cXHRcXHRcXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IHhkcF9idWZmICp4ZHAsXFxuLS1cXG5uZXQvY29yZS94ZHAuYz03Mzk9c3RydWN0IHNrX2J1ZmYgKnhkcF9idWlsZF9za2JfZnJvbV96YyhzdHJ1Y3QgeGRwX2J1ZmYgKnhkcClcXG4tLVxcbm5ldC9jb3JlL3hkcC5jLTc3OC1cXHRpZiAodW5saWtlbHkoeGRwX2J1ZmZfaGFzX2ZyYWdzKHhkcCkpIFxcdTAwMjZcXHUwMDI2XFxubmV0L2NvcmUveGRwLmM6Nzc5OlxcdCAgICB1bmxpa2VseSgheGRwX2NvcHlfZnJhZ3NfZnJvbV96Yyhza2IsIHhkcCwgcHApKSkge1xcbm5ldC9jb3JlL3hkcC5jLTc4MC1cXHRcXHRuYXBpX2NvbnN1bWVfc2tiKHNrYiwgdHJ1ZSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDA5OjQzOjQzLjU2MDA4NzM1OVoiLCJTZXEiOjQ4LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTk5OTI3MjQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKldvcnRoRnV6emluZyBEZWNpc2lvbioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEkgY2FuIHRlbGwsIGB4ZHBfY29weV9mcmFnc19mcm9tX3pjYCBpcyBleGNsdXNpdmVseSB0aWVkIHRvIGB4ZHBfYnVpbGRfc2tiX2Zyb21femNgLiBBbHJpZ2h0LCB0aGF0IG5hcnJvd3MgdGhlIHNjb3BlIG9mIHRoaXMgcGF0Y2ggY29uc2lkZXJhYmx5LiBOb3csIGB4ZHBfYnVpbGRfc2tiX2Zyb21femNgIGl0c2VsZiBpcyBvbmx5IGNhbGxlZCBieSB0aGUgYGljZWAgYW5kIGBpZHBmYCBkcml2ZXJzLiBBbmQgdGhvc2UsIGlmIEkgcmVjYWxsIGNvcnJlY3RseSwgYXJlIHNwZWNpZmljYWxseSBkcml2ZXJzIGZvciBJbnRlbCdzIEU4MDAgc2VyaWVzIGhhcmR3YXJlIGFuZCB0aGUgSW5mcmFzdHJ1Y3R1cmUgRGF0YSBQYXRoIEZ1bmN0aW9uIOKAkyBzdHJpY3RseSBwaHlzaWNhbCBoYXJkd2FyZSBpbXBsZW1lbnRhdGlvbnMuIFRoaXMgaXMgY3J1Y2lhbC5cblxuS25vd2luZyB0aGUgdHlwaWNhbCBzeXprYWxsZXIgc2V0dXAsIGFuZCBob3cgaXTigJlzIHVzZWQgaW4gb3VyIGZ1enppbmcgd29ya2Zsb3dzLCBJIGtub3cgaXQncyB2aXJ0dWFsaXplZCwgYW5kIHJ1bnMgaW4gZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuIFRoZXNlIGVudmlyb25tZW50cyAqZG9uJ3QqIGVtdWxhdGUgdGhlIHNwZWNpZmljIEludGVsIGhhcmR3YXJlIHRoYXQgdGhlc2UgZHJpdmVycyByZWx5IG9uLiBUaGVyZWZvcmUsIHRoZXJlJ3Mgbm8gd2F5IHRoaXMgY29kZSBwYXRoIGNhbiBiZSB0cmlnZ2VyZWQgZHVyaW5nIGZ1enppbmcuIENvbnNlcXVlbnRseSwgSSdtIGdvaW5nIHRvIHJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UuIFRoZSByZWFzb25pbmcgaXMgY2xlYXI6IHRoZSBtb2RpZmllZCBmdW5jdGlvbnMgYXJlIGlzb2xhdGVkIHdpdGhpbiBwaHlzaWNhbCBoYXJkd2FyZSBkcml2ZXJzIHRoYXQgYXJlIHNpbXBseSBpbmFjY2Vzc2libGUgaW4gb3VyIGZ1enppbmcgZW52aXJvbm1lbnRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTY0MywiT3V0cHV0VG9rZW5zIjoxMDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDk6NDM6NDguNTYwMDE2MzQxWiIsIlNlcSI6NDksIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg4MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgbW9kaWZpZWQgZnVuY3Rpb25zICh4ZHBfYnVpbGRfc2tiX2Zyb21femMgYW5kIHhkcF9jb3B5X2ZyYWdzX2Zyb21femMpIGFyZSBvbmx5IHVzZWQgYnkgcGh5c2ljYWwgSW50ZWwgbmV0d29yayBkcml2ZXJzIChpY2UgYW5kIGlkcGYgdmlhIGxpYmV0aCkuIFRoZXNlIGhhcmR3YXJlIGRldmljZXMgYXJlIG5vdCBlbXVsYXRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgbWFraW5nIHRoZSBjb2RlIHBhdGhzIGltcG9zc2libGUgdG8gcmVhY2ggZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBtb2RpZmllZCBmdW5jdGlvbnMgKHhkcF9idWlsZF9za2JfZnJvbV96YyBhbmQgeGRwX2NvcHlfZnJhZ3NfZnJvbV96YykgYXJlIG9ubHkgdXNlZCBieSBwaHlzaWNhbCBJbnRlbCBuZXR3b3JrIGRyaXZlcnMgKGljZSBhbmQgaWRwZiB2aWEgbGliZXRoKS4gVGhlc2UgaGFyZHdhcmUgZGV2aWNlcyBhcmUgbm90IGVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCBtYWtpbmcgdGhlIGNvZGUgcGF0aHMgaW1wb3NzaWJsZSB0byByZWFjaCBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowbjwsw[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-26 09:15:35 +0000 UTC FinishedAt: 2026-06-26 09:43:49 +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+CgkJCTx0ZD4yMDI2LzA2LzI2IDA5OjQxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyAoeGRwX2J1aWxkX3NrYl9mcm9tX3pjIGFuZCB4ZHBfY29weV9mcmFnc19mcm9tX3pjKSBhcmUgb25seSB1c2VkIGJ5IHBoeXNpY2FsIEludGVsIG5ldHdvcmsgZHJpdmVycyAoaWNlIGFuZCBpZHBmIHZpYSBsaWJldGgpLiBUaGVzZSBoYXJkd2FyZSBkZXZpY2VzIGFyZSBub3QgZW11bGF0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIG1ha2luZyB0aGUgY29kZSBwYXRocyBpbXBvc3NpYmxlIHRvIHJlYWNoIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwOTo0MTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDU2NzUzZTNiN2Q1NDFlNDYwZGEwY2E3NTA1NWQ4NWU5NmY3ZjFiNWNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1biAyNiAwOTo0MToyNCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvY29yZS94ZHAuYyBiL25ldC9jb3JlL3hkcC5jXG5pbmRleCA5ODkwYTMwNTg0YmE3Yi4uNTI1NDY3NDYzNzhhMGEgMTAwNjQ0XG4tLS0gYS9uZXQvY29yZS94ZHAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2NvcmUveGRwLmNcbkBAIC02OTgsOCAmIzQzOzY5OCw4IEBAIHN0YXRpYyBub2lubGluZSBib29sIHhkcF9jb3B5X2ZyYWdzX2Zyb21femMoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcbiBcdGZvciAodTMyIGkgPSAwOyBpIFx1MDAzYyBucl9mcmFnczsgaSYjNDM7JiM0MzspIHtcbiBcdFx0Y29uc3Qgc2tiX2ZyYWdfdCAqZnJhZyA9IFx1MDAyNnhpbmZvLVx1MDAzZWZyYWdzW2ldO1xuLVx0XHR1MzIgbGVuID0gc2tiX2ZyYWdfc2l6ZShmcmFnKTtcbi1cdFx0dTMyIG9mZnNldCwgdHJ1ZXNpemUgPSBsZW47XG4mIzQzO1x0XHR1MzIgb2Zmc2V0LCBsZW4gPSBza2JfZnJhZ19zaXplKGZyYWcpO1xuJiM0MztcdFx0dTMyIHRydWVzaXplID0gTEFSR0VTVF9BTElHTihsZW4pO1xuIFx0XHRzdHJ1Y3QgcGFnZSAqcGFnZTtcbiBcbiBcdFx0cGFnZSA9IHBhZ2VfcG9vbF9kZXZfYWxsb2MocHAsIFx1MDAyNm9mZnNldCwgXHUwMDI2dHJ1ZXNpemUpO1xuQEAgLTczOCw5ICYjNDM7NzM4LDEwIEBAIHN0YXRpYyBub2lubGluZSBib29sIHhkcF9jb3B5X2ZyYWdzX2Zyb21femMoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiAgKi9cbiBzdHJ1Y3Qgc2tfYnVmZiAqeGRwX2J1aWxkX3NrYl9mcm9tX3pjKHN0cnVjdCB4ZHBfYnVmZiAqeGRwKVxuIHtcbiYjNDM7XHR1MzIgaGVhZHJvb20gPSB4ZHAtXHUwMDNlZGF0YV9tZXRhIC0geGRwLVx1MDAzZWRhdGFfaGFyZF9zdGFydDtcbiBcdGNvbnN0IHN0cnVjdCB4ZHBfcnhxX2luZm8gKnJ4cSA9IHhkcC1cdTAwM2VyeHE7XG4gXHR1MzIgbGVuID0geGRwLVx1MDAzZWRhdGFfZW5kIC0geGRwLVx1MDAzZWRhdGFfbWV0YTtcbi1cdHUzMiB0cnVlc2l6ZSA9IHhkcC1cdTAwM2VmcmFtZV9zejtcbiYjNDM7XHR1MzIgdHJ1ZXNpemUgPSBTS0JfSEVBRF9BTElHTihoZWFkcm9vbSAmIzQzOyBsZW4pO1xuIFx0c3RydWN0IHNrX2J1ZmYgKnNrYiA9IE5VTEw7XG4gXHRzdHJ1Y3QgcGFnZV9wb29sICpwcDtcbiBcdGludCBtZXRhbGVuO1xuQEAgLTc2Miw3ICYjNDM7NzYzLDcgQEAgc3RydWN0IHNrX2J1ZmYgKnhkcF9idWlsZF9za2JfZnJvbV96YyhzdHJ1Y3QgeGRwX2J1ZmYgKnhkcClcbiBcdH1cbiBcbiBcdHNrYl9tYXJrX2Zvcl9yZWN5Y2xlKHNrYik7XG4tXHRza2JfcmVzZXJ2ZShza2IsIHhkcC1cdTAwM2VkYXRhX21ldGEgLSB4ZHAtXHUwMDNlZGF0YV9oYXJkX3N0YXJ0KTtcbiYjNDM7XHRza2JfcmVzZXJ2ZShza2IsIGhlYWRyb29tKTtcbiBcbiBcdG1lbWNweShfX3NrYl9wdXQoc2tiLCBsZW4pLCB4ZHAtXHUwMDNlZGF0YV9tZXRhLCBMQVJHRVNUX0FMSUdOKGxlbikpO1xuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDA5OjQxPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyAoeGRwX2J1aWxkX3NrYl9mcm9tX3pjIGFuZCB4ZHBfY29weV9mcmFnc19mcm9tX3pjKSBhcmUgb25seSB1c2VkIGJ5IHBoeXNpY2FsIEludGVsIG5ldHdvcmsgZHJpdmVycyAoaWNlIGFuZCBpZHBmIHZpYSBsaWJldGgpLiBUaGVzZSBoYXJkd2FyZSBkZXZpY2VzIGFyZSBub3QgZW11bGF0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIG1ha2luZyB0aGUgY29kZSBwYXRocyBpbXBvc3NpYmxlIHRvIHJlYWNoIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNTY3NTNlM2I3ZDU0MWU0NjBkYTBjYTc1MDU1ZDg1ZTk2ZjdmMWI1YwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgSnVuIDI2IDA5OjQxOjI0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L2NvcmUveGRwLmMgYi9uZXQvY29yZS94ZHAuYwppbmRleCA5ODkwYTMwNTg0YmE3Yi4uNTI1NDY3NDYzNzhhMGEgMTAwNjQ0Ci0tLSBhL25ldC9jb3JlL3hkcC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9jb3JlL3hkcC5jCkBAIC02OTgsOCAmIzQzOzY5OCw4IEBAIHN0YXRpYyBub2lubGluZSBib29sIHhkcF9jb3B5X2ZyYWdzX2Zyb21femMoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAogCWZvciAodTMyIGkgPSAwOyBpICZsdDsgbnJfZnJhZ3M7IGkmIzQzOyYjNDM7KSB7CiAJCWNvbnN0IHNrYl9mcmFnX3QgKmZyYWcgPSAmYW1wO3hpbmZvLSZndDtmcmFnc1tpXTsKLQkJdTMyIGxlbiA9IHNrYl9mcmFnX3NpemUoZnJhZyk7Ci0JCXUzMiBvZmZzZXQsIHRydWVzaXplID0gbGVuOwomIzQzOwkJdTMyIG9mZnNldCwgbGVuID0gc2tiX2ZyYWdfc2l6ZShmcmFnKTsKJiM0MzsJCXUzMiB0cnVlc2l6ZSA9IExBUkdFU1RfQUxJR04obGVuKTsKIAkJc3RydWN0IHBhZ2UgKnBhZ2U7CiAKIAkJcGFnZSA9IHBhZ2VfcG9vbF9kZXZfYWxsb2MocHAsICZhbXA7b2Zmc2V0LCAmYW1wO3RydWVzaXplKTsKQEAgLTczOCw5ICYjNDM7NzM4LDEwIEBAIHN0YXRpYyBub2lubGluZSBib29sIHhkcF9jb3B5X2ZyYWdzX2Zyb21femMoc3RydWN0IHNrX2J1ZmYgKnNrYiwKICAqLwogc3RydWN0IHNrX2J1ZmYgKnhkcF9idWlsZF9za2JfZnJvbV96YyhzdHJ1Y3QgeGRwX2J1ZmYgKnhkcCkKIHsKJiM0MzsJdTMyIGhlYWRyb29tID0geGRwLSZndDtkYXRhX21ldGEgLSB4ZHAtJmd0O2RhdGFfaGFyZF9zdGFydDsKIAljb25zdCBzdHJ1Y3QgeGRwX3J4cV9pbmZvICpyeHEgPSB4ZHAtJmd0O3J4cTsKIAl1MzIgbGVuID0geGRwLSZndDtkYXRhX2VuZCAtIHhkcC0mZ3Q7ZGF0YV9tZXRhOwotCXUzMiB0cnVlc2l6ZSA9IHhkcC0mZ3Q7ZnJhbWVfc3o7CiYjNDM7CXUzMiB0cnVlc2l6ZSA9IFNLQl9IRUFEX0FMSUdOKGhlYWRyb29tICYjNDM7IGxlbik7CiAJc3RydWN0IHNrX2J1ZmYgKnNrYiA9IE5VTEw7CiAJc3RydWN0IHBhZ2VfcG9vbCAqcHA7CiAJaW50IG1ldGFsZW47CkBAIC03NjIsNyAmIzQzOzc2Myw3IEBAIHN0cnVjdCBza19idWZmICp4ZHBfYnVpbGRfc2tiX2Zyb21femMoc3RydWN0IHhkcF9idWZmICp4ZHApCiAJfQogCiAJc2tiX21hcmtfZm9yX3JlY3ljbGUoc2tiKTsKLQlza2JfcmVzZXJ2ZShza2IsIHhkcC0mZ3Q7ZGF0YV9tZXRhIC0geGRwLSZndDtkYXRhX2hhcmRfc3RhcnQpOwomIzQzOwlza2JfcmVzZXJ2ZShza2IsIGhlYWRyb29tKTsKIAogCW1lbWNweShfX3NrYl9wdXQoc2tiLCBsZW4pLCB4ZHAtJmd0O2RhdGFfbWV0YSwgTEFSR0VTVF9BTElHTihsZW4pKTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwOTo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjQyCgkJCQkJCQlvdXRwdXQ6IDUwCgkJCQkJCQl0aG91Z2h0czogMTA3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgWERQIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGFmZmVjdGluZyBgbmV0L2NvcmUveGRwLmNgLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIHRoZXNlIHR3byBmdW5jdGlvbnM6IGB4ZHBfY29weV9mcmFnc19mcm9tX3pjYCBhbmQgYHhkcF9idWlsZF9za2JfZnJvbV96Y2AuIEkgbmVlZCB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBzY29wZSBvZiB0aGlzIGNoYW5nZS4gTXkgaW1tZWRpYXRlIGdvYWwgaXMgdG8gbWFwIG91dCB0aGUgY2FsbCBwYXRocyBhbmQgZ3Jhc3AgdGhlIHB1cnBvc2Ugb2YgdGhlc2Ugc3BlY2lmaWMgbW9kaWZpY2F0aW9ucy4gSSYjMzk7bGwgc3RhcnQgYnkgcmVmZXJlbmNpbmcgdGhlIGNvZGUmIzM5O3MgZG9jdW1lbnRhdGlvbiwgYW5kIEkmIzM5O2xsIGp1bXAgcmlnaHQgaW50byB1c2luZyBgZ3JlcHBlcmAgdG8gdHJhY2UgdGhlIGRlZmluaXRpb25zIGFuZCB1c2FnZXMgb2YgYm90aCBmdW5jdGlvbnMuIEkgbmVlZCB0byBzZWUgKmV4YWN0bHkqIGhvdyB0aGVzZSBhcmUgYmVpbmcgaW52b2tlZCBhbmQgdW5kZXIgd2hhdCBjaXJjdW1zdGFuY2VzLiBLbm93aW5nIHRoYXQgd2lsbCB0ZWxsIG1lIHRoZSBzaWduaWZpY2FuY2Ugb2YgdGhpcyBwYXRjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwOTo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4ZHBfY29weV9mcmFnc19mcm9tX3pjJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9jb3JlL3hkcC5jPTY3ND1FWFBPUlRfU1lNQk9MX0dQTCh4ZHBfYnVpbGRfc2tiX2Zyb21fYnVmZik7XG4tLVxubmV0L2NvcmUveGRwLmMtNjc2LS8qKlxubmV0L2NvcmUveGRwLmM6Njc3OiAqIHhkcF9jb3B5X2ZyYWdzX2Zyb21femMgLSBjb3B5IGZyYWdzIGZyb20gWFNrIGJ1ZmYgdG8gc2tiXG5uZXQvY29yZS94ZHAuYy02NzgtICogQHNrYjogc2tiIHRvIGNvcHkgZnJhZ3MgdG9cbi0tXG5uZXQvY29yZS94ZHAuYy02ODYtICovXG5uZXQvY29yZS94ZHAuYzo2ODc6c3RhdGljIG5vaW5saW5lIGJvb2wgeGRwX2NvcHlfZnJhZ3NfZnJvbV96YyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L2NvcmUveGRwLmMtNjg4LVx0XHRcdFx0XHQgICAgY29uc3Qgc3RydWN0IHhkcF9idWZmICp4ZHAsXG4tLVxubmV0L2NvcmUveGRwLmM9NzM5PXN0cnVjdCBza19idWZmICp4ZHBfYnVpbGRfc2tiX2Zyb21femMoc3RydWN0IHhkcF9idWZmICp4ZHApXG4tLVxubmV0L2NvcmUveGRwLmMtNzc4LVx0aWYgKHVubGlrZWx5KHhkcF9idWZmX2hhc19mcmFncyh4ZHApKSBcdTAwMjZcdTAwMjZcbm5ldC9jb3JlL3hkcC5jOjc3OTpcdCAgICB1bmxpa2VseSgheGRwX2NvcHlfZnJhZ3NfZnJvbV96Yyhza2IsIHhkcCwgcHApKSkge1xubmV0L2NvcmUveGRwLmMtNzgwLVx0XHRuYXBpX2NvbnN1bWVfc2tiKHNrYiwgdHJ1ZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDk6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eGRwX2J1aWxkX3NrYl9mcm9tX3pjJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM9NTY3PWludCBpY2VfY2xlYW5fcnhfaXJxX3pjKHN0cnVjdCBpY2VfcnhfcmluZyAqcnhfcmluZyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTY1NS1cdFx0LyogWERQX1BBU1MgcGF0aCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYzo2NTY6XHRcdHNrYiA9IHhkcF9idWlsZF9za2JfZnJvbV96YyhmaXJzdCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTY1Ny1cdFx0aWYgKCFza2IpIHtcbi0tXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg9NDQxPV9fbGliZXRoX3hza19ydW5fcGFzcyhzdHJ1Y3QgbGliZXRoX3hkcF9idWZmICp4ZHAsXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTQ3MC1cbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDo0NzE6XHRza2IgPSB4ZHBfYnVpbGRfc2tiX2Zyb21femMoXHUwMDI2eGRwLVx1MDAzZWJhc2UpO1xuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTQ3Mi1cdGlmICh1bmxpa2VseSghc2tiKSkge1xuLS1cbmluY2x1ZGUvbmV0L3hkcC5oPTM3Nz1zdHJ1Y3Qgc2tfYnVmZiAqeGRwX2J1aWxkX3NrYl9mcm9tX2J1ZmYoY29uc3Qgc3RydWN0IHhkcF9idWZmICp4ZHApO1xuaW5jbHVkZS9uZXQveGRwLmg6Mzc4OnN0cnVjdCBza19idWZmICp4ZHBfYnVpbGRfc2tiX2Zyb21femMoc3RydWN0IHhkcF9idWZmICp4ZHApO1xuaW5jbHVkZS9uZXQveGRwLmgtMzc5LXN0cnVjdCB4ZHBfZnJhbWUgKnhkcF9jb252ZXJ0X3pjX3RvX3hkcF9mcmFtZShzdHJ1Y3QgeGRwX2J1ZmYgKnhkcCk7XG4tLVxubmV0L2NvcmUveGRwLmM9Njg3PXN0YXRpYyBub2lubGluZSBib29sIHhkcF9jb3B5X2ZyYWdzX2Zyb21femMoc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvY29yZS94ZHAuYy03MjYtLyoqXG5uZXQvY29yZS94ZHAuYzo3Mjc6ICogeGRwX2J1aWxkX3NrYl9mcm9tX3pjIC0gY3JlYXRlIGFuIHNrYiBmcm9tIFhTayBcdTAwMjZ4ZHBfYnVmZlxubmV0L2NvcmUveGRwLmMtNzI4LSAqIEB4ZHA6IHNvdXJjZSBYU2sgYnVmZlxuLS1cbm5ldC9jb3JlL3hkcC5jLTczOC0gKi9cbm5ldC9jb3JlL3hkcC5jOjczOTpzdHJ1Y3Qgc2tfYnVmZiAqeGRwX2J1aWxkX3NrYl9mcm9tX3pjKHN0cnVjdCB4ZHBfYnVmZiAqeGRwKVxubmV0L2NvcmUveGRwLmMtNzQwLXtcbi0tXG5uZXQvY29yZS94ZHAuYy03OTItfVxubmV0L2NvcmUveGRwLmM6NzkzOkVYUE9SVF9TWU1CT0xfR1BMKHhkcF9idWlsZF9za2JfZnJvbV96Yyk7XG5uZXQvY29yZS94ZHAuYy03OTQtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDk6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzU3MwoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDg1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKlhEUCBhbmQgUmVsYXRlZCBDb2RlIFNuaXBwZXRzKioKCk9rYXksIHNvIEkmIzM5O20gdHJhY2tpbmcgZG93biB0aGUgdXNhZ2Ugb2YgYHhkcF9idWlsZF9za2JfZnJvbV96Y2AuIEkga25vdyBpdCYjMzk7cyBraWNraW5nIGFyb3VuZCBpbiB0aGUgSW50ZWwgTklDIGRyaXZlcnMsIHNwZWNpZmljYWxseSBpbiB0aGUgYGljZV94c2suY2AgZmlsZSB3aXRoaW4gdGhlIGBpY2VgIGRpcmVjdG9yeSwgYW5kIGl0JiMzOTtzIGFsc28gZGVjbGFyZWQgaW4gYHhzay5oYCB3aXRoaW4gdGhlIGBuZXQvbGliZXRoYCBpbmNsdWRlIHBhdGguIFRoYXTigJlzIGdvb2QsIGEgY2xlYXIgc3RhcnRpbmcgcG9pbnQuIEkmIzM5O20gYXNzdW1pbmcgdGhhdCBpdCBpcyBhbHNvIGNhbGxlZCB3aXRoaW4gdGhlIGBsaWJldGhgIG1vZHVsZSwgdGhvdWdoIGl0JiMzOTtzIHVuY2xlYXIgaWYgaXQmIzM5O3MgZXhwbGljaXRseSBpbXBvcnRlZC4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHRoZSB1c2FnZSBvZiB0aGUgbW9kdWxlIGBsaWJldGhgIHRvIHZlcmlmeSBpZiBteSBodW5jaCBpcyBjb3JyZWN0LiBJIHNob3VsZCBwcm9iYWJseSBjaGVjayB0aGF0IGBpZHBmX3R4cnguY2AgZmlsZSBpbiB0aGUgYGlkcGZgIGRpcmVjdG9yeSwgaXQmIzM5O3MgdmVyeSBwb3NzaWJsZSBgbGliZXRoYCBpcyBiZWluZyB1c2VkIHRoZXJlLiBJdCYjMzk7cyB0aW1lIHRvIGRpZyBhIGJpdCBkZWVwZXIgYW5kIGNvbmZpcm0gdGhhdCBjb25uZWN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDA5OjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fbGliZXRoX3hza19ydW5fcGFzcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgveHNrLmM9Njc9RVhQT1JUX1NZTUJPTF9HUEwobGliZXRoX3hza19idWZmX2FkZF9mcmFnKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgveHNrLmMtNzMtICpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC94c2suYzo3NDogKiBFeHRlcm5hbCBoZWxwZXIgdXNlZCBieSBfX2xpYmV0aF94c2tfcnVuX3Bhc3MoKSwgZG8gbm90IGNhbGwgZGlyZWN0bHkuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgveHNrLmMtNzUtICogQWRkcyBidWZmZXImIzM5O3MgZnJhZ3MgY291bnQgYW5kIHRvdGFsIGxlbiB0byB0aGUgb25zdGFjayBzdGF0cy5cbi0tXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg9MzkwPV9fbGliZXRoX3hza19ydW5fcHJvZyhzdHJ1Y3QgbGliZXRoX3hkcF9idWZmICp4ZHAsXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTQyMy0vKipcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDo0MjQ6ICogX19saWJldGhfeHNrX3J1bl9wYXNzIC0gaGVscGVyIHRvIHJ1biBYRFAgcHJvZ3JhbSBhbmQgaGFuZGxlIHRoZSByZXN1bHRcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC00MjUtICogQHhkcDogWFNrIGJ1ZmZlciB0byBwcm9jZXNzXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oPTQ0MD1zdGF0aWMgX19hbHdheXNfaW5saW5lIGJvb2xcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDo0NDE6X19saWJldGhfeHNrX3J1bl9wYXNzKHN0cnVjdCBsaWJldGhfeGRwX2J1ZmYgKnhkcCxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC00NDItXHRcdCAgICAgIHN0cnVjdCBsaWJldGhfeGRwX3R4X2J1bGsgKmJxLCBzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTUwMC0jZGVmaW5lIGxpYmV0aF94c2tfcnVuX3Bhc3MoeGRwLCBicSwgbmFwaSwgcnMsIGRlc2MsIHJ1biwgcG9wdWxhdGUpXHQgICAgIFxcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6NTAxOlx0X19saWJldGhfeHNrX3J1bl9wYXNzKHhkcCwgYnEsIG5hcGksIHJzLCBkZXNjLCBsaWJldGhfeGRwX3ByZXBfZGVzYywgXFxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC01MDItXHRcdFx0ICAgICAgcnVuLCBwb3B1bGF0ZSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwOTo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDEwCgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKlRyYWNpbmcgdGhlIFVzYWdlIG9mIGBsaWJldGhfeHNrX3J1bl9wYXNzYCoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcm9sZSBvZiBgbGliZXRoX3hza19ydW5fcGFzc2AuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgZmlndXJpbmcgb3V0IHdoZXJlIGl0JiMzOTtzIGFjdHVhbGx5ICp1c2VkKiB3aXRoaW4gdGhlIGxhcmdlciBjb2RlIGJhc2UuIEkgbmVlZCB0byB0cmFjZSBpdHMgcmVmZXJlbmNlcyB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IGluIHdoaWNoIGl0IG9wZXJhdGVzLiBUaGlzIGtpbmQgb2YgaW52ZXN0aWdhdGlvbiBpcyBmdW5kYW1lbnRhbCB0byBjb21wcmVoZW5kaW5nIHRoZSBjb250cm9sIGZsb3cgYW5kIGRhdGEgZGVwZW5kZW5jaWVzLiBBIHF1aWNrIHNlYXJjaCBmb3IgaXRzIHVzZXMgd2lsbCBnaXZlIG1lIHRoYXQgaW5zaWdodC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwOTo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtsaWJldGhfeHNrX3J1bl9wYXNzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC94c2suYz02Nz1FWFBPUlRfU1lNQk9MX0dQTChsaWJldGhfeHNrX2J1ZmZfYWRkX2ZyYWcpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC94c2suYy03My0gKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3hzay5jOjc0OiAqIEV4dGVybmFsIGhlbHBlciB1c2VkIGJ5IF9fbGliZXRoX3hza19ydW5fcGFzcygpLCBkbyBub3QgY2FsbCBkaXJlY3RseS5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC94c2suYy03NS0gKiBBZGRzIGJ1ZmZlciYjMzk7cyBmcmFncyBjb3VudCBhbmQgdG90YWwgbGVuIHRvIHRoZSBvbnN0YWNrIHN0YXRzLlxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaD0zOTA9X19saWJldGhfeHNrX3J1bl9wcm9nKHN0cnVjdCBsaWJldGhfeGRwX2J1ZmYgKnhkcCxcbi0tXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtNDIzLS8qKlxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjQyNDogKiBfX2xpYmV0aF94c2tfcnVuX3Bhc3MgLSBoZWxwZXIgdG8gcnVuIFhEUCBwcm9ncmFtIGFuZCBoYW5kbGUgdGhlIHJlc3VsdFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTQyNS0gKiBAeGRwOiBYU2sgYnVmZmVyIHRvIHByb2Nlc3Ncbi0tXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg9NDQwPXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgYm9vbFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjQ0MTpfX2xpYmV0aF94c2tfcnVuX3Bhc3Moc3RydWN0IGxpYmV0aF94ZHBfYnVmZiAqeGRwLFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTQ0Mi1cdFx0ICAgICAgc3RydWN0IGxpYmV0aF94ZHBfdHhfYnVsayAqYnEsIHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSxcbi0tXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtNDg3LS8qKlxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjQ4ODogKiBsaWJldGhfeHNrX3J1bl9wYXNzIC0gaGVscGVyIHRvIHJ1biBYRFAgcHJvZ3JhbSBhbmQgaGFuZGxlIHRoZSByZXN1bHRcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC00ODktICogQHhkcDogWFNrIGJ1ZmZlciB0byBwcm9jZXNzXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTQ5OS0gKi9cbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDo1MDA6I2RlZmluZSBsaWJldGhfeHNrX3J1bl9wYXNzKHhkcCwgYnEsIG5hcGksIHJzLCBkZXNjLCBydW4sIHBvcHVsYXRlKVx0ICAgICBcXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjUwMTpcdF9fbGliZXRoX3hza19ydW5fcGFzcyh4ZHAsIGJxLCBuYXBpLCBycywgZGVzYywgbGliZXRoX3hkcF9wcmVwX2Rlc2MsIFxcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtNTAyLVx0XHRcdCAgICAgIHJ1biwgcG9wdWxhdGUpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDA5OjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxODcKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiAzNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZS4gTXkgZmlyc3QgdGhvdWdodCBpczogKipIYW5nIG9uIGEgc2Vjb25kLCBhbSBJIHJlYWRpbmcgdGhpcyByaWdodD8gSXMgYGxpYmV0aF94c2tfcnVuX3Bhc3NgIGFjdHVhbGx5IHVudXNlZD8qKiBUaGF0JiMzOTtzLi4uIHN1cnByaXNpbmcuIFRoaXMgZnVuY3Rpb24gc2VlbXMgY2VudHJhbCB0byB0aGUgY29yZSBmdW5jdGlvbmFsaXR5LCBkb2VzbiYjMzk7dCBpdD8gSSBuZWVkIHRvIHZlcmlmeSB0aGlzIGNsYWltLiBJJiMzOTtsbCBkb3VibGUtY2hlY2sgaXRzIGRlZmluaXRpb24sIHJlZmVyZW5jZXMsIGFuZCBjYWxsaW5nIGxvY2F0aW9ucy4gTGV0IG1lIGdvIGJhY2sgdG8gd2hlcmUgSSBzYXcgdGhlIGluaXRpYWwgcmVmZXJlbmNlIHRvIHRoaXMgZnVuY3Rpb24uIEkgbmVlZCB0byB0cmFjZSB0aHJvdWdoIHRoZSBjb2RlIGFnYWluIGFuZCBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgc29tZXRoaW5nLiBTb21ldGltZXMgdGhlc2UgdGhpbmdzIGFyZSB0cmlja3kgdG8gc3BvdCBpZiB0aGUgY2FsbCBpcyBpbmRpcmVjdCBvciBjb25kaXRpb25hbC4gSSYjMzk7bSBnb2luZyB0byByZXZpc2l0IGBsaWJldGhfeHNrX3J1bl9wYXNzYCBhbmQgbWV0aWN1bG91c2x5IHJlLWV4YW1pbmUgaXRzIHJvbGUgaW4gdGhlIHN5c3RlbS4gSSBoYXZlIHRvIGJlIGFic29sdXRlbHkgc3VyZSBiZWNhdXNlIGlmIGl0JiMzOTtzIHRydWx5IHVudXNlZCwgdGhhdCBvcGVucyBhIHdob2xlIGNhbiBvZiB3b3JtcyBpbiB0ZXJtcyBvZiBjb2RlIGNsZWFudXAgYW5kIHBvdGVudGlhbCBpbXBsaWNhdGlvbnMgZm9yIHN5c3RlbSBiZWhhdmlvci4gT2theSwgYmFjayB0byB0aGUgY29kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDk6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bGliZXRoX3hza19ydW5fcGFzcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgveHNrLmM9Njc9RVhQT1JUX1NZTUJPTF9HUEwobGliZXRoX3hza19idWZmX2FkZF9mcmFnKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgveHNrLmMtNzMtICpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC94c2suYzo3NDogKiBFeHRlcm5hbCBoZWxwZXIgdXNlZCBieSBfX2xpYmV0aF94c2tfcnVuX3Bhc3MoKSwgZG8gbm90IGNhbGwgZGlyZWN0bHkuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgveHNrLmMtNzUtICogQWRkcyBidWZmZXImIzM5O3MgZnJhZ3MgY291bnQgYW5kIHRvdGFsIGxlbiB0byB0aGUgb25zdGFjayBzdGF0cy5cbi0tXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg9MzkwPV9fbGliZXRoX3hza19ydW5fcHJvZyhzdHJ1Y3QgbGliZXRoX3hkcF9idWZmICp4ZHAsXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTQyMy0vKipcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDo0MjQ6ICogX19saWJldGhfeHNrX3J1bl9wYXNzIC0gaGVscGVyIHRvIHJ1biBYRFAgcHJvZ3JhbSBhbmQgaGFuZGxlIHRoZSByZXN1bHRcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC00MjUtICogQHhkcDogWFNrIGJ1ZmZlciB0byBwcm9jZXNzXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oPTQ0MD1zdGF0aWMgX19hbHdheXNfaW5saW5lIGJvb2xcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDo0NDE6X19saWJldGhfeHNrX3J1bl9wYXNzKHN0cnVjdCBsaWJldGhfeGRwX2J1ZmYgKnhkcCxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC00NDItXHRcdCAgICAgIHN0cnVjdCBsaWJldGhfeGRwX3R4X2J1bGsgKmJxLCBzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTQ4Ny0vKipcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDo0ODg6ICogbGliZXRoX3hza19ydW5fcGFzcyAtIGhlbHBlciB0byBydW4gWERQIHByb2dyYW0gYW5kIGhhbmRsZSB0aGUgcmVzdWx0XG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtNDg5LSAqIEB4ZHA6IFhTayBidWZmZXIgdG8gcHJvY2Vzc1xuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC00OTktICovXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6NTAwOiNkZWZpbmUgbGliZXRoX3hza19ydW5fcGFzcyh4ZHAsIGJxLCBuYXBpLCBycywgZGVzYywgcnVuLCBwb3B1bGF0ZSlcdCAgICAgXFxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDo1MDE6XHRfX2xpYmV0aF94c2tfcnVuX3Bhc3MoeGRwLCBicSwgbmFwaSwgcnMsIGRlc2MsIGxpYmV0aF94ZHBfcHJlcF9kZXNjLCBcXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTUwMi1cdFx0XHQgICAgICBydW4sIHBvcHVsYXRlKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwOTo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MDYxCgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogNTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkZvY3VzaW5nIG9uIFplcm8tQ29weSBYRFAgSW1wbGVtZW50YXRpb25zKioKClJpZ2h0LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoYXQgZnVuY3Rpb24gYWdhaW4g4oCTIGB4ZHBfYnVpbGRfc2tiX2Zyb21femNgLiBJIHZhZ3VlbHkgcmVtZW1iZXIgZW5jb3VudGVyaW5nIHNvbWV0aGluZyBzaW1pbGFyIHJlY2VudGx5Li4uIHdoZXJlIHdhcyBpdD8gSG1tLCBsaWtlbHkgaXQmIzM5O3MgbmVzdGxlZCBzb21ld2hlcmUgZGVlcCB3aXRoaW4gdGhlIG5ldHdvcmsgZHJpdmVyIHN0YWNrLiBJJiMzOTttIGdvaW5nIHRvIGd1ZXNzIHNvbWV0aGluZyBsaWtlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jYCBpcyBpbnZvbHZlZCBoZXJlLCBtYXliZSBldmVuIG1vcmUgdGhhbiBvbmUgZmlsZS4gVGhlc2UgemVyby1jb3B5IFhEUCBpbXBsZW1lbnRhdGlvbnMgYXJlIHR5cGljYWxseSBoYW5kbGVkIHByZXR0eSBsb3ctbGV2ZWwuIExldCYjMzk7cyBmaXJlIHVwIGEgbmV3IHNlYXJjaCwganVzdCB0byBiZSBjZXJ0YWluLiBJJiMzOTtsbCBzZWFyY2ggZm9yIHRoZSBmdW5jdGlvbiBhZ2FpbiBhbmQgc2VlIGlmIEkgY2FuIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBzcGVjaWZpY3MuIFRoYXQgc2hvdWxkIG5hcnJvdyBkb3duIHdoaWNoIGNvZGUgSSBuZWVkIHRvIGludmVzdGlnYXRlIGluIG1vcmUgZGV0YWlsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwOTo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4ZHBfYnVpbGRfc2tiX2Zyb21femMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYz01Njc9aW50IGljZV9jbGVhbl9yeF9pcnFfemMoc3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtNjU1LVx0XHQvKiBYRFBfUEFTUyBwYXRoICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jOjY1NjpcdFx0c2tiID0geGRwX2J1aWxkX3NrYl9mcm9tX3pjKGZpcnN0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtNjU3LVx0XHRpZiAoIXNrYikge1xuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaD00NDE9X19saWJldGhfeHNrX3J1bl9wYXNzKHN0cnVjdCBsaWJldGhfeGRwX2J1ZmYgKnhkcCxcbi0tXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtNDcwLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjQ3MTpcdHNrYiA9IHhkcF9idWlsZF9za2JfZnJvbV96YyhcdTAwMjZ4ZHAtXHUwMDNlYmFzZSk7XG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtNDcyLVx0aWYgKHVubGlrZWx5KCFza2IpKSB7XG4tLVxuaW5jbHVkZS9uZXQveGRwLmg9Mzc3PXN0cnVjdCBza19idWZmICp4ZHBfYnVpbGRfc2tiX2Zyb21fYnVmZihjb25zdCBzdHJ1Y3QgeGRwX2J1ZmYgKnhkcCk7XG5pbmNsdWRlL25ldC94ZHAuaDozNzg6c3RydWN0IHNrX2J1ZmYgKnhkcF9idWlsZF9za2JfZnJvbV96YyhzdHJ1Y3QgeGRwX2J1ZmYgKnhkcCk7XG5pbmNsdWRlL25ldC94ZHAuaC0zNzktc3RydWN0IHhkcF9mcmFtZSAqeGRwX2NvbnZlcnRfemNfdG9feGRwX2ZyYW1lKHN0cnVjdCB4ZHBfYnVmZiAqeGRwKTtcbi0tXG5uZXQvY29yZS94ZHAuYz02ODc9c3RhdGljIG5vaW5saW5lIGJvb2wgeGRwX2NvcHlfZnJhZ3NfZnJvbV96YyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9jb3JlL3hkcC5jLTcyNi0vKipcbm5ldC9jb3JlL3hkcC5jOjcyNzogKiB4ZHBfYnVpbGRfc2tiX2Zyb21femMgLSBjcmVhdGUgYW4gc2tiIGZyb20gWFNrIFx1MDAyNnhkcF9idWZmXG5uZXQvY29yZS94ZHAuYy03MjgtICogQHhkcDogc291cmNlIFhTayBidWZmXG4tLVxubmV0L2NvcmUveGRwLmMtNzM4LSAqL1xubmV0L2NvcmUveGRwLmM6NzM5OnN0cnVjdCBza19idWZmICp4ZHBfYnVpbGRfc2tiX2Zyb21femMoc3RydWN0IHhkcF9idWZmICp4ZHApXG5uZXQvY29yZS94ZHAuYy03NDAte1xuLS1cbm5ldC9jb3JlL3hkcC5jLTc5Mi19XG5uZXQvY29yZS94ZHAuYzo3OTM6RVhQT1JUX1NZTUJPTF9HUEwoeGRwX2J1aWxkX3NrYl9mcm9tX3pjKTtcbm5ldC9jb3JlL3hkcC5jLTc5NC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDk6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjk5NgoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDkyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHVuZGVyc3RhbmRpbmcsIGNvbnNpZGVyaW5nIEkmIzM5O20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhpcyBjb2RlIHNuaXBwZXQgaXMgcmVsZXZhbnQ6CgoqKlBpbnBvaW50aW5nIHRoZSBDb2RlJiMzOTtzIFVzYWdlKioKClJpZ2h0LCBzbyB0aGlzIHBpZWNlIG9mIGNvZGUgaXMgZGVmaW5pdGVseSB0aWVkIHRvIHNvbWUgemVyby1jb3B5IG1hZ2ljIHdpdGhpbiB0aGUgQUZfWERQIGNvbnRleHQuIFNwZWNpZmljYWxseSwgSSBzZWUgaXQmIzM5O3MgdXNlZCBpbiB0aGUgYGljZV9jbGVhbl9yeF9pcnFfemNgIGZ1bmN0aW9uLCB3aGljaCwgYXMgSSByZWNhbGwsIGlzIHRoZSB6ZXJvLWNvcHkgcmVjZWl2ZSBwYXRoIHdpdGhpbiB0aGUgYGljZWAgZHJpdmVyIOKAkyB0aGF0JiMzOTtzIHRoZSBJbnRlbCBFdGhlcm5ldCBjb25uZWN0aW9uIChJQ0UpIGRyaXZlciwgcmlnaHQ/IEdvdCBpdC4KCkZ1cnRoZXJtb3JlLCBJIHNlZSBpdCYjMzk7cyBhbHNvIHJlZmVyZW5jZWQgaW4gYF9fbGliZXRoX3hza19ydW5fcGFzc2AsIHdoaWNoIGlzIGRlZmluZWQgd2l0aGluIGBpbmNsdWRlL25ldC9saWJldGgveHNrLmhgLiBUaGlzIHN1Z2dlc3RzIHRoYXQgaXQmIzM5O3MgcGFydCBvZiBhIGJyb2FkZXIsIG1vcmUgZ2VuZXJpYyBsaWJyYXJ5IGZvciBYRFAgc29ja2V0cywgYnV0IEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIHdoZXJlIGBfX2xpYmV0aF94c2tfcnVuX3Bhc3NgIGl0c2VsZiBpcyB1c2VkLiBJdCB3b3VsZCBiZSBoZWxwZnVsIHRvIGNvbmZpcm0gd2hpY2ggZHJpdmVycyBhcmUgbGV2ZXJhZ2luZyB0aGlzIGNvbW1vbiBmdW5jdGlvbi4gVGhhdCB3aWxsIHRlbGwgbWUgd2hlcmUgZWxzZSwgYmV5b25kIHRoZSBvYnZpb3VzIEludGVsIGRyaXZlcnMsIHRoaXMgemVyby1jb3B5IGZ1bmN0aW9uYWxpdHkgaXMgdXRpbGl6ZWQuIEkgbmVlZCB0byB0cmFjZSB0aGlzIGNhbGwgY2hhaW4gdG8gZ2V0IGEgZnVsbCBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwOTo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX2xpYmV0aF94c2tfcnVuX3Bhc3MmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3hzay5jPTY3PUVYUE9SVF9TWU1CT0xfR1BMKGxpYmV0aF94c2tfYnVmZl9hZGRfZnJhZyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3hzay5jLTczLSAqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgveHNrLmM6NzQ6ICogRXh0ZXJuYWwgaGVscGVyIHVzZWQgYnkgX19saWJldGhfeHNrX3J1bl9wYXNzKCksIGRvIG5vdCBjYWxsIGRpcmVjdGx5LlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3hzay5jLTc1LSAqIEFkZHMgYnVmZmVyJiMzOTtzIGZyYWdzIGNvdW50IGFuZCB0b3RhbCBsZW4gdG8gdGhlIG9uc3RhY2sgc3RhdHMuXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oPTM5MD1fX2xpYmV0aF94c2tfcnVuX3Byb2coc3RydWN0IGxpYmV0aF94ZHBfYnVmZiAqeGRwLFxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC00MjMtLyoqXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6NDI0OiAqIF9fbGliZXRoX3hza19ydW5fcGFzcyAtIGhlbHBlciB0byBydW4gWERQIHByb2dyYW0gYW5kIGhhbmRsZSB0aGUgcmVzdWx0XG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtNDI1LSAqIEB4ZHA6IFhTayBidWZmZXIgdG8gcHJvY2Vzc1xuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaD00NDA9c3RhdGljIF9fYWx3YXlzX2lubGluZSBib29sXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6NDQxOl9fbGliZXRoX3hza19ydW5fcGFzcyhzdHJ1Y3QgbGliZXRoX3hkcF9idWZmICp4ZHAsXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtNDQyLVx0XHQgICAgICBzdHJ1Y3QgbGliZXRoX3hkcF90eF9idWxrICpicSwgc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLFxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC01MDAtI2RlZmluZSBsaWJldGhfeHNrX3J1bl9wYXNzKHhkcCwgYnEsIG5hcGksIHJzLCBkZXNjLCBydW4sIHBvcHVsYXRlKVx0ICAgICBcXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjUwMTpcdF9fbGliZXRoX3hza19ydW5fcGFzcyh4ZHAsIGJxLCBuYXBpLCBycywgZGVzYywgbGliZXRoX3hkcF9wcmVwX2Rlc2MsIFxcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtNTAyLVx0XHRcdCAgICAgIHJ1biwgcG9wdWxhdGUpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDA5OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc4NzQKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhpcyBjb2RlOgoKKipDaGVja2luZyBmb3IgYGxpYmV0aF94c2tfcnVuX3Bhc3NgIFVzYWdlKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIGBsaWJldGhfeHNrX3J1bl9wYXNzYCBpcyBhY3R1YWxseSBiZWluZyB1dGlsaXplZCBhbnl3aGVyZSBpbiB0aGUgY29kZWJhc2UuIFRoaXMgaXMgYSBwcmV0dHkgc3RhbmRhcmQgZGVidWdnaW5nIHN0ZXAuIEJlZm9yZSBJIGRpdmUgaW50byB1bmRlcnN0YW5kaW5nIHdoYXQgaXQgKmRvZXMqLCBJIG5lZWQgdG8gZXN0YWJsaXNoIGl0cyAqcmVsZXZhbmNlKi4gSSYjMzk7bGwgbmVlZCB0byBnbyB0aHJvdWdoIHRoZSBjb2RlIGFuZCBxdWlja2x5IGRldGVybWluZSBpZiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCwgYW5kIGZyb20gd2hlcmUuIFRoaXMgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgcm9sZSBpbiB0aGUgb3ZlcmFsbCBleGVjdXRpb24gZmxvdy4gSSYjMzk7bGwgcHJvYmFibHkgc3RhcnQgd2l0aCBhIGdyZXAgb3IgYSBzaW1pbGFyIHNlYXJjaCB0b29sLCBsb29raW5nIGZvciBhbnkgaW5zdGFuY2VzIG9mIHRoYXQgZnVuY3Rpb24gbmFtZS4gVGhlbiwgSSBjYW4gc3RhcnQgdG8gcmVhc29uIHRocm91Z2ggdGhlIGNhbGwgc3RhY2sgb2YgdGhhdCBmdW5jdGlvbiBhbmQgaXRzIHJlbGF0aW9ucyB3aXRoIG90aGVyIGNvbXBvbmVudHMsIGFmdGVyIGlkZW50aWZ5aW5nIHRoZW0uIFVuZGVyc3RhbmRpbmcgaXRzIHVzYWdlIHdpbGwgZGljdGF0ZSBob3cgbXVjaCBmdXJ0aGVyIGVmZm9ydCBJIG5lZWQgdG8gaW52ZXN0IGluIHVuZGVyc3RhbmRpbmcgaXRzIHB1cnBvc2UgYW5kIGltcGxlbWVudGF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwOTo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtsaWJldGhfeHNrX3J1bl9wYXNzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC94c2suYz02Nz1FWFBPUlRfU1lNQk9MX0dQTChsaWJldGhfeHNrX2J1ZmZfYWRkX2ZyYWcpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC94c2suYy03My0gKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3hzay5jOjc0OiAqIEV4dGVybmFsIGhlbHBlciB1c2VkIGJ5IF9fbGliZXRoX3hza19ydW5fcGFzcygpLCBkbyBub3QgY2FsbCBkaXJlY3RseS5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC94c2suYy03NS0gKiBBZGRzIGJ1ZmZlciYjMzk7cyBmcmFncyBjb3VudCBhbmQgdG90YWwgbGVuIHRvIHRoZSBvbnN0YWNrIHN0YXRzLlxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaD0zOTA9X19saWJldGhfeHNrX3J1bl9wcm9nKHN0cnVjdCBsaWJldGhfeGRwX2J1ZmYgKnhkcCxcbi0tXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtNDIzLS8qKlxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjQyNDogKiBfX2xpYmV0aF94c2tfcnVuX3Bhc3MgLSBoZWxwZXIgdG8gcnVuIFhEUCBwcm9ncmFtIGFuZCBoYW5kbGUgdGhlIHJlc3VsdFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTQyNS0gKiBAeGRwOiBYU2sgYnVmZmVyIHRvIHByb2Nlc3Ncbi0tXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg9NDQwPXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgYm9vbFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjQ0MTpfX2xpYmV0aF94c2tfcnVuX3Bhc3Moc3RydWN0IGxpYmV0aF94ZHBfYnVmZiAqeGRwLFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTQ0Mi1cdFx0ICAgICAgc3RydWN0IGxpYmV0aF94ZHBfdHhfYnVsayAqYnEsIHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSxcbi0tXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtNDg3LS8qKlxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjQ4ODogKiBsaWJldGhfeHNrX3J1bl9wYXNzIC0gaGVscGVyIHRvIHJ1biBYRFAgcHJvZ3JhbSBhbmQgaGFuZGxlIHRoZSByZXN1bHRcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC00ODktICogQHhkcDogWFNrIGJ1ZmZlciB0byBwcm9jZXNzXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTQ5OS0gKi9cbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDo1MDA6I2RlZmluZSBsaWJldGhfeHNrX3J1bl9wYXNzKHhkcCwgYnEsIG5hcGksIHJzLCBkZXNjLCBydW4sIHBvcHVsYXRlKVx0ICAgICBcXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjUwMTpcdF9fbGliZXRoX3hza19ydW5fcGFzcyh4ZHAsIGJxLCBuYXBpLCBycywgZGVzYywgbGliZXRoX3hkcF9wcmVwX2Rlc2MsIFxcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtNTAyLVx0XHRcdCAgICAgIHJ1biwgcG9wdWxhdGUpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDA5OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg3MjUKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiA4OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIHRoZSBgeGRwX2J1aWxkX3NrYl9mcm9tX3pjYCBGdW5jdGlvbioqCgpPa2F5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgYHhkcF9idWlsZF9za2JfZnJvbV96Y2AgaXMgYmVpbmcgdXNlZC4gRmlyc3QsIEkgcmVtZW1iZXIgYWxyZWFkeSBzZWFyY2hpbmcgZm9yIGBsaWJldGhfeHNrX3J1bl9wYXNzYCwgc28gbGV0JiMzOTtzIHNlZSB3aGVyZSB0aGF0IHRha2VzIHVzLiBOb3csIGlzIHRoZXJlIGFueSBvdGhlciBkcml2ZXIgbWFraW5nIHVzZSBvZiB0aGUgYHhkcF9idWlsZF9za2JfZnJvbV96Y2AgZnVuY3Rpb24gYXNpZGUgZnJvbSB0aGUgb25lcyBJJiMzOTt2ZSBwcmV2aW91c2x5IG5vdGVkPyBCYXNlZCBvbiBteSBwcmlvciBzZWFyY2hlcywgaXQgYXBwZWFycyB0aGUgb25seSB1c2VycyBhcmUgYGljZWAgYW5kIGBsaWJldGhgLiBBaCwgcmlnaHQsIGBsaWJldGhgIGlzIHRoZSBsaWJyYXJ5IGNvbXBvbmVudCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byBJbnRlbCBFdGhlcm5ldCBkcml2ZXJzLiBOb3cgSSBuZWVkIHRvIGJyb2FkZW4gdGhlIHNjb3BlOyBsZXQmIzM5O3Mgc2VhcmNoICphbGwqIGZpbGVzIGZvciBgeGRwX2J1aWxkX3NrYl9mcm9tX3pjYCB0byBtYWtlIHN1cmUgbm90aGluZyBoYXMgZXNjYXBlZCBteSBhdHRlbnRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDA5OjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hkcF9idWlsZF9za2JfZnJvbV96YyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jPTU2Nz1pbnQgaWNlX2NsZWFuX3J4X2lycV96YyhzdHJ1Y3QgaWNlX3J4X3JpbmcgKnJ4X3JpbmcsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy02NTUtXHRcdC8qIFhEUF9QQVNTIHBhdGggKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM6NjU2Olx0XHRza2IgPSB4ZHBfYnVpbGRfc2tiX2Zyb21femMoZmlyc3QpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy02NTctXHRcdGlmICghc2tiKSB7XG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oPTQ0MT1fX2xpYmV0aF94c2tfcnVuX3Bhc3Moc3RydWN0IGxpYmV0aF94ZHBfYnVmZiAqeGRwLFxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC00NzAtXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6NDcxOlx0c2tiID0geGRwX2J1aWxkX3NrYl9mcm9tX3pjKFx1MDAyNnhkcC1cdTAwM2ViYXNlKTtcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC00NzItXHRpZiAodW5saWtlbHkoIXNrYikpIHtcbi0tXG5pbmNsdWRlL25ldC94ZHAuaD0zNzc9c3RydWN0IHNrX2J1ZmYgKnhkcF9idWlsZF9za2JfZnJvbV9idWZmKGNvbnN0IHN0cnVjdCB4ZHBfYnVmZiAqeGRwKTtcbmluY2x1ZGUvbmV0L3hkcC5oOjM3ODpzdHJ1Y3Qgc2tfYnVmZiAqeGRwX2J1aWxkX3NrYl9mcm9tX3pjKHN0cnVjdCB4ZHBfYnVmZiAqeGRwKTtcbmluY2x1ZGUvbmV0L3hkcC5oLTM3OS1zdHJ1Y3QgeGRwX2ZyYW1lICp4ZHBfY29udmVydF96Y190b194ZHBfZnJhbWUoc3RydWN0IHhkcF9idWZmICp4ZHApO1xuLS1cbm5ldC9jb3JlL3hkcC5jPTY4Nz1zdGF0aWMgbm9pbmxpbmUgYm9vbCB4ZHBfY29weV9mcmFnc19mcm9tX3pjKHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L2NvcmUveGRwLmMtNzI2LS8qKlxubmV0L2NvcmUveGRwLmM6NzI3OiAqIHhkcF9idWlsZF9za2JfZnJvbV96YyAtIGNyZWF0ZSBhbiBza2IgZnJvbSBYU2sgXHUwMDI2eGRwX2J1ZmZcbm5ldC9jb3JlL3hkcC5jLTcyOC0gKiBAeGRwOiBzb3VyY2UgWFNrIGJ1ZmZcbi0tXG5uZXQvY29yZS94ZHAuYy03MzgtICovXG5uZXQvY29yZS94ZHAuYzo3Mzk6c3RydWN0IHNrX2J1ZmYgKnhkcF9idWlsZF9za2JfZnJvbV96YyhzdHJ1Y3QgeGRwX2J1ZmYgKnhkcClcbm5ldC9jb3JlL3hkcC5jLTc0MC17XG4tLVxubmV0L2NvcmUveGRwLmMtNzkyLX1cbm5ldC9jb3JlL3hkcC5jOjc5MzpFWFBPUlRfU1lNQk9MX0dQTCh4ZHBfYnVpbGRfc2tiX2Zyb21femMpO1xubmV0L2NvcmUveGRwLmMtNzk0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwOTo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NjkxCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMjE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVGFyZ2V0IERyaXZlciBhbmQgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgc28gdGhlIGBpY2VgIGRyaXZlciBpcyB0aGUgb25seSBvbmUgSSBzZWUgdXNpbmcgdGhpcywgYWxvbmcgd2l0aCBgbGliZXRoYCwgd2hpY2ggbWlnaHQgYWxzbyBiZSBsaW5rZWQgdG8gYGlkcGZgIG9yIGBpYXZmYC4gQnV0IGBpY2VgLi4uIHRoYXQmIzM5O3MgYSAqcGh5c2ljYWwqIG5ldHdvcmsgY2FyZCBkcml2ZXIsIHJpZ2h0PyBIbW0sIGNhbiB3ZSBldmVuIGZ1enogc29tZXRoaW5nIGxpa2UgdGhhdCBlZmZlY3RpdmVseT8gVHlwaWNhbGx5LCBwaHlzaWNhbCBuZXR3b3JrIGNhcmQgZHJpdmVycyBkb24mIzM5O3QgbGVuZCB0aGVtc2VsdmVzIHRvIGZ1enppbmcgZGlyZWN0bHkgaW4gYSB2aXJ0dWFsaXplZCBzZXR0aW5nLCB1bmxlc3Mgd2UmIzM5O3ZlIGdvdCBhIHNvZnR3YXJlIGVtdWxhdG9yIGluIHRoZSBtaXgsIG9yIGNhbiBsZXZlcmFnZSBzb21ldGhpbmcgbGlrZSBgdmV0aGAgb3IgYHR1bmAvYG1hY3ZsYW5gLgoKV2FpdCBhIG1pbnV0ZSwgSSYjMzk7bSBqdXN0IGdldHRpbmcgbXkgdGhpbmtpbmcgc3RyYWlnaHQgLSBgeGRwX2J1aWxkX3NrYl9mcm9tX3pjYCBpcyBhIHBhcnQgb2YgdGhlIFhEUCB6ZXJvLWNvcHkgKEFGX1hEUCkgcGF0aCwgaXNuJiMzOTt0IGl0PyBBRl9YRFAgemVyby1jb3B5IGlzIHJlc3RyaWN0ZWQgdG8gc3BlY2lmaWMgZHJpdmVycy4gTm93LCBsZXQmIzM5O3Mgc2VlLCBpZiBJIGxvb2sgYXQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmNgIHRoYXQmIzM5O3MgdGhlIGBpY2VgIGRyaXZlciBhZ2Fpbi4gT2theSwgc28gd2UmIzM5O3ZlIGVzdGFibGlzaGVkIHRoYXQgdGhlIGNvZGUgaXMgd2l0aGluIHRoZSBgaWNlYCBkcml2ZXIuCgpUaGUgbWlsbGlvbi1kb2xsYXIgcXVlc3Rpb24gbm93IGlzIHdoZXRoZXIgYW55IG9mIHRoZSAqdmlydHVhbCogZHJpdmVycyBhY3R1YWxseSB1c2UgYHhkcF9idWlsZF9za2JfZnJvbV96Y2AuIEkgbmVlZCB0byBjaGVjayBpZiBgdmV0aGAgc3VwcG9ydHMgQUZfWERQIHplcm8tY29weSwgYmVjYXVzZSBpZiBpdCBkb2VzLCBpdCYjMzk7cyBhIHBvdGVudGlhbCBhdmVudWUgZm9yIGZ1enppbmcsIGJ5cGFzc2luZyB0aGUgbmVlZCBmb3IgYSBwaHlzaWNhbCBuZXR3b3JrIGNhcmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDA5OjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eGRwX2J1aWxkX3NrYl9mcm9tX3pjJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdmV0aC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDk6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAyODUKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqQXNzZXNzaW5nIGB2ZXRoYCBmb3IgWmVyby1Db3B5IENhcGFiaWxpdGllcyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgdGhlIGB2ZXRoYCBpbnRlcmZhY2UsIHRoYXQgdmlydHVhbCBFdGhlcm5ldCBicmlkZ2UsIHN1cHBvcnRzIHplcm8tY29weSBvcGVyYXRpb25zLiBUaGlzIGlzIGNydWNpYWwgZm9yIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiBpbiBtYW55IG5ldHdvcmsgYXBwbGljYXRpb25zIEkmIzM5O20gZGVhbGluZyB3aXRoLiBJIGtub3cgdGhlIHRoZW9yeSwgb2YgY291cnNlLCBidXQgbm93IEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIHByYWN0aWNhbCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLiBJcyB0aGlzIHNvbWV0aGluZyB0aGF0JiMzOTtzIG5hdGl2ZWx5IGJ1aWx0IGludG8gdGhlIGB2ZXRoYCBkcml2ZXIsIG9yIHdvdWxkIEkgbmVlZCB0byBkbyBzb21lIG1vcmUgY29tcGxleCBjb25maWd1cmF0aW9uIG9yIGFwcGxpY2F0aW9uLWxldmVsIGhhbmRsaW5nIHRvIGFjaGlldmUgdHJ1ZSB6ZXJvLWNvcHkgYmVoYXZpb3I/IEkmIzM5O20gcGljdHVyaW5nIHRoZSBkYXRhIGZsb3cuLi4gaXMgaXQgZGlyZWN0bHkgcGFzc2luZyBidWZmZXJzLCBvciBpcyB0aGVyZSBhbiB1bm5lY2Vzc2FyeSBjb3B5IGludHJvZHVjZWQgc29tZXdoZXJlIGluIHRoZSBrZXJuZWwmIzM5O3MgcHJvY2Vzc2luZyBjaGFpbj8gVGltZSB0byBkaXZlIGludG8gdGhlIGRvY3VtZW50YXRpb24sIGxvb2sgYXQgdGhlIHNvdXJjZSBjb2RlLCBtYXliZSBldmVuIHJ1biBzb21lIHF1aWNrIHRlc3RzIGlmIEkgY2FuJiMzOTt0IGZpbmQgYSBkZWZpbml0aXZlIGFuc3dlci4gVWx0aW1hdGVseSwgZWZmaWNpZW50IGRhdGEgdHJhbnNmZXIgaXMga2V5IHRvIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZSwgc28gdGhpcyBpbml0aWFsIGFzc2Vzc21lbnQgaXMgYSByZWFsbHkgaW1wb3J0YW50IGZpcnN0IHN0ZXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDA5OjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7WERQX1NFVFVQX1hTS19QT09MJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdmV0aC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDk6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA1NjMKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipYRFAgWmVyby1Db3B5IGFuZCB0aGUgYHZldGhgIEludGVyZmFjZSoqCgpIbW0sIGhvbGQgb24gYSBzZWNvbmQuIEkgaGFkIGEgbW9tZW50YXJ5IGxhcHNlIHRoZXJlLiBJdCBqdXN0IGhpdCBtZSDigJMgYHZldGhgICpkb2VzKiBhY3R1YWxseSBzdXBwb3J0IEFGX1hEUCB6ZXJvLWNvcHksIGRvZXNuJiMzOTt0IGl0PyBNeSBpbml0aWFsIGltcHJlc3Npb24gd2FzIG9mZi4gSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBpbW1lZGlhdGVseS4gTGV0JiMzOTtzIHNlZS4uLiB3aGF0IGFib3V0IHRoZSBmdW5jdGlvbiBgdmV0aF94c2tfcG9vbF9lbmFibGVgPyBUaGF0IHJpbmdzIGEgYmVsbC4gVGltZSB0byByZWZyZXNoIG15IG1lbW9yeSBhbmQgY2hlY2sgdGhhdCBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiB0byBiZSBzdXJlLiBJJiMzOTttIGxpa2VseSBmb3JnZXR0aW5nIHNvbWUgc3VidGxlIGRldGFpbCwgYW5kIEkgZG9uJiMzOTt0IHdhbnQgdG8gcHJvcGFnYXRlIG91dGRhdGVkIGluZm9ybWF0aW9uLiBUaGUgZGV2aWwmIzM5O3MgYWx3YXlzIGluIHRob3NlIGxvdy1sZXZlbCBkZXRhaWxzIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwOTo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hza19wb29sX2VuYWJsZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3ZldGguYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDA5OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwODAyCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6CgoqKkludmVzdGlnYXRpbmcgYHZldGhgIGFuZCBgeHNrYCBDb21wYXRpYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGludGVncmF0aW9uIG9mIGB2ZXRoYCBhbmQgYHhza2AuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHZlcmlmeSBob3cgdGhlc2UgdHdvIHRlY2hub2xvZ2llcyBpbnRlcmFjdCBhbmQgd2hhdCBwb3RlbnRpYWwgY29uc2lkZXJhdGlvbnMgdGhlcmUgYXJlLiBNeSBpbml0aWFsIHF1ZXN0aW9uIGlzOiB3aGF0JiMzOTtzIHRoZSBhY3R1YWwgcmVsYXRpb25zaGlwPyBJIG5lZWQgdG8gZGlnIGludG8gdGhlIHRlY2huaWNhbCBkZXRhaWxzIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSBrbm93biBpc3N1ZXMgb3IgbGltaXRhdGlvbnMgd2hlbiB1c2luZyB0aGVtIHRvZ2V0aGVyLiBJJiMzOTtsbCBuZWVkIHRvIHJlc2VhcmNoIGFueSBleGlzdGluZyBkb2N1bWVudGF0aW9uLCBleGFtcGxlcywgb3IgcGVyZm9ybWFuY2UgbWV0cmljcy4gSXQmIzM5O3MgdGltZSB0byBjaGVjayB0aGUgc3RhdHVzIG9mIGFueSBwYXRjaGVzIG9yIHVwZGF0ZXMgdGhhdCBtaWdodCBiZSByZWxldmFudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDk6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4c2smIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC92ZXRoLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwOTo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDk5OAoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCYjMzk7cyBwZXJzcGVjdGl2ZToKCioqSW52ZXN0aWdhdGluZyB0aGUgTWlzc2luZyBYU0sgU3VwcG9ydCBpbiB2ZXRoKioKCkhtbSwgaG9sZCBvbiBhIHNlY29uZC4gSXQgc2VlbXMgSSYjMzk7dmUgZW5jb3VudGVyZWQgYSBzaXR1YXRpb24gd2hlcmUgSSB3YXMgZXhwZWN0aW5nIGB2ZXRoYCDigJMgdGhlIHZpcnR1YWwgRXRoZXJuZXQgcGFpciDigJMgdG8gaGF2ZSBgeHNrYCAoQUZfWERQIHNvY2tldCkgc3VwcG9ydCwgYnV0IEkmIzM5O20gbm90IHNlZWluZyBpdC4gVGhhdCYjMzk7cyB1bnVzdWFsLCBhbmQgaXQmIzM5O3MgdGhyb3dpbmcgdXAgYSByZWQgZmxhZyBpbiBteSBtaW5kLiBUaGUgbmF0dXJhbCBmaXJzdCBzdGVwIHRvIHVuZGVyc3RhbmQgdGhpcyBpcyB0byBkaXZlIGRpcmVjdGx5IGludG8gdGhlIGtlcm5lbCBzb3VyY2UgY29kZSwgc3BlY2lmaWNhbGx5IHRoZSBgZHJpdmVycy9uZXQvdmV0aC5jYCBmaWxlLiBUaW1lIHRvIGNvbmZpcm0gd2hldGhlciBteSBpbml0aWFsIGFzc3VtcHRpb24gd2FzIGluY29ycmVjdCwgb3IgaWYgdGhlcmUmIzM5O3MgYSBzcGVjaWZpYyByZWFzb24gd2h5IGB4c2tgIGlzbiYjMzk7dCBlbmFibGVkIHRoZXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGlzIGlzIGFuIG92ZXJzaWdodCwgYSBkZWxpYmVyYXRlIGRlc2lnbiBjaG9pY2UsIG9yIGlmIHRoZXJlIGFyZSBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIHByZXZlbnRpbmcgYHhza2AgaW50ZWdyYXRpb24gd2l0aCBgdmV0aGAuIExldCYjMzk7cyBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLiBJIGV4cGVjdCB0aGUgYW5zd2VyIHRvIGJlIGluIHRoZSBjb2RlIGl0c2VsZi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDk6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4c2smIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC92ZXRoJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDk6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEyODcKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiAxMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBYRFAgYW5kIFZpcnR1YWxpemF0aW9uKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGluLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gYHhkcF9idWlsZF9za2JfZnJvbV96Y2AgYW5kIHBvdGVudGlhbCB2aXJ0dWFsaXphdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGNoZWNrIG91dCBgbmV0L2NvcmUveGRwLmNgLCBhcyB0aGF0JiMzOTtzIHdoZXJlIEkmIzM5O2QgZXhwZWN0IHRvIGZpbmQgdGhlIGRlZmluaXRpb24gb2YgYHhkcF9idWlsZF9za2JfZnJvbV96Y2AuIEl0JiMzOTtzIGEgZnVuZGFtZW50YWwgZnVuY3Rpb24sIHNvIHRoYXQgc2VlbXMgbGlrZSB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludC4KClRoZSBjb3JlIHF1ZXN0aW9uIGlzLCBjYW4gd2UgYWN0dWFsbHkgcmVhY2ggYHhkcF9idWlsZF9za2JfZnJvbV96Y2Agd2l0aGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IE15IGNvbmNlcm4gaXMgdGhhdCBpZiBpdCYjMzk7cyB0aWdodGx5IGNvdXBsZWQgd2l0aCBoYXJkd2FyZS1zcGVjaWZpYyBjb21wb25lbnRzLCBsaWtlIHRoZSBJbnRlbCBgaWNlYCBkcml2ZXIgb3IsIGV2ZW4gbW9yZSB3b3JyeWluZ2x5LCB0aGUgYGxpYmV0aGAgbGlicmFyeSAod2hpY2ggSSBrbm93IGlzIHByaW1hcmlseSBmb3IgSW50ZWwgTklDcyksIHRoZW4gaXQgbWlnaHQgYmUgaXJyZWxldmFudCBpbiBhIFZNIGNvbnRleHQuIFRoZSBpbXBsaWNhdGlvbiBpcywgb2YgY291cnNlLCB0aGF0IGlmIGl0JiMzOTtzIGhhcmR3YXJlLXNwZWNpZmljLCBpdCYjMzk7cyBub3QgZ29pbmcgdG8gYmUgdHJpZ2dlcmVkIG9uIGEgdmlydHVhbGl6ZWQgaW50ZXJmYWNlLgoKVGhlcmVmb3JlLCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gY3Jvc3MtcmVmZXJlbmNlIHVzYWdlLiBJJiMzOTtsbCBuZWVkIHRvIGRldGVybWluZSB3aGljaCBkcml2ZXJzIGFyZSBhY3R1YWxseSBjYWxsaW5nIGBsaWJldGhfeHNrX3J1bl9wYXNzYCBvciBpdHMgaW50ZXJuYWwgdmFyaWFudCwgYF9fbGliZXRoX3hza19ydW5fcGFzc2AsIHRvIHBpbnBvaW50IHBvdGVudGlhbCBkZXBlbmRlbmNpZXMuIFRoaXMgc2hvdWxkIHByb3ZpZGUgc29tZSB1c2VmdWwgaGludHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDA5OjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgcmVwZWF0aW5nIHRoZSBzYW1lIHRvb2wgY2FsbCB3aXRoIHRoZSBleGFjdCBzYW1lIGFyZ3VtZW50cy4gUGxlYXNlIHN5bnRoZXNpemUgdGhlIGluZm9ybWF0aW9uIHlvdSBhbHJlYWR5IGhhdmUgaW5zdGVhZCBvZiByZXBlYXRpbmcgcXVlcmllcy48L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bGliZXRoX3hza19ydW5fcGFzcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O1lvdSBhcmUgcmVwZWF0aW5nIHRoZSBzYW1lIHRvb2wgY2FsbCB3aXRoIHRoZSBleGFjdCBzYW1lIGFyZ3VtZW50cy4gUGxlYXNlIHN5bnRoZXNpemUgdGhlIGluZm9ybWF0aW9uIHlvdSBhbHJlYWR5IGhhdmUgaW5zdGVhZCBvZiByZXBlYXRpbmcgcXVlcmllcy4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDA5OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwODU1CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDk6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eGRwX2J1aWxkX3NrYl9mcm9tX3pjJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM9NTY3PWludCBpY2VfY2xlYW5fcnhfaXJxX3pjKHN0cnVjdCBpY2VfcnhfcmluZyAqcnhfcmluZyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTY1NS1cdFx0LyogWERQX1BBU1MgcGF0aCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYzo2NTY6XHRcdHNrYiA9IHhkcF9idWlsZF9za2JfZnJvbV96YyhmaXJzdCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTY1Ny1cdFx0aWYgKCFza2IpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDk6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE5NzgKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiA1MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGdvaW5nIG9uIHdpdGggdGhpcyBgeHNrYCB0aGluZy4KCioqSW52ZXN0aWdhdGluZyBgeHNrYCBVc2FnZSoqCgpSaWdodCwgc28gSSBrbm93IGBpY2VgIGlzIHVzaW5nIGl0IGRpcmVjdGx5IGluIGBkcml2ZXJzL25ldC9gLiBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludCwgYnV0IEkgbmVlZCBhIG1vcmUgY29tcGxldGUgcGljdHVyZS4gVGhlIHF1ZXN0aW9uIG5vdyBpczogd2hhdCBlbHNlIGlzIHRvdWNoaW5nIGB4c2tgPyBJJiMzOTt2ZSBnb3QgdG8gY29uc2lkZXIgYWxsIHRoZSBwb3NzaWJpbGl0aWVzLgoKSSByZW1lbWJlciBzZWVpbmcgYGluY2x1ZGUvbmV0L2xpYmV0aC94c2suaGAuIExldCYjMzk7cyBkaWcgZGVlcGVyIGFuZCBmaWd1cmUgb3V0IHdoZXJlIHRoYXQgaGVhZGVyIGZpbGUgaXMgYWN0dWFsbHkgYmVpbmcgaW5jbHVkZWQgd2l0aGluIHRoZSBwcm9qZWN0LiBLbm93aW5nIHRoZSBpbmNsdWRlIGdyYXBoIGlzIGNydWNpYWwgdG8gdW5kZXJzdGFuZGluZyB0aGUgZnVsbCBzY29wZSBvZiBob3cgYHhza2AgaXMgYmVpbmcgdXRpbGl6ZWQgYW5kIHBvdGVudGlhbGx5IG1vZGlmaWVkIGFjcm9zcyB0aGUgY29kZWJhc2UuIFRpbWUgdG8gaHVudCBkb3duIHRob3NlIGluY2x1ZGUgc3RhdGVtZW50cyEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDk6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7I2luY2x1ZGUgXHUwMDNjbmV0L2xpYmV0aC94c2suaFx1MDAzZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jLTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jOjQ6I2luY2x1ZGUgXHUwMDNjbmV0L2xpYmV0aC94c2suaFx1MDAzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi94c2suYy01LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC94c2suYy03LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3hzay5jOjg6I2luY2x1ZGUgXHUwMDNjbmV0L2xpYmV0aC94c2suaFx1MDAzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3hzay5jLTktXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDA5OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMzc4CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMjU5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIGB4ZHBfYnVpbGRfc2tiX2Zyb21femNgIFJlYWNoYWJpbGl0eSoqCgpPa2F5LCBzbyBgaWRwZmAgdXNlcyB0aGlzLiBSaWdodCwgYGlkcGZgIGlzIHRoZSBJbnRlbCBJbmZyYXN0cnVjdHVyZSBEYXRhIFBhdGggRnVuY3Rpb24gZHJpdmVyIOKAkyBhIHBoeXNpY2FsIGhhcmR3YXJlIGRyaXZlciwganVzdCBsaWtlIGBpY2VgLiBUaGUgcXVlc3Rpb24gdGhlbiBiZWNvbWVzLCBjYW4gdGhlc2UgYmUgZnV6emVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IEdlbmVyYWxseSwgeW91IGNhbiYjMzk7dCBmdXp6IHBoeXNpY2FsIFBDSWUgZGV2aWNlcyBkaXJlY3RseSB1bmxlc3MgUUVNVSBwcm92aWRlcyBlbXVsYXRpb24gZm9yIHRoZW0uIERvZXMgUUVNVSBldmVuICplbXVsYXRlKiBgaWNlYCAodGhlIEludGVsIEU4MDAgc2VyaWVzKSwgb3IgYGlkcGZgPwoKTm8sIHR5cGljYWwgUUVNVSBlbXVsYXRpb25zIGNvdmVyIGBlMTAwMGAsIGBlMTAwMGVgLCBgaWdiYCwgYHJ0bDgxMzlgLCBgdmlydGlvLW5ldGAsIGB2bXhuZXQzYCwgYHBjbmV0YCwgYG5lMmtfcGNpYCwgYW5kIGB0dWxpcGAuIEl0JiMzOTtzIG5vdCB0aGUgdXN1YWwgbGluZXVwLiBJdCAqZG9lc24mIzM5O3QqIGVtdWxhdGUgYGljZWAgb3IgYGlkcGZgLiBUaGF0IHBvaW50cyBtZSB0byB0aGUgYHhkcF9idWlsZF9za2JfZnJvbV96Y2AgY29kZSBwYXRoIGJlaW5nIHJlYWNoYWJsZSBvbmx5IGlmIGFuIEFGX1hEUCB6ZXJvLWNvcHkgY2FwYWJsZSBkcml2ZXIgY2FsbHMgaXQuCgpXYWl0LCBob2xkIG9uIGEgc2Vjb25k4oCmIElzIHRoYXQgKnJlYWxseSogdGhlIG9ubHkgd2F5IHRvIGdldCB0aGVyZT8gQXJlIHRoZXJlIGFueSBvdGhlciBwYXRocyB0byBgeGRwX2J1aWxkX3NrYl9mcm9tX3pjYD8gTGV0IG1lIHF1aWNrbHkgY2hlY2sgaWYgdGhpcyBmdW5jdGlvbiBpcyBhbHNvIGNhbGxlZCBmcm9tIHNvbWUgY29yZSBuZXR3b3JrIGNvZGUuIEdvdHRhIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBzb21ldGhpbmcgb2J2aW91cyBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwOTo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4ZHBfYnVpbGRfc2tiX2Zyb21femMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9jb3JlL3hkcC5jPTY4Nz1zdGF0aWMgbm9pbmxpbmUgYm9vbCB4ZHBfY29weV9mcmFnc19mcm9tX3pjKHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L2NvcmUveGRwLmMtNzI2LS8qKlxubmV0L2NvcmUveGRwLmM6NzI3OiAqIHhkcF9idWlsZF9za2JfZnJvbV96YyAtIGNyZWF0ZSBhbiBza2IgZnJvbSBYU2sgXHUwMDI2eGRwX2J1ZmZcbm5ldC9jb3JlL3hkcC5jLTcyOC0gKiBAeGRwOiBzb3VyY2UgWFNrIGJ1ZmZcbi0tXG5uZXQvY29yZS94ZHAuYy03MzgtICovXG5uZXQvY29yZS94ZHAuYzo3Mzk6c3RydWN0IHNrX2J1ZmYgKnhkcF9idWlsZF9za2JfZnJvbV96YyhzdHJ1Y3QgeGRwX2J1ZmYgKnhkcClcbm5ldC9jb3JlL3hkcC5jLTc0MC17XG4tLVxubmV0L2NvcmUveGRwLmMtNzkyLX1cbm5ldC9jb3JlL3hkcC5jOjc5MzpFWFBPUlRfU1lNQk9MX0dQTCh4ZHBfYnVpbGRfc2tiX2Zyb21femMpO1xubmV0L2NvcmUveGRwLmMtNzk0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwOTo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzI0NwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDIxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBgeGRwX2J1aWxkX3NrYl9mcm9tX3pjYCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYHhkcF9idWlsZF9za2JfZnJvbV96Y2AuIEkgc2VlIGl0JiMzOTtzIGRlZmluZWQgYW5kIGV4cG9ydGVkIG9ubHkgaW4gYG5ldC9jb3JlL3hkcC5jYCwgYW5kIHRoZSBwcmltYXJ5IGNvbnN1bWVycyBhcHBlYXIgdG8gYmUgdGhlIGBpY2VgIGFuZCBgbGliZXRoYCBkcml2ZXJzIOKAkyB0aGUgbGF0dGVyIGJlaW5nIHV0aWxpemVkIGJ5IGBpZHBmYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB0aGlzIGlzIGxpa2VseSBkZWFkIGNvZGUgaW4gb3VyIHR5cGljYWwgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBOZWl0aGVyIGBpY2VgIG5vciBgaWRwZmAgYXJlIGVtdWxhdGVkIGluIFFFTVUsIHNvIHRoZSBjb2RlIHBhdGggc2VlbXMgaW1wb3NzaWJsZSB0byBoaXQsIGVzcGVjaWFsbHkgaW4gcGxhY2VzIGxpa2UgR0NFIG9yIG91ciBRRU1VIHNldHVwcy4KCkJ1dCB3YWl0LCBob2xkIG9uIGEgc2Vjb25kLi4uIENvdWxkIHRoZXJlIGJlIGEgc2l0dWF0aW9uIHdoZXJlIGB4ZHBfYnVpbGRfc2tiX2Zyb21femNgIGlzIGNhbGxlZCBpbmRpcmVjdGx5LCBwZXJoYXBzIHRocm91Z2ggYSBCUEYgaGVscGVyIGZ1bmN0aW9uPyBJIG5lZWQgdG8gcnVsZSB0aGF0IG91dC4gTGV0IG1lIHJlZnJlc2ggbXkgbWVtb3J5Li4uIHJpZ2h0LCBpdCYjMzk7cyBhIGtlcm5lbCBmdW5jdGlvbiwgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIGZvciBkcml2ZXJzLiBJdCYjMzk7cyBtZWFudCB0byBiZSB1c2VkIHdoZW4gYSBkcml2ZXIgcmVjZWl2ZXMgcGFja2V0cyBpbiB6ZXJvLWNvcHkgbW9kZSBhbmQgYW4gWERQIHByb2dyYW0gcmV0dXJucyBgWERQX1BBU1NgLiBUaGUgZHJpdmVyIHRoZW4gbmVlZHMgdG8gY29uc3RydWN0IGFuIGBza2JgIChzb2NrZXQgYnVmZmVyKSBmcm9tIHRoZSB6ZXJvLWNvcHkgYnVmZmVyIHRvIGdldCB0aGUgcGFja2V0IHVwIHRoZSBuZXR3b3JrIHN0YWNrLgoKU28sIGxvZ2ljYWxseSwgSSBoYXZlIHRvIGNvbnNpZGVyIHdoZXRoZXIgYW55IHZpcnR1YWwgZHJpdmVycyBhcmUgdXNpbmcgdGhpcy4gSSYjMzk7bSBwcmV0dHkgY29uZmlkZW50IG5vIGN1cnJlbnQgdmlydHVhbCBkcml2ZXJzIHVzZSB6ZXJvLWNvcHkgWERQLCBidXQgSSBuZWVkIHRvIGJlIGNlcnRhaW4uIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0aGlua2luZyBvZiBkcml2ZXJzIGxpa2UgYHZldGhgLCBgdmlydGlvX25ldGAsIGFuZCBgdHVuYCB0aGF0IGFyZSBjb21tb25seSB1c2VkIGluIHRoZSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gQmVjYXVzZSwgaWYgbm9uZSBvZiB0aGVzZSBpbXBsZW1lbnQgemVyby1jb3B5IFhEUCwgdGhlbiB0aGlzIGZ1bmN0aW9uIGlzIGluZGVlZCB1bnJlYWNoYWJsZS4KCkkgYmV0dGVyIGRvdWJsZS1jaGVjayBgdmlydGlvX25ldGAuIEkgY2FuJiMzOTt0IGJlIHN1cmUgdW50aWwgSSYjMzk7dmUgdmVyaWZpZWQgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDA5OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hkcF9idWlsZF9za2ImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdmlydGlvX25ldC5jPTIwMzA9c3RhdGljIHZvaWQgbWVyZ2VhYmxlX2J1Zl9mcmVlKHN0cnVjdCByZWNlaXZlX3F1ZXVlICpycSwgaW50IG51bV9idWYsXG4tLVxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTIwNTEtXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6MjA1MjovKiBXaHkgbm90IHVzZSB4ZHBfYnVpbGRfc2tiX2Zyb21fZnJhbWUoKSA/XG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtMjA1My0gKiBYRFAgY29yZSBhc3N1bWVzIHRoYXQgeGRwIGZyYWdzIGFyZSBQQUdFX1NJWkUgaW4gbGVuZ3RoLCB3aGlsZSBpblxuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy0yMDU1LSAqICAxLiBUaGUgc2l6ZSBvZiB0aGUgcHJlZmlsbGVkIGJ1ZmZlciBpcyBub3QgZml4ZWQgYmVmb3JlIHhkcCBpcyBzZXQuXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6MjA1NjogKiAgMi4geGRwX2J1aWxkX3NrYl9mcm9tX2ZyYW1lKCkgZG9lcyBtb3JlIGNoZWNrcyB0aGF0IHdlIGRvbiYjMzk7dCBuZWVkLFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTIwNTctICogICAgIGxpa2UgZXRoX3R5cGVfdHJhbnMoKSAod2hpY2ggdmlydGlvLW5ldCBkb2VzIGluIHJlY2VpdmVfYnVmKCkpLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwOTo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDE1MgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgaW5pdGlhbCB0aG91Z2h0cywgZnJhbWVkIGFzIGEgY29uY2lzZSBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgTmV0d29yayBEZXZpY2UgSW1wbGVtZW50YXRpb25zKioKCkhtbSwgc28gSSB3YXMganVzdCBtZW50YWxseSByZXZpZXdpbmcgbmV0d29yayBkZXZpY2UgaW1wbGVtZW50YXRpb25zLCBhbmQgdGhlIGZpcnN0IHRoaW5nIHRoYXQgcG9wcGVkIGludG8gbXkgaGVhZCB3YXMsICYjMzQ7d2FpdCwgZG9lc24mIzM5O3QgYHZpcnRpb19uZXRgICphdm9pZCogdGhlIGZlYXR1cmUgSSB3YXMganVzdCBsb29raW5nIGF0PyYjMzQ7LiBJIHRob3VnaHQgaXQgZGlkLCBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayB0aGUgc3BlY2lmaWNzIGxhdGVyLiBUaGVuIEkgaW1tZWRpYXRlbHkgd29uZGVyZWQsIHdoYXQgYWJvdXQgYHZldGhgPyBEb2VzIHRoYXQgYXBwcm9hY2ggdXNlIHRoaXMgc2FtZSB0aGluZyBvciBub3Q/IEkgbmVlZCB0byBjbGFyaWZ5IGhvdyBpdCYjMzk7cyBpbXBsZW1lbnRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDk6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eGRwX2J1aWxkX3NrYiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3ZldGguYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC92ZXRoLmM9NzA5PXN0YXRpYyB2b2lkIHZldGhfeGRwX3Jjdl9idWxrX3NrYihzdHJ1Y3QgdmV0aF9ycSAqcnEsIHZvaWQgKipmcmFtZXMsXG4tLVxuZHJpdmVycy9uZXQvdmV0aC5jLTcyNi1cbmRyaXZlcnMvbmV0L3ZldGguYzo3Mjc6XHRcdHNrYiA9IF9feGRwX2J1aWxkX3NrYl9mcm9tX2ZyYW1lKGZyYW1lc1tpXSwgc2tiLFxuZHJpdmVycy9uZXQvdmV0aC5jLTcyOC1cdFx0XHRcdFx0XHQgcnEtXHUwMDNlZGV2KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDk6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ0NTgKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgcGVyc29uYWwgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKlhEUCBhbmQgU0tCIENyZWF0aW9uOiBBIFF1aWNrIENvbnNpZGVyYXRpb24qKgoKQWxyaWdodCwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCBYRFAgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCBkaWZmZXJlbnQgaW50ZXJmYWNlcy4gU3BlY2lmaWNhbGx5LCBJIHNlZSB0aGF0IHRoZSBgdmV0aGAgaW50ZXJmYWNlIGltcGxlbWVudGF0aW9uIGRvZXNuJiMzOTt0IHVzZSB0aGUgYHhkcF9idWlsZF9za2JfZnJvbV96Y2AgZnVuY3Rpb24gZm9yIGJ1aWxkaW5nIFNLQnMgZnJvbSBmcmFtZXMuIEluc3RlYWQsIGl0IHJlbGllcyBvbiBgX194ZHBfYnVpbGRfc2tiX2Zyb21fZnJhbWVgLiBUaGF0JiMzOTtzIGludGVyZXN0aW5nLCBhbmQgZGVmaW5pdGVseSB3b3J0aCBub3RpbmcuIGBfX3hkcF9idWlsZF9za2JfZnJvbV9mcmFtZWAgaGFzIGRpZmZlcmVudCBwZXJmb3JtYW5jZSBjaGFyYWN0ZXJpc3RpY3MgYW5kIGltcGxlbWVudGF0aW9uIGRldGFpbHMsIHdoaWNoIEkgbmVlZCB0byBrZWVwIGluIG1pbmQgd2hlbiBjb21wYXJpbmcgYW5kIGNvbnRyYXN0aW5nIGRpZmZlcmVudCBpbnRlcmZhY2VzIGFuZCB0aGVpciBYRFAgYmVoYXZpb3IuCgpOb3csIG15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gYHR1bmAuIEhvdyBkb2VzIHRoZSBgdHVuYCBpbnRlcmZhY2UgaGFuZGxlIHRoaXM/IERvZXMgaXQgZm9sbG93IHRoZSBgdmV0aGAgYXBwcm9hY2gsIG9yIGRvZXMgaXQgZG8gc29tZXRoaW5nIGNvbXBsZXRlbHkgZGlmZmVyZW50PyBLbm93aW5nIHRoYXQgd2lsbCBiZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgZnVsbCBsYW5kc2NhcGUgb2YgWERQIGFuZCBTS0IgY3JlYXRpb24gYWNyb3NzIHZhcmlvdXMgaW50ZXJmYWNlIHR5cGVzLiBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgdGhhdCB0byBmaWxsIGluIHRoZSBmdWxsIHBpY3R1cmUgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDk6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4ZHBfYnVpbGRfc2tiJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdHVuLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwOTo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDc4MgoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEkmIzM5O20gc3BlYWtpbmcgdG8gYW4gZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIE5ldHdvcmsgVmlydHVhbGl6YXRpb24gT3B0aW9ucyoqCgpBbHJpZ2h0LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCBuZXR3b3JrIHZpcnR1YWxpemF0aW9uLCBhbmQgdGhlIGZpcnN0IHRoaW5nIHRoYXQgcG9wcyBpbnRvIG15IGhlYWQgaXMgYG1hY3ZsYW5gLiBJdCYjMzk7cyBhIHNvbGlkLCBpZiBzb21ldGltZXMgb3Zlcmxvb2tlZCwgb3B0aW9uLiBJJiMzOTttIGltbWVkaWF0ZWx5IHdvbmRlcmluZyBhYm91dCBpdHMgc3VpdGFiaWxpdHkgZm9yIHRoaXMgcGFydGljdWxhciB1c2UgY2FzZS4gSSBuZWVkIHRvIHF1aWNrbHkgYXNzZXNzIGlmIGl0JiMzOTtzIHRoZSByaWdodCBmaXQsIGNvbnNpZGVyaW5nIGl0cyBzdHJlbmd0aHMgYW5kIHdlYWtuZXNzZXMgY29tcGFyZWQgdG8gb3RoZXIgYXBwcm9hY2hlcy4gV2hhdCBhcmUgdGhlIHByb3MgYW5kIGNvbnMgaW4gdGhpcyBzY2VuYXJpbz8gSSBuZWVkIHRvIHF1aWNrbHkgcnVuIHRocm91Z2ggdGhlIGJhc2ljcyB0byByZW1lbWJlciBhbmQgbWFrZSBhIHF1aWNrIGRlY2lzaW9uLiBJcyBpdCB0aGUgYXBwcm9wcmlhdGUgdG9vbCBmb3IgdGhlIGpvYj8KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDk6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4ZHBfYnVpbGRfc2tiJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbWFjdmxhbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDk6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ5ODUKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiA5OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipYRFAgWmVyby1Db3B5IGFuZCBGdXp6aW5nIFJlbGV2YW5jZSoqCgpPa2F5LCBzbyBsb29raW5nIGF0IHRoZSBjb2RlLCBpdCYjMzk7cyBjbGVhciB0aGF0IGB4ZHBfYnVpbGRfc2tiX2Zyb21femNgIGlzICpvbmx5KiB1c2VkIGJ5IHRoZSBgaWNlYCBhbmQgYGlkcGZgIGRyaXZlcnMuIEFuZCBJIHJlbWVtYmVyIHRoYXQgdGhvc2UgYXJlIHBoeXNpY2FsIE5JQyBkcml2ZXJzLCBub3QgdGhlIGVtdWxhdGVkIG9uZXMgd2UgdHlwaWNhbGx5IGRlYWwgd2l0aCBpbiBRRU1VIG9yIEdDRS4gVGhhdCBtZWFucyBhbnkgY29kZSBjaGFuZ2VzIGluIHRoZXJlIGFyZSBlc3NlbnRpYWxseSBkZWFkIGNvZGUgYXMgZmFyIGFzIG91ciBmdXp6aW5nIHNldHVwIGlzIGNvbmNlcm5lZC4gVGhlcmVmb3JlLCB0aGUgYFdvcnRoRnV6emluZ2AgZmxhZyBmb3IgdGhpcyBhcmVhIHNob3VsZCBiZSBzZXQgdG8gYGZhbHNlYC4gTm8gcG9pbnQgd2FzdGluZyBjeWNsZXMgb24gc29tZXRoaW5nIHdlIGNhbiYjMzk7dCBhY3R1YWxseSB0cmlnZ2VyIHRocm91Z2ggb3VyIHRlc3RpbmcuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgbGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBjb2RlIGJhc2UgdG8gc2VlIGlmIGB4ZHBfY29weV9mcmFnc19mcm9tX3pjYCBpcyB1c2VkIGFueXdoZXJlIGVsc2UuIEp1c3QgYSBzYW5pdHkgY2hlY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDA5OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hkcF9jb3B5X2ZyYWdzX2Zyb21femMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2NvcmUveGRwLmM9Njc0PUVYUE9SVF9TWU1CT0xfR1BMKHhkcF9idWlsZF9za2JfZnJvbV9idWZmKTtcbi0tXG5uZXQvY29yZS94ZHAuYy02NzYtLyoqXG5uZXQvY29yZS94ZHAuYzo2Nzc6ICogeGRwX2NvcHlfZnJhZ3NfZnJvbV96YyAtIGNvcHkgZnJhZ3MgZnJvbSBYU2sgYnVmZiB0byBza2Jcbm5ldC9jb3JlL3hkcC5jLTY3OC0gKiBAc2tiOiBza2IgdG8gY29weSBmcmFncyB0b1xuLS1cbm5ldC9jb3JlL3hkcC5jLTY4Ni0gKi9cbm5ldC9jb3JlL3hkcC5jOjY4NzpzdGF0aWMgbm9pbmxpbmUgYm9vbCB4ZHBfY29weV9mcmFnc19mcm9tX3pjKHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvY29yZS94ZHAuYy02ODgtXHRcdFx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgeGRwX2J1ZmYgKnhkcCxcbi0tXG5uZXQvY29yZS94ZHAuYz03Mzk9c3RydWN0IHNrX2J1ZmYgKnhkcF9idWlsZF9za2JfZnJvbV96YyhzdHJ1Y3QgeGRwX2J1ZmYgKnhkcClcbi0tXG5uZXQvY29yZS94ZHAuYy03NzgtXHRpZiAodW5saWtlbHkoeGRwX2J1ZmZfaGFzX2ZyYWdzKHhkcCkpIFx1MDAyNlx1MDAyNlxubmV0L2NvcmUveGRwLmM6Nzc5Olx0ICAgIHVubGlrZWx5KCF4ZHBfY29weV9mcmFnc19mcm9tX3pjKHNrYiwgeGRwLCBwcCkpKSB7XG5uZXQvY29yZS94ZHAuYy03ODAtXHRcdG5hcGlfY29uc3VtZV9za2Ioc2tiLCB0cnVlKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDk6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU2NDMKCQkJCQkJCW91dHB1dDogMTA2CgkJCQkJCQl0aG91Z2h0czogMTc2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZyBEZWNpc2lvbioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGcm9tIHdoYXQgSSBjYW4gdGVsbCwgYHhkcF9jb3B5X2ZyYWdzX2Zyb21femNgIGlzIGV4Y2x1c2l2ZWx5IHRpZWQgdG8gYHhkcF9idWlsZF9za2JfZnJvbV96Y2AuIEFscmlnaHQsIHRoYXQgbmFycm93cyB0aGUgc2NvcGUgb2YgdGhpcyBwYXRjaCBjb25zaWRlcmFibHkuIE5vdywgYHhkcF9idWlsZF9za2JfZnJvbV96Y2AgaXRzZWxmIGlzIG9ubHkgY2FsbGVkIGJ5IHRoZSBgaWNlYCBhbmQgYGlkcGZgIGRyaXZlcnMuIEFuZCB0aG9zZSwgaWYgSSByZWNhbGwgY29ycmVjdGx5LCBhcmUgc3BlY2lmaWNhbGx5IGRyaXZlcnMgZm9yIEludGVsJiMzOTtzIEU4MDAgc2VyaWVzIGhhcmR3YXJlIGFuZCB0aGUgSW5mcmFzdHJ1Y3R1cmUgRGF0YSBQYXRoIEZ1bmN0aW9uIOKAkyBzdHJpY3RseSBwaHlzaWNhbCBoYXJkd2FyZSBpbXBsZW1lbnRhdGlvbnMuIFRoaXMgaXMgY3J1Y2lhbC4KCktub3dpbmcgdGhlIHR5cGljYWwgc3l6a2FsbGVyIHNldHVwLCBhbmQgaG93IGl04oCZcyB1c2VkIGluIG91ciBmdXp6aW5nIHdvcmtmbG93cywgSSBrbm93IGl0JiMzOTtzIHZpcnR1YWxpemVkLCBhbmQgcnVucyBpbiBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4gVGhlc2UgZW52aXJvbm1lbnRzICpkb24mIzM5O3QqIGVtdWxhdGUgdGhlIHNwZWNpZmljIEludGVsIGhhcmR3YXJlIHRoYXQgdGhlc2UgZHJpdmVycyByZWx5IG9uLiBUaGVyZWZvcmUsIHRoZXJlJiMzOTtzIG5vIHdheSB0aGlzIGNvZGUgcGF0aCBjYW4gYmUgdHJpZ2dlcmVkIGR1cmluZyBmdXp6aW5nLiBDb25zZXF1ZW50bHksIEkmIzM5O20gZ29pbmcgdG8gcmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZS4gVGhlIHJlYXNvbmluZyBpcyBjbGVhcjogdGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyBhcmUgaXNvbGF0ZWQgd2l0aGluIHBoeXNpY2FsIGhhcmR3YXJlIGRyaXZlcnMgdGhhdCBhcmUgc2ltcGx5IGluYWNjZXNzaWJsZSBpbiBvdXIgZnV6emluZyBlbnZpcm9ubWVudHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDA5OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgbW9kaWZpZWQgZnVuY3Rpb25zICh4ZHBfYnVpbGRfc2tiX2Zyb21femMgYW5kIHhkcF9jb3B5X2ZyYWdzX2Zyb21femMpIGFyZSBvbmx5IHVzZWQgYnkgcGh5c2ljYWwgSW50ZWwgbmV0d29yayBkcml2ZXJzIChpY2UgYW5kIGlkcGYgdmlhIGxpYmV0aCkuIFRoZXNlIGhhcmR3YXJlIGRldmljZXMgYXJlIG5vdCBlbXVsYXRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgbWFraW5nIHRoZSBjb2RlIHBhdGhzIGltcG9zc2libGUgdG8gcmVhY2ggZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBtb2RpZmllZCBmdW5jdGlvbnMgKHhkcF9idWlsZF9za2JfZnJvbV96YyBhbmQgeGRwX2NvcHlfZnJhZ3NfZnJvbV96YykgYXJlIG9ubHkgdXNlZCBieSBwaHlzaWNhbCBJbnRlbCBuZXR3b3JrIGRyaXZlcnMgKGljZSBhbmQgaWRwZiB2aWEgbGliZXRoKS4gVGhlc2UgaGFyZHdhcmUgZGV2aWNlcyBhcmUgbm90IGVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCBtYWtpbmcgdGhlIGNvZGUgcGF0aHMgaW1wb3NzaWJsZSB0byByZWFjaCBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwOTo0MToyNS41NzEyMjg4MDRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDI5ODg4MTIyMjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyAoeGRwX2J1aWxkX3NrYl9mcm9tX3pjIGFuZCB4ZHBfY29weV9mcmFnc19mcm9tX3pjKSBhcmUgb25seSB1c2VkIGJ5IHBoeXNpY2FsIEludGVsIG5ldHdvcmsgZHJpdmVycyAoaWNlIGFuZCBpZHBmIHZpYSBsaWJldGgpLiBUaGVzZSBoYXJkd2FyZSBkZXZpY2VzIGFyZSBub3QgZW11bGF0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIG1ha2luZyB0aGUgY29kZSBwYXRocyBpbXBvc3NpYmxlIHRvIHJlYWNoIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDk6NDE6MjUuNTcxMjM0NjM0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODM5OTQ3NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA1Njc1M2UzYjdkNTQxZTQ2MGRhMGNhNzUwNTVkODVlOTZmN2YxYjVjXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgSnVuIDI2IDA5OjQxOjI0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9jb3JlL3hkcC5jIGIvbmV0L2NvcmUveGRwLmNcXG5pbmRleCA5ODkwYTMwNTg0YmE3Yi4uNTI1NDY3NDYzNzhhMGEgMTAwNjQ0XFxuLS0tIGEvbmV0L2NvcmUveGRwLmNcXG4rKysgYi9uZXQvY29yZS94ZHAuY1xcbkBAIC02OTgsOCArNjk4LDggQEAgc3RhdGljIG5vaW5saW5lIGJvb2wgeGRwX2NvcHlfZnJhZ3NfZnJvbV96YyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXG4gXFx0Zm9yICh1MzIgaSA9IDA7IGkgXFx1MDAzYyBucl9mcmFnczsgaSsrKSB7XFxuIFxcdFxcdGNvbnN0IHNrYl9mcmFnX3QgKmZyYWcgPSBcXHUwMDI2eGluZm8tXFx1MDAzZWZyYWdzW2ldO1xcbi1cXHRcXHR1MzIgbGVuID0gc2tiX2ZyYWdfc2l6ZShmcmFnKTtcXG4tXFx0XFx0dTMyIG9mZnNldCwgdHJ1ZXNpemUgPSBsZW47XFxuK1xcdFxcdHUzMiBvZmZzZXQsIGxlbiA9IHNrYl9mcmFnX3NpemUoZnJhZyk7XFxuK1xcdFxcdHUzMiB0cnVlc2l6ZSA9IExBUkdFU1RfQUxJR04obGVuKTtcXG4gXFx0XFx0c3RydWN0IHBhZ2UgKnBhZ2U7XFxuIFxcbiBcXHRcXHRwYWdlID0gcGFnZV9wb29sX2Rldl9hbGxvYyhwcCwgXFx1MDAyNm9mZnNldCwgXFx1MDAyNnRydWVzaXplKTtcXG5AQCAtNzM4LDkgKzczOCwxMCBAQCBzdGF0aWMgbm9pbmxpbmUgYm9vbCB4ZHBfY29weV9mcmFnc19mcm9tX3pjKHN0cnVjdCBza19idWZmICpza2IsXFxuICAqL1xcbiBzdHJ1Y3Qgc2tfYnVmZiAqeGRwX2J1aWxkX3NrYl9mcm9tX3pjKHN0cnVjdCB4ZHBfYnVmZiAqeGRwKVxcbiB7XFxuK1xcdHUzMiBoZWFkcm9vbSA9IHhkcC1cXHUwMDNlZGF0YV9tZXRhIC0geGRwLVxcdTAwM2VkYXRhX2hhcmRfc3RhcnQ7XFxuIFxcdGNvbnN0IHN0cnVjdCB4ZHBfcnhxX2luZm8gKnJ4cSA9IHhkcC1cXHUwMDNlcnhxO1xcbiBcXHR1MzIgbGVuID0geGRwLVxcdTAwM2VkYXRhX2VuZCAtIHhkcC1cXHUwMDNlZGF0YV9tZXRhO1xcbi1cXHR1MzIgdHJ1ZXNpemUgPSB4ZHAtXFx1MDAzZWZyYW1lX3N6O1xcbitcXHR1MzIgdHJ1ZXNpemUgPSBTS0JfSEVBRF9BTElHTihoZWFkcm9vbSArIGxlbik7XFxuIFxcdHN0cnVjdCBza19idWZmICpza2IgPSBOVUxMO1xcbiBcXHRzdHJ1Y3QgcGFnZV9wb29sICpwcDtcXG4gXFx0aW50IG1ldGFsZW47XFxuQEAgLTc2Miw3ICs3NjMsNyBAQCBzdHJ1Y3Qgc2tfYnVmZiAqeGRwX2J1aWxkX3NrYl9mcm9tX3pjKHN0cnVjdCB4ZHBfYnVmZiAqeGRwKVxcbiBcXHR9XFxuIFxcbiBcXHRza2JfbWFya19mb3JfcmVjeWNsZShza2IpO1xcbi1cXHRza2JfcmVzZXJ2ZShza2IsIHhkcC1cXHUwMDNlZGF0YV9tZXRhIC0geGRwLVxcdTAwM2VkYXRhX2hhcmRfc3RhcnQpO1xcbitcXHRza2JfcmVzZXJ2ZShza2IsIGhlYWRyb29tKTtcXG4gXFxuIFxcdG1lbWNweShfX3NrYl9wdXQoc2tiLCBsZW4pLCB4ZHAtXFx1MDAzZWRhdGFfbWV0YSwgTEFSR0VTVF9BTElHTihsZW4pKTtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDA5OjQxOjI2LjE1NjAzMTE1M1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTQyNDA0MDA1MDY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBtb2RpZmllZCBmdW5jdGlvbnMgKHhkcF9idWlsZF9za2JfZnJvbV96YyBhbmQgeGRwX2NvcHlfZnJhZ3NfZnJvbV96YykgYXJlIG9ubHkgdXNlZCBieSBwaHlzaWNhbCBJbnRlbCBuZXR3b3JrIGRyaXZlcnMgKGljZSBhbmQgaWRwZiB2aWEgbGliZXRoKS4gVGhlc2UgaGFyZHdhcmUgZGV2aWNlcyBhcmUgbm90IGVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCBtYWtpbmcgdGhlIGNvZGUgcGF0aHMgaW1wb3NzaWJsZSB0byByZWFjaCBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNTY3NTNlM2I3ZDU0MWU0NjBkYTBjYTc1MDU1ZDg1ZTk2ZjdmMWI1Y1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVuIDI2IDA5OjQxOjI0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2NvcmUveGRwLmMgYi9uZXQvY29yZS94ZHAuY1xuaW5kZXggOTg5MGEzMDU4NGJhN2IuLjUyNTQ2NzQ2Mzc4YTBhIDEwMDY0NFxuLS0tIGEvbmV0L2NvcmUveGRwLmNcbisrKyBiL25ldC9jb3JlL3hkcC5jXG5AQCAtNjk4LDggKzY5OCw4IEBAIHN0YXRpYyBub2lubGluZSBib29sIHhkcF9jb3B5X2ZyYWdzX2Zyb21femMoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcbiBcdGZvciAodTMyIGkgPSAwOyBpIFx1MDAzYyBucl9mcmFnczsgaSsrKSB7XG4gXHRcdGNvbnN0IHNrYl9mcmFnX3QgKmZyYWcgPSBcdTAwMjZ4aW5mby1cdTAwM2VmcmFnc1tpXTtcbi1cdFx0dTMyIGxlbiA9IHNrYl9mcmFnX3NpemUoZnJhZyk7XG4tXHRcdHUzMiBvZmZzZXQsIHRydWVzaXplID0gbGVuO1xuK1x0XHR1MzIgb2Zmc2V0LCBsZW4gPSBza2JfZnJhZ19zaXplKGZyYWcpO1xuK1x0XHR1MzIgdHJ1ZXNpemUgPSBMQVJHRVNUX0FMSUdOKGxlbik7XG4gXHRcdHN0cnVjdCBwYWdlICpwYWdlO1xuIFxuIFx0XHRwYWdlID0gcGFnZV9wb29sX2Rldl9hbGxvYyhwcCwgXHUwMDI2b2Zmc2V0LCBcdTAwMjZ0cnVlc2l6ZSk7XG5AQCAtNzM4LDkgKzczOCwxMCBAQCBzdGF0aWMgbm9pbmxpbmUgYm9vbCB4ZHBfY29weV9mcmFnc19mcm9tX3pjKHN0cnVjdCBza19idWZmICpza2IsXG4gICovXG4gc3RydWN0IHNrX2J1ZmYgKnhkcF9idWlsZF9za2JfZnJvbV96YyhzdHJ1Y3QgeGRwX2J1ZmYgKnhkcClcbiB7XG4rXHR1MzIgaGVhZHJvb20gPSB4ZHAtXHUwMDNlZGF0YV9tZXRhIC0geGRwLVx1MDAzZWRhdGFfaGFyZF9zdGFydDtcbiBcdGNvbnN0IHN0cnVjdCB4ZHBfcnhxX2luZm8gKnJ4cSA9IHhkcC1cdTAwM2VyeHE7XG4gXHR1MzIgbGVuID0geGRwLVx1MDAzZWRhdGFfZW5kIC0geGRwLVx1MDAzZWRhdGFfbWV0YTtcbi1cdHUzMiB0cnVlc2l6ZSA9IHhkcC1cdTAwM2VmcmFtZV9zejtcbitcdHUzMiB0cnVlc2l6ZSA9IFNLQl9IRUFEX0FMSUdOKGhlYWRyb29tICsgbGVuKTtcbiBcdHN0cnVjdCBza19idWZmICpza2IgPSBOVUxMO1xuIFx0c3RydWN0IHBhZ2VfcG9vbCAqcHA7XG4gXHRpbnQgbWV0YWxlbjtcbkBAIC03NjIsNyArNzYzLDcgQEAgc3RydWN0IHNrX2J1ZmYgKnhkcF9idWlsZF9za2JfZnJvbV96YyhzdHJ1Y3QgeGRwX2J1ZmYgKnhkcClcbiBcdH1cbiBcbiBcdHNrYl9tYXJrX2Zvcl9yZWN5Y2xlKHNrYik7XG4tXHRza2JfcmVzZXJ2ZShza2IsIHhkcC1cdTAwM2VkYXRhX21ldGEgLSB4ZHAtXHUwMDNlZGF0YV9oYXJkX3N0YXJ0KTtcbitcdHNrYl9yZXNlcnZlKHNrYiwgaGVhZHJvb20pO1xuIFxuIFx0bWVtY3B5KF9fc2tiX3B1dChza2IsIGxlbiksIHhkcC1cdTAwM2VkYXRhX21ldGEsIExBUkdFU1RfQUxJR04obGVuKSk7XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwOTo0MToyNi4xNTYwMzIyNzNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTk1NTg2NzgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgWERQIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBhZmZlY3RpbmcgYG5ldC9jb3JlL3hkcC5jYC4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiB0aGVzZSB0d28gZnVuY3Rpb25zOiBgeGRwX2NvcHlfZnJhZ3NfZnJvbV96Y2AgYW5kIGB4ZHBfYnVpbGRfc2tiX2Zyb21femNgLiBJIG5lZWQgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgdGhpcyBjaGFuZ2UuIE15IGltbWVkaWF0ZSBnb2FsIGlzIHRvIG1hcCBvdXQgdGhlIGNhbGwgcGF0aHMgYW5kIGdyYXNwIHRoZSBwdXJwb3NlIG9mIHRoZXNlIHNwZWNpZmljIG1vZGlmaWNhdGlvbnMuIEknbGwgc3RhcnQgYnkgcmVmZXJlbmNpbmcgdGhlIGNvZGUncyBkb2N1bWVudGF0aW9uLCBhbmQgSSdsbCBqdW1wIHJpZ2h0IGludG8gdXNpbmcgYGdyZXBwZXJgIHRvIHRyYWNlIHRoZSBkZWZpbml0aW9ucyBhbmQgdXNhZ2VzIG9mIGJvdGggZnVuY3Rpb25zLiBJIG5lZWQgdG8gc2VlICpleGFjdGx5KiBob3cgdGhlc2UgYXJlIGJlaW5nIGludm9rZWQgYW5kIHVuZGVyIHdoYXQgY2lyY3Vtc3RhbmNlcy4gS25vd2luZyB0aGF0IHdpbGwgdGVsbCBtZSB0aGUgc2lnbmlmaWNhbmNlIG9mIHRoaXMgcGF0Y2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyNDIsIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwOTo0MTozMC4zNTE2MjA4NjVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzY3MDQwNTM1NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4ZHBfY29weV9mcmFnc19mcm9tX3pjXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jb3JlL3hkcC5jPTY3ND1FWFBPUlRfU1lNQk9MX0dQTCh4ZHBfYnVpbGRfc2tiX2Zyb21fYnVmZik7XFxuLS1cXG5uZXQvY29yZS94ZHAuYy02NzYtLyoqXFxubmV0L2NvcmUveGRwLmM6Njc3OiAqIHhkcF9jb3B5X2ZyYWdzX2Zyb21femMgLSBjb3B5IGZyYWdzIGZyb20gWFNrIGJ1ZmYgdG8gc2tiXFxubmV0L2NvcmUveGRwLmMtNjc4LSAqIEBza2I6IHNrYiB0byBjb3B5IGZyYWdzIHRvXFxuLS1cXG5uZXQvY29yZS94ZHAuYy02ODYtICovXFxubmV0L2NvcmUveGRwLmM6Njg3OnN0YXRpYyBub2lubGluZSBib29sIHhkcF9jb3B5X2ZyYWdzX2Zyb21femMoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvY29yZS94ZHAuYy02ODgtXFx0XFx0XFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCB4ZHBfYnVmZiAqeGRwLFxcbi0tXFxubmV0L2NvcmUveGRwLmM9NzM5PXN0cnVjdCBza19idWZmICp4ZHBfYnVpbGRfc2tiX2Zyb21femMoc3RydWN0IHhkcF9idWZmICp4ZHApXFxuLS1cXG5uZXQvY29yZS94ZHAuYy03NzgtXFx0aWYgKHVubGlrZWx5KHhkcF9idWZmX2hhc19mcmFncyh4ZHApKSBcXHUwMDI2XFx1MDAyNlxcbm5ldC9jb3JlL3hkcC5jOjc3OTpcXHQgICAgdW5saWtlbHkoIXhkcF9jb3B5X2ZyYWdzX2Zyb21femMoc2tiLCB4ZHAsIHBwKSkpIHtcXG5uZXQvY29yZS94ZHAuYy03ODAtXFx0XFx0bmFwaV9jb25zdW1lX3NrYihza2IsIHRydWUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwOTo0MTozNC4wMjIwMzEwODFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY2NjgxNjc5MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4ZHBfYnVpbGRfc2tiX2Zyb21femNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYz01Njc9aW50IGljZV9jbGVhbl9yeF9pcnFfemMoc3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy02NTUtXFx0XFx0LyogWERQX1BBU1MgcGF0aCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM6NjU2OlxcdFxcdHNrYiA9IHhkcF9idWlsZF9za2JfZnJvbV96YyhmaXJzdCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy02NTctXFx0XFx0aWYgKCFza2IpIHtcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaD00NDE9X19saWJldGhfeHNrX3J1bl9wYXNzKHN0cnVjdCBsaWJldGhfeGRwX2J1ZmYgKnhkcCxcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC00NzAtXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjQ3MTpcXHRza2IgPSB4ZHBfYnVpbGRfc2tiX2Zyb21femMoXFx1MDAyNnhkcC1cXHUwMDNlYmFzZSk7XFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTQ3Mi1cXHRpZiAodW5saWtlbHkoIXNrYikpIHtcXG4tLVxcbmluY2x1ZGUvbmV0L3hkcC5oPTM3Nz1zdHJ1Y3Qgc2tfYnVmZiAqeGRwX2J1aWxkX3NrYl9mcm9tX2J1ZmYoY29uc3Qgc3RydWN0IHhkcF9idWZmICp4ZHApO1xcbmluY2x1ZGUvbmV0L3hkcC5oOjM3ODpzdHJ1Y3Qgc2tfYnVmZiAqeGRwX2J1aWxkX3NrYl9mcm9tX3pjKHN0cnVjdCB4ZHBfYnVmZiAqeGRwKTtcXG5pbmNsdWRlL25ldC94ZHAuaC0zNzktc3RydWN0IHhkcF9mcmFtZSAqeGRwX2NvbnZlcnRfemNfdG9feGRwX2ZyYW1lKHN0cnVjdCB4ZHBfYnVmZiAqeGRwKTtcXG4tLVxcbm5ldC9jb3JlL3hkcC5jPTY4Nz1zdGF0aWMgbm9pbmxpbmUgYm9vbCB4ZHBfY29weV9mcmFnc19mcm9tX3pjKHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvY29yZS94ZHAuYy03MjYtLyoqXFxubmV0L2NvcmUveGRwLmM6NzI3OiAqIHhkcF9idWlsZF9za2JfZnJvbV96YyAtIGNyZWF0ZSBhbiBza2IgZnJvbSBYU2sgXFx1MDAyNnhkcF9idWZmXFxubmV0L2NvcmUveGRwLmMtNzI4LSAqIEB4ZHA6IHNvdXJjZSBYU2sgYnVmZlxcbi0tXFxubmV0L2NvcmUveGRwLmMtNzM4LSAqL1xcbm5ldC9jb3JlL3hkcC5jOjczOTpzdHJ1Y3Qgc2tfYnVmZiAqeGRwX2J1aWxkX3NrYl9mcm9tX3pjKHN0cnVjdCB4ZHBfYnVmZiAqeGRwKVxcbm5ldC9jb3JlL3hkcC5jLTc0MC17XFxuLS1cXG5uZXQvY29yZS94ZHAuYy03OTItfVxcbm5ldC9jb3JlL3hkcC5jOjc5MzpFWFBPUlRfU1lNQk9MX0dQTCh4ZHBfYnVpbGRfc2tiX2Zyb21femMpO1xcbm5ldC9jb3JlL3hkcC5jLTc5NC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDk6NDE6MzYuNjg4ODUzNzczWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQyMTk5NzY1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqWERQIGFuZCBSZWxhdGVkIENvZGUgU25pcHBldHMqKlxuXG5Pa2F5LCBzbyBJJ20gdHJhY2tpbmcgZG93biB0aGUgdXNhZ2Ugb2YgYHhkcF9idWlsZF9za2JfZnJvbV96Y2AuIEkga25vdyBpdCdzIGtpY2tpbmcgYXJvdW5kIGluIHRoZSBJbnRlbCBOSUMgZHJpdmVycywgc3BlY2lmaWNhbGx5IGluIHRoZSBgaWNlX3hzay5jYCBmaWxlIHdpdGhpbiB0aGUgYGljZWAgZGlyZWN0b3J5LCBhbmQgaXQncyBhbHNvIGRlY2xhcmVkIGluIGB4c2suaGAgd2l0aGluIHRoZSBgbmV0L2xpYmV0aGAgaW5jbHVkZSBwYXRoLiBUaGF04oCZcyBnb29kLCBhIGNsZWFyIHN0YXJ0aW5nIHBvaW50LiBJJ20gYXNzdW1pbmcgdGhhdCBpdCBpcyBhbHNvIGNhbGxlZCB3aXRoaW4gdGhlIGBsaWJldGhgIG1vZHVsZSwgdGhvdWdoIGl0J3MgdW5jbGVhciBpZiBpdCdzIGV4cGxpY2l0bHkgaW1wb3J0ZWQuIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHRoZSB1c2FnZSBvZiB0aGUgbW9kdWxlIGBsaWJldGhgIHRvIHZlcmlmeSBpZiBteSBodW5jaCBpcyBjb3JyZWN0LiBJIHNob3VsZCBwcm9iYWJseSBjaGVjayB0aGF0IGBpZHBmX3R4cnguY2AgZmlsZSBpbiB0aGUgYGlkcGZgIGRpcmVjdG9yeSwgaXQncyB2ZXJ5IHBvc3NpYmxlIGBsaWJldGhgIGlzIGJlaW5nIHVzZWQgdGhlcmUuIEl0J3MgdGltZSB0byBkaWcgYSBiaXQgZGVlcGVyIGFuZCBjb25maXJtIHRoYXQgY29ubmVjdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzU3MywiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciIsImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwOTo0MTo0MS4xMTA4NTM1MjFaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI2NDI5MzU2MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX2xpYmV0aF94c2tfcnVuX3Bhc3NcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3hzay5jPTY3PUVYUE9SVF9TWU1CT0xfR1BMKGxpYmV0aF94c2tfYnVmZl9hZGRfZnJhZyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgveHNrLmMtNzMtICpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgveHNrLmM6NzQ6ICogRXh0ZXJuYWwgaGVscGVyIHVzZWQgYnkgX19saWJldGhfeHNrX3J1bl9wYXNzKCksIGRvIG5vdCBjYWxsIGRpcmVjdGx5LlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC94c2suYy03NS0gKiBBZGRzIGJ1ZmZlcidzIGZyYWdzIGNvdW50IGFuZCB0b3RhbCBsZW4gdG8gdGhlIG9uc3RhY2sgc3RhdHMuXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg9MzkwPV9fbGliZXRoX3hza19ydW5fcHJvZyhzdHJ1Y3QgbGliZXRoX3hkcF9idWZmICp4ZHAsXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtNDIzLS8qKlxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDo0MjQ6ICogX19saWJldGhfeHNrX3J1bl9wYXNzIC0gaGVscGVyIHRvIHJ1biBYRFAgcHJvZ3JhbSBhbmQgaGFuZGxlIHRoZSByZXN1bHRcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtNDI1LSAqIEB4ZHA6IFhTayBidWZmZXIgdG8gcHJvY2Vzc1xcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oPTQ0MD1zdGF0aWMgX19hbHdheXNfaW5saW5lIGJvb2xcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6NDQxOl9fbGliZXRoX3hza19ydW5fcGFzcyhzdHJ1Y3QgbGliZXRoX3hkcF9idWZmICp4ZHAsXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTQ0Mi1cXHRcXHQgICAgICBzdHJ1Y3QgbGliZXRoX3hkcF90eF9idWxrICpicSwgc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLFxcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTUwMC0jZGVmaW5lIGxpYmV0aF94c2tfcnVuX3Bhc3MoeGRwLCBicSwgbmFwaSwgcnMsIGRlc2MsIHJ1biwgcG9wdWxhdGUpXFx0ICAgICBcXFxcXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjUwMTpcXHRfX2xpYmV0aF94c2tfcnVuX3Bhc3MoeGRwLCBicSwgbmFwaSwgcnMsIGRlc2MsIGxpYmV0aF94ZHBfcHJlcF9kZXNjLCBcXFxcXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTUwMi1cXHRcXHRcXHQgICAgICBydW4sIHBvcHVsYXRlKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwOTo0MTo0My4zNzUxNTE2NzRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNTQ4NTE3ODc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqVHJhY2luZyB0aGUgVXNhZ2Ugb2YgYGxpYmV0aF94c2tfcnVuX3Bhc3NgKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJvbGUgb2YgYGxpYmV0aF94c2tfcnVuX3Bhc3NgLiBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgZmlndXJpbmcgb3V0IHdoZXJlIGl0J3MgYWN0dWFsbHkgKnVzZWQqIHdpdGhpbiB0aGUgbGFyZ2VyIGNvZGUgYmFzZS4gSSBuZWVkIHRvIHRyYWNlIGl0cyByZWZlcmVuY2VzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgaW4gd2hpY2ggaXQgb3BlcmF0ZXMuIFRoaXMga2luZCBvZiBpbnZlc3RpZ2F0aW9uIGlzIGZ1bmRhbWVudGFsIHRvIGNvbXByZWhlbmRpbmcgdGhlIGNvbnRyb2wgZmxvdyBhbmQgZGF0YSBkZXBlbmRlbmNpZXMuIEEgcXVpY2sgc2VhcmNoIGZvciBpdHMgdXNlcyB3aWxsIGdpdmUgbWUgdGhhdCBpbnNpZ2h0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDEwLCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDk6NDE6NDUuOTIzNjcxNTU4WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNzgxNzExMDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibGliZXRoX3hza19ydW5fcGFzc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgveHNrLmM9Njc9RVhQT1JUX1NZTUJPTF9HUEwobGliZXRoX3hza19idWZmX2FkZF9mcmFnKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC94c2suYy03My0gKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC94c2suYzo3NDogKiBFeHRlcm5hbCBoZWxwZXIgdXNlZCBieSBfX2xpYmV0aF94c2tfcnVuX3Bhc3MoKSwgZG8gbm90IGNhbGwgZGlyZWN0bHkuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3hzay5jLTc1LSAqIEFkZHMgYnVmZmVyJ3MgZnJhZ3MgY291bnQgYW5kIHRvdGFsIGxlbiB0byB0aGUgb25zdGFjayBzdGF0cy5cXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaD0zOTA9X19saWJldGhfeHNrX3J1bl9wcm9nKHN0cnVjdCBsaWJldGhfeGRwX2J1ZmYgKnhkcCxcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC00MjMtLyoqXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjQyNDogKiBfX2xpYmV0aF94c2tfcnVuX3Bhc3MgLSBoZWxwZXIgdG8gcnVuIFhEUCBwcm9ncmFtIGFuZCBoYW5kbGUgdGhlIHJlc3VsdFxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC00MjUtICogQHhkcDogWFNrIGJ1ZmZlciB0byBwcm9jZXNzXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg9NDQwPXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgYm9vbFxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDo0NDE6X19saWJldGhfeHNrX3J1bl9wYXNzKHN0cnVjdCBsaWJldGhfeGRwX2J1ZmYgKnhkcCxcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtNDQyLVxcdFxcdCAgICAgIHN0cnVjdCBsaWJldGhfeGRwX3R4X2J1bGsgKmJxLCBzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtNDg3LS8qKlxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDo0ODg6ICogbGliZXRoX3hza19ydW5fcGFzcyAtIGhlbHBlciB0byBydW4gWERQIHByb2dyYW0gYW5kIGhhbmRsZSB0aGUgcmVzdWx0XFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTQ4OS0gKiBAeGRwOiBYU2sgYnVmZmVyIHRvIHByb2Nlc3NcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC00OTktICovXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjUwMDojZGVmaW5lIGxpYmV0aF94c2tfcnVuX3Bhc3MoeGRwLCBicSwgbmFwaSwgcnMsIGRlc2MsIHJ1biwgcG9wdWxhdGUpXFx0ICAgICBcXFxcXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjUwMTpcXHRfX2xpYmV0aF94c2tfcnVuX3Bhc3MoeGRwLCBicSwgbmFwaSwgcnMsIGRlc2MsIGxpYmV0aF94ZHBfcHJlcF9kZXNjLCBcXFxcXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTUwMi1cXHRcXHRcXHQgICAgICBydW4sIHBvcHVsYXRlKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwOTo0MTo0OC4yMDE4NDc4OFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTMyNzA0OTkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUuIE15IGZpcnN0IHRob3VnaHQgaXM6ICoqSGFuZyBvbiBhIHNlY29uZCwgYW0gSSByZWFkaW5nIHRoaXMgcmlnaHQ/IElzIGBsaWJldGhfeHNrX3J1bl9wYXNzYCBhY3R1YWxseSB1bnVzZWQ/KiogVGhhdCdzLi4uIHN1cnByaXNpbmcuIFRoaXMgZnVuY3Rpb24gc2VlbXMgY2VudHJhbCB0byB0aGUgY29yZSBmdW5jdGlvbmFsaXR5LCBkb2Vzbid0IGl0PyBJIG5lZWQgdG8gdmVyaWZ5IHRoaXMgY2xhaW0uIEknbGwgZG91YmxlLWNoZWNrIGl0cyBkZWZpbml0aW9uLCByZWZlcmVuY2VzLCBhbmQgY2FsbGluZyBsb2NhdGlvbnMuIExldCBtZSBnbyBiYWNrIHRvIHdoZXJlIEkgc2F3IHRoZSBpbml0aWFsIHJlZmVyZW5jZSB0byB0aGlzIGZ1bmN0aW9uLiBJIG5lZWQgdG8gdHJhY2UgdGhyb3VnaCB0aGUgY29kZSBhZ2FpbiBhbmQgbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgc29tZXRoaW5nLiBTb21ldGltZXMgdGhlc2UgdGhpbmdzIGFyZSB0cmlja3kgdG8gc3BvdCBpZiB0aGUgY2FsbCBpcyBpbmRpcmVjdCBvciBjb25kaXRpb25hbC4gSSdtIGdvaW5nIHRvIHJldmlzaXQgYGxpYmV0aF94c2tfcnVuX3Bhc3NgIGFuZCBtZXRpY3Vsb3VzbHkgcmUtZXhhbWluZSBpdHMgcm9sZSBpbiB0aGUgc3lzdGVtLiBJIGhhdmUgdG8gYmUgYWJzb2x1dGVseSBzdXJlIGJlY2F1c2UgaWYgaXQncyB0cnVseSB1bnVzZWQsIHRoYXQgb3BlbnMgYSB3aG9sZSBjYW4gb2Ygd29ybXMgaW4gdGVybXMgb2YgY29kZSBjbGVhbnVwIGFuZCBwb3RlbnRpYWwgaW1wbGljYXRpb25zIGZvciBzeXN0ZW0gYmVoYXZpb3IuIE9rYXksIGJhY2sgdG8gdGhlIGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUxODcsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwOTo0MTo1MS4xMzQ1NTUzNDFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMzcwNzExNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibGliZXRoX3hza19ydW5fcGFzc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgveHNrLmM9Njc9RVhQT1JUX1NZTUJPTF9HUEwobGliZXRoX3hza19idWZmX2FkZF9mcmFnKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC94c2suYy03My0gKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC94c2suYzo3NDogKiBFeHRlcm5hbCBoZWxwZXIgdXNlZCBieSBfX2xpYmV0aF94c2tfcnVuX3Bhc3MoKSwgZG8gbm90IGNhbGwgZGlyZWN0bHkuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3hzay5jLTc1LSAqIEFkZHMgYnVmZmVyJ3MgZnJhZ3MgY291bnQgYW5kIHRvdGFsIGxlbiB0byB0aGUgb25zdGFjayBzdGF0cy5cXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaD0zOTA9X19saWJldGhfeHNrX3J1bl9wcm9nKHN0cnVjdCBsaWJldGhfeGRwX2J1ZmYgKnhkcCxcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC00MjMtLyoqXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjQyNDogKiBfX2xpYmV0aF94c2tfcnVuX3Bhc3MgLSBoZWxwZXIgdG8gcnVuIFhEUCBwcm9ncmFtIGFuZCBoYW5kbGUgdGhlIHJlc3VsdFxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC00MjUtICogQHhkcDogWFNrIGJ1ZmZlciB0byBwcm9jZXNzXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg9NDQwPXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgYm9vbFxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDo0NDE6X19saWJldGhfeHNrX3J1bl9wYXNzKHN0cnVjdCBsaWJldGhfeGRwX2J1ZmYgKnhkcCxcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtNDQyLVxcdFxcdCAgICAgIHN0cnVjdCBsaWJldGhfeGRwX3R4X2J1bGsgKmJxLCBzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtNDg3LS8qKlxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDo0ODg6ICogbGliZXRoX3hza19ydW5fcGFzcyAtIGhlbHBlciB0byBydW4gWERQIHByb2dyYW0gYW5kIGhhbmRsZSB0aGUgcmVzdWx0XFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTQ4OS0gKiBAeGRwOiBYU2sgYnVmZmVyIHRvIHByb2Nlc3NcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC00OTktICovXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjUwMDojZGVmaW5lIGxpYmV0aF94c2tfcnVuX3Bhc3MoeGRwLCBicSwgbmFwaSwgcnMsIGRlc2MsIHJ1biwgcG9wdWxhdGUpXFx0ICAgICBcXFxcXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjUwMTpcXHRfX2xpYmV0aF94c2tfcnVuX3Bhc3MoeGRwLCBicSwgbmFwaSwgcnMsIGRlc2MsIGxpYmV0aF94ZHBfcHJlcF9kZXNjLCBcXFxcXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTUwMi1cXHRcXHRcXHQgICAgICBydW4sIHBvcHVsYXRlKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwOTo0MTo1My40NzE2MzI3ODFaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg0NTI5NTMxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqRm9jdXNpbmcgb24gWmVyby1Db3B5IFhEUCBJbXBsZW1lbnRhdGlvbnMqKlxuXG5SaWdodCwgc28gSSdtIHRoaW5raW5nIGFib3V0IHRoYXQgZnVuY3Rpb24gYWdhaW4g4oCTIGB4ZHBfYnVpbGRfc2tiX2Zyb21femNgLiBJIHZhZ3VlbHkgcmVtZW1iZXIgZW5jb3VudGVyaW5nIHNvbWV0aGluZyBzaW1pbGFyIHJlY2VudGx5Li4uIHdoZXJlIHdhcyBpdD8gSG1tLCBsaWtlbHkgaXQncyBuZXN0bGVkIHNvbWV3aGVyZSBkZWVwIHdpdGhpbiB0aGUgbmV0d29yayBkcml2ZXIgc3RhY2suIEknbSBnb2luZyB0byBndWVzcyBzb21ldGhpbmcgbGlrZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguY2AgaXMgaW52b2x2ZWQgaGVyZSwgbWF5YmUgZXZlbiBtb3JlIHRoYW4gb25lIGZpbGUuIFRoZXNlIHplcm8tY29weSBYRFAgaW1wbGVtZW50YXRpb25zIGFyZSB0eXBpY2FsbHkgaGFuZGxlZCBwcmV0dHkgbG93LWxldmVsLiBMZXQncyBmaXJlIHVwIGEgbmV3IHNlYXJjaCwganVzdCB0byBiZSBjZXJ0YWluLiBJJ2xsIHNlYXJjaCBmb3IgdGhlIGZ1bmN0aW9uIGFnYWluIGFuZCBzZWUgaWYgSSBjYW4gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIHNwZWNpZmljcy4gVGhhdCBzaG91bGQgbmFycm93IGRvd24gd2hpY2ggY29kZSBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgaW4gbW9yZSBkZXRhaWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYwNjEsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwOTo0MTo1Ni4zMTY5MzEwOTZaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNTg0MjM1ODYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieGRwX2J1aWxkX3NrYl9mcm9tX3pjXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM9NTY3PWludCBpY2VfY2xlYW5fcnhfaXJxX3pjKHN0cnVjdCBpY2VfcnhfcmluZyAqcnhfcmluZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtNjU1LVxcdFxcdC8qIFhEUF9QQVNTIHBhdGggKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jOjY1NjpcXHRcXHRza2IgPSB4ZHBfYnVpbGRfc2tiX2Zyb21femMoZmlyc3QpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtNjU3LVxcdFxcdGlmICghc2tiKSB7XFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg9NDQxPV9fbGliZXRoX3hza19ydW5fcGFzcyhzdHJ1Y3QgbGliZXRoX3hkcF9idWZmICp4ZHAsXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtNDcwLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDo0NzE6XFx0c2tiID0geGRwX2J1aWxkX3NrYl9mcm9tX3pjKFxcdTAwMjZ4ZHAtXFx1MDAzZWJhc2UpO1xcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC00NzItXFx0aWYgKHVubGlrZWx5KCFza2IpKSB7XFxuLS1cXG5pbmNsdWRlL25ldC94ZHAuaD0zNzc9c3RydWN0IHNrX2J1ZmYgKnhkcF9idWlsZF9za2JfZnJvbV9idWZmKGNvbnN0IHN0cnVjdCB4ZHBfYnVmZiAqeGRwKTtcXG5pbmNsdWRlL25ldC94ZHAuaDozNzg6c3RydWN0IHNrX2J1ZmYgKnhkcF9idWlsZF9za2JfZnJvbV96YyhzdHJ1Y3QgeGRwX2J1ZmYgKnhkcCk7XFxuaW5jbHVkZS9uZXQveGRwLmgtMzc5LXN0cnVjdCB4ZHBfZnJhbWUgKnhkcF9jb252ZXJ0X3pjX3RvX3hkcF9mcmFtZShzdHJ1Y3QgeGRwX2J1ZmYgKnhkcCk7XFxuLS1cXG5uZXQvY29yZS94ZHAuYz02ODc9c3RhdGljIG5vaW5saW5lIGJvb2wgeGRwX2NvcHlfZnJhZ3NfZnJvbV96YyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L2NvcmUveGRwLmMtNzI2LS8qKlxcbm5ldC9jb3JlL3hkcC5jOjcyNzogKiB4ZHBfYnVpbGRfc2tiX2Zyb21femMgLSBjcmVhdGUgYW4gc2tiIGZyb20gWFNrIFxcdTAwMjZ4ZHBfYnVmZlxcbm5ldC9jb3JlL3hkcC5jLTcyOC0gKiBAeGRwOiBzb3VyY2UgWFNrIGJ1ZmZcXG4tLVxcbm5ldC9jb3JlL3hkcC5jLTczOC0gKi9cXG5uZXQvY29yZS94ZHAuYzo3Mzk6c3RydWN0IHNrX2J1ZmYgKnhkcF9idWlsZF9za2JfZnJvbV96YyhzdHJ1Y3QgeGRwX2J1ZmYgKnhkcClcXG5uZXQvY29yZS94ZHAuYy03NDAte1xcbi0tXFxubmV0L2NvcmUveGRwLmMtNzkyLX1cXG5uZXQvY29yZS94ZHAuYzo3OTM6RVhQT1JUX1NZTUJPTF9HUEwoeGRwX2J1aWxkX3NrYl9mcm9tX3pjKTtcXG5uZXQvY29yZS94ZHAuYy03OTQtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDA5OjQxOjU4LjU3NTM1ODc4MloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDgzMjAzNjY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdW5kZXJzdGFuZGluZywgY29uc2lkZXJpbmcgSSdtIHRyeWluZyB0byBmaWd1cmUgb3V0IHdoZXJlIHRoaXMgY29kZSBzbmlwcGV0IGlzIHJlbGV2YW50OlxuXG4qKlBpbnBvaW50aW5nIHRoZSBDb2RlJ3MgVXNhZ2UqKlxuXG5SaWdodCwgc28gdGhpcyBwaWVjZSBvZiBjb2RlIGlzIGRlZmluaXRlbHkgdGllZCB0byBzb21lIHplcm8tY29weSBtYWdpYyB3aXRoaW4gdGhlIEFGX1hEUCBjb250ZXh0LiBTcGVjaWZpY2FsbHksIEkgc2VlIGl0J3MgdXNlZCBpbiB0aGUgYGljZV9jbGVhbl9yeF9pcnFfemNgIGZ1bmN0aW9uLCB3aGljaCwgYXMgSSByZWNhbGwsIGlzIHRoZSB6ZXJvLWNvcHkgcmVjZWl2ZSBwYXRoIHdpdGhpbiB0aGUgYGljZWAgZHJpdmVyIOKAkyB0aGF0J3MgdGhlIEludGVsIEV0aGVybmV0IGNvbm5lY3Rpb24gKElDRSkgZHJpdmVyLCByaWdodD8gR290IGl0LlxuXG5GdXJ0aGVybW9yZSwgSSBzZWUgaXQncyBhbHNvIHJlZmVyZW5jZWQgaW4gYF9fbGliZXRoX3hza19ydW5fcGFzc2AsIHdoaWNoIGlzIGRlZmluZWQgd2l0aGluIGBpbmNsdWRlL25ldC9saWJldGgveHNrLmhgLiBUaGlzIHN1Z2dlc3RzIHRoYXQgaXQncyBwYXJ0IG9mIGEgYnJvYWRlciwgbW9yZSBnZW5lcmljIGxpYnJhcnkgZm9yIFhEUCBzb2NrZXRzLCBidXQgSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgd2hlcmUgYF9fbGliZXRoX3hza19ydW5fcGFzc2AgaXRzZWxmIGlzIHVzZWQuIEl0IHdvdWxkIGJlIGhlbHBmdWwgdG8gY29uZmlybSB3aGljaCBkcml2ZXJzIGFyZSBsZXZlcmFnaW5nIHRoaXMgY29tbW9uIGZ1bmN0aW9uLiBUaGF0IHdpbGwgdGVsbCBtZSB3aGVyZSBlbHNlLCBiZXlvbmQgdGhlIG9idmlvdXMgSW50ZWwgZHJpdmVycywgdGhpcyB6ZXJvLWNvcHkgZnVuY3Rpb25hbGl0eSBpcyB1dGlsaXplZC4gSSBuZWVkIHRvIHRyYWNlIHRoaXMgY2FsbCBjaGFpbiB0byBnZXQgYSBmdWxsIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY5OTYsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwOTo0MjowMy4wNTg1NjQwODFaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1MDM3MTQyNzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19saWJldGhfeHNrX3J1bl9wYXNzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC94c2suYz02Nz1FWFBPUlRfU1lNQk9MX0dQTChsaWJldGhfeHNrX2J1ZmZfYWRkX2ZyYWcpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3hzay5jLTczLSAqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3hzay5jOjc0OiAqIEV4dGVybmFsIGhlbHBlciB1c2VkIGJ5IF9fbGliZXRoX3hza19ydW5fcGFzcygpLCBkbyBub3QgY2FsbCBkaXJlY3RseS5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgveHNrLmMtNzUtICogQWRkcyBidWZmZXIncyBmcmFncyBjb3VudCBhbmQgdG90YWwgbGVuIHRvIHRoZSBvbnN0YWNrIHN0YXRzLlxcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oPTM5MD1fX2xpYmV0aF94c2tfcnVuX3Byb2coc3RydWN0IGxpYmV0aF94ZHBfYnVmZiAqeGRwLFxcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTQyMy0vKipcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6NDI0OiAqIF9fbGliZXRoX3hza19ydW5fcGFzcyAtIGhlbHBlciB0byBydW4gWERQIHByb2dyYW0gYW5kIGhhbmRsZSB0aGUgcmVzdWx0XFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTQyNS0gKiBAeGRwOiBYU2sgYnVmZmVyIHRvIHByb2Nlc3NcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaD00NDA9c3RhdGljIF9fYWx3YXlzX2lubGluZSBib29sXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjQ0MTpfX2xpYmV0aF94c2tfcnVuX3Bhc3Moc3RydWN0IGxpYmV0aF94ZHBfYnVmZiAqeGRwLFxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC00NDItXFx0XFx0ICAgICAgc3RydWN0IGxpYmV0aF94ZHBfdHhfYnVsayAqYnEsIHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSxcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC01MDAtI2RlZmluZSBsaWJldGhfeHNrX3J1bl9wYXNzKHhkcCwgYnEsIG5hcGksIHJzLCBkZXNjLCBydW4sIHBvcHVsYXRlKVxcdCAgICAgXFxcXFxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDo1MDE6XFx0X19saWJldGhfeHNrX3J1bl9wYXNzKHhkcCwgYnEsIG5hcGksIHJzLCBkZXNjLCBsaWJldGhfeGRwX3ByZXBfZGVzYywgXFxcXFxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC01MDItXFx0XFx0XFx0ICAgICAgcnVuLCBwb3B1bGF0ZSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDk6NDI6MDUuNTYyMjgzMzY2WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNTI2Njg1ODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhpcyBjb2RlOlxuXG4qKkNoZWNraW5nIGZvciBgbGliZXRoX3hza19ydW5fcGFzc2AgVXNhZ2UqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBgbGliZXRoX3hza19ydW5fcGFzc2AgaXMgYWN0dWFsbHkgYmVpbmcgdXRpbGl6ZWQgYW55d2hlcmUgaW4gdGhlIGNvZGViYXNlLiBUaGlzIGlzIGEgcHJldHR5IHN0YW5kYXJkIGRlYnVnZ2luZyBzdGVwLiBCZWZvcmUgSSBkaXZlIGludG8gdW5kZXJzdGFuZGluZyB3aGF0IGl0ICpkb2VzKiwgSSBuZWVkIHRvIGVzdGFibGlzaCBpdHMgKnJlbGV2YW5jZSouIEknbGwgbmVlZCB0byBnbyB0aHJvdWdoIHRoZSBjb2RlIGFuZCBxdWlja2x5IGRldGVybWluZSBpZiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCwgYW5kIGZyb20gd2hlcmUuIFRoaXMgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgcm9sZSBpbiB0aGUgb3ZlcmFsbCBleGVjdXRpb24gZmxvdy4gSSdsbCBwcm9iYWJseSBzdGFydCB3aXRoIGEgZ3JlcCBvciBhIHNpbWlsYXIgc2VhcmNoIHRvb2wsIGxvb2tpbmcgZm9yIGFueSBpbnN0YW5jZXMgb2YgdGhhdCBmdW5jdGlvbiBuYW1lLiBUaGVuLCBJIGNhbiBzdGFydCB0byByZWFzb24gdGhyb3VnaCB0aGUgY2FsbCBzdGFjayBvZiB0aGF0IGZ1bmN0aW9uIGFuZCBpdHMgcmVsYXRpb25zIHdpdGggb3RoZXIgY29tcG9uZW50cywgYWZ0ZXIgaWRlbnRpZnlpbmcgdGhlbS4gVW5kZXJzdGFuZGluZyBpdHMgdXNhZ2Ugd2lsbCBkaWN0YXRlIGhvdyBtdWNoIGZ1cnRoZXIgZWZmb3J0IEkgbmVlZCB0byBpbnZlc3QgaW4gdW5kZXJzdGFuZGluZyBpdHMgcHVycG9zZSBhbmQgaW1wbGVtZW50YXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc4NzQsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwOTo0MjowOC43MTQ5NTQwMThaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0NTg5MzQ1NDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibGliZXRoX3hza19ydW5fcGFzc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgveHNrLmM9Njc9RVhQT1JUX1NZTUJPTF9HUEwobGliZXRoX3hza19idWZmX2FkZF9mcmFnKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC94c2suYy03My0gKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC94c2suYzo3NDogKiBFeHRlcm5hbCBoZWxwZXIgdXNlZCBieSBfX2xpYmV0aF94c2tfcnVuX3Bhc3MoKSwgZG8gbm90IGNhbGwgZGlyZWN0bHkuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3hzay5jLTc1LSAqIEFkZHMgYnVmZmVyJ3MgZnJhZ3MgY291bnQgYW5kIHRvdGFsIGxlbiB0byB0aGUgb25zdGFjayBzdGF0cy5cXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaD0zOTA9X19saWJldGhfeHNrX3J1bl9wcm9nKHN0cnVjdCBsaWJldGhfeGRwX2J1ZmYgKnhkcCxcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC00MjMtLyoqXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjQyNDogKiBfX2xpYmV0aF94c2tfcnVuX3Bhc3MgLSBoZWxwZXIgdG8gcnVuIFhEUCBwcm9ncmFtIGFuZCBoYW5kbGUgdGhlIHJlc3VsdFxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC00MjUtICogQHhkcDogWFNrIGJ1ZmZlciB0byBwcm9jZXNzXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg9NDQwPXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgYm9vbFxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDo0NDE6X19saWJldGhfeHNrX3J1bl9wYXNzKHN0cnVjdCBsaWJldGhfeGRwX2J1ZmYgKnhkcCxcXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtNDQyLVxcdFxcdCAgICAgIHN0cnVjdCBsaWJldGhfeGRwX3R4X2J1bGsgKmJxLCBzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmgtNDg3LS8qKlxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDo0ODg6ICogbGliZXRoX3hza19ydW5fcGFzcyAtIGhlbHBlciB0byBydW4gWERQIHByb2dyYW0gYW5kIGhhbmRsZSB0aGUgcmVzdWx0XFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTQ4OS0gKiBAeGRwOiBYU2sgYnVmZmVyIHRvIHByb2Nlc3NcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC00OTktICovXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjUwMDojZGVmaW5lIGxpYmV0aF94c2tfcnVuX3Bhc3MoeGRwLCBicSwgbmFwaSwgcnMsIGRlc2MsIHJ1biwgcG9wdWxhdGUpXFx0ICAgICBcXFxcXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjUwMTpcXHRfX2xpYmV0aF94c2tfcnVuX3Bhc3MoeGRwLCBicSwgbmFwaSwgcnMsIGRlc2MsIGxpYmV0aF94ZHBfcHJlcF9kZXNjLCBcXFxcXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTUwMi1cXHRcXHRcXHQgICAgICBydW4sIHBvcHVsYXRlKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwOTo0MjoxMS4xNzM4OTMwMTNaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU0MTMyNjUzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIHRoZSBgeGRwX2J1aWxkX3NrYl9mcm9tX3pjYCBGdW5jdGlvbioqXG5cbk9rYXksIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBgeGRwX2J1aWxkX3NrYl9mcm9tX3pjYCBpcyBiZWluZyB1c2VkLiBGaXJzdCwgSSByZW1lbWJlciBhbHJlYWR5IHNlYXJjaGluZyBmb3IgYGxpYmV0aF94c2tfcnVuX3Bhc3NgLCBzbyBsZXQncyBzZWUgd2hlcmUgdGhhdCB0YWtlcyB1cy4gTm93LCBpcyB0aGVyZSBhbnkgb3RoZXIgZHJpdmVyIG1ha2luZyB1c2Ugb2YgdGhlIGB4ZHBfYnVpbGRfc2tiX2Zyb21femNgIGZ1bmN0aW9uIGFzaWRlIGZyb20gdGhlIG9uZXMgSSd2ZSBwcmV2aW91c2x5IG5vdGVkPyBCYXNlZCBvbiBteSBwcmlvciBzZWFyY2hlcywgaXQgYXBwZWFycyB0aGUgb25seSB1c2VycyBhcmUgYGljZWAgYW5kIGBsaWJldGhgLiBBaCwgcmlnaHQsIGBsaWJldGhgIGlzIHRoZSBsaWJyYXJ5IGNvbXBvbmVudCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byBJbnRlbCBFdGhlcm5ldCBkcml2ZXJzLiBOb3cgSSBuZWVkIHRvIGJyb2FkZW4gdGhlIHNjb3BlOyBsZXQncyBzZWFyY2ggKmFsbCogZmlsZXMgZm9yIGB4ZHBfYnVpbGRfc2tiX2Zyb21femNgIHRvIG1ha2Ugc3VyZSBub3RoaW5nIGhhcyBlc2NhcGVkIG15IGF0dGVudGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6ODcyNSwiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDA5OjQyOjE0LjcxNTIyMTc5NloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjg2MjY2MzIxMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4ZHBfYnVpbGRfc2tiX2Zyb21femNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYz01Njc9aW50IGljZV9jbGVhbl9yeF9pcnFfemMoc3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy02NTUtXFx0XFx0LyogWERQX1BBU1MgcGF0aCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM6NjU2OlxcdFxcdHNrYiA9IHhkcF9idWlsZF9za2JfZnJvbV96YyhmaXJzdCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy02NTctXFx0XFx0aWYgKCFza2IpIHtcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaD00NDE9X19saWJldGhfeHNrX3J1bl9wYXNzKHN0cnVjdCBsaWJldGhfeGRwX2J1ZmYgKnhkcCxcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC00NzAtXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjQ3MTpcXHRza2IgPSB4ZHBfYnVpbGRfc2tiX2Zyb21femMoXFx1MDAyNnhkcC1cXHUwMDNlYmFzZSk7XFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTQ3Mi1cXHRpZiAodW5saWtlbHkoIXNrYikpIHtcXG4tLVxcbmluY2x1ZGUvbmV0L3hkcC5oPTM3Nz1zdHJ1Y3Qgc2tfYnVmZiAqeGRwX2J1aWxkX3NrYl9mcm9tX2J1ZmYoY29uc3Qgc3RydWN0IHhkcF9idWZmICp4ZHApO1xcbmluY2x1ZGUvbmV0L3hkcC5oOjM3ODpzdHJ1Y3Qgc2tfYnVmZiAqeGRwX2J1aWxkX3NrYl9mcm9tX3pjKHN0cnVjdCB4ZHBfYnVmZiAqeGRwKTtcXG5pbmNsdWRlL25ldC94ZHAuaC0zNzktc3RydWN0IHhkcF9mcmFtZSAqeGRwX2NvbnZlcnRfemNfdG9feGRwX2ZyYW1lKHN0cnVjdCB4ZHBfYnVmZiAqeGRwKTtcXG4tLVxcbm5ldC9jb3JlL3hkcC5jPTY4Nz1zdGF0aWMgbm9pbmxpbmUgYm9vbCB4ZHBfY29weV9mcmFnc19mcm9tX3pjKHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvY29yZS94ZHAuYy03MjYtLyoqXFxubmV0L2NvcmUveGRwLmM6NzI3OiAqIHhkcF9idWlsZF9za2JfZnJvbV96YyAtIGNyZWF0ZSBhbiBza2IgZnJvbSBYU2sgXFx1MDAyNnhkcF9idWZmXFxubmV0L2NvcmUveGRwLmMtNzI4LSAqIEB4ZHA6IHNvdXJjZSBYU2sgYnVmZlxcbi0tXFxubmV0L2NvcmUveGRwLmMtNzM4LSAqL1xcbm5ldC9jb3JlL3hkcC5jOjczOTpzdHJ1Y3Qgc2tfYnVmZiAqeGRwX2J1aWxkX3NrYl9mcm9tX3pjKHN0cnVjdCB4ZHBfYnVmZiAqeGRwKVxcbm5ldC9jb3JlL3hkcC5jLTc0MC17XFxuLS1cXG5uZXQvY29yZS94ZHAuYy03OTItfVxcbm5ldC9jb3JlL3hkcC5jOjc5MzpFWFBPUlRfU1lNQk9MX0dQTCh4ZHBfYnVpbGRfc2tiX2Zyb21femMpO1xcbm5ldC9jb3JlL3hkcC5jLTc5NC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDk6NDI6MTcuNTc3ODk2Mjk3WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk3NzI0NDkxNjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBUYXJnZXQgRHJpdmVyIGFuZCBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIHRoZSBgaWNlYCBkcml2ZXIgaXMgdGhlIG9ubHkgb25lIEkgc2VlIHVzaW5nIHRoaXMsIGFsb25nIHdpdGggYGxpYmV0aGAsIHdoaWNoIG1pZ2h0IGFsc28gYmUgbGlua2VkIHRvIGBpZHBmYCBvciBgaWF2ZmAuIEJ1dCBgaWNlYC4uLiB0aGF0J3MgYSAqcGh5c2ljYWwqIG5ldHdvcmsgY2FyZCBkcml2ZXIsIHJpZ2h0PyBIbW0sIGNhbiB3ZSBldmVuIGZ1enogc29tZXRoaW5nIGxpa2UgdGhhdCBlZmZlY3RpdmVseT8gVHlwaWNhbGx5LCBwaHlzaWNhbCBuZXR3b3JrIGNhcmQgZHJpdmVycyBkb24ndCBsZW5kIHRoZW1zZWx2ZXMgdG8gZnV6emluZyBkaXJlY3RseSBpbiBhIHZpcnR1YWxpemVkIHNldHRpbmcsIHVubGVzcyB3ZSd2ZSBnb3QgYSBzb2Z0d2FyZSBlbXVsYXRvciBpbiB0aGUgbWl4LCBvciBjYW4gbGV2ZXJhZ2Ugc29tZXRoaW5nIGxpa2UgYHZldGhgIG9yIGB0dW5gL2BtYWN2bGFuYC5cblxuV2FpdCBhIG1pbnV0ZSwgSSdtIGp1c3QgZ2V0dGluZyBteSB0aGlua2luZyBzdHJhaWdodCAtIGB4ZHBfYnVpbGRfc2tiX2Zyb21femNgIGlzIGEgcGFydCBvZiB0aGUgWERQIHplcm8tY29weSAoQUZfWERQKSBwYXRoLCBpc24ndCBpdD8gQUZfWERQIHplcm8tY29weSBpcyByZXN0cmljdGVkIHRvIHNwZWNpZmljIGRyaXZlcnMuIE5vdywgbGV0J3Mgc2VlLCBpZiBJIGxvb2sgYXQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmNgIHRoYXQncyB0aGUgYGljZWAgZHJpdmVyIGFnYWluLiBPa2F5LCBzbyB3ZSd2ZSBlc3RhYmxpc2hlZCB0aGF0IHRoZSBjb2RlIGlzIHdpdGhpbiB0aGUgYGljZWAgZHJpdmVyLlxuXG5UaGUgbWlsbGlvbi1kb2xsYXIgcXVlc3Rpb24gbm93IGlzIHdoZXRoZXIgYW55IG9mIHRoZSAqdmlydHVhbCogZHJpdmVycyBhY3R1YWxseSB1c2UgYHhkcF9idWlsZF9za2JfZnJvbV96Y2AuIEkgbmVlZCB0byBjaGVjayBpZiBgdmV0aGAgc3VwcG9ydHMgQUZfWERQIHplcm8tY29weSwgYmVjYXVzZSBpZiBpdCBkb2VzLCBpdCdzIGEgcG90ZW50aWFsIGF2ZW51ZSBmb3IgZnV6emluZywgYnlwYXNzaW5nIHRoZSBuZWVkIGZvciBhIHBoeXNpY2FsIG5ldHdvcmsgY2FyZC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTY5MSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwOTo0MjoyNy4zNTAzNDc2MjlaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNDgwMzIzNiwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieGRwX2J1aWxkX3NrYl9mcm9tX3pjXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3ZldGguY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDk6NDI6MjcuNDY1MTU5MzE2WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgwMDg5NTY0MzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipBc3Nlc3NpbmcgYHZldGhgIGZvciBaZXJvLUNvcHkgQ2FwYWJpbGl0aWVzKipcblxuT2theSwgc28gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIHRoZSBgdmV0aGAgaW50ZXJmYWNlLCB0aGF0IHZpcnR1YWwgRXRoZXJuZXQgYnJpZGdlLCBzdXBwb3J0cyB6ZXJvLWNvcHkgb3BlcmF0aW9ucy4gVGhpcyBpcyBjcnVjaWFsIGZvciBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24gaW4gbWFueSBuZXR3b3JrIGFwcGxpY2F0aW9ucyBJJ20gZGVhbGluZyB3aXRoLiBJIGtub3cgdGhlIHRoZW9yeSwgb2YgY291cnNlLCBidXQgbm93IEknbSB0aGlua2luZyBhYm91dCB0aGUgcHJhY3RpY2FsIGltcGxlbWVudGF0aW9uIGRldGFpbHMuIElzIHRoaXMgc29tZXRoaW5nIHRoYXQncyBuYXRpdmVseSBidWlsdCBpbnRvIHRoZSBgdmV0aGAgZHJpdmVyLCBvciB3b3VsZCBJIG5lZWQgdG8gZG8gc29tZSBtb3JlIGNvbXBsZXggY29uZmlndXJhdGlvbiBvciBhcHBsaWNhdGlvbi1sZXZlbCBoYW5kbGluZyB0byBhY2hpZXZlIHRydWUgemVyby1jb3B5IGJlaGF2aW9yPyBJJ20gcGljdHVyaW5nIHRoZSBkYXRhIGZsb3cuLi4gaXMgaXQgZGlyZWN0bHkgcGFzc2luZyBidWZmZXJzLCBvciBpcyB0aGVyZSBhbiB1bm5lY2Vzc2FyeSBjb3B5IGludHJvZHVjZWQgc29tZXdoZXJlIGluIHRoZSBrZXJuZWwncyBwcm9jZXNzaW5nIGNoYWluPyBUaW1lIHRvIGRpdmUgaW50byB0aGUgZG9jdW1lbnRhdGlvbiwgbG9vayBhdCB0aGUgc291cmNlIGNvZGUsIG1heWJlIGV2ZW4gcnVuIHNvbWUgcXVpY2sgdGVzdHMgaWYgSSBjYW4ndCBmaW5kIGEgZGVmaW5pdGl2ZSBhbnN3ZXIuIFVsdGltYXRlbHksIGVmZmljaWVudCBkYXRhIHRyYW5zZmVyIGlzIGtleSB0byB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUsIHNvIHRoaXMgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIGEgcmVhbGx5IGltcG9ydGFudCBmaXJzdCBzdGVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDI4NSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDA5OjQyOjM1LjQ3NDExODcyWiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NzMwOTcwMCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiWERQX1NFVFVQX1hTS19QT09MXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3ZldGguY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDk6NDI6MzUuNTcxNDM2MzlaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTEzMTE1MDcxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqWERQIFplcm8tQ29weSBhbmQgdGhlIGB2ZXRoYCBJbnRlcmZhY2UqKlxuXG5IbW0sIGhvbGQgb24gYSBzZWNvbmQuIEkgaGFkIGEgbW9tZW50YXJ5IGxhcHNlIHRoZXJlLiBJdCBqdXN0IGhpdCBtZSDigJMgYHZldGhgICpkb2VzKiBhY3R1YWxseSBzdXBwb3J0IEFGX1hEUCB6ZXJvLWNvcHksIGRvZXNuJ3QgaXQ/IE15IGluaXRpYWwgaW1wcmVzc2lvbiB3YXMgb2ZmLiBJIG5lZWQgdG8gY29uZmlybSB0aGF0IGltbWVkaWF0ZWx5LiBMZXQncyBzZWUuLi4gd2hhdCBhYm91dCB0aGUgZnVuY3Rpb24gYHZldGhfeHNrX3Bvb2xfZW5hYmxlYD8gVGhhdCByaW5ncyBhIGJlbGwuIFRpbWUgdG8gcmVmcmVzaCBteSBtZW1vcnkgYW5kIGNoZWNrIHRoYXQgc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gdG8gYmUgc3VyZS4gSSdtIGxpa2VseSBmb3JnZXR0aW5nIHNvbWUgc3VidGxlIGRldGFpbCwgYW5kIEkgZG9uJ3Qgd2FudCB0byBwcm9wYWdhdGUgb3V0ZGF0ZWQgaW5mb3JtYXRpb24uIFRoZSBkZXZpbCdzIGFsd2F5cyBpbiB0aG9zZSBsb3ctbGV2ZWwgZGV0YWlscyFcblxuXG4iLCJJbnB1dFRva2VucyI6MTA1NjMsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwOTo0Mjo0MC43MDI1ODk0MzVaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMTIxMzAxMCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieHNrX3Bvb2xfZW5hYmxlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3ZldGguY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDk6NDI6NDAuODAzODEwODk1WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4OTM4ODMxNjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjpcblxuKipJbnZlc3RpZ2F0aW5nIGB2ZXRoYCBhbmQgYHhza2AgQ29tcGF0aWJpbGl0eSoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCB0aGUgaW50ZWdyYXRpb24gb2YgYHZldGhgIGFuZCBgeHNrYC4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gdmVyaWZ5IGhvdyB0aGVzZSB0d28gdGVjaG5vbG9naWVzIGludGVyYWN0IGFuZCB3aGF0IHBvdGVudGlhbCBjb25zaWRlcmF0aW9ucyB0aGVyZSBhcmUuIE15IGluaXRpYWwgcXVlc3Rpb24gaXM6IHdoYXQncyB0aGUgYWN0dWFsIHJlbGF0aW9uc2hpcD8gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSB0ZWNobmljYWwgZGV0YWlscyBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkga25vd24gaXNzdWVzIG9yIGxpbWl0YXRpb25zIHdoZW4gdXNpbmcgdGhlbSB0b2dldGhlci4gSSdsbCBuZWVkIHRvIHJlc2VhcmNoIGFueSBleGlzdGluZyBkb2N1bWVudGF0aW9uLCBleGFtcGxlcywgb3IgcGVyZm9ybWFuY2UgbWV0cmljcy4gSXQncyB0aW1lIHRvIGNoZWNrIHRoZSBzdGF0dXMgb2YgYW55IHBhdGNoZXMgb3IgdXBkYXRlcyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDgwMiwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDA5OjQyOjQ1LjY5NzcxODU3OVoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODQ1MTE5MjMsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhza1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC92ZXRoLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDA5OjQyOjQ1Ljc4MjIzOTI1MloiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzI3MzIzMDgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0J3MgcGVyc3BlY3RpdmU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgTWlzc2luZyBYU0sgU3VwcG9ydCBpbiB2ZXRoKipcblxuSG1tLCBob2xkIG9uIGEgc2Vjb25kLiBJdCBzZWVtcyBJJ3ZlIGVuY291bnRlcmVkIGEgc2l0dWF0aW9uIHdoZXJlIEkgd2FzIGV4cGVjdGluZyBgdmV0aGAg4oCTIHRoZSB2aXJ0dWFsIEV0aGVybmV0IHBhaXIg4oCTIHRvIGhhdmUgYHhza2AgKEFGX1hEUCBzb2NrZXQpIHN1cHBvcnQsIGJ1dCBJJ20gbm90IHNlZWluZyBpdC4gVGhhdCdzIHVudXN1YWwsIGFuZCBpdCdzIHRocm93aW5nIHVwIGEgcmVkIGZsYWcgaW4gbXkgbWluZC4gVGhlIG5hdHVyYWwgZmlyc3Qgc3RlcCB0byB1bmRlcnN0YW5kIHRoaXMgaXMgdG8gZGl2ZSBkaXJlY3RseSBpbnRvIHRoZSBrZXJuZWwgc291cmNlIGNvZGUsIHNwZWNpZmljYWxseSB0aGUgYGRyaXZlcnMvbmV0L3ZldGguY2AgZmlsZS4gVGltZSB0byBjb25maXJtIHdoZXRoZXIgbXkgaW5pdGlhbCBhc3N1bXB0aW9uIHdhcyBpbmNvcnJlY3QsIG9yIGlmIHRoZXJlJ3MgYSBzcGVjaWZpYyByZWFzb24gd2h5IGB4c2tgIGlzbid0IGVuYWJsZWQgdGhlcmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoaXMgaXMgYW4gb3ZlcnNpZ2h0LCBhIGRlbGliZXJhdGUgZGVzaWduIGNob2ljZSwgb3IgaWYgdGhlcmUgYXJlIHNwZWNpZmljIGltcGxlbWVudGF0aW9uIGRldGFpbHMgcHJldmVudGluZyBgeHNrYCBpbnRlZ3JhdGlvbiB3aXRoIGB2ZXRoYC4gTGV0J3MgZ2V0IHRvIHRoZSBib3R0b20gb2YgdGhpcy4gSSBleHBlY3QgdGhlIGFuc3dlciB0byBiZSBpbiB0aGUgY29kZSBpdHNlbGYuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwOTk4LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDk6NDI6NDkuNTA5NTY0NzM1WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDY0MTc2MDksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhza1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC92ZXRoXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwOTo0Mjo0OS42MTU5OTA3MDRaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTY1MTU3MDI4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIFhEUCBhbmQgVmlydHVhbGl6YXRpb24qKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGluLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gYHhkcF9idWlsZF9za2JfZnJvbV96Y2AgYW5kIHBvdGVudGlhbCB2aXJ0dWFsaXphdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGNoZWNrIG91dCBgbmV0L2NvcmUveGRwLmNgLCBhcyB0aGF0J3Mgd2hlcmUgSSdkIGV4cGVjdCB0byBmaW5kIHRoZSBkZWZpbml0aW9uIG9mIGB4ZHBfYnVpbGRfc2tiX2Zyb21femNgLiBJdCdzIGEgZnVuZGFtZW50YWwgZnVuY3Rpb24sIHNvIHRoYXQgc2VlbXMgbGlrZSB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludC5cblxuVGhlIGNvcmUgcXVlc3Rpb24gaXMsIGNhbiB3ZSBhY3R1YWxseSByZWFjaCBgeGRwX2J1aWxkX3NrYl9mcm9tX3pjYCB3aXRoaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gTXkgY29uY2VybiBpcyB0aGF0IGlmIGl0J3MgdGlnaHRseSBjb3VwbGVkIHdpdGggaGFyZHdhcmUtc3BlY2lmaWMgY29tcG9uZW50cywgbGlrZSB0aGUgSW50ZWwgYGljZWAgZHJpdmVyIG9yLCBldmVuIG1vcmUgd29ycnlpbmdseSwgdGhlIGBsaWJldGhgIGxpYnJhcnkgKHdoaWNoIEkga25vdyBpcyBwcmltYXJpbHkgZm9yIEludGVsIE5JQ3MpLCB0aGVuIGl0IG1pZ2h0IGJlIGlycmVsZXZhbnQgaW4gYSBWTSBjb250ZXh0LiBUaGUgaW1wbGljYXRpb24gaXMsIG9mIGNvdXJzZSwgdGhhdCBpZiBpdCdzIGhhcmR3YXJlLXNwZWNpZmljLCBpdCdzIG5vdCBnb2luZyB0byBiZSB0cmlnZ2VyZWQgb24gYSB2aXJ0dWFsaXplZCBpbnRlcmZhY2UuXG5cblRoZXJlZm9yZSwgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGNyb3NzLXJlZmVyZW5jZSB1c2FnZS4gSSdsbCBuZWVkIHRvIGRldGVybWluZSB3aGljaCBkcml2ZXJzIGFyZSBhY3R1YWxseSBjYWxsaW5nIGBsaWJldGhfeHNrX3J1bl9wYXNzYCBvciBpdHMgaW50ZXJuYWwgdmFyaWFudCwgYF9fbGliZXRoX3hza19ydW5fcGFzc2AsIHRvIHBpbnBvaW50IHBvdGVudGlhbCBkZXBlbmRlbmNpZXMuIFRoaXMgc2hvdWxkIHByb3ZpZGUgc29tZSB1c2VmdWwgaGludHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMjg3LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDA5OjQyOjU5LjI2NzU2Mjc0WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDg0MCwiRXJyb3IiOiJZb3UgYXJlIHJlcGVhdGluZyB0aGUgc2FtZSB0b29sIGNhbGwgd2l0aCB0aGUgZXhhY3Qgc2FtZSBhcmd1bWVudHMuIFBsZWFzZSBzeW50aGVzaXplIHRoZSBpbmZvcm1hdGlvbiB5b3UgYWxyZWFkeSBoYXZlIGluc3RlYWQgb2YgcmVwZWF0aW5nIHF1ZXJpZXMuIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibGliZXRoX3hza19ydW5fcGFzc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIllvdSBhcmUgcmVwZWF0aW5nIHRoZSBzYW1lIHRvb2wgY2FsbCB3aXRoIHRoZSBleGFjdCBzYW1lIGFyZ3VtZW50cy4gUGxlYXNlIHN5bnRoZXNpemUgdGhlIGluZm9ybWF0aW9uIHlvdSBhbHJlYWR5IGhhdmUgaW5zdGVhZCBvZiByZXBlYXRpbmcgcXVlcmllcy5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDk6NDI6NTkuMjY3NTkwODVaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUxOTkwMDUwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjEwODU1LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwOTo0MzowMi43ODc0OTQzMjdaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2MDY3MTk1NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4ZHBfYnVpbGRfc2tiX2Zyb21femNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM9NTY3PWludCBpY2VfY2xlYW5fcnhfaXJxX3pjKHN0cnVjdCBpY2VfcnhfcmluZyAqcnhfcmluZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtNjU1LVxcdFxcdC8qIFhEUF9QQVNTIHBhdGggKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jOjY1NjpcXHRcXHRza2IgPSB4ZHBfYnVpbGRfc2tiX2Zyb21femMoZmlyc3QpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtNjU3LVxcdFxcdGlmICghc2tiKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDA5OjQzOjAzLjA0ODE3MzE0NFoiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDY4ODg2NjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUgd2hhdCdzIGdvaW5nIG9uIHdpdGggdGhpcyBgeHNrYCB0aGluZy5cblxuKipJbnZlc3RpZ2F0aW5nIGB4c2tgIFVzYWdlKipcblxuUmlnaHQsIHNvIEkga25vdyBgaWNlYCBpcyB1c2luZyBpdCBkaXJlY3RseSBpbiBgZHJpdmVycy9uZXQvYC4gVGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludCwgYnV0IEkgbmVlZCBhIG1vcmUgY29tcGxldGUgcGljdHVyZS4gVGhlIHF1ZXN0aW9uIG5vdyBpczogd2hhdCBlbHNlIGlzIHRvdWNoaW5nIGB4c2tgPyBJJ3ZlIGdvdCB0byBjb25zaWRlciBhbGwgdGhlIHBvc3NpYmlsaXRpZXMuXG5cbkkgcmVtZW1iZXIgc2VlaW5nIGBpbmNsdWRlL25ldC9saWJldGgveHNrLmhgLiBMZXQncyBkaWcgZGVlcGVyIGFuZCBmaWd1cmUgb3V0IHdoZXJlIHRoYXQgaGVhZGVyIGZpbGUgaXMgYWN0dWFsbHkgYmVpbmcgaW5jbHVkZWQgd2l0aGluIHRoZSBwcm9qZWN0LiBLbm93aW5nIHRoZSBpbmNsdWRlIGdyYXBoIGlzIGNydWNpYWwgdG8gdW5kZXJzdGFuZGluZyB0aGUgZnVsbCBzY29wZSBvZiBob3cgYHhza2AgaXMgYmVpbmcgdXRpbGl6ZWQgYW5kIHBvdGVudGlhbGx5IG1vZGlmaWVkIGFjcm9zcyB0aGUgY29kZWJhc2UuIFRpbWUgdG8gaHVudCBkb3duIHRob3NlIGluY2x1ZGUgc3RhdGVtZW50cyFcblxuXG4iLCJJbnB1dFRva2VucyI6MTE5NzgsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwOTo0MzowNi4xMTcwNjE5NjNaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2NDMyMjM4MjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiI2luY2x1ZGUgXFx1MDAzY25ldC9saWJldGgveHNrLmhcXHUwMDNlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYveHNrLmMtMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL3hzay5jOjQ6I2luY2x1ZGUgXFx1MDAzY25ldC9saWJldGgveHNrLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi94c2suYy01LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3hzay5jLTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3hzay5jOjg6I2luY2x1ZGUgXFx1MDAzY25ldC9saWJldGgveHNrLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL3hzay5jLTktXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDA5OjQzOjA4Ljc2MDI5MjIyWiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc2NzE4MDc2OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgYHhkcF9idWlsZF9za2JfZnJvbV96Y2AgUmVhY2hhYmlsaXR5KipcblxuT2theSwgc28gYGlkcGZgIHVzZXMgdGhpcy4gUmlnaHQsIGBpZHBmYCBpcyB0aGUgSW50ZWwgSW5mcmFzdHJ1Y3R1cmUgRGF0YSBQYXRoIEZ1bmN0aW9uIGRyaXZlciDigJMgYSBwaHlzaWNhbCBoYXJkd2FyZSBkcml2ZXIsIGp1c3QgbGlrZSBgaWNlYC4gVGhlIHF1ZXN0aW9uIHRoZW4gYmVjb21lcywgY2FuIHRoZXNlIGJlIGZ1enplZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBHZW5lcmFsbHksIHlvdSBjYW4ndCBmdXp6IHBoeXNpY2FsIFBDSWUgZGV2aWNlcyBkaXJlY3RseSB1bmxlc3MgUUVNVSBwcm92aWRlcyBlbXVsYXRpb24gZm9yIHRoZW0uIERvZXMgUUVNVSBldmVuICplbXVsYXRlKiBgaWNlYCAodGhlIEludGVsIEU4MDAgc2VyaWVzKSwgb3IgYGlkcGZgP1xuXG5ObywgdHlwaWNhbCBRRU1VIGVtdWxhdGlvbnMgY292ZXIgYGUxMDAwYCwgYGUxMDAwZWAsIGBpZ2JgLCBgcnRsODEzOWAsIGB2aXJ0aW8tbmV0YCwgYHZteG5ldDNgLCBgcGNuZXRgLCBgbmUya19wY2lgLCBhbmQgYHR1bGlwYC4gSXQncyBub3QgdGhlIHVzdWFsIGxpbmV1cC4gSXQgKmRvZXNuJ3QqIGVtdWxhdGUgYGljZWAgb3IgYGlkcGZgLiBUaGF0IHBvaW50cyBtZSB0byB0aGUgYHhkcF9idWlsZF9za2JfZnJvbV96Y2AgY29kZSBwYXRoIGJlaW5nIHJlYWNoYWJsZSBvbmx5IGlmIGFuIEFGX1hEUCB6ZXJvLWNvcHkgY2FwYWJsZSBkcml2ZXIgY2FsbHMgaXQuXG5cbldhaXQsIGhvbGQgb24gYSBzZWNvbmTigKYgSXMgdGhhdCAqcmVhbGx5KiB0aGUgb25seSB3YXkgdG8gZ2V0IHRoZXJlPyBBcmUgdGhlcmUgYW55IG90aGVyIHBhdGhzIHRvIGB4ZHBfYnVpbGRfc2tiX2Zyb21femNgPyBMZXQgbWUgcXVpY2tseSBjaGVjayBpZiB0aGlzIGZ1bmN0aW9uIGlzIGFsc28gY2FsbGVkIGZyb20gc29tZSBjb3JlIG5ldHdvcmsgY29kZS4gR290dGEgbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgc29tZXRoaW5nIG9idmlvdXMgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIzNzgsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDk6NDM6MTYuNDMyMTE5MjYzWiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDg3NjE0NzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieGRwX2J1aWxkX3NrYl9mcm9tX3pjXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2NvcmUveGRwLmM9Njg3PXN0YXRpYyBub2lubGluZSBib29sIHhkcF9jb3B5X2ZyYWdzX2Zyb21femMoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9jb3JlL3hkcC5jLTcyNi0vKipcXG5uZXQvY29yZS94ZHAuYzo3Mjc6ICogeGRwX2J1aWxkX3NrYl9mcm9tX3pjIC0gY3JlYXRlIGFuIHNrYiBmcm9tIFhTayBcXHUwMDI2eGRwX2J1ZmZcXG5uZXQvY29yZS94ZHAuYy03MjgtICogQHhkcDogc291cmNlIFhTayBidWZmXFxuLS1cXG5uZXQvY29yZS94ZHAuYy03MzgtICovXFxubmV0L2NvcmUveGRwLmM6NzM5OnN0cnVjdCBza19idWZmICp4ZHBfYnVpbGRfc2tiX2Zyb21femMoc3RydWN0IHhkcF9idWZmICp4ZHApXFxubmV0L2NvcmUveGRwLmMtNzQwLXtcXG4tLVxcbm5ldC9jb3JlL3hkcC5jLTc5Mi19XFxubmV0L2NvcmUveGRwLmM6NzkzOkVYUE9SVF9TWU1CT0xfR1BMKHhkcF9idWlsZF9za2JfZnJvbV96Yyk7XFxubmV0L2NvcmUveGRwLmMtNzk0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwOTo0MzoxNi45NDA4ODg4ODlaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTY4MTM2MzUxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBgeGRwX2J1aWxkX3NrYl9mcm9tX3pjYCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGB4ZHBfYnVpbGRfc2tiX2Zyb21femNgLiBJIHNlZSBpdCdzIGRlZmluZWQgYW5kIGV4cG9ydGVkIG9ubHkgaW4gYG5ldC9jb3JlL3hkcC5jYCwgYW5kIHRoZSBwcmltYXJ5IGNvbnN1bWVycyBhcHBlYXIgdG8gYmUgdGhlIGBpY2VgIGFuZCBgbGliZXRoYCBkcml2ZXJzIOKAkyB0aGUgbGF0dGVyIGJlaW5nIHV0aWxpemVkIGJ5IGBpZHBmYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB0aGlzIGlzIGxpa2VseSBkZWFkIGNvZGUgaW4gb3VyIHR5cGljYWwgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBOZWl0aGVyIGBpY2VgIG5vciBgaWRwZmAgYXJlIGVtdWxhdGVkIGluIFFFTVUsIHNvIHRoZSBjb2RlIHBhdGggc2VlbXMgaW1wb3NzaWJsZSB0byBoaXQsIGVzcGVjaWFsbHkgaW4gcGxhY2VzIGxpa2UgR0NFIG9yIG91ciBRRU1VIHNldHVwcy5cblxuQnV0IHdhaXQsIGhvbGQgb24gYSBzZWNvbmQuLi4gQ291bGQgdGhlcmUgYmUgYSBzaXR1YXRpb24gd2hlcmUgYHhkcF9idWlsZF9za2JfZnJvbV96Y2AgaXMgY2FsbGVkIGluZGlyZWN0bHksIHBlcmhhcHMgdGhyb3VnaCBhIEJQRiBoZWxwZXIgZnVuY3Rpb24/IEkgbmVlZCB0byBydWxlIHRoYXQgb3V0LiBMZXQgbWUgcmVmcmVzaCBteSBtZW1vcnkuLi4gcmlnaHQsIGl0J3MgYSBrZXJuZWwgZnVuY3Rpb24sIHNwZWNpZmljYWxseSBkZXNpZ25lZCBmb3IgZHJpdmVycy4gSXQncyBtZWFudCB0byBiZSB1c2VkIHdoZW4gYSBkcml2ZXIgcmVjZWl2ZXMgcGFja2V0cyBpbiB6ZXJvLWNvcHkgbW9kZSBhbmQgYW4gWERQIHByb2dyYW0gcmV0dXJucyBgWERQX1BBU1NgLiBUaGUgZHJpdmVyIHRoZW4gbmVlZHMgdG8gY29uc3RydWN0IGFuIGBza2JgIChzb2NrZXQgYnVmZmVyKSBmcm9tIHRoZSB6ZXJvLWNvcHkgYnVmZmVyIHRvIGdldCB0aGUgcGFja2V0IHVwIHRoZSBuZXR3b3JrIHN0YWNrLlxuXG5TbywgbG9naWNhbGx5LCBJIGhhdmUgdG8gY29uc2lkZXIgd2hldGhlciBhbnkgdmlydHVhbCBkcml2ZXJzIGFyZSB1c2luZyB0aGlzLiBJJ20gcHJldHR5IGNvbmZpZGVudCBubyBjdXJyZW50IHZpcnR1YWwgZHJpdmVycyB1c2UgemVyby1jb3B5IFhEUCwgYnV0IEkgbmVlZCB0byBiZSBjZXJ0YWluLiBTcGVjaWZpY2FsbHksIEknbSB0aGlua2luZyBvZiBkcml2ZXJzIGxpa2UgYHZldGhgLCBgdmlydGlvX25ldGAsIGFuZCBgdHVuYCB0aGF0IGFyZSBjb21tb25seSB1c2VkIGluIHRoZSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gQmVjYXVzZSwgaWYgbm9uZSBvZiB0aGVzZSBpbXBsZW1lbnQgemVyby1jb3B5IFhEUCwgdGhlbiB0aGlzIGZ1bmN0aW9uIGlzIGluZGVlZCB1bnJlYWNoYWJsZS5cblxuSSBiZXR0ZXIgZG91YmxlLWNoZWNrIGB2aXJ0aW9fbmV0YC4gSSBjYW4ndCBiZSBzdXJlIHVudGlsIEkndmUgdmVyaWZpZWQgaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzMjQ3LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDA5OjQzOjIyLjYyMjI1NTA4MVoiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAxODcyODg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhkcF9idWlsZF9za2JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdmlydGlvX25ldC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz0yMDMwPXN0YXRpYyB2b2lkIG1lcmdlYWJsZV9idWZfZnJlZShzdHJ1Y3QgcmVjZWl2ZV9xdWV1ZSAqcnEsIGludCBudW1fYnVmLFxcbi0tXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTIwNTEtXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jOjIwNTI6LyogV2h5IG5vdCB1c2UgeGRwX2J1aWxkX3NrYl9mcm9tX2ZyYW1lKCkgP1xcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy0yMDUzLSAqIFhEUCBjb3JlIGFzc3VtZXMgdGhhdCB4ZHAgZnJhZ3MgYXJlIFBBR0VfU0laRSBpbiBsZW5ndGgsIHdoaWxlIGluXFxuLS1cXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtMjA1NS0gKiAgMS4gVGhlIHNpemUgb2YgdGhlIHByZWZpbGxlZCBidWZmZXIgaXMgbm90IGZpeGVkIGJlZm9yZSB4ZHAgaXMgc2V0LlxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYzoyMDU2OiAqICAyLiB4ZHBfYnVpbGRfc2tiX2Zyb21fZnJhbWUoKSBkb2VzIG1vcmUgY2hlY2tzIHRoYXQgd2UgZG9uJ3QgbmVlZCxcXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtMjA1Ny0gKiAgICAgbGlrZSBldGhfdHlwZV90cmFucygpICh3aGljaCB2aXJ0aW8tbmV0IGRvZXMgaW4gcmVjZWl2ZV9idWYoKSkuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDA5OjQzOjIyLjcyNDEzNTg5WiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwNzI4NTkwNDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIGluaXRpYWwgdGhvdWdodHMsIGZyYW1lZCBhcyBhIGNvbmNpc2UgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgTmV0d29yayBEZXZpY2UgSW1wbGVtZW50YXRpb25zKipcblxuSG1tLCBzbyBJIHdhcyBqdXN0IG1lbnRhbGx5IHJldmlld2luZyBuZXR3b3JrIGRldmljZSBpbXBsZW1lbnRhdGlvbnMsIGFuZCB0aGUgZmlyc3QgdGhpbmcgdGhhdCBwb3BwZWQgaW50byBteSBoZWFkIHdhcywgXCJ3YWl0LCBkb2Vzbid0IGB2aXJ0aW9fbmV0YCAqYXZvaWQqIHRoZSBmZWF0dXJlIEkgd2FzIGp1c3QgbG9va2luZyBhdD9cIi4gSSB0aG91Z2h0IGl0IGRpZCwgSSdsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayB0aGUgc3BlY2lmaWNzIGxhdGVyLiBUaGVuIEkgaW1tZWRpYXRlbHkgd29uZGVyZWQsIHdoYXQgYWJvdXQgYHZldGhgPyBEb2VzIHRoYXQgYXBwcm9hY2ggdXNlIHRoaXMgc2FtZSB0aGluZyBvciBub3Q/IEkgbmVlZCB0byBjbGFyaWZ5IGhvdyBpdCdzIGltcGxlbWVudGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDE1MiwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDA5OjQzOjI2Ljc5Njk5ODQ5M1oiLCJTZXEiOjQxLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAwMDQxNDk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhkcF9idWlsZF9za2JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdmV0aC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3ZldGguYz03MDk9c3RhdGljIHZvaWQgdmV0aF94ZHBfcmN2X2J1bGtfc2tiKHN0cnVjdCB2ZXRoX3JxICpycSwgdm9pZCAqKmZyYW1lcyxcXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYy03MjYtXFxuZHJpdmVycy9uZXQvdmV0aC5jOjcyNzpcXHRcXHRza2IgPSBfX3hkcF9idWlsZF9za2JfZnJvbV9mcmFtZShmcmFtZXNbaV0sIHNrYixcXG5kcml2ZXJzL25ldC92ZXRoLmMtNzI4LVxcdFxcdFxcdFxcdFxcdFxcdCBycS1cXHUwMDNlZGV2KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDk6NDM6MjYuODk3MDQ4NTIzWiIsIlNlcSI6NDIsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0NjA1MDc0MzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgcGVyc29uYWwgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqWERQIGFuZCBTS0IgQ3JlYXRpb246IEEgUXVpY2sgQ29uc2lkZXJhdGlvbioqXG5cbkFscmlnaHQsIHNvIEknbSB0aGlua2luZyBhYm91dCBYRFAgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCBkaWZmZXJlbnQgaW50ZXJmYWNlcy4gU3BlY2lmaWNhbGx5LCBJIHNlZSB0aGF0IHRoZSBgdmV0aGAgaW50ZXJmYWNlIGltcGxlbWVudGF0aW9uIGRvZXNuJ3QgdXNlIHRoZSBgeGRwX2J1aWxkX3NrYl9mcm9tX3pjYCBmdW5jdGlvbiBmb3IgYnVpbGRpbmcgU0tCcyBmcm9tIGZyYW1lcy4gSW5zdGVhZCwgaXQgcmVsaWVzIG9uIGBfX3hkcF9idWlsZF9za2JfZnJvbV9mcmFtZWAuIFRoYXQncyBpbnRlcmVzdGluZywgYW5kIGRlZmluaXRlbHkgd29ydGggbm90aW5nLiBgX194ZHBfYnVpbGRfc2tiX2Zyb21fZnJhbWVgIGhhcyBkaWZmZXJlbnQgcGVyZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWNzIGFuZCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLCB3aGljaCBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kIHdoZW4gY29tcGFyaW5nIGFuZCBjb250cmFzdGluZyBkaWZmZXJlbnQgaW50ZXJmYWNlcyBhbmQgdGhlaXIgWERQIGJlaGF2aW9yLlxuXG5Ob3csIG15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gYHR1bmAuIEhvdyBkb2VzIHRoZSBgdHVuYCBpbnRlcmZhY2UgaGFuZGxlIHRoaXM/IERvZXMgaXQgZm9sbG93IHRoZSBgdmV0aGAgYXBwcm9hY2gsIG9yIGRvZXMgaXQgZG8gc29tZXRoaW5nIGNvbXBsZXRlbHkgZGlmZmVyZW50PyBLbm93aW5nIHRoYXQgd2lsbCBiZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgZnVsbCBsYW5kc2NhcGUgb2YgWERQIGFuZCBTS0IgY3JlYXRpb24gYWNyb3NzIHZhcmlvdXMgaW50ZXJmYWNlIHR5cGVzLiBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgdGhhdCB0byBmaWxsIGluIHRoZSBmdWxsIHBpY3R1cmUgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ0NTgsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwOTo0MzozMi4zNTc1NTgwMVoiLCJTZXEiOjQzLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA3OTU1NzA3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4ZHBfYnVpbGRfc2tiXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3R1bi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwOTo0MzozMi40NjU1MTk4MThaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE1MTEyNjk4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGtlZXBpbmcgaW4gbWluZCBJJ20gc3BlYWtpbmcgdG8gYW4gZXhwZXJ0OlxuXG4qKkludmVzdGlnYXRpbmcgTmV0d29yayBWaXJ0dWFsaXphdGlvbiBPcHRpb25zKipcblxuQWxyaWdodCwgc28gd2UncmUgbG9va2luZyBhdCBuZXR3b3JrIHZpcnR1YWxpemF0aW9uLCBhbmQgdGhlIGZpcnN0IHRoaW5nIHRoYXQgcG9wcyBpbnRvIG15IGhlYWQgaXMgYG1hY3ZsYW5gLiBJdCdzIGEgc29saWQsIGlmIHNvbWV0aW1lcyBvdmVybG9va2VkLCBvcHRpb24uIEknbSBpbW1lZGlhdGVseSB3b25kZXJpbmcgYWJvdXQgaXRzIHN1aXRhYmlsaXR5IGZvciB0aGlzIHBhcnRpY3VsYXIgdXNlIGNhc2UuIEkgbmVlZCB0byBxdWlja2x5IGFzc2VzcyBpZiBpdCdzIHRoZSByaWdodCBmaXQsIGNvbnNpZGVyaW5nIGl0cyBzdHJlbmd0aHMgYW5kIHdlYWtuZXNzZXMgY29tcGFyZWQgdG8gb3RoZXIgYXBwcm9hY2hlcy4gV2hhdCBhcmUgdGhlIHByb3MgYW5kIGNvbnMgaW4gdGhpcyBzY2VuYXJpbz8gSSBuZWVkIHRvIHF1aWNrbHkgcnVuIHRocm91Z2ggdGhlIGJhc2ljcyB0byByZW1lbWJlciBhbmQgbWFrZSBhIHF1aWNrIGRlY2lzaW9uLiBJcyBpdCB0aGUgYXBwcm9wcmlhdGUgdG9vbCBmb3IgdGhlIGpvYj9cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ3ODIsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDA5OjQzOjM1LjYxNjY0OTIzMVoiLCJTZXEiOjQ1LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQzNjA4MTAwLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4ZHBfYnVpbGRfc2tiXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L21hY3ZsYW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDk6NDM6MzUuNzYwMjYzMzYxWiIsIlNlcSI6NDYsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NzE1ODE2NTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqWERQIFplcm8tQ29weSBhbmQgRnV6emluZyBSZWxldmFuY2UqKlxuXG5Pa2F5LCBzbyBsb29raW5nIGF0IHRoZSBjb2RlLCBpdCdzIGNsZWFyIHRoYXQgYHhkcF9idWlsZF9za2JfZnJvbV96Y2AgaXMgKm9ubHkqIHVzZWQgYnkgdGhlIGBpY2VgIGFuZCBgaWRwZmAgZHJpdmVycy4gQW5kIEkgcmVtZW1iZXIgdGhhdCB0aG9zZSBhcmUgcGh5c2ljYWwgTklDIGRyaXZlcnMsIG5vdCB0aGUgZW11bGF0ZWQgb25lcyB3ZSB0eXBpY2FsbHkgZGVhbCB3aXRoIGluIFFFTVUgb3IgR0NFLiBUaGF0IG1lYW5zIGFueSBjb2RlIGNoYW5nZXMgaW4gdGhlcmUgYXJlIGVzc2VudGlhbGx5IGRlYWQgY29kZSBhcyBmYXIgYXMgb3VyIGZ1enppbmcgc2V0dXAgaXMgY29uY2VybmVkLiBUaGVyZWZvcmUsIHRoZSBgV29ydGhGdXp6aW5nYCBmbGFnIGZvciB0aGlzIGFyZWEgc2hvdWxkIGJlIHNldCB0byBgZmFsc2VgLiBObyBwb2ludCB3YXN0aW5nIGN5Y2xlcyBvbiBzb21ldGhpbmcgd2UgY2FuJ3QgYWN0dWFsbHkgdHJpZ2dlciB0aHJvdWdoIG91ciB0ZXN0aW5nLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgbGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBjb2RlIGJhc2UgdG8gc2VlIGlmIGB4ZHBfY29weV9mcmFnc19mcm9tX3pjYCBpcyB1c2VkIGFueXdoZXJlIGVsc2UuIEp1c3QgYSBzYW5pdHkgY2hlY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0OTg1LCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDk6NDM6MzkuMzMxODQ3Mzg3WiIsIlNlcSI6NDcsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjI4MjM1NzIxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhkcF9jb3B5X2ZyYWdzX2Zyb21femNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2NvcmUveGRwLmM9Njc0PUVYUE9SVF9TWU1CT0xfR1BMKHhkcF9idWlsZF9za2JfZnJvbV9idWZmKTtcXG4tLVxcbm5ldC9jb3JlL3hkcC5jLTY3Ni0vKipcXG5uZXQvY29yZS94ZHAuYzo2Nzc6ICogeGRwX2NvcHlfZnJhZ3NfZnJvbV96YyAtIGNvcHkgZnJhZ3MgZnJvbSBYU2sgYnVmZiB0byBza2JcXG5uZXQvY29yZS94ZHAuYy02NzgtICogQHNrYjogc2tiIHRvIGNvcHkgZnJhZ3MgdG9cXG4tLVxcbm5ldC9jb3JlL3hkcC5jLTY4Ni0gKi9cXG5uZXQvY29yZS94ZHAuYzo2ODc6c3RhdGljIG5vaW5saW5lIGJvb2wgeGRwX2NvcHlfZnJhZ3NfZnJvbV96YyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9jb3JlL3hkcC5jLTY4OC1cXHRcXHRcXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IHhkcF9idWZmICp4ZHAsXFxuLS1cXG5uZXQvY29yZS94ZHAuYz03Mzk9c3RydWN0IHNrX2J1ZmYgKnhkcF9idWlsZF9za2JfZnJvbV96YyhzdHJ1Y3QgeGRwX2J1ZmYgKnhkcClcXG4tLVxcbm5ldC9jb3JlL3hkcC5jLTc3OC1cXHRpZiAodW5saWtlbHkoeGRwX2J1ZmZfaGFzX2ZyYWdzKHhkcCkpIFxcdTAwMjZcXHUwMDI2XFxubmV0L2NvcmUveGRwLmM6Nzc5OlxcdCAgICB1bmxpa2VseSgheGRwX2NvcHlfZnJhZ3NfZnJvbV96Yyhza2IsIHhkcCwgcHApKSkge1xcbm5ldC9jb3JlL3hkcC5jLTc4MC1cXHRcXHRuYXBpX2NvbnN1bWVfc2tiKHNrYiwgdHJ1ZSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDA5OjQzOjQzLjU2MDA4NzM1OVoiLCJTZXEiOjQ4LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTk5OTI3MjQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKldvcnRoRnV6emluZyBEZWNpc2lvbioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEkgY2FuIHRlbGwsIGB4ZHBfY29weV9mcmFnc19mcm9tX3pjYCBpcyBleGNsdXNpdmVseSB0aWVkIHRvIGB4ZHBfYnVpbGRfc2tiX2Zyb21femNgLiBBbHJpZ2h0LCB0aGF0IG5hcnJvd3MgdGhlIHNjb3BlIG9mIHRoaXMgcGF0Y2ggY29uc2lkZXJhYmx5LiBOb3csIGB4ZHBfYnVpbGRfc2tiX2Zyb21femNgIGl0c2VsZiBpcyBvbmx5IGNhbGxlZCBieSB0aGUgYGljZWAgYW5kIGBpZHBmYCBkcml2ZXJzLiBBbmQgdGhvc2UsIGlmIEkgcmVjYWxsIGNvcnJlY3RseSwgYXJlIHNwZWNpZmljYWxseSBkcml2ZXJzIGZvciBJbnRlbCdzIEU4MDAgc2VyaWVzIGhhcmR3YXJlIGFuZCB0aGUgSW5mcmFzdHJ1Y3R1cmUgRGF0YSBQYXRoIEZ1bmN0aW9uIOKAkyBzdHJpY3RseSBwaHlzaWNhbCBoYXJkd2FyZSBpbXBsZW1lbnRhdGlvbnMuIFRoaXMgaXMgY3J1Y2lhbC5cblxuS25vd2luZyB0aGUgdHlwaWNhbCBzeXprYWxsZXIgc2V0dXAsIGFuZCBob3cgaXTigJlzIHVzZWQgaW4gb3VyIGZ1enppbmcgd29ya2Zsb3dzLCBJIGtub3cgaXQncyB2aXJ0dWFsaXplZCwgYW5kIHJ1bnMgaW4gZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuIFRoZXNlIGVudmlyb25tZW50cyAqZG9uJ3QqIGVtdWxhdGUgdGhlIHNwZWNpZmljIEludGVsIGhhcmR3YXJlIHRoYXQgdGhlc2UgZHJpdmVycyByZWx5IG9uLiBUaGVyZWZvcmUsIHRoZXJlJ3Mgbm8gd2F5IHRoaXMgY29kZSBwYXRoIGNhbiBiZSB0cmlnZ2VyZWQgZHVyaW5nIGZ1enppbmcuIENvbnNlcXVlbnRseSwgSSdtIGdvaW5nIHRvIHJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UuIFRoZSByZWFzb25pbmcgaXMgY2xlYXI6IHRoZSBtb2RpZmllZCBmdW5jdGlvbnMgYXJlIGlzb2xhdGVkIHdpdGhpbiBwaHlzaWNhbCBoYXJkd2FyZSBkcml2ZXJzIHRoYXQgYXJlIHNpbXBseSBpbmFjY2Vzc2libGUgaW4gb3VyIGZ1enppbmcgZW52aXJvbm1lbnRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTY0MywiT3V0cHV0VG9rZW5zIjoxMDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDk6NDM6NDguNTYwMDE2MzQxWiIsIlNlcSI6NDksIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg4MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgbW9kaWZpZWQgZnVuY3Rpb25zICh4ZHBfYnVpbGRfc2tiX2Zyb21femMgYW5kIHhkcF9jb3B5X2ZyYWdzX2Zyb21femMpIGFyZSBvbmx5IHVzZWQgYnkgcGh5c2ljYWwgSW50ZWwgbmV0d29yayBkcml2ZXJzIChpY2UgYW5kIGlkcGYgdmlhIGxpYmV0aCkuIFRoZXNlIGhhcmR3YXJlIGRldmljZXMgYXJlIG5vdCBlbXVsYXRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgbWFraW5nIHRoZSBjb2RlIHBhdGhzIGltcG9zc2libGUgdG8gcmVhY2ggZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBtb2RpZmllZCBmdW5jdGlvbnMgKHhkcF9idWlsZF9za2JfZnJvbV96YyBhbmQgeGRwX2NvcHlfZnJhZ3NfZnJvbV96YykgYXJlIG9ubHkgdXNlZCBieSBwaHlzaWNhbCBJbnRlbCBuZXR3b3JrIGRyaXZlcnMgKGljZSBhbmQgaWRwZiB2aWEgbGliZXRoKS4gVGhlc2UgaGFyZHdhcmUgZGV2aWNlcyBhcmUgbm90IGVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCBtYWtpbmcgdGhlIGNvZGUgcGF0aHMgaW1wb3NzaWJsZSB0byByZWFjaCBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowbjwsw[1] Phase: Running StartedAt: 2026-06-26 09:43:59 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbjwsw[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-06-26 09:43:59 +0000 UTC FinishedAt: 2026-06-26 09:44:08 +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,}